李家坤
(长江工程职业技术学院,湖北 武汉 430212)
在单片机应用系统的工作环境中,往往不可避免地存在着各种干扰源,如供电系统的干扰、过程通道的干扰、空间辐射的干扰等,这些干扰极容易入侵计算机,造成单片机应用系统的可靠性和稳定性大大下降。因此,增强单片机应用系统的抗干扰能力,提高系统运行的可靠性、稳定性显得尤为重要[1]。抗干扰技术主要有硬件抗干扰和软件抗干扰,本文分析了干扰的来源及其影响,并在硬件和软件两方面系统地提出了有效的抗干扰措施。
工业现场环境中干扰是以脉冲的形式进入单片机系统,主要有供电系统的干扰、过程通道的干扰及空间辐射的干扰。供电系统干扰是以电源的噪声干扰引起的;过程通道干扰是干扰通过前向通道和后向通道进入系统;空间辐射干扰多发生在高电压、大电流、高频电磁场附近,并通过静电感应、电磁感应等方式侵入系统内部。干扰一般沿各种线路侵入系统,此外,系统接地装置不可靠,也是产生干扰的重要原因;各类传感器,输入输出线路的绝缘损坏均有可能引入干扰[2]。
干扰产生的后果主要有:(1)造成数据采集误差加大;(2)造成程序运行失常;(3)引起系统被控对象的误操作;(4)引起被控对象状态不稳定;(5)造成定时不准;(6)使存贮器中有效数据发生变化。
(1)远离干扰源。进入计算机的电源线不宜接入带有大功率感性负载的动力线,可以采用专用的220 V交流电源供电。
(2)安装隔离变压器。考虑到高频噪声通过变压器不是依初次级线圈的互感耦合,而是靠初次级寄生电容耦合的,因此隔离变压器的初次级之间应采用三层屏蔽层保护。
(3)模拟电路与数字电路系统独立供电。模拟电路与数字电路之间无电路上的直接联系,而是利用浮空技术,互不共地。
(4)数字电路系统采用集成度高、抗干扰性强的开关电源。在交流电源输入端加入LC高频滤波网络,能有效地滤除高频干扰。
(5)安装低通滤波器。由谐波频谱分析可知,电源引起的干扰大部分是高次谐波,可在隔离变压器之后设计低通滤波器,使得50 Hz市电基波通过,滤去高次谐波,以改善电源波形。
(6)采用分散独立的功能块供电。在实际的控制系统中,用三端集成稳压块分别组成所需的稳压电源,这样可以减少公共阻抗和公共电源的相互耦合,有利于电源散热,大大提高供电的可靠性。
导线间的相互耦合(包括电耦合、磁耦合、电磁耦合)是过程通道干扰的主要因素之一,合理布线、选线以及通道的隔离是抑制、消除干扰的主要措施。
(1)布线上采用“远离技术”。将干扰源远离被干扰的信号线和回路,即强电的馈线必须单独连线,绝对不能与弱信号线绑扎在一起,尽量避免平行走向,最好使两者正交,这样可以将电场耦合与磁场耦合形成的干扰电压降到最小。
(2)采用双绞线传输,注意长线传输的阻抗匹配。要求源的输出阻抗、传输线的特性阻抗与接收端的输入阻抗三者相等。
(3)采用电流传输代替电压传输。这种方法可获得较好的抗干扰能力。
(4)采用光电耦合隔离。光电耦合器是在密封条件下,利用光电耦合来沟通被切断的电路,不会受到外界光的干扰。
(5)进入A/D的每路信号,先要进行滤波和限幅,以减小干扰的影响。同时采用低噪声前置差动放大电路,获得较大的共模抑制比。
(6)对于暂不工作的A/D通道,输入一律短路,以防止感应电压进入计算机,影响系统正常工作。
辐射干扰主要来源于空间存在的多种电磁波。例如,通信、广播、大功率设备的开关电弧,电网有脉冲源工作时的射频波及系统内部高频电路辐射出的电磁波等,这些辐射波的电磁感应的方式通过壳体、导线等形成接收电路,造成对电路的干扰[3]。
防止辐射干扰的主要方法有:
(1)屏蔽技术。包括静电屏蔽、电磁屏蔽、磁屏蔽。屏蔽方式有两种:一种是把容易被干扰的电路或导线、壳体等屏蔽起来,以防接收辐射干扰;另一种是把辐射屏蔽起来,防止辐射干扰影响其他电路,例如将ADC等器件置于接地的金属罩内。
(2)合理布局。将内部具有辐射性能的电路独立远置,以避免对其他电路的影响。
(3)在信道中设置各种滤波器,以滤除由辐射而引起的干扰。
(1)尽量采用多层印制电路板,多层板可提供良好的接地网,可防止产生地电位差和元件之间的耦合。
(2)印制电路板要合理分区。模拟电路区、数字电路区、功率驱动区要尽量分开,地线不能相混,分别和电源端的地线相连。
(3)元件面和焊接面应采用相互垂直、斜交,或者弯曲走线,避免相互平行以减小寄生耦合:避免相邻导线平行段过长;加大信号线间距。高频电路互联导线尽量短,使用 45°或者圆弧折线布线,不要使用 90°折线,以减小高频信号的发射。
(4)印制电路板要按单点接电、单点心接地的原则送电。三个区域的电源线、地线分三路引出。地线、电源线要尽量粗,噪声元件与非噪声元件要尽量分开。时钟振荡电路、特殊高速逻辑电路部分用地线圈起来,让周围电场趋近于零。
(5)使用满足系统要求的最低频率的时钟,时钟产生器要尽量靠近用到该时钟的器件。石英晶体振荡器外壳要接地,时钟线尽量短,时钟线要远离 I/O线,在石英晶体振荡器下面要加大接地的面积而不应该走其他信号线。
(6)I/O驱动器件、功率放大器件尽量靠近印制板的边、靠近引出接插件。重要的信号线尽量短、尽量粗,并在两侧加上保护地。将信号通过扁平电缆引出时,要使用地线—信号—地线相间的结构。
2.4.2 提高元器件的可靠性
(1)选用质量好的电子元件并进行严格的测试、筛选和优化[4]。
(2)设计时元件技术参数要留有一定的余量。(3)提高印制板和组装的质量。
2.4.3 使用多机冗余设计
在对控制系统的可靠性有严格要求的场合,使用多机冗余可进一步提高系统抗干扰能力。多机冗余,就是执行同一个控制任务,可安排多个单片机来完成。以双机冗余为例,所谓双机冗余,就是执行同一个控制任务,可安排两个单片机来完成,即主机与从机。正常情况下,主机掌握着三总线的控制权,对整个系统进行控制,此时,从机处于待机状态,等待仲裁器的触发。
一般来讲,窜入微机测控系统的干扰,其频谱往往很宽,采用硬件抗干扰措施,只能抑制某个频率段的干扰,仍有一些干扰会进入系统。因此,除了采取硬件抗干扰方法外,还要采取软件抗干扰措施。
叠加在系统模拟输入信号上的噪声干扰,会导致较大的测量误差。但由于这些噪声的随机性,可以通过数字滤波技术剔除虚假信号,求取真值。常用方法如下:
(1)算术平均滤波法
算术平均滤波法就是连续取N个值进行采样,然后求其平均值。该方法适应于对一般具有随机性干扰的信号进行滤波。这种滤波法的特点是:N值较大时,信号的平滑度好,但灵敏度低;当N值较小时,平滑度低,但灵敏度高。
(2)递推平均滤波法
该方法是把N个测量数据看成一个队列,队列的长度为N,每进行一次新的测量,就把测量结果放入队尾,而扔掉原来队首的一次数据,计算N个数据的平均值。对周期性的干扰,此方法有良好的抑制作用,平滑度高,灵敏度低。但对偶发脉冲的干扰抑制作用差。
(3)防脉冲干扰平均值滤波法
在脉冲干扰比较严重的场合,如果采用一般的平均滤波法,则干扰将会“平均”到结果中去,故平均值法不易消除由于脉冲干扰而引起的误差。为此,在N个采样数据中,去掉最大值和最小值,然后计算N-2个数据的算术平均值。为了加快测量速度,N一般取值为4。
设计系统自检程序是提高系统可靠性的有效方法之一。自检程序能对单片机的输入输出通道、内部RAM、特殊功能寄存器SFR、外部RAM进行故障检查和诊断,并能给出故障的部位。
当干扰通过总线或其他口线作用到CPU时,就会造成程序计数器PC值的改变,引起程序混乱,使系统失控。因此,在设计单片机系统时,如何发现CPU受到干扰,并尽可能无扰地使系统恢复到正常工作状态是软件设计应考虑的主要问题。
3.3.1 采用指令冗余技术
CPU受到干扰后,往往将一些操作数当作指令码执行,引起程序混乱。MCS-51指令系统中所有的指令都不超过3个字节,而且有很多单字节指令。当程序弹飞到某一个单字节指令上时,便自动纳入正轨;当弹飞到某一双字节或三字节指令上时,有可能落到某操作数上继续出错[5]。因此,在软件设计时,应多采用单字节指令,并在关键的地方人为地插入一些单字节指令(NOP),或将有效单字节指令重复书写,这就是指令冗余。对双字节和三字节,在其后插入2条空操作指令NOP,可保护其后的指令不被拆散。程序设计中,常在一些对程序流向起决定作用的指令 (如 RET、RETI、ACALL、LCALL、LJMP、JZ、JC 等)和某些对系统状态起重要作用的指令 (如SETB、EA等)之前插入2条NOP指令,可保证纳入正轨,或者在这些重要指令后面重写,确保这些指令的正确执行。
3.3.2 采用软件陷阱技术
所谓软件陷阱,就是在PC正常运行不该到达的存储区设置一条引导指令,捕获PC并强行将其引向一个指定的地址,在那里有一段专门对程序运行出错进行处理的程序,以此达到复位系统的目的。
如果把这段程序的入口标号称为ERR的话,软件陷阱即为一条LJMP ERR指令,为加强其捕捉效果,一般还在它前面加两条NOP指令。因此,真正的软件陷阱由三条指令构成:
软件陷阱常被安排在未使用的中断向量区;未使用的大片ROM空间;表格及程序区。
由于软件陷阱都安排在程序正常执行不到的地方,故不会影响程序执行效率。
3.3.3 利用“看门狗”技术
当跑飞程序既没有落入软件陷阱,又没有遇到冗余指令,而是在用户程序之间或用户本未使用的地址空间跳来跳去,自动形成一个死循环。解决这一问题的办法是采用“看门狗”技术来实现PC快速自恢复。
“看门狗”可采用硬件电路设计完成,也可以采用软件“看门狗”。采用软件“看门狗”可以避免硬件“看门狗”所需要增加的开销。
软件看门狗的具体设计方法如下:
采用定时器T0作为WATHDOG,将 T0的中断定义为高级中断,系统中的其他中断设为低级中断,WATCHDOG启动后,系统必须及时刷新T0的时间常数。这样,当程序正常运行时,由于每次还未到T0产生溢出中断,即将T0的时间常数刷新,T0中断永远不会发生;而当程序因干扰进入某一小区域死循环时,T0将产生高级中断,T0中断可直接转向出错处理程序,由出错处理程序来完成系统复位。
针对电源的干扰、过程通道的干扰、空间辐射的干扰等几种主要的干扰源,本文从硬件、软件两个方面探讨了一些提高抗干扰能力的方法。不同的单片机系统都有自己的系统特点和要求,在硬件和软件抗干扰设计上也各有自己的特色,在实践中可以有针对性地采用其中几种。
[1]何立民.MCS-51单片机应用系统设计[M].北京:北京航空航天大学出版社,1997.
[2]先锋工作室.单片机程序设计实例[M].北京:清华大学出版社,2003.
[3]王幸之.单片机应用系统抗干扰技术[M].北京:北京航空航天大学出版社,2001.
[4]周晗晓,袁慧梅.单片机系统的印制板设计与抗干扰技术[J].电子工艺技术,2004(6).
[5]史勇,谢晓霞.测控系统中的软件抗干扰技术[J].现代电子技术,2006(19).