第5章单片机应用系统抗干扰技术课件.ppt

上传人:小飞机 文档编号:1614312 上传时间:2022-12-11 格式:PPT 页数:53 大小:424.50KB
返回 下载 相关 举报
第5章单片机应用系统抗干扰技术课件.ppt_第1页
第1页 / 共53页
第5章单片机应用系统抗干扰技术课件.ppt_第2页
第2页 / 共53页
第5章单片机应用系统抗干扰技术课件.ppt_第3页
第3页 / 共53页
第5章单片机应用系统抗干扰技术课件.ppt_第4页
第4页 / 共53页
第5章单片机应用系统抗干扰技术课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《第5章单片机应用系统抗干扰技术课件.ppt》由会员分享,可在线阅读,更多相关《第5章单片机应用系统抗干扰技术课件.ppt(53页珍藏版)》请在三一办公上搜索。

1、第五章 单片机应用系统抗干扰技术,一 干扰的主要来源,三 抗干扰措施 硬件抗干扰措施 软件抗干扰措施,二 干扰产生带来的后果,一、干扰的主要来源,工业现场环境中的干扰通常是以脉冲的形式进入单片机系统,其主要的渠道有三条,1、空间干扰,空间干扰,又称场干扰。电磁信号通过空间辐射进入系统,多发生在高电压、大电流、高频电磁场附近,并通过静电感应,电磁感应等方式侵入系统内部。,2、供电系统干扰,电磁信号通过供电线路进入系统。供电系统干扰主要由电源的噪声干扰引起的。,3、过程通道干扰,干扰通过与系统相连的前向通道、后向通道及与其它系统的相互通道进入,一般沿各种线路侵入系统。,说明: 一般情况下空间干扰在

2、强度上远小于其它两种,故微机系统 中应重点防止过程通道干扰和供电系统干扰 。 此外,系统接地装置不可靠等,也是产生干扰的重要原因;各 类传感器,输入输出线路的绝缘损坏也有可能引入干扰 。,二、干扰产生带来的后果,1、数据采集误差加大,2、程序运行失常,3、系统被控对象误操作,4、被控对象状态不稳定,5、定时不准,6、数据发生变化,2、程序运行失常,控制状态失灵,当干扰侵入单片机系统的前向通道叠加在信号上,会使数据采集误差增大,特别是前向通道的传感器接口是小电压信号输入时,此现象会更加严重。,在单片机系统中,由于干扰的加入使输出误差加大,造成逻辑状态改变,最终导致控制失常。,死机,在单片机系统受

3、强干扰后,造成程序计数器PC值的改变,破坏程序正常运行 ,造成死循环。,1、数据采集误差的加大,3.系统被控对象误操作,4.被控对象状态不稳定,锁存电路与被控对象间的线路(包括驱动电路)受干扰,从而造成被控对象状态不稳定(锁存电路一般较敏感)。,6. 数据发生变化,在单片机应用系统中,由于外部RAM是可读写的,在干扰的侵入下,RAM中数据有可能发生改变,虽然ROM能避免干扰破坏,但单片机片内RAM以及片内各种特殊功能寄存器等状态都有可能受干扰而变化,甚至EEPROM中的数据也可能误读写,使程序计算出错误的结果。,5.定时不准,抗干扰措施有硬件措施和软件措施。硬件措施如果得当,可将绝大部分干扰拒

4、之门外,但仍然会有少数干扰进入微机系统,故软件措施作为第二道防线必不可少。由于软件抗干扰措施是以降低CPU效率为代价的,如果没有硬件消除绝大多数干扰,CPU将疲于奔命,无暇顾及正常工作,严重影响系统的工作效率和实时性。因此,一个成功的抗干扰系统是由硬件和软件相结合构成的。,三、抗干扰措施,1、注意印制电路板的布线与工艺,2、屏蔽,4、光电隔离,3、提高元器件的可靠性,5、过压保护电路,6、增加硬件看门狗电路,7、供电系统抗干扰措施,硬件抗干扰措施,1、注意印制电路板的布线与工艺,尽量采用多层印制电路板,多层板可提供良好的接地网,可防止产生地电位差和元件之间的耦合(但要考虑性价比)。,印制电路板

5、要合理分区。模拟电路区、数字电路区、功率驱动区要尽量分开,地线不能相混,分别和电源端的地线相连。,元件面和焊接面应采用相互垂直、尽量避免相互平行走线以减小寄生耦合;避免相邻导线平行段过长;加大信号线间距。高频电路互联导线尽量短,使用45或者圆弧折线布线,不要使用90折线,以减小高频信号的发射。,三个区域的电源线、地线分三路引出。地线、电源线要尽量粗,噪声元件与非噪声元件要尽量离远一些。时钟振荡电路、特殊高速逻辑电路部分用地线圈起来,让周围电场趋近于零。,使用满足系统要求的最低频率的时钟,时钟产生器要尽量靠近用到该时钟的器件。石英晶体振荡器外壳要接地,时钟线尽量短,时钟线要远离IO线,在石英晶体

6、振荡器下面要加大接地的面积而不应该走其它信号线。,IO驱动器件、功率放大器件尽量靠近印制板的边、靠近引出接插件。重要的信号线尽量短并要尽量粗,并在两侧加上保护地。将信号通过扁平电缆引出时,要使用地线-信号-地线相间的结构。,原则上每个IC元件要加一个0.010.1F去耦电容,布线时去耦电容应尽量靠近IC的电源脚和接地脚。要选高频特性好的独石电容或瓷片电容作去耦电容。去耦电容焊在印制电路板上时,引脚要尽量短。这样便可以消除大部分高频干扰。,闲置不用的IC管脚不要悬空以避免干扰引入。单片机不用的IO口定义成输出。单片机上有一个以上电源、接地端,每个都要接上,不要悬空。,2、屏蔽,避免环流的产生。,

7、加粗的线,晶振尽量靠近用到时钟的器件,AT89c2051,选用质量好的电子元件并进行严格的测试、筛选和老化。设计时元件技术参数要有一定的余量。提高印制板和组装的质量。,4、光电隔离,在输入和输出通道上采用光电隔离器来进行信息传输,将微机系统与各种传感器、开关、执行机构从电气上隔离开来,很大一部分干扰将被阻挡。,3、提高元器件的可靠性,2、屏蔽,对容易产生干扰和被干扰的部件使用金属盒进行屏蔽以使干扰电磁波短路接地。,在输入输出通道上应采用一过压保护电路,以防引入高电压,伤害微机系统。过压保护电路由限流电阻和稳压管组成,限流电阻选择要适宜,太大会引起信号衰减,太小起不到保护稳压管的作用。稳压管的选

8、择也要适宜,其稳压值以略高于最高传送信号电压为宜,太低将对有效信号起限幅效果,使信号失真。,5、过压保护电路,6、增加硬件看门狗电路,对于失控的CPU,最简单的方法是使其复位,程序自动从0000H开始执行。为此只要在单片机的RESET端加上一个高电平信号,并持续10ms以上即可。,WATCHDOG有如下特征: 本身能独立工作,基本上不依赖于CPU。CPU只在一个固定的时间间隔内与之打一次交道,表明整个系统“目前尚属正常”。 当CPU落入死循环之后,能及时发现并使整个系统复位。,“喂狗”过程一般安排在监控循环或定时中断中,如果有比较长的延时子程序,则应该在其中插入“喂狗”过程。目前有很多单片机在

9、内部已经集成了片内的硬件WATCHDOG电路,使用起来更为方便。对于片内看门狗,是通过两条特定的赋值指令来完成。此外,也可以也可以用软件程序来形成WATCHDOG。,CPU,WATCHDOG,RESET,脉冲,供电系统抗干扰措施,(1)防止从电源系统引入干扰,可采取交流稳压器保证供电的稳定性,防止电源的过压和欠压。使用隔离变压器滤掉高频噪声,低通滤波器滤掉工频干扰。(2)采用开关电源并提供足够的功率余量,主机部分使用单独的稳压电路,必要时输入,输出供电分别采用DC-DC模块隔离,以避免各个部分相互干扰。,1.开机自检2.软件陷阱(程序“跑飞”检测)3.设置程序运行状态标记4.输出端口刷新5.输

10、入多次采样6.数据滤波7.指令冗余8.软件“看门狗”,常用软件抗干扰措施:,1、开机自检,开机后首先对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。开机自检程序通常包括对RAM、ROM、I/O通道等的检测。,检测RAM,检查RAM读写是否正常,出错时应作出提示(声光)或标志。方法:1.向RAM单元写“00H”和“FFH” ,读出也应为“00H”和“FFH” ,检查通过。 2.不改变RAM单元内容的检查方法。(实例程序),不改变RAM单元内容的检查方法实例程序,设有1片6264,地址为2000H3FFFH,结果F0=1:出错。,TEST7:MOV DPTR,#2000H

11、;诊断6264MOV R2,#20H ;共20H页TEST70:LCALL TEST75 ;JB F0 TEST71 ;出错_跳DJNZ R2,TEST70TEST71:RETTEST75:SETB F0;页内检测TEST76:MOVX A,DPTR;检查一个字节MOV B,A;保存副本CPL A;取反MOVX DPTR,A ;写MOVX A,DPTR ;读CPL A ;取反,CJNE A,B,TEST78 ;校对,错转MOVX DPTR,A ;恢复MOVX A,DPTR ;再读CJNE A,B,TEST78 ;校对,错转INC DPTR ;下一单元MOV A,DPLJNZ TEST76 ;全

12、页完?CLR F0TEST78:RET,说明:256Byte为1页,1K有4页。6264是8KRAM,故有32页=20H页。,检测ROM,对ROM单元的检测主要是检查ROM单元的内容的校验和。,1.将ROM的内容逐一相加,放弃进位后得到的一个数值。2.将ROM的内容逐一异或相加,得到的一个数值。,校验和求法:,编程完成后,另编程序求出校验和,存入ROM的最后一个单元,校验时用相同方法求校验和并和ROM最后一个单元中的内容进行比较,若相同则校验通过。,校验方法:,实例程序:,求校验和程序(异或和),设有1片EPROM2764(8K),地址:0000H 1FFFH方法:在应用软件(包括各种抗干扰措

13、施)编译后,把目标码调入开发系统的RAM中,例如0A000H 0BFFFH,然后用程序求出这8K字节(最后1个单元除外)的校验和,并把它存入最后1个单元0BFFFH中。至此即可将0A000H 0BFFFH的内容写入2764中了。(程序),求异或校验和程序,ORG 8000HROMT: MOV DPTR,#0BFFFH;指向最后单元CLR AMOV B,AMOVX DPTR,A;最后单元清零,MOV R2,#20H;8K有20H页MOV DPTR,#0A000HXRT0: MOVX A,DPTRXRL B,AINC DPTRMOV A,DPLJNZ XRT0 ;本页结束否,没结束跳DJNZ R2

14、, XRT0 ;全部结束否,没结束跳MOV DPTR,#0BFFFH;指向最后单元MOV A,BMOVX DPTR,A ;存异或和RET, ROM检测程序,ROMT1:MOV DPTR,#0000H;首地址 MOV R2,#20H MOV B,#0R0MT2: CLR A MOVC A,A+DPTR;读ROM XRL B,A INC DPTR MOV A,DPL JNZ ROMT2;本页校完? DJNZ R2,ROMT2;全部校完? MOV A,B;判断:A0 正确 RET; A0 出错,检测I/O通道,数字I/O通道模拟I/O通道方法:人机互动进行检测, 数字I/O通道,显示器件(数码管、指

15、示灯) 一般开机时全部点亮数秒钟,或闪亮数秒种。键盘 逐个按动并作相应指示来检查。报警器(蜂鸣器、喇叭) 开机鸣响数秒。通讯口 进行通讯检测。, 模拟I/O通道,A/D通道 用基准电压源进行转换,检查结果是否正确。D/A通道 输出标准数据(固定之值或步进增长值),检查结果是否正确。, 软件陷阱,设置目的:捕捉“跑飞”程序设置位置:程序存储器未使用的区域 程序段之间 程序存储器的结尾处捕捉方法:若干条空操作和无条件跳转指令相结合,使程序转到“跑飞”处理程序入口。实例程序:,软件陷阱NOPNOPNOPLJMP FLY, 程序存储器未使用区域的代码,数据: FFH 相当指令:MOV R7,A,有程序

16、区,无程序区, 在程序存储器未使用的区域设软件陷阱,设有4K地址范围:0000H0FFFH,空区域0800H 0FFFHORG 0800H NOP;软件陷阱 NOP NOP LJMP FLYORG 0C00H NOP;软件陷阱 NOP NOP LJMP FLY, 程序段之间设软件陷阱,DSP:;显示子程序 RET NOP;软件陷阱 NOP NOP LJMP FLY;D10MS:MOV R0,010H;延时子程序 RET NOP ;软件陷阱 NOP NOP LJMP FLYFLY: ;“跑飞”处理子程序 RET, 在长程序段中的非连续程序处设软件陷阱,CJNE Rn,#DATA,L1 ;跳转L1

17、 SJMP L2;=跳转L2 NOP ;软件陷阱 NOP NOP LJMP FLYL1: .L2:., 在程序存储器的结尾处设软件陷阱,设ROM为8K,地址范围:0000H1FFFH ORG 1FFAH 1FFAH: NOP;软件陷阱 1FFBH: NOP 1FFCH: NOP1FFDH 1FFFH: LJMP FLY,如果不设陷阱,程序又将从头开始执行。,ROM地址,对应指令:MOV R7,A, 程序开头中断地址处理,地址 机器码 ORG 0000H0000 020100 STR: LJMP KS0003 0205C5 LJMP WZD0 ;外中断00006 00 NOP0007 00 NO

18、P0008 020030 LJMP ERR000B 020030 LJMP ERR ;T0中断(没用)000E 00 NOP000F 00 NOP0010 020030 LJMP ERR0013 0205E2 LJMP WZD1 ;外中断10016 00 NOP0017 00 NOP0018 020030 LJMP ERR001B 0205FF LJMP DDS ;定时,001B 0205FF LJMP DDS ;定时001E 00 NOP001F 00 NOP0020 020030 LJMP ERR0023 020030 LJMP ERR;串行口中断(没用)0026 00 NOP0027 0

19、0 NOP0028 020030 LJMP ERR002B 020030 LJMP ERR002E 00 NOP002F 00 NOP 0030 ERR: ,注意;没用到的中断入口设置软件陷阱, 设置程序运行状态标记,程序运行状态标记是在RAM区中设立一些标志位,这些标志位分别代表程序运行的不同阶段及运行后的状态。在初始化程序中,首先对这些单元置初值,在程序运行的不同阶段,这些单元的内容将被改变成特定值,标记程序运行的阶段和运行后的状态。这些标志除了在程序正常运行中起到条件转移的作用外,还能在程序“跑飞”,而RAM区数据正常时起到恢复程序运行现场的作用。, 输出端口刷新,由于单片机的I/O口很

20、容易受到外部信号的干扰,输出口的状态也可能因此而改变。在程序中周期性地添加输出端刷新指令,可以降低干扰对输出口状态的影响。方法:1。在程序中指定RAM单元存储输出口当时应处的状态,在程序运行过程中根据这些RAM单元的内容去刷新I/O口。2。输出时连续两次对端口置状态。 SETB P1.0NOPSETB P1.0, 输入多次采样,键输入 要注意消抖。数据输入(如A/D转换结果) 对输入数据进行多次采样,而后进行数据滤波。,键输入去抖,一般每隔10mS读一次键进行去抖。,实例1,实例2,键输入去抖程序实例1(设键值为8位,无键时为FF),KEY:LCALL KEYIN;读键CPL A;取反JZ K

21、EY;取反后,无键时全0LCALL TIME;延时10mS,去抖LCALL KEYIN;再读CPL A;JZKEY;未按,再读CPLA;恢复有效键码.;散转到各执行模块.;K_OFF: LCALL KEYIN;读键CJNE A,#0FFH,K_OFF;未释放,再读LJMP KEY;已释放,读新的按键,键输入去抖程序实例2(设一个键对应一个I/O口),;高电平输入有效,读键程序为:;KEY:JNB P1.0,$;设从P1.0读入LCALL TIME ;延时10mS,去抖JNB P1.0,KEYKEY1:JB P1.0,$;等键释放LCALL TIMEJB P1.0,KEY1;已释放 .;散转到各

22、执行模块.;LJMP KEY; 读新的按键,实例2说明,1。这是一段开关量输入信号必加的去抖程序,开关量输入信号有光电传感信号、继电器触点输入、水银接点、干簧管输入、比较器信号输出等等。2。去抖方法有多种,要否等键释放、等待时间有否限制等诸多因素的考虑,视实际项目而定。,试编一段等待按键时间为2秒的程序,2秒之内如未按键,程序继续执行。, 数据滤波,为排除干扰的影响,对采样数据必须进行数据滤波。数据滤波的前提:对同一数据进行多次采样。数据滤波方法: 中值滤波:一般采样5、7次,排序后取中间值。 求平均值:一般采样8次,求平均值。 去极值平均滤波:去掉最大最小值后求平均值 一般采样10 、12次

23、。 加权平均滤波:各加权系数之和为1。 滑动平均滤波:本次采样值和前n次采样值求平均。 数据滤波方法选用:视现场环境和被测对象而定。,指令冗余,MCS51指令系统最多为三字节指令,CPU受干扰后,会把双字节指令、三字节指令中的操作数当作指令码来执行,即把多字节指令拆散了,从而使程序出错,所以应尽量采用单字节指令,并在一些关键地方插入一些单字节指令(NOP)或将有效单字节指令重复设置,这便是指令冗余。,原指令正常入口ANL 30H,#data,JNB bit,rel,5330data,ROM,5330data,ROM,如跑飞并从此处入口,会形成错误指令:,正确指令,错误指令,data1,指令错误

24、并冲散下条指令,data1,下条指令,指令冗余(续),具体操作:1。在双字节指令、三字节指令之后,插入两条NOP指令,这样保证其后的指令不被拆散。2。在一些对程序流程起决定性作用的指令前插入两条NOP指令。此类指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、CJNE、DJNZ等。,RETNOP NOP,ROM,LCALLdata1 data2,ROM,NOP,NOP,LJMPdata1 data2,ROM,NOP,NOP,举例:,指令冗余(续),说明:1。指令冗余降低了系统的效率,所以只有关键地方才加上指令冗余。2。在冗

25、余指令起作用时,系统已受干扰,并由此可能已使系统发生紊乱。表面上看冗余指令又使系统回到正常轨道,这只是一个假象,系统正常与否,还要看系统的容错能力。, 软件“看门狗”,“看门狗”是根据程序在运行指定时间间隔内未进行相应的操作,即未按时复位定时器,来判断程序运行出错的。有软件看门狗和硬件看门狗之分。它和软件陷阱都可检测程序出错,但检错方法不一样。软件看门狗设计方法:,软件“看门狗”设计方法:,设计思路: 看门狗作用的前提是程序进入死循环,不能及时喂狗而导致的,当系统掉入死循环后,只有比这个死循环程序更高级的中断程序才能夺取对CPU的控制权。为此用一个定时器来作watchdog,并把它的溢出设为高

26、级中断。此时系统中的其它中断要设为低级中断。 例如,T0作watchdog,定时约16mS,则初始化程序如下:,watchdog初始化程序,;设晶振为6MHz,定时常数为#0E0C0HMOVTMOD,#01H;设T0为16位定时器SETBET0;允许T0中断SETB PT0;置T0为高级中断MOVTH0,#0E0H;定时约16mS,TL0忽略SETBTR0;启动T0SETB EA;开中断,Watchdog启动后,系统必须每隔不大于16mS喂它一次,执行指令MOV TH0,#0E0H即可,如果用指令MOV TH0,#0 来喂它,它将安静131mS(而不是设计的16mS,思考为什么?)。,Watchdog说明,当程序掉入死循环后,16mS之后即可产生T0中断,T0中断可直接转向出错处理程序。 ORG 000BHLJMP ERR纯软件看门狗要占用系统资源,建议采用硬件看门狗或带硬件看门狗的单片机。,简单的ERR处理程序,ERRO: CLR EAMOV DPTR,#ERR1PUSH DPLPUSH DPHRETIERR1: CLR A PUSH ACC PUSH ACC RETI,两次退中断,保证系统启动时无中断请求.,;从0000H重新执行,也可从其它地址;开始执行,方法一样.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号