在单片机的应用系统中,系统的抗干扰技术是系统可靠性的重要方面。一个系统的正确与否,不仅取决于系统的设计思想和方法,同时还取决于系统的抗干扰措施,不然势必会出现原理正确而系统稳定性差,甚至不能实施,使得耗费了大量钱财和时间研制出来的控制系统成为一种摆设,电脑变成了“烦恼”。正因如此,抗干扰技术的研究越来越引起大家的高度重视。
以下为笔者在多年单片机控制系统设计和应用中拾取的一些抗干扰的经验体会。
2 单片机系统软件的抗干扰
一般来讲,窜入微机测控系统的干扰,其频谱往往很宽,采用硬件抗干扰措施,只能抑制某个频率段的干扰,仍有一些干扰会进入系统。因此,除了采取硬件抗干扰方法外,还要采取软件抗干扰措施。
2.1 模拟输入信号抗干扰
叠加在系统模拟输入信号上的噪声干扰,会导致较大的测量误差。但由于这些噪声的随机性,可以通过数字滤波技术剔除虚假信号,求去真值。常用方法如下:
(1)算术平均滤波法算术平均滤波法就是连续取N个值进行采样,然后求其平均值。该方法适应于对一般具有随机性干扰的信号进行滤波。这种滤波法的特点是:N值较大时,信号的平滑度好,但灵敏度低;当N值较小时,平滑度低,但灵敏度高。
(2)递推平均滤波法
该方法是把N个测量数据看成一个队列,队列的长度为N,每进行一次新的测量,就把测量结果放入队尾,而扔掉原来队首的一次数据。计算N个数据的平均值。对周期性的干扰,此方法有良好的抑制作用,平滑度高,灵敏度低。但对偶发脉冲的干扰抑制作用差。
(3)防脉冲干扰平均值滤波法
在脉冲干扰比较严重的场合,如果采用一般的平均滤波法,则干扰将会“平均”到结果中去,故平均值法不易消除由于脉冲干扰而引起的误差。为此,在N个采样数据中,取掉最大值和最小值,然后计算N-2个数据的算术平均值。为了加快测量速度,N一般取值为4。
2.2 “死机”现象的克服
当干扰通过总线或其他口线作用到CPU时,就会造成程序计数器PC值的改变,引起程序混乱,使系统失控。因此,在设计单片机系统时,如何发现CPU受到干扰,并尽可能无扰地使系统恢复到正常工作状态是软件设计应考虑的主要问题。
无论何种控制系统,一般讲,死机现象都是不允许的。克服死机现象最有效的办法就是采用单片机工加了硬件看门狗电路后仍然有死机现象,分析原因,可能有以下方面:
(1)因为某种原因,程序混乱后,看门狗电路虽然发出了复位脉冲,但在程序刚刚正常还来不及发出一个脉冲信号,此时程序再次被干扰,而这时看门狗电路已处于稳态,不能再发出复位脉冲。
(2)程序进入死循环,在该死循环中,恰好又有看门狗监视I/O口上操作的指令。而该I/O口仍有脉冲信号输出,看门狗检测不到这种异常情况。
(3)在有严重干扰时,中断方式控制字有时会受到破坏,导致中断关闭。
可见,只用硬件看门狗电路是无法确保单片机正常工作的。因此,可采用以下方法作为补充。
(1)软件“看门狗”的应用
选用定时器T0作为看门狗,将T0的中断定义为最高级中断。看门狗启动后,系统必须及时刷新T0的时间常数。
(2)指令冗余技术
①NOP的使用
在8031单片机指令系统中所有指令都不超过3个字节。因此,在程序中连续插入3条NOP指令,有助于降低程序计数器发生错误的概率。
②重要指令冗余
对于程序流向起决定作用的指令(如RET,RETI,ACALL,LJMP,JZ等)和某些对系统工作状态有重要作用的指令(如SETBEA等)的后面,可重复写下这些指令,以确保这些指令的正确执行。
(3)软件陷阱法
单片机系统程序跑飞意味着CPU执行不正确流程程序。而当乱飞程序进入非程序区,采用冗余技术无法使程序纳入正确轨道,此时可采用软件陷阱法,拦截乱飞程序。软件陷阱就是用引导指令(如LJMP)将扑获到的乱飞程序引向复位入口地址0000H,在此对程序进行出错处理,使其纳入正轨。
①软件陷阱格式
NOP
NOP
LJMP0000H
②软件陷阱安排未使用的中断区;
未使用的大片ROM空间;
程序区;
中断服务程序区。
2.3 系统复位特征
单片机应用系统采用看门狗电路后,在一定程度上解决了系统死机现象,但是每次发生复位都使系统执行初始化,这在干扰较强的情况下仍不能正常工作。同时系统虽然没有死机,但工作状态频繁改变,这同样是不能容忍的。
理想的复位特征应该是:系统可以鉴别是首次上电复位(又称冷起动),还是异常复位(又称热启动)。首次上电复位则进行全部初始化,异常复位则不需要进行全部初始化,测控程序不必从头开始执行,而应故障部位开始。
(1)上电标志的设定方法
①SP建立上电标志。
②PSW.5建立上电标志。
③内RAM建立上电标志。
(2)软件复位与中断激活标志
当系统执行中断服务程序时,来不及执行RETI指令而受干扰跳出该程序后,程序乱飞过程中由软件陷阱或软件“看门狗”将程序引向0000H,显然这时中断激活标志并未清除,这样就会使系统热启动时,不管中断标志是否置位,都不会响应同级中断的请求。因此,由软件陷阱或“看门狗”捕获的程序一定要完成清除 MSC-51系列中中断激活标志,才能消除系统热启动后不响应中断的隐患。
(3)程序失控后恢复运行的方法
一般来说,主程序是由若干个功能模块组成,每个功能模块入口设置一个标志,系统故障复位后,可根据这些标志选择进入相应的功能模块。这一点对一些自动化生产线的控制系统尤为重要。
总之,微机测控系统由于受到严重干扰而发生程序乱飞、陷入死循环以及中断关闭等故障。系统通过冗余技术、软件陷阱技术和“看门狗”技术等,使程序重新进入0000H单元,纳入正轨。因故障而进入0000H后,系统要执行上电标志判定、RAM数据检查与恢复、清除中断激活标志等一系列操作,决定入口地址。
2.4 睡眠抗干扰
在实际应用中,强干扰的来源往往是系统本身,例如被控负载的中断状态变化等。而这种干扰是可预知的,在软件设计时可采取适当措施避开。当系统接通或断开大功率负载时,暂停一切数据采集等工作。待干扰过后,再恢复进行。这比单纯在硬件上采取抗干扰措施要好的多。8031单片机中有一个电源控制寄存器 PCON。当PCON.0=1时,8031单片机进入等待工33作状态。这时单片机时钟被封锁,所有I/O口引脚均保持进入等待工作方式前的状态,内部时钟仍然继续供给中断系统定时/计数器和串行口、8031单片机现场(栈指针、程序计数器PC、状态字PSW、累加器ACC、内部RAM)和其他特殊功能寄存器内容保持不变。中断退出和硬件复位均可使8031单片机退出睡眠状态。
3 单片机系统中硬件抗干扰设计
一个好的电路设计,应在设计过程中充分考虑抗干扰性的要求。分析系统中可能引起干扰的部件,采取必要的硬件抗干扰措施,抑制干扰源、切断干扰传播途径。
3.1 抑制干扰源常用措施
(1)给继电器线圈增加续流二极管,消除断电时产生的反电动势。
(2)在继电器接点两端并接火花抑制电路,(一般为RC串联电路,电阻一般为几~几十kΩ,电容为0.01μF)减小电火花影响。
(3)给电机加滤波电路,注意电容、电感连线要尽量靠近电机。
(4)电路板上每个IC要并接一个0.01~0.1μF高频电容,减小IC对电源的影响。注意高频电容的布线应靠近电源端,并尽量短,否则等于增大了电容的等效串联电阻,会影响滤波效果。
(5)避免90°折线,减小高频噪声发射。
(6)在可控硅两端并接RC抑制电路,减小可控硅噪声。
3.2 切断干扰传播途径措施
(1)充分考虑电源对单片机的影响。给单片机电源加滤波电路,减小电源噪声对单片机的干扰。
(2)若用单片机的I/O口来控制电机等噪声器件,在I/O口与噪声源之间应加Ⅱ形滤波电路,或进行光电隔离。
(3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。
(4)电路板合理分区,如数字信号、模拟信号尽可能使干扰源与敏感器件远离。
(5)用地线将数字区与模拟区隔离,数字地与模拟地分离,最后接在一点接于电源地。
(6)单片机和大功率器件的地线要单独接地,以减小相互之间的干扰。
(7)在单片机I/O口、电源线、电路板连线等关键地方使用抗干扰元件,如磁环、电源滤波器、屏蔽罩等。3.3 提高敏感器件的抗干扰性能
提高敏感器件的抗干扰性能是指从敏感器件考虑尽量减小对干扰噪声的拾取,以及从不正常状态尽快恢复的方法。常用措施:
(1)布线时尽量减少回路面积,降低感应噪声;
(2)布线时电源线与地线尽量粗。除减小压降外,更重要的是降低耦合噪声;
(3)对单片机的闲置I/O,不能悬空,应接地或电源,其他IC的闲置口一样;
(4)加单片机硬件看门狗电路;
(5)满足要求的前提下,尽量降低单片机晶振和选用低速数字电路;
(6)IC器件尽量直接焊在电路板上,少用IC座。