单片机应用系统抗干扰技术重点要求_第1页
单片机应用系统抗干扰技术重点要求_第2页
单片机应用系统抗干扰技术重点要求_第3页
单片机应用系统抗干扰技术重点要求_第4页
单片机应用系统抗干扰技术重点要求_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用系统抗干扰技术重点要求

第五章

单片机应用系统抗干扰技术一干扰的主要来源三抗干扰措施

硬件抗干扰措施

软件抗干扰措施二干扰产生带来的后果一、干扰的主要来源工业现场环境中的干扰通常是以脉冲的形式进入单片机系统,其主要的渠道有三条

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;诊断6264 MOVR2,#20H ;共20H页TEST70:LCALLTEST75 ; JBF0TEST71 ;出错_跳 DJNZR2,TEST70TEST71:RETTEST75:SETB

F0 ;页内检测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,DPL JNZTEST76 ;全页完?

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 ;指向最后单元 CLRA MOVB,A MOVX@DPTR,A ;最后单元清零,思考为什么清零? MOVR2,#20H ;8K有20H页 MOVDPTR,#0A000HXRT0:MOVXA,@DPTR XRLB,A INCDPTR MOVA,DPL JNZXRT0 ;本页结束否,没结束-跳 DJNZR2,XRT0 ;全部结束否,没结束-跳 MOVDPTR,#0BFFFH ;指向最后单元 MOVA,B MOVX@DPTR,A ;存异或和

RET求和区...008000HBFFFHBFFEH⑵ROM检测程序ROMT1:MOVDPTR,#0000H ;首地址 MOVR2,#20H MOVB,#0 R0MT2:CLRA MOVCA,@A+DPTR ;读ROM XRLB,A INCDPTR MOVA,DPL JNZROMT2 ;本页校完? DJNZR2,ROMT2 ;全部校完?

MOVA,B ;判断:A=0正确

RET ;A≠0出错检测I/O通道数字I/O通道模拟I/O通道方法:人机互动进行检测⒈数字I/O通道显示器件(数码管、指示灯)

一般开机时全部点亮数秒钟,或闪亮数秒种。键盘

逐个按动并作相应指示来检查。报警器(蜂鸣器、喇叭)

开机鸣响数秒。通讯口

进行通讯检测。⒉模拟I/O通道A/D通道

用基准电压源进行转换,检查结果是否正确。D/A通道输出标准数据(固定之值或步进增长值),检查结果是否正确。⒉软件陷阱设置目的:捕捉“跑飞”程序设置位置:⑴程序存储器未使用的区域⑵程序段之间⑶程序存储器的结尾处捕捉方法:若干条空操作和无条件跳转指令相结合,使程序转到“跑飞”处理程序入口。实例程序:软件陷阱NOP NOPNOPLJMPFLY⑴程序存储器未使用区域的代码数据:FFH相当指令:MOVR7,A....FFFFFFFFFF0000H07FFH有程序区无程序区⑵在程序存储器未使用的区域设软件陷阱设有4K地址范围:0000H~0FFFH,空区域0800H~0FFFH ORG0800H NOP ;软件陷阱

NOP

NOPLJMPFLY ORG0C00H NOP ;软件陷阱

NOP

NOPLJMPFLY....NOPNOPNOPLJMPFLY_hFLY_l···0000H0FFFH07FFH0800H⑶程序段之间设软件陷阱

DSP:……;显示子程序 ……RET

NOP ;软件陷阱

NOP

NOPLJMPFLY;D10MS:MOVR0,#010H;延时子程序

……

RET

NOP;软件陷阱

NOP

NOP

LJMPFLY

……

FLY:…… ;“跑飞”处理子程序

RET

⑷在长程序段中的非连续程序处设软件陷阱 …… …… CJNERn,#DATA,L1 ;<>跳转L1 ……

……SJMPL2 ;=跳转L2 NOP;软件陷阱

NOP

NOP

LJMPFLY

L1:………….

L2:…..⑸在程序存储器的结尾处设软件陷阱设ROM为8K,地址范围:0000H~1FFFHORG1FFAH

1FFAH:NOP;软件陷阱1FFBH:NOP

1FFCH:NOP1FFDH~1FFFH:LJMPFLY

...FFFFFFFFFFFF0000H1FFFH0000H如果不设陷阱,程序又将从头开始执行。ROM地址对应指令:MOVR7,A⑹程序开头中断地址处理地址机器码ORG0000H0000020100STR:LJMPKS00030205C5 LJMPWZD0;外中断0000600 NOP000700 NOP0008020030 LJMPERR000B020030 LJMPERR;T0中断(没用)000E00 NOP000F00 NOP0010020030 LJMPERR00130205E2 LJMPWZD1

;外中断1001600 NOP001700 NOP0018020030 LJMPERR001B0205FF LJMPDDS

;定时001B0205FF LJMPDDS;定时001E00 NOP001F00 NOP0020020030 LJMPERR0023020030 LJMPERR ;串行口中断(没用)002600 NOP002700 NOP0028020030 LJMPERR002B020030 LJMPERR002E00 NOP002F00 NOP

0030ERR:······注意;没用到的中断入口设置软件陷阱⒊设置程序运行状态标记程序运行状态标记是在RAM区中设立一些标志位,这些标志位分别代表程序运行的不同阶段及运行后的状态。在初始化程序中,首先对这些单元置初值,在程序运行的不同阶段,这些单元的内容将被改变成特定值,标记程序运行的阶段和运行后的状态。这些标志除了在程序正常运行中起到条件转移的作用外,还能在程序“跑飞”,而RAM区数据正常时起到恢复程序运行现场的作用。

⒋输出端口刷新由于单片机的I/O口很容易受到外部信号的干扰,输出口的状态也可能因此而改变。在程序中周期性地添加输出端刷新指令,可以降低干扰对输出口状态的影响。方法:1。在程序中指定RAM单元存储输出口当时应处的状态,在程序运行过程中根据这些RAM单元的内容去刷新I/O口。2。输出时连续两次对端口置状态。

SETBP1.0 NOP SETBP1.0⒌输入多次采样键输入

要注意消抖。数据输入(如A/D转换结果)

对输入数据进行多次采样,而后进行数据滤波。键输入去抖一般每隔10mS读一次键进行去抖。读键去抖动执行等待键释放读键去抖动执行等待键释放实例1实例2键输入去抖程序实例1(设键值为8位,无键时为FF)KEY: LCALLKEYIN ;读键 CPL A ;取反 JZ KEY ;取反后,无键时全0 LCALLTIME ;延时10mS,去抖 LCALLKEYIN ;再读 CPL A ; JZ KEY ;未按,再读 CPL A ;恢复有效键码 . ;散转到各执行模块 . ;K_OFF:LCALLKEYIN ;读键 CJNE A,#0FFH,K_OFF;未释放,再读 LJMP KEY ;已释放,读新的按键键输入去抖程序实例2(设一个键对应一个I/O口);高电平输入有效,读键程序为:;KEY: JNB P1.0,$ ;设从P1.0读入 LCALLTIME ;延时10mS,去抖 JNB P1.0,KEYKEY1: JB P1.0,$ ;等键释放 LCALLTIME JB P1.0,KEY1 ;已释放 . ;散转到各执行模块 . ; LJMP KEY ;读新的按键

实例2说明1。这是一段开关量输入信号必加的去抖程序,开关量输入信号有光电传感信号、继电器触点输入、水银接点、干簧管输入、比较器信号输出等等。2。去抖方法有多种,要否等键释放、等待时间有否限制等诸多因素的考虑,视实际项目而定。试编一段等待按键时间为2秒的程序,2秒之内如未按键,程序继续执行。⒍数据滤波为排除干扰的影响,对采样数据必须进行数据滤波。数据滤波的前提:对同一数据进行多次采样。数据滤波方法:

中值滤波:一般采样5、7次,排序后取中间值。★

求平均值:一般采样8次,求平均值。

去极值平均滤波:去掉最大最小值后求平均值一般采样10、12次。★

加权平均滤波:各加权系数之和为1。

滑动平均滤波:本次采样值和前n次采样值求平均。★

数据滤波方法选用:视现场环境和被测对象而定。⒎指令冗余MCS51指令系统最多为三字节指令,CPU受干扰后,会把双字节指令、三字节指令中的操作数当作指令码来执行,即把多字节指令拆散了,从而使程序出错,所以应尽量采用单字节指令,并在一些关键地方插入一些单字节指令(NOP)或将有效单字节指令重复设置,这便是指令冗余。原指令正常入口ANL30H,#dataJNBbit,rel5330data

ROM5330dataROM如跑飞并从此处入口,会形成错误指令:正确指令错误指令data1指令错误并冲散下条指令data1

下条指令指令冗余(续)具体操作:1。在双字节指令、三字节指令之后,插入两条NOP指令,这样保证其后的指令不被拆散。2。在一些对程序流程起决定性作用的指令前插入两条NOP指令。此类指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、CJNE、DJNZ等。RETNOPNOP

ROMLCALLdata1da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论