第五章单片机应用系统抗干扰技术一干扰的主要来源三抗干扰措施硬件抗干扰措施软件抗干扰措施二干扰产生带来的后果一、干扰的主要来源工业现场环境中的干扰通常是以脉冲的形式进入单片机系统,其主要的渠道有三条1、空间干扰空间干扰,又称场干扰。电磁信号通过空间辐射进入系统,多发生在高电压、大电流、高频电磁场附近,并通过静电感应,电磁感应等方式侵入系统内部。2、供电系统干扰电磁信号通过供电线路进入系统。供电系统干扰主要由电源的噪声干扰引起的。3、过程通道干扰干扰通过与系统相连的前向通道、后向通道及与其它系统的相互通道进入,一般沿各种线路侵入系统。说明:⒈一般情况下空间干扰在强度上远小于其它两种,故微机系统中应重点防止过程通道干扰和供电系统干扰。⒉此外,系统接地装置不可靠等,也是产生干扰的重要原因;各类传感器,输入输出线路的绝缘损坏也有可能引入干扰。二、干扰产生带来的后果1、数据采集误差加大2、程序运行失常3、系统被控对象误操作4、被控对象状态不稳定5、定时不准6、数据发生变化2、程序运行失常⑴控制状态失灵当干扰侵入单片机系统的前向通道叠加在信号上,会使数据采集误差增大,特别是前向通道的传感器接口是小电压信号输入时,此现象会更加严重。在单片机系统中,由于干扰的加入使输出误差加大,造成逻辑状态改变,最终导致控制失常。⑵死机在单片机系统受强干扰后,造成程序计数器PC值的改变,破坏程序正常运行,造成死循环。1、数据采集误差的加大3.系统被控对象误操作4.被控对象状态不稳定锁存电路与被控对象间的线路(包括驱动电路)受干扰,从而造成被控对象状态不稳定(锁存电路一般较敏感)。⑴单片机内部程序指针错乱,指向了其它地方,从而运行了错误的程序。⑵RAM中的某些数据被冲乱或者特殊寄存器的值被改变,使程序计算出错误的结果。⑶中断误触发,使系统进行错误的中断处理。6.数据发生变化在单片机应用系统中,由于外部RAM是可读写的,在干扰的侵入下,RAM中数据有可能发生改变,虽然ROM能避免干扰破坏,但单片机片内RAM以及片内各种特殊功能寄存器等状态都有可能受干扰而变化,甚至EEPROM中的数据也可能误读写,使程序计算出错误的结果。5.定时不准⑵RAM中计时数据被冲乱,使程序计算出错误的结果。⑴单片机内部程序指针错乱,使中断程序运行超出定时时间。抗干扰措施有硬件措施和软件措施。硬件措施如果得当,可将绝大部分干扰拒之门外,但仍然会有少数干扰进入微机系统,故软件措施作为第二道防线必不可少。由于软件抗干扰措施是以降低CPU效率为代价的,如果没有硬件消除绝大多数干扰,CPU将疲于奔命,无暇顾及正常工作,严重影响系统的工作效率和实时性。因此,一个成功的抗干扰系统是由硬件和软件相结合构成的。三、抗干扰措施1、注意印制电路板的布线与工艺2、屏蔽4、光电隔离3、提高元器件的可靠性5、过压保护电路6、增加硬件看门狗电路7、供电系统抗干扰措施㈠硬件抗干扰措施1、注意印制电路板的布线与工艺⑴尽量采用多层印制电路板,多层板可提供良好的接地网,可防止产生地电位差和元件之间的耦合(但要考虑性价比)。⑵印制电路板要合理分区。模拟电路区、数字电路区、功率驱动区要尽量分开,地线不能相混,分别和电源端的地线相连。⑶元件面和焊接面应采用相互垂直、尽量避免相互平行走线以减小寄生耦合;避免相邻导线平行段过长;加大信号线间距。高频电路互联导线尽量短,使用45°或者圆弧折线布线,不要使用90°折线,以减小高频信号的发射。⑷三个区域的电源线、地线分三路引出。地线、电源线要尽量粗,噪声元件与非噪声元件要尽量离远一些。时钟振荡电路、特殊高速逻辑电路部分用地线圈起来,让周围电场趋近于零。⑸使用满足系统要求的最低频率的时钟,时钟产生器要尽量靠近用到该时钟的器件。石英晶体振荡器外壳要接地,时钟线尽量短,时钟线要远离I/O线,在石英晶体振荡器下面要加大接地的面积而不应该走其它信号线。⑹I/O驱动器件、功率放大器件尽量靠近印制板的边、靠近引出接插件。重要的信号线尽量短并要尽量粗,并在两侧加上保护地。将信号通过扁平电缆引出时,要使用地线-信号-地线相间的结构。⑺原则上每个IC元件要加一个0.01~0.1µF去耦电容,布线时去耦电容应尽量靠近IC的电源脚和接地脚。要选高频特性好的独石电容或瓷片电容作去耦电容。去耦电容焊在印制电路板上时,引脚要尽量短。这样便可以消除大部分高频干扰。⑻闲置不用的IC管脚不要悬空以避免干扰引入。单片机不用的I/O口定义成输出。单片机上有一个以上电源、接地端,每个都要接上,不要悬空。2、屏蔽⑼避免环流的产生。加粗的线晶振尽量靠近用到时钟的器件AT89c2051⑴选用质量好的电子元件并进行严格的测试、筛选和老化。⑵设计时元件技术参数要有一定的余量。⑶提高印制板和组装的质量。4、光电隔离在输入和输出通道上采用光电隔离器来进行信息传输,将微机系统与各种传感器、开关、执行机构从电气上隔离开来,很大一部分干扰将被阻挡。3、提高元器件的可靠性2、屏蔽对容易产生干扰和被干扰的部件使用金属盒进行屏蔽以使干扰电磁波短路接地。在输入输出通道上应采用一过压保护电路,以防引入高电压,伤害微机系统。过压保护电路由限流电阻和稳压管组成,限流电阻选择要适宜,太大会引起信号衰减,太小起不到保护稳压管的作用。稳压管的选择也要适宜,其稳压值以略高于最高传送信号电压为宜,太低将对有效信号起限幅效果,使信号失真。5、过压保护电路outin6、增加硬件看门狗电路对于失控的CPU,最简单的方法是使其复位,程序自动从0000H开始执行。为此只要在单片机的RESET端加上一个高电平信号,并持续10ms以上即可。WATCHDOG有如下特征:⑴本身能独立工作,基本上不依赖于CPU。CPU只在一个固定的时间间隔内与之打一次交道,表明整个系统“目前尚属正常”。⑵当CPU落入死循环之后,能及时发现并使整个系统复位。“喂狗”过程一般安排在监控循环或定时中断中,如果有比较长的延时子程序,则应该在其中插入“喂狗”过程。目前有很多单片机在内部已经集成了片内的硬件WATCHDOG电路,使用起来更为方便。对于片内看门狗,是通过两条特定的赋值指令来完成。此外,也可以也可以用软件程序来形成WATCHDOG。CPUWATCHDOGRESET脉冲···RESET⒎供电系统抗干扰措施(1)防止从电源系统引入干扰,可采取交流稳压器保证供电的稳定性,防止电源的过压和欠压。使用隔离变压器滤掉高频噪声,低通滤波器滤掉工频干扰。(2)采用开关电源并提供足够的功率余量,主机部分使用单独的稳压电路,必要时输入,输出供电分别采用DC-DC模块隔离,以避免各个部分相互干扰。1.开机自检2.软件陷阱(程序“跑飞”检测)3.设置程序运行状态标记4.输出端口刷新5.输入多次采样6.数据滤波7.指令冗余8.软件“看门狗”㈡常用软件抗干扰措施:1、开机自检开机后首先对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。开机自检程序通常包括对RAM、ROM、I/O通道等的检测。检测RAM检查RAM读写是否正常,出错时应作出提示(声光)或标志。方法:1.向RAM单元写“00H”和“FFH”,读出也应为“00H”和“FFH”,检查通过。2.不改变RAM单元内容的检查方法。(实例程序)不改变RAM单元内容的检查方法实例程序设有1片6264,地址为2000H~3FFFH,结果F0=1:出错。TEST7:MOVDPTR,#2000H;诊断6264MOVR2,#20H;共20H页TEST70:LCALLTEST75;JBF0TEST71;出错_跳DJNZR2,TEST70TEST71:RETTEST75:SETBF0;页内检测TEST76:MOVXA,@DPTR;检查一个字节MOVB,A;保存副本CPLA;取反MOVX@DPTR,A;写MOVXA,@DPTR;读CPLA;取反CJNEA,B,TEST78;校对,错转MOVX@DPTR,A;恢复MOVXA,@DPTR;再读CJNEA,B,TEST78;校对,错转INCDPTR;下一单元MOVA,DPLJNZTEST76;全页完?CLRF0TEST78:RET说明:256Byte为1页,1K有4页。6264是8KRAM,故有32页=20H页。检测ROM对ROM单元的检测主要是检查ROM单元的内容的校验和。1.将ROM的内容逐一相加,放弃进位后得到的一个数值。2.将ROM的内容逐一异或相加,得到的一个数值。校验和求法:编程完成后,另编程序求出校验和,存入ROM的最后一个单元,校验时用相同方法求校验和并和ROM最后一个单元中的内容进行比较,若相同则校验通过。校验方法:实例程序:⑴求校验和程序(异或和)设有1片EPROM2764(8K),地址:0000H~1FFFH方法:在应用软件(包括各种抗干扰措施)编译后,把目标码调入开发系统的RAM中,例如0A000H~0BFFFH,然后用程序求出这8K字节(最后1个单元除外)的校验和,并把它存入最后1个单元0BFFFH中。至此即可将0A000H~0BFFFH的内容写入2764中了。(程序)求异或校验和程序ORG8000HROMT:MOVDPTR,#0BFFFH;指向最后单元CLRAMOVB,AMOVX@DPTR,A;最后单元清零,MOVR2,#20H;8K有20H页MOVDPTR,#0A000HXRT0:MOVXA,@DPTRXRLB,AINCDPTRMOVA,DPLJNZXRT0;本页结束否,没结束-跳DJNZR2,XRT0;全部结束否,没结束-跳MOVDPTR,#0BFFFH;指向最后单元MOVA,BMOVX@DPTR,A;存异或和RET求和区...008000HBFFFHBFFEH⑵ROM检测程序ROMT1:MOVDPTR,#0000H;首地址MOVR2,#20HMOVB,#0R0MT2:CLRAMOVCA,@A+DPTR;读ROMXRLB,AINCDPTRMOVA,DPLJNZROMT2;本页校完?DJNZR2,ROMT2;全部校完?MOVA,B;判断:A=0正确RET;A≠0出错检测I/O通道数字I/O通道模拟I/O通道方法:人机互动进行检测⒈数字I/O通道显示器件(数码管、指示灯)一般开机时全部点亮数秒钟,或闪亮数秒种。键盘逐个按动并作相应指示来检查。报警器(蜂鸣器、喇叭)开机鸣响数秒。通讯口进行通讯检测。⒉模拟I/O通道A/D通道用基准电压源进行转换,检查结果是否正确。D/A通道输出标准数据(固定之值或步进增长值),检查结果是否正确。⒉软件陷阱设置目的:捕捉“跑飞”程序设置位置:⑴程序存储器未使用的区域⑵程序段之间⑶程序存储器的结尾处捕捉方法:若干条空操作和无条件跳转指令相结合,使程序转到“跑飞”处理程序入口。实例程序:软件陷阱NOPNOPNOPLJMPFLY⑴程序存储器未使用区域的代码数据:FFH相当指令:MOVR7,A....FFFFFFFFFF0000H07FFH有程序区无程序区⑵在程序存储器未使用的区域设软件陷阱设有4K地址范围:0000H~0FFFH,空区域0800H~0FFFHORG0800HNOP;软件陷阱NOPNOPLJMPFLYORG0C00HNOP;软件陷阱NOPNOPLJMPFLY....NOPNOPNOPLJMPFLY_hFLY_l···0000H0FFFH07FFH0800H⑶程序段之间设软件陷阱DSP:……;显示子程序……RETNOP;软件陷阱NOPNOPLJMPFLY;D10MS:MOVR0,#010H;延时子程序……RETNOP;软件陷阱NOPNOPLJMPFLY……FLY:……;“跑飞”处理子程序RET⑷在长程序段中的非连续程序处设软件陷阱…………CJNERn,#DATA,L1;跳转L1…………SJMPL2;=跳转L2NOP;软件陷阱NOPNOPLJMPFLYL1:………….L2:…..⑸在程序存储器的结尾处设软件陷阱设ROM为8K,地址范围:0000H~1FFFHORG1FFAH1FFAH:NOP;软件陷阱1FFBH:NOP1FFCH:NOP1FFDH~1FFFH: