1 概述
在进行单片机应用产品的开发过程中,我们经常会碰到一个很棘手的问题,即在实验室环境下系统运行很正常,但小批量生产并安装在工作现场后,却出现一些不太规律、不太正常的现象。究其原因主要是系统的抗干扰设计不全面,导致应用系统的工作不可靠。本文主要分析单片机应用系统出错的起因,并结合自己的工作经验,探讨一些解决的办法。
2 单片机应用系统出错的主要现象和原因
2.1 单片机应用系统出错的主要现象和内因
大量的电源和磁场干扰,会造成以下各种系统内部出错。表1列出了单片机应用系统出 错的主要现象和内部原因。
2.2 单片机应用系统出错的外部原因
从设计和制造的角度来看,造成应用系统容易受干扰的主要原因是:
(1)系统电源的抗干扰能力差或功率不足;
(2)程序没有采取抗干扰措施或措施不力;
(3)器件间驱动功率不足,处在较临界状态;
(4)远距离数据传输的电源、电压偏低;
(5)没有采取屏蔽保护;
(6)元件质量低。
针对以上出现的问题,我们分别从硬件和软件两个方面来探讨一些提高单片机应用系统 抗干扰能力的方法。
3 单片机应用系统的硬件抗干扰设计
3.1 选择时钟频率低的单片机
外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,使电磁兼容检测不能达标。在对系统可靠性要求很高的应用系统中,选用频率低的单片机是降低系统噪声的原则之一。以8051单片机为例,最短指令周期1μs时,外时钟是12MHz。而同样速度的Motorola单片机系统时钟只需4MHz,更适合用于工控系统。
3.2 电源
(1)若系统空间允许的话,可使用现成的微电脑开关电源,它有4组输出,分别为+5V(18 A~25A)、-5V(0.5A)、+12V(6A~10A)、-12V(0.5A)。如果一个功率不够,可用多个分块供电,主机最好单独使用一个。电源的功率充足,就能减少电源本身所产生的纹波及谐波干 扰。这是解决电源干扰和电源功率不足的最好方法;
(2)采用开关电源设计;
(3)主机部分采用单独的稳压电路,一片7805稳压块,加上较好的滤波电路;外围电路 采用另外的电源供电。
3.3 提高输出信号的电源或电压
如果输入、输出连接线路超过80cm,最好提高传送的电压或电流,以减少信号的衰减和 受干扰而造成的信号失真。简单的方法可在传送端加一个1488,将电平提高到12V;接收端加一个1489,将电平回复到5V。
表1 单片机应用系统出错的主要现象和内部原因
| 序号 | 出错现象 | 主 要 内 部 原 因 |
| 1 | 死机 | (1)单片机内部程序指针错乱,使程序进入死循环; (2)RAM中的数 据被冲乱,使程序进入死循环。 |
| 2 | 系统被控对象误操作 | (1)单片机内部程序指针错乱,指向了其它地方,运 行了错误的程序;
(2)RAM中的某些数据被冲乱,使程序计算出错误的结果;
(3) 外围锁存电路受干扰,产生误锁存,从而引起被控对象的误操作。 |
| 3 | 被控对象状态不稳定 | 锁存电路与被控对象间的线路(包括驱动电路)受干扰,从而 造成被控对象状态不稳定。 |
| 4 | 显示数据混乱或闪烁 | (1)单片机内部程序指针错乱,指向了其它地方,运 行了错误的程序;
(2)RAM中的某些数据被冲乱,使程序计算出错误的结果;
(3) 显示器的锁存电路受干扰,造成显示器不断地闪烁。 |
| 5 | 定时不准 | (1)单片机内部程序指针错乱,使中断程序运行超出定时时间;
(2)RAM中计时数据被冲乱,使程序计算出错误的结果。 |
3.4 输入、输出隔离
输入、输出信号可加光电耦合器隔离,防止 外围器件动作时产生的回流冲击系统电路。
3.5 注意器件的驱动能力
一般1个TTL可推动8个TTL或10多个CMOS,而一个CMOS可推动1~2个TTL或20多个CMOS。如果输出负载过重,会降低输出电平,使电平处于或低于被驱动器件的输入门槛电平(TTL:高为2.4V,低为0.4V;CMOS;高为4.5V,低为1.4V),从而造成系统不稳定。
3.6 采取屏蔽保护
屏蔽可用来隔离空间辐射。对噪声特别大的部件(如开关电源),用金属盒罩起来,可减 少噪声源对单片机的干扰。对容易受干扰的部分,可加设屏蔽金属罩并接地,使干扰磁信号 被短路接地。
3.7 注意印制电路板的布线与工艺
印制电路板的设计对单片机系统能否抗干扰非常重要。要本着尽量控制噪声源,尽量减 小噪声的传播与耦合,尽量减小噪声的吸收这三大原则设计印制电路板和布线。
(1)印制电路板要合理分区。单片机应用系统通常可分三区,即模拟电路区(怕干扰)、 数字电路区(既怕干扰、又产生干扰)、功率驱动区(干扰源)。
(2)印制电路板要按单点接电源、单点接地的原则送电。三个区域的电源线、地线由该 点分三路引出。噪声元件与非噪声元件要离得远一些。
(3)时钟振荡电路、特殊高速逻辑电路部分用地线圈起来,让周围电场趋近于零。
(4)使用满足系统要求的最低频率的时钟,时钟产生器要尽量靠近用到该时钟的器件。 石英晶体振荡器外壳要接地,时钟线尽量短,且在石英晶体振荡器下面要加大接地的面积而 不应该走其它信号线。
(5)I/O驱动器件、功率放大器件尽量靠近印制板的边、靠近引出接插件。
(6)在单面板、双面板设计中,地线、电源线要尽量粗。信号线的过孔要尽量少。
(7)四层板比双面板噪声低20dB,六层板比四层板噪声低10dB。经济条件允许时尽量用 多层板。
(8)使用45°的折线布线,不要使用90°折线,以减小高频信号的发射。
(9)重要的信号线尽量短并要尽量粗,并在两侧加上保护地。将信号通过扁平电缆引出 时,要使用地线-信号-地线……的结构。
(10)时钟线垂直于I/O线比平行于I/O线干扰小,时钟线要远离I/O线。
(11)对A/D类器件,数字部分与模拟部分宁可绕一下也不要交叉。噪声敏感线不要与高 速线、大电流线平行。
(12)每个IC元件要加一个去耦电容,布线时去耦电容要真正接在芯片的电源、地上。要 选高频特性好的独石电容或瓷片电容作去耦电容。去耦电容焊在印制电路板上时,引脚要尽 量短。
(13)从高噪声区来的信号要加滤波。继电器线圈处要加放电二极管。可以用串一个电阻 的办法来软化I/O线的跳变沿或提供一定的阻尼。
(14)闲置不用的门电路输入端不要悬空。闲置不用的运算放大器正输入端接地,负输入 端接输出。单片机不用的I/O口定义成输出。单片机上有一个以上电源、地端的,每端都要 接上,不要悬空。
(15)尽量不要使用IC插座,把IC直接焊在印制板上,IC插座有较大的分布电容。
3.8 选择良好的元件
现在市场上出售的元件,很多是可用但性能不佳,甚至有些是器件厂经测试认为不合格 的产品。这些元件极易受干扰,只能在很好的环境(指电源稳定、没有磁干扰)下工作。因此 在选购元件时,特别是单片机、晶振、RAM等,最好选购一级品。4 单片机应用系统的软件抗干扰设计 单片机应用系统的抗干扰不可能完全依靠硬件解决,软件抗干扰设计也是防止和消除整 个应用系统故障的重要途径。4.1 控制状态失常的软件对策
(1)软件冗余。对于条件控制系统,对控制条件的一次采样、处理控制输出改为循环地 采样、处理控制输出。这种方法对于惯性较大的控制系统具有良好的抗干扰作用。
(2)设置当前输出状态寄存单元,当干扰侵入输出通道造成输出状态破坏时,系统能及 时查询寄存单元的输出状态信息,及时纠正输出状态。
(3)设自检程序。在单片机内的特定部位或某些内存单元设状态标志,在开机后,运行 中不断循环测试,以保证系统中信息存储、运输、运算的高可靠性。
4.2 程序运行失常的软件对策
(1)设置程序监视跟踪定时器。目前,大多数单片机片内都集成有程序监视跟踪定时器 。监视跟踪定时器主要用来跟踪程序的运行。当程序运行出现故障时,计数器溢出,系统复 位,重新运行系统程序。利用它可有效地实现程序防飞功能。
(2)设置程序指针陷阱。在每个子程序后面或程序段后,插入5条指令NOP、NOP、NOP、N OP、LJMP MAIN(其中MAIN是初始化程序开始地址),在片的空白处(特别是后面的空白处), 每32个字节放指令LJMP MAIN。设置了指针陷阱后,一旦单片机受干扰,使程序指针混乱, 执行了一段程序后,就会落入陷阱中,执行LJMP MAIN指令,回复到初始化程序开始处,从 而避免死机。
4.3 数据采集误差的软件对策
用软件滤波算法,可滤掉大部分由输入信号干扰而引起的输出控制错误。最常用的方法 有算术平均值法、比较舍取法、中值法、一阶递推数字滤波法。具体选取何种方法,必须根 据信号的变化规律选择。
5 结束语
笔者从硬件、软件两个方面探讨了一些提高抗干扰能力的方法,这些方法有效可行,笔 者在很多系统设计采用,受到了良好的效果,基本解决了令人头痛的干扰问题。作者简介:顾永红(1966-),女,江苏泰兴人,工程师,硕士,从事 微波与卫星通信、单片机控制等方面工作。
作者单位:顾永红(总参第63研究所,南京 210016)参考文献:[1]邵贝贝.单片机的可靠性技术及其发展[J].电子产品世界.1999,(8).
[2]何立民.MCS-51系列单片机应用系统设计[M].北京航空航天大学出版社.1999 .7. |