最新日志

发表于:2007-5-12 20:28:39
标签:无标签

1

沉了好久啦,现在改做嵌入式了,正在学...,大家多多交流哈.

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(435)
发表于:2007-2-7 10:47:32
标签:抗干扰  EMC  

5

硬件设计中的一些抗干扰手段

部分网友提到需要一些实际工作中的解决问题的手段,因此下面上传了几则我平时积累的一点东西,供大家分享.doc

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(2) | 阅读(1126)
发表于:2007-1-24 23:01:37
标签:抗干扰  EMC  

2

工控系统的接地抗干扰技术

(转帖说明:这篇关于工控技术抗干扰的文章编选自网上有关论文,特向孟传良、魏新胜等作者致谢。)

工业现场动力线路密布,设备启停运转繁忙,因此存在严重的电场和磁场干扰。而工业控制系统又有几十乃至几百个输入输出通道分布在其中,导线之间形成相互耦合是通道干扰的主要原因之一。它们主要表现为电容性耦合、电感性耦合、电磁场辐射三种形式。在工业控制系统中,由前两种耦合造成的干扰是主要的,第三种是次要的。它们对电路主要造成共模形式的干扰。可以等效为图1中的干扰源Ecm

4-1-1.gif (10474 bytes)1 地电位差和电磁干扰造成的共模电压的等效图

地球是一个静电容量很大的导体,其电位非常恒定。如果把一个导体与大地紧密连接,那么该导体的电位也是恒定的。通常我们把它的电位叫作零电位,它是电位的参考点。然而,工程上不可能做到这种紧密连接,总是存在一定的接地电阻。当有电流经该导体入地时,它的电位就有波动。于是,不同的接地点之间的电位就会有差异。当我们用一根导线连接不同的接地点时,在导线中就可能有电流流动,这称为地环电流。接地抗干扰技术就是解决以地环电流为中心的一系列技术问题。图1 等效示意了信号源地线和放大器地线之间的电位差形成的干扰源EG,它对电路主要造成共模形式的干扰。

然而,由干扰源Ecm和EG形成的共模电压,其中一部分会转换成差模电压, 直接对电路造成干扰。假设信号源Es=0,即只考虑干扰源Ecm和EG的作用时。因为i1回路和i2 回路阻抗不相等,因此,回路电流i1和i2也不相等。于是两个电流的差在放大器的输入电阻上形成了差模电压。采取合适的屏蔽和正确的接地措施就可以减少和消除这些干扰。

本文着重就硬件的抗干扰技术做一阐述,软件的抗干扰技术请参见其他文章。

1 屏蔽抗干扰技术

1.1 电场耦合的屏蔽和抑制技术

克服电场耦合干扰最有效的方法是屏蔽。因为放置在空心导体或者金属网内的物体不受外电场的影响。请注意,屏蔽电场耦合干扰时,导线的屏蔽层最好不要两端连接当地线使用。因在有地环电流时,这将在屏蔽层形成磁场,干扰被屏蔽的导线。正确的作法是把屏蔽层单点接地,一般选择它的任一端头接地。

造成电场耦合干扰的原因是两根导线之间的分布电容产生的耦合。当两导线形成电场耦合干扰时,导线1在导线2上产生的对地干扰电压VN为:

式中,V1和ω是干扰源导线1的电压和角频率;R和C2G是被干扰导线2的对地负载电阻和总电容;C12是导线1和导线2之间的分布电容。通常C12<<C2G

可以看出,在干扰源的角频率ω不变时,要想降低导线2上的被干扰电压VN, 应当减小导线1的电压V1,减小两导线之间的分布电容C12,减小导线2对地负载电阻R以及增大导线2对地的总电容C2G。在这些措施中,可操作性最好的是减小两导线之间的分布电容C12。即采用远离技术:弱信号线要远离强信号线敷设,尤其是远离动力线路。工程上的“远离”概念,通常取干扰导线直径的40倍,即认为足够了。同时,避免平行走线也可以减小C12

1.2 磁场耦合的抑制技术

抑制磁场耦合干扰的好办法应该是屏蔽干扰源。大电机、电抗器、磁力开关和大电流载流导线等等都是很强的磁场干扰源。但把它们都用导磁材料屏蔽起来,在工程上是很难做到的。通常是采用一些被动的抑制技术。当回路1对回路2造成磁场耦合干扰时,其在回路2 上形成的串联干扰电压VN为:

VN=jωBAcosθ  

式中,ω是干扰信号的角频率;B是干扰源回路1形成的磁场链接至回路2处的磁通密度;A为回路2感受磁场感应的闭合面积,θ是 两个矢量的夹角。可以看出,在干扰源的角频率ω不变时,要想降低干扰电压VN,首先应当减小B。对于直线电流磁场来说,B与回路1流过的电流成正比,而与两导线的距离成反比 。因此,要有效抑制磁场耦合干扰,仍然是远离技术。同时,也要避免平行走线。

1.3 屏蔽线的使用

2示出了屏蔽线使用的三种情况。图(a)是单端接地方式。假设信号电流i1从芯线流入屏蔽线,流过负载电阻RL之后,再通过屏蔽层返回信号源。因为i1与i2大小相等方向相反,所以它们产生的磁场干扰相互抵消。这是一个很好的抑制磁场干扰的措施。同时它也是一个很好的抵制磁场耦合干扰的措施。图(b)是两端接地方式。由于屏蔽层上流过的电流是i2与地环电流iG的迭加,所以它不能完全抵消信号电流所产生的磁场干扰。因此,它抑制磁场耦合干扰的能力也比图(a)差。图(a)和(b)都有屏蔽电场耦合干扰作用。图(c)的屏蔽层悬浮,因此,它只有屏蔽电场耦合干扰能力,而无抑制磁场耦合干扰能力。

点击看大图

(a)单端接地                      (b)两端接地                     (c)屏蔽层不接地        图2 屏蔽线的用法

如果把图(c)的抑制磁场干扰衰减能力定为0 dB,当图(a)、(b)、(c)的信号源内阻RS都为100Ω,负载电阻RL都为1 MΩ,信号源频率在50 kHz(高于该电缆屏蔽体截频的5倍)时,根据国外专家实验测定,图(a)具有80 dB的衰减,即抑制磁场干扰能力很强。而图(b)具有27 dB的磁场干扰抑制能力。 图(a)的单端接地方式抗干扰能力最好。其接地点的选择可以是图(a)中的情况,也可以选择负载电阻RL侧接地,而让信号源浮置。

1.4 双绞线的使用

点击看大图

3 双绞线的用法及其抗磁场耦合干扰能力

双绞线的绞扭节距把式(3)中的A回路分隔成许多的小回路,如果双绞线的绞扭一致的话,那么这些小回路的面积相等而法方向相反,因此,其磁场干扰可以相互抵消。双绞线的结构对电场耦合干扰的抑制毫无能力。当给双绞线加上屏蔽层后,一个价廉物美的传输线就诞生了。图3示出了双绞线的使用方法。如果每2.54 cm扭6 个均匀绞扭的话,当采用上节约定的参数时,根据国外专家的实验测定,各用法对磁场干扰的抑制dB数如图所示。其中图(a)采用单端接地方式,因此对磁场干扰具有高达55 dB的衰减能力。可见,双绞线确实有很好的效果。而图(b)由于两端接地,地线阻抗与信号线阻抗不对称,地环电流造成了双绞线电流不平衡,因此降低了双绞线抗磁场干扰的能力,所以图(b)只有13 dB的磁场干扰衰减能力。图(c)使用屏蔽双绞线,由于其屏蔽层一端接地,另一端悬空,因此屏蔽层上没有返回信号电流,所以它的屏蔽层只有抗电场干扰能力,而无抑制磁场耦合干扰能力。所以图(c)的dB数与图(a)一样衰减55 dB。图(d)屏蔽层单端接地,而另一端又与负载冷端相连,因此它具有图2(a)的效果,但它的屏蔽层上的电流由于被双绞线中的一根分流,又比图2(a)稍差。具有77 dB的衰减。图(e)的屏蔽层双端接地,具有一定的抑制磁场耦合干扰能力,加上双绞线本身的作用,因此具有63 dB的衰减。图(f)的屏蔽层和双绞线都两端接地,因此其效果只是比图3(b)稍好。具有28 dB衰减。

双绞线最好的应用是作平衡式传输线路。因为两条线的阻抗一样,自身产生的磁场干扰或外部磁场干扰都可以较好的抵消。同时,平衡式传输又独具很强的抗共模干扰能力,因此成为大多数计算机网络的传输线。例如,物理层采用RS422A或RS485通信接口,就是很好的平衡传输模式。

2 接地抗干扰技术

NEC第100节对“接地”一词定义如下:电气回路或设备与大地,或与代替大地的导体之间的导电的连接,它可以是有意的连接,也可以是无意的连接。接地可起如下作用: 提供设备与近旁金属物体间的低阻抗连接,以减少人身电击危险。 给接地故障电流提供返回电源的低阻抗通路,使熔断器或断路器得以动作。 给雷电感应电流提供低阻抗的对地泄放通路。 给静电电荷提供对地泄放通路,以防产生电火花或电弧。接地抗干扰技术的主要内容,其一是避开地环电流的干扰;其二是降低公共地线阻抗的耦合干扰。“一点接地”有效地避开了地环电流;而在“一点接地”前提下,并联接地则是降低公共地线阻抗的耦合干扰的有效措施;它们是工业控制系统采用的最基本的接地方法。

然而,工业控制系统接地的含义不一定就是接大地。例如直流接地只是定义电路或系统的基准电位。它可以悬浮,但要求与大地严格绝缘。通常,其绝缘电阻要达到50 MΩ以上。直流地悬浮隔离了交流地网的干扰,经济简便,工程中经常使用。直流地悬浮的缺点是机器容易带静电,如果该静电电位过高,会损坏器件,击伤操作人员等等;而且,如果这时直流地与大地的绝缘电阻减小,可能会产生很多原先没有想到的干扰。直流地接大地,按照国家标准,要埋设一个不大于4 Ω的独立接地体。但无论直流地悬浮或者接大地,直流地与大地之间的电位都存在着间接或者直接的关系。工业控制机所操作的各种输入输出信号之间接地是否合理,不只是形成相互耦合干扰的问题,有时还危及计算机系统的安全。 在实际的工业控制系统中,各种通道的信号频率大多在1MHz内,属于低频范围。因此,本文只涉及低频范围的接地讨论。

2.1 串联接地和并联接地

在图4(a) 所示意的串联接地方式中,电路1、2、3各有一个电流i1、i2、i3流向接地点。由于地线存在电阻,因此,A、B、C点的电位不再是零, 于是各个电路间相互发生干扰。尤其是强信号电路将严重干扰弱信号电路。如果必须要这样使用,应当尽力减小公共地线的阻抗,使其能达到系统的抗干扰容限要求。串联的次序是,最怕干扰的电路的地接A点,而最不怕干扰的电路的地应当接C点。但工业控制机中的模拟通道和数字通道不能这样串联接地。应当按照图4(b)所示意的并联接地方式使用。并联接地中各个电路的地电位只与其自身的地线阻抗和地电流有关,互相之间不会造成耦合干扰。因此,有效地克服了公共地线阻抗的耦合干扰问题,工业控制机应当尽量采用并联接地方式。值得注意的是,虽然采用了并联接地方式,但是地线仍然要粗一些,以使各个电路部件之间的地电位差尽量减小。这样,当各个部件之间有信号传送时,地线环流干扰将减小。

(a)串联接地方式(b)并联接地方式

4 电路部件的一点接地

2.2 一个实际的信号采集系统接地方案

点击看大图

5 一个实际的信号采集系统接地示意图

一个实际的信号采集系统接地示意图如图5所示。 多个模拟输入信号采用屏蔽双绞线接至工控数据采集处理机。所有模拟信号源都浮置,这对于多数工业变送器(传感器)来说,都能够满足这个要求。模拟输入信号采用一点接地,接地点选在微处理机的模入接口的模拟地GA上。屏蔽层也采用一点接地,接在模拟地上。这与图3(c)的用法相同。这种用法靠双绞线抑制磁场耦合干扰,屏蔽层屏蔽电场干扰。虽然抑制dB数不算高,但它不会引入其它噪声,可靠性较好,不论在什么现场环境都可用。所有的模拟电路的地线并联于GA点,然后用一根具有绝缘皮的低阻抗导线,将模拟地连接到专为工控机埋设的独立接地体的线鼻上。工控数据采集处理机的数字地也应并联于一点GD,仍然用一根具有绝缘皮的低阻抗导线,将数字地GD连接到专为工控机埋设的独立接地体的线鼻上。工控机的外设地线也应并联于该独立接地体的线鼻上。对于一般的工业现场,外设的保护地线、工控机柜、传感器柜、执行器柜等的保护地线都可以并联到该独立接地体的线鼻上。但是要求高的项目应当埋设专门的独立的安全保护地线,并把设备和机柜的保护地线并联地接于那里。国家标准规定,计算机的安全保护地线接地电阻不应大于4 Ω。严禁使用建筑物的避雷地作工业控制系统的任何地线使用。 如果把图5的计算机采集系统直流地悬浮运行,那么它的的模拟地、数字地仍然要用低阻抗导线短接,只是不接大地就行了。目前的工控机厂商提供的大部分产品都没有模拟地和数字地的接大地端子,它们的模拟地和数字地已在电路板上妥善短接。用户最简单的应用就是搞浮地运行。这对于使用标准变送器,检测标准模拟信号是没有大问题的。

3 结束语

工业现场的干扰来源是多渠道的,针对不同的项目和不同的现场,应该有不同的处理方法。屏蔽和接地是由工控系统开发者操作的一项技术内容。能否正确设计和利用它们,不仅关系到系统安全稳定地运行、良好地抑制干扰,而且是工控项目开发者是否成熟的重要标志。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(1170)
发表于:2007-1-23 20:44:40
标签:抗干扰  EMC  

3

电磁干扰滤波电容器使用方法

  电容器是电路中最基本的元件之一,利用电容滤除电路上的高频骚扰和对电源解耦是所有电路设计人员都熟悉的。但是,随着电磁干扰问题的日益突出,特别是干扰频率的日益提高,由于不了解电容的基本特性而达不到预期滤波效果的事情时有发生。本文介绍一些容易被忽略的影响电容滤波性能的参数及使用电容器抑制电磁骚扰时需要注意的事项。

1电容引线的作用

  在用电容抑制电磁骚扰时,最容易忽视的问题就是电容引线对滤波效果的影响。电容器的容抗与频率成反比,正是利用这一特性,将电容并联在信号线与地线之间起到对高频噪声的旁路作用。然而,在实际工程中,很多人发现这种方法并不能起到预期滤除噪声的效果,面对顽固的电磁噪声束手无策。出现这种情况的一个原因是忽略了电容引线对旁路效果的影响。

  实际电容器的电路模型如图1所示,它是由等效电感(ESL)、电容和等效电阻(ESR)构成的串联网络。

t2-1.gif (551 字节)

1 实际电容器的等效电路

  理想电容的阻抗是随着频率的升高降低,而实际电容的阻抗是图1所示的网络的阻抗特性,在频率较低的时候,呈现电容特性,即阻抗随频率的增加而降低,在某一点发生谐振,在这点电容的阻抗等于等效串联电阻ESR。在谐振点以上,由于ESL的作用,电容阻抗随着频率的升高而增加,这是电容呈现电感的阻抗特性。在谐振点以上,由于电容的阻抗增加,因此对高频噪声的旁路作用减弱,甚至消失。

  电容的谐振频率由ESLC共同决定,电容值或电感值越大,则谐振频率越低,也就是电容的高频滤波效果越差。ESL除了与电容器的种类有关外,电容的引线长度是一个十分重要的参数,引线越长,则电感越大,电容的谐振频率越低。因此在实际工程中,要使电容器的引线尽量短,电容器的正确安装方法和不正确安装方法如图2所示。

点击看大图

2 滤波电容的正确安装方法与错误安装方法

  根据LC电路串联谐振的原理,谐振点不仅与电感有关,还与电容值有关,电容越大,谐振点越低。许多人认为电容器的容值越大,滤波效果越好,这是一种误解。电容越大对低频干扰的旁路效果虽然好,但是由于电容在较低的频率发生了谐振,阻抗开始随频率的升高而增加,因此对高频噪声的旁路效果变差。表1是不同容量瓷片电容器的自谐振频率,电容的引线长度是1.6mm(你使用的电容的引线有这么短吗?)。

1

电容值

自谐振频率(MHz

电容值

自谐振频率(MHz

1m F

1.7

820 pF

38.5

0.1m F

4

680 pF

42.5

0.01m F

12.6

560 pF

45

3300pF

19.3

470 pF

49

1800 pF

25.5

390 pF

54

1100pF

33

330 pF

60

  尽管从滤除高频噪声的角度看,电容的谐振是不希望的,但是电容的谐振并不是总是有害的。当要滤除的噪声频率确定时,可以通过调整电容的容量,使谐振点刚好落在骚扰频率上。

2.温度的影响

  由于电容器中的介质参数受到温度变化的影响,因此电容器的电容值也随着温度变化。不同的介质随着温度变化的规律不同,有些电容器的容量当温度升高时会减小70%以上,常用的滤波电容为瓷介质电容,瓷介质电容器有超稳定型:COGNPO,稳定型:X7R,和通用型:Y5VZ5U三种。不同介质的电容器的温度特性如图2所示。

t2-3a.gif (2232 字节)t2-3b.gif (2014 字节)
t2-3c.gif (1945 字节)
3 不同介质电容器的温度特性

  从图中可以看到,COG电容器的容量几乎随温度没有变化,X7R电容器的容量在额定工作温度范围变化12%以下,Y5V电容器的容量在额定工作温度范围内变化70%以上。这些特性是必须注意的,否则会出现滤波器在高温或低温时性能变化而导致设备产生电磁兼容问题。

  COG介质虽然稳定,但介质常数较低,一般在10100,因此当体积较小时,容量较小。X7R的介质常数高得多,为2000 4000,因此较小的体积能产生较大的电容,Y5V的介质常数最高,为5000 25000

  许多人在选用电容器时,片面追求电容器的体积小,这种电容器的介质虽然具有较高的介质常数,但温度稳定性很差,这会导致设备的温度特性变差。这在选用电容器时要特别注意,尤其是在军用设备中。

3.电压的影响

  电容器的电容量不仅随着温度变化,还会随着工作电压变化,这一点在实际工程必须注意。不同介质材料的电容器的电压特性如图3所示。从图中可以看出,X7R电容器在额定电压状态下,其容量降为原始值的70%,而Y5V电容器的容量降为原始值的30%!了解了这个特性,在选用电容时要在电压或电容量上留出余量,否则在额定工作电压状态下,滤波器会达不到预期的效果。

t2-4.gif (2772 字节)

4 电容器的电压特性

  综合考虑温度和电压的影响时,电容的变化如图4所示。

t2-5a.gif (2403 字节)
t2-5b.gif (3193 字节)
t2-5c.gif (3136 字节)

5电容器的温度/电压特性

5.穿心电容的使用

  在实际工程中,要滤除的电磁噪声频率往往高达数百MHz,甚至超过1GHz。对这样高频的电磁噪声必须使用穿心电容才能有效地滤除。普通电容之所以不能有效地滤除高频噪声,是因为两个原因,一个原因是电容引线电感造成电容谐振,对高频信号呈现较大的阻抗,削弱了对高频信号的旁路作用;另一个原因是导线之间的寄生电容使高频信号发生耦合,降低了滤波效果,如图5所示。

点击看大图

6 普通电容在高频滤波中的问题

  穿心电容之所以能有效地滤除高频噪声,是因为穿心电容不仅没有引线电感造成电容谐振频率过低的问题,而且穿心电容可以直接安装在金属面板上,利用金属面板起到高频隔离的作用。但是在使用穿心电容时,要注意的问题是安装问题。穿心电容最大的弱点是怕高温和温度冲击,这在将穿心电容往金属面板上焊接时造成很大困难。许多电容在焊接过程中发生损坏。特别是当需要将大量的穿心电容安装在面板上时,只要有一个损坏,就很难修复,因为在将损坏的电容拆下时,会造成邻近其它电容的损坏。

  随着电子设备复杂程度的提高,设备内部强弱电混合安装、数字逻辑电路混合安装的情况越来越多,电路模块之间的相互骚扰成为严重的问题。解决这种电路模块相互骚扰的方法之一是用金属隔离舱将不同性质的电路隔离开。但是所有穿过隔离舱的导线要通过穿心电容,否则会造成隔离失效。当不同电路模块之间有大量的联线时,在隔离舱上安装大量的穿心电容是十分困难的事情。为了解决这个问题,国外许多厂商开发了“滤波阵列板”,这是用特殊工艺事先将穿心电容焊接在一块金属板构成的器件,使用滤波阵列板能够轻而易举地解决大量导线穿过金属面板的问题。但是这种滤波阵列板的价格往往较高,每针的价格约30元。

  1999年,北京天亦通公司开发成功了TLZ – 1系列滤波阵列板(专利申请中)。这种滤波阵列板的滤波性能接近国外产品,但价格仅为国外产品的1/10以下。TLZ – 1系列滤波阵列板的密度是标准2.54mm,可以直接与扁平电缆插座配合,便于安装,可广泛用于电子设备的滤波隔离(图6)。

t2-7.jpg (22746 字节)

7 滤波阵列板用于电路隔离

 

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(976)
发表于:2007-1-21 14:35:50
标签:信号完整性分析  

0

信号完整性仿真模型和工具简介

来源:http://www.chinatelecom.com.cn

现在,用来分析信号完整性的仿真工具有很多,各具特色,应该适当选用。
    1.SPICE模型
    SPICE(Simulation Program with Integrated Circuit Emphasis)模型发展最早,在集成电路业界已成为模拟晶体管级电路描述的非正式标准。它基于晶体管和二极管特性参数建模,故运算量特别大,运算特别耗时(可能要几天),因此用户需要在仿真精度和运算耗时之间折中。SP ICE模型一般不支持耦合线(或损耗线)的仿真,而这正是高速电路设计中信号完整性仿真的关键因素。
    2.IBIS模型
    IBIS(Input/Output Buffer Information Specification)模型是反映芯片驱动和接收电气特性的一种国际标准。它基于V-I曲线,对I/O Buffer快速建模,它提供一种标准的文件格式来记录诸如激励源输出阻抗、上升/下降时间及输入负载等参数,非常适合做振荡和串扰等高频效应的系统级计算与仿真。IBIS是一个简单的模型,计算量小,速度快,精度高,已被广泛选用。
    3.VHDL-AMS
    VHDL-AMS是针对模拟和混合信号行为的建模语言。它是一个相对较新的标准,还没有广泛的模型开发器基础,也不被很多模拟器支持。在它被广泛地用来作信号完整性仿真之前,模型仿真开发器方面还有很多工作需要完成。
    (1)Quantic EMC
    Quantic EMC 是信号完整性和电磁兼容软件模拟分析工具,是西门子公司专用的电磁兼容分析工具。它可以很方便地进行信号完整性和电磁干扰的仿真,它的功能强大,效率高。
    (2)XTK
    XTK是Viewlogic公司在高速系统设计领域研发的高性能信号完整性分析工具,它可以准确地分析复杂的印刷电路板及由多块印刷电路板构成的系统的信号质量和传输线延时。XTK是一个串扰分析工具包,其中包含多种分析工具。
    (3)LineSim与BoardSim
    LineSim和BoardSim是HyperLynx公司(PADS Software的子公司)开发的仿真工具。LineSim用在布设设计以前约束布线和各层的参数,设置时钟的布线拓扑结构,选择元器件的速率,诊断并避免信号完整性、电磁辐射及串扰等问题。BoardSim用于布设以后快速地分析设计中的信号完整性、电磁兼容性和串扰问题,生成串扰强度报告,区分并解决串扰问题。

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(856)
发表于:2007-1-21 14:24:17
标签:抗干扰  EMC  

2

MCS51系列单片机软件抗干扰技术中的误区

转自:周航慈---MCS51系列单片机软件抗干扰技术中的误区

摘要:文章指出了一种广泛流传的误解:在MCS-51系列单片机中,只要用指令使程序从起
始地址开始执行,就可以复位单片机,摆脱干扰。通过一个简单的实验,揭示了软件复位
的可靠方法。

有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系统单片机虽然没有复位指
令,但片内集成了WATCHDOG电路,故抗干扰也不成问题。而普及型MCS-51系列单片机(如
8031和8032)既然无复位指令,又不带硬件WATCHDOS,如果没有外接硬件WATCHDOG电路,
就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件
WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所
谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复
位技术。
现用一简单的实验说明,实验电路如附图所示。接于仿真插座P1.0的发光二极管LED0用来
表示主程序的工作情况,接于P1。1的发光二极管LED1用于表示低级中断子程序的工作情
况,接于P1。2的发光二极管LED2用来表示高级中断子程序的工作情况,接于P3。2口的按
钮用来设立干扰标志,程序检测到干扰标志后故意进入死循环或掉进陷井,模仿受干扰的
情况,从而检验各种复位方法的实际效果。寮验初始化程序如下:

ORG 0000H
STAT: LJMP MAIN ;复位入口地址
LJMP PX0 ;按钮中断向量(低级中断)
ORG 000BH
LJMP PT0 ;t0中断向量(低级中断)
ORG 001BH
LJMP PT1 ;T1中断向量(高级中断)
ORG 0030H
MAIN:
CLR EA
MOV SP,#7
MOV P1,#0FFH
MOV P3,#0FFH
MOV TMOD,#11H
CLR 00H ;干扰标志初始化
SETB ET0
SETB ET1
SETB EX0
SETB PT1
SETB TR0
SETB TR1
SETB EA
LOOP: CPL P1.0 ;主程序发光二极管LED闪烁
MOV R6,#80H
MOV R7,#0
TT1:
DJNZ R7,TT1
DJNZ R6,TT1
SJMP LOOP
PX0:
SETB 00H ;设立干扰标志,模拟发生干扰
PT0: CPL P1.1 ;低级中断程序发光二极管LED1闪烁
RETI
PT1: CPL P1.2 ;高级中断程序发光二极管LED2闪烁
RETI
END

实验步骤如下:

1. 按上述程序启动执行,三个发光二极管都应闪烁(否则应先排除故障),表示主程序
和各中断子程序正常。因模拟干扰标志未加检测,故不受按钮影响。

2. 修改主程序如下,按下按钮后主程序即掉入死循环中。
LOOP: CPL P1.0
MOV R6,#80H
MOV R7,#0H
TT1: DJNZ R7,TT1
DJNZ R6,TT1
JNB 00H,LOOP ;受干扰否?
STOP: LJMP STOP ;掉入死循环。
这时可以看到,主程序停止工作(LED0停止闪烁),而两个中断子程序继续运行(LED1和
LED2继续闪烁)。

3. 将定时器T1妆作软件WATCHDOG,将30H单元用作软件WATCHDOG计数器。主程序中加入一
条复位软件WATCHDOG的指令。
LOOP: CPL P1.0
MOV 30H,#0 ;复位软件WATCHDOG计数器
LOOP: CPL P1.0
MOV R6,#80H
MOV R7,#0H
TT1: DJNZ R7,TT1
DJNZ R6,TT1
JNB 00H,LOOP ;受干扰否?
STOP: LJMP STOP ;掉入死循环。
T1中断子程序修改如下:
PT1: CPL P1.2 ;高级中断程序发光二极管闪烁
INC 30H
MOV A,30H
ADD A,#0FDH
JC ERR ;达到3次否?
RETI
ERR: LJMP STAT ;软件WATCHDOG动作
当按下按钮前,程序正常运行(三个LED全闪)。按下按钮后,主程序能迅速恢复工作,但
两个中断子程序被封锁,不再工作。过程如下:主程序检测到干扰后进入死循环,不能执
行复位30H单元的操作,T1中断使30H不断增值,计数到3时,软件WATCHDOG执行动作,执行
一条LJMP指令,使程序从头执行。MAIN过程中清除了干扰标志(表示干扰已经过去),使
主程序迅速恢复工作。按理说MAIN过程中也重新设定了各个中断,并开放了它们,为什么
中断不能恢复工作呢?这是因为中断激活标志的复位工作被遗忘了,因为它没有明确的位
地址可供编程,直接转向0000H地址并不能完成真正的复位。软件复位是使用软件陷井和软
件WATCHDOG后必须进行的工作,这时程序出错完全有可能发生中断子程序中,中断激活标
志已置位,它将阻止同级中断响应。由于软件WATCHDOG是高级中断,它将阻止所有中断响
应。由此可见,清除中断激活标志的得要性,很多文献的作者回为没有认识到这一点进入
误区。

4. 在所有指令中,只有RETI指令能清除中断激活标志。出错处理程序ERR主要是完成这一
功能,其它的善后工作交由复位后的系统去完成。为此,我们重新设计T1中断子程序如下
所示:
PT1: CPL P1.2 ;高级中断程序发光二极管闪烁
INC 30H ;软件WATCHDOG计数器增值
MOV A,30H
ADD A,#0FD
JC ERR ;达到3次否?
RETI
ERR: CLR EA ;关中断
CLR A ;准备复位地址(0000H)
PUSH ACC
PUSH ACC
RETI ;清除中断激活标志并复位
这段程序先关中断,以便后续处理能顺利进行,然后用RETI指令替代LJMP指令,从而既清
除了中断激活标志又完成了转向0000H的任务。按这样改好后程序再运行,结果仍不理想:
按下按钮后,有时只有主程序和高级中断子程序能迅速恢复正常,而低级中断仍有被关闭
的可能。如果按如下方法把干扰转移到低级中断中,则按下按钮后低级中断必然被关闭:
LOOP: CPL P1.0
MOV R6,#80H
MOV R7,#0H
TT1: DJNZ R7,TT1
DJNZ R6,TT1
SJMP LOOP
PT0: CPL P1.1
JB 00H,STOP
RETI
STOP: LJMP STOP ;掉入死循环。
仔细分析后可能得出结论:当软件WATCHDOG是嵌套在低级中断中起作用时,复位后只清除
了高级中断激活标志,低级中断标志仍然被置位,从而使低级中断一直被关闭。

5. 修改出错处理如下:
ERR: CLR EA ;正确的软件复位入口
MOV 66H,#0AAH ;重建上电标志
MOV 67H,#55H
MOV DPTR,#ERR1 ;准备第一次返回地址
PUSH DPL
PUSH DPH
RETI ;清除高级中断激活标志
ERR1: CLR A
PUSH ACC
PUSH ACC
RETI ;清除低级中断激活标志
这时,必须执行两次RETI,才能到达0000H,以保证清除全部中断激活标志,达到和硬件复
位相同的效果。同样,软件陷井也必须由下列三条指令
NOP
NOP
LJMP STAT
改成:
NOP
NOP
LJMP ERR
才能达到目的。
当主程序受到干扰被软件陷阱捕获时,中断标志并未置位,执行ERR过程中,RETI指令等效
于RET指令,同样可以达到软件复位的目的。有兴趣的读者可以将软件陷阱代替死循环,分
别用LJMP STAT和LJMP ERR1来替代LJMP ERR,再将干扰检测分别设在低级中断和主程序
中,实验结果必然证明同:只有LJMP ERR才能万无一失地实现软件复位,使系统摆脱干扰
同,恢复正常。在MCS-51单片机的软件复位过程中,必须连续执行两次中断返回指令RETI
才能确保系统恢复正常。

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(1378)
发表于:2007-1-21 14:21:52
标签:抗干扰  EMC  

0

10种软件滤波方法及示例程序

                                                     -------------( andean 整理)
 

1、限幅滤波法(又称程序判断滤波法)
    A、方法:
        根据经验判断,确定两次采样允许的最大偏差值(设为A)
        每次检测到新值时判断:
        如果本次值与上次值之差<=A,则本次值有效
        如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
    B、优点:
        能有效克服因偶然因素引起的脉冲干扰
    C、缺点
        无法抑制那种周期性的干扰
        平滑度差

示例程序:
/*  A值可根据实际情况调整
    value为有效值,new_value为当前采样值 
    滤波程序返回有效的实际值  */
#define A 10

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   if ( ( new_value - value > A ) || ( value - new_value > A )
      return value;
   return new_value;
        
}

2、中位值滤波法
    A、方法:
        连续采样N次(N取奇数)
        把N次采样值按大小排列
        取中间值为本次有效值
    B、优点:
        能有效克服因偶然因素引起的波动干扰
        对温度、液位的变化缓慢的被测参数有良好的滤波效果
    C、缺点:
        对流量、速度等快速变化的参数不宜

示例程序:
/*  N值可根据实际情况调整
    排序采用冒泡法*/
#define N  11

char filter()
{
   char value_buf[N];
   char count,i,j,temp;
   for ( count="0";count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf[i]>value_buf[i+1] )
         {
            temp = value_buf[i];
            value_buf[i] = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   return value_buf[(N-1)/2];
}    

3、算术平均滤波法
    A、方法:
        连续取N个采样值进行算术平均运算
        N值较大时:信号平滑度较高,但灵敏度较低
        N值较小时:信号平滑度较低,但灵敏度较高
        N值的选取:一般流量,N=12;压力:N=4
    B、优点:
        适用于对一般具有随机干扰的信号进行滤波
        这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
    C、缺点:
        对于测量速度较慢或要求数据计算速度较快的实时控制不适用
        比较浪费RAM
       
示例程序:
/*
*/
#define N 12

char filter()
{
   int  sum = 0;
   for ( count="0";count<N;count++)
   {
      sum + = get_ad();
      delay();
   }
   return (char)(sum/N);
}

4、递推平均滤波法(又称滑动平均滤波法)
    A、方法:
        把连续取N个采样值看成一个队列
        队列的长度固定为N
        每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)
        把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
        N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4
    B、优点:
        对周期性干扰有良好的抑制作用,平滑度高
        适用于高频振荡的系统   
    C、缺点:
        灵敏度低
        对偶然出现的脉冲性干扰的抑制作用较差
        不易消除由于脉冲干扰所引起的采样值偏差
        不适用于脉冲干扰比较严重的场合
        比较浪费RAM


示例程序:
/*
*/
#define N 12

char value_buf[N];
char i="0";

char filter()
{
   char count;
   int  sum="0";
   value_buf[i++] = get_ad();
   if ( i == N )   i = 0;
   for ( count="0";count<N,count++)
      sum = value_buf[count];
   return (char)(sum/N);
}

       
5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
    A、方法:
        相当于“中位值滤波法”+“算术平均滤波法”
        连续采样N个数据,去掉一个最大值和一个最小值
        然后计算N-2个数据的算术平均值
        N值的选取:3~14
    B、优点:
        融合了两种滤波法的优点
        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
    C、缺点:
        测量速度较慢,和算术平均滤波法一样
        比较浪费RAM


示例程序:
/*
*/
#define N 12

char filter()
{
   char count,i,j;
   char value_buf[N];
   int  sum="0";
   for  (count=0;count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf[i]>value_buf[i+1] )
         {
            temp = value_buf[i];
            value_buf[i] = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   for(count=1;count<N-1;count++)
      sum += value[count];
   return (char)(sum/(N-2));
}

6、限幅平均滤波法
    A、方法:
        相当于“限幅滤波法”+“递推平均滤波法”
        每次采样到的新数据先进行限幅处理,
        再送入队列进行递推平均滤波处理
    B、优点:
        融合了两种滤波法的优点
        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
    C、缺点:
        比较浪费RAM
 
示例程序:
参考子程序1、3

7、一阶滞后滤波法
    A、方法:
        取a=0~1
        本次滤波结果=(1-a)*本次采样值+a*上次滤波结果
    B、优点:
        对周期性干扰具有良好的抑制作用
        适用于波动频率较高的场合
    C、缺点:
        相位滞后,灵敏度低
        滞后程度取决于a值大小
        不能消除滤波频率高于采样频率的1/2的干扰信号

示例程序:
/* 为加快程序处理速度假定基数为100,a=0~100 */

#define a 50

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   return (100-a)*value + a*new_value;
}
       
8、加权递推平均滤波法
    A、方法:
        是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
        通常是,越接近现时刻的数据,权取得越大。
        给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
    B、优点:
        适用于有较大纯滞后时间常数的对象
        和采样周期较短的系统
    C、缺点:
        对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号
        不能迅速反应系统当前所受干扰的严重程度,滤波效果差

示例程序:
/* coe数组为加权系数表,存在程序存储区。*/

#define N 12

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

char filter()
{
   char count;
   char value_buf[N];
   int  sum="0";
   for (count=0,count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (count=0,count<N;count++)
      sum += value_buf[count]*coe[count];
   return (char)(sum/sum_coe);
}

9、消抖滤波法
    A、方法:
        设置一个滤波计数器
        将每次采样值与当前有效值比较:
        如果采样值=当前有效值,则计数器清零
        如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)
            如果计数器溢出,则将本次值替换当前有效值,并清计数器
    B、优点:
        对于变化缓慢的被测参数有较好的滤波效果,
        可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
    C、缺点:
        对于快速变化的参数不宜
        如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系

示例程序:
#define N 12

char filter()
{
   char count="0";
   char new_value;
   new_value = get_ad();
   while (value !=new_value);
   {
      count++;
      if (count>=N)   return new_value;
       delay();
      new_value = get_ad();
   }
   return value;   
}

10、限幅消抖滤波法
    A、方法:
        相当于“限幅滤波法”+“消抖滤波法”
        先限幅,后消抖
    B、优点:
        继承了“限幅”和“消抖”的优点
        改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统
    C、缺点:
        对于快速变化的参数不宜
 

示例程序: 参考子程序1、9

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 整理

评论(0) | 阅读(877)
发表于:2007-1-21 14:11:06
标签:抗干扰  EMC  

1

数字电路抗干扰设计

--- 摘自《C51BBS离线版光盘》---

    在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性 的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个:
    (1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可 能成为干扰源。
    (2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传 播路径是通过
导线的传导和空间的辐射。
    (3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大
器等。

    抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的 抗干扰性能。
    (类似于传染病的预防)
1 抑制干扰源
   抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优 先考虑和最重要
   的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容
   来实现。减小干扰源的 di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。

  抑制干扰源的常用措施如下:
    (1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加 续流二极管会
        使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。
    (2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电
        容选0.01uF),减小电火花影响。
    (3)给电机加滤波电路,注意电容、电感引线要尽量短。
    (4)电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的 影响。注意
        高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电
        阻,会影响滤波效果。
    (5)布线时避免90度折线,减少高频噪声发射。
    (6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能 会把可控硅
        击穿的)。

  按干扰的传播路径可分为传导干扰和辐射干扰两类。
    所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和 有用信号的频带不同,可
    以通过在导线上增加滤波器的方法切断高频干扰 噪声的传播,有时也可加隔离光耦来解决。电
    源噪声的危害最大, 要特别注意处理。  所谓辐射干扰是指通过空间辐射传播到敏感器件的干
    扰。 一般的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感器件上加蔽
    罩。

2 切断干扰传播路径的常用措施如下:
    (1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就解决了一大半。许多单
        片机对电源噪声很敏感, 要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机
        的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω
        电阻代替磁珠。
    (2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π
        形滤波电路)。 控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波
        电路)。
    (3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地
        并固定。此措施可解决许多疑难问题。
    (4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源 (如电机,继电
        器)与敏感元件(如单片机)远离。
    (5)用地线把数字区与模拟区隔离,数字地与模拟地要分离,最后在一点接于电源地。A/D、
        D/A芯片布线也以此为原则,厂家分配A/D、D/A芯片 引脚排列时已考虑此要求。
    (6)单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路
        板边缘。
    (7)在单片机I/O口,电源线,电路板连接线等关键地方使用抗干扰元件 如磁珠、磁环、电
        源滤波器,屏蔽罩,可显著提高电路的抗干扰性能。

3 提高敏感器件的抗干扰性能
    提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不
    正常状态尽快恢复的方法。
  提高敏感器件抗干扰性能的常用措施如下:
    (1)布线时尽量减少回路环的面积,以降低感应噪声。
    (2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。
    (3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置 端在不改变系统
        逻辑的情况下接地或接电源。
    (4)对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X25043,X25045
        等,可大幅度提高整个电路的抗干扰性能。
    (5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字 电路。
    (6)IC器件尽量直接焊在电路板上,少用IC座。
  ...................................................................................
我先说说我在这方面的经验吧!不当之处请指正,有好经验与心得也请大方贡献!
软件方面:
    1、我习惯于将不用的代码空间全清成“0”,因为这等效于NOP,可在程序跑飞时归位;
    2、在跳转指令前加几个NOP,目的同1;
    3、在无硬件WatchDog时可采用软件模拟WatchDog,以监测程序的运行;
    4、涉及处理外部器件参数调整或设置时,为防止外部器件因受干扰而出错可定时将参数重新
       发送一遍,这样可使外部器件尽快恢复正确;
    5、通讯中的抗干扰,可加数据校验位,可采取3取2或5取3策略;
    6、在有通讯线时,如I^2C、三线制等,实际中我们发现将Data线、CLK线、INH线常态置为高,
       其抗干扰效果要好过置为低。

硬件方面:
    1、地线、电源线的部线肯定重要了!
    2、线路的去偶;
    3、数、模地的分开;
    4、每个数字元件在地与电源之间都要104电容;
    5、在有继电器的应用场合,尤其是大电流时,防继电器触点火花对电路的干扰,可在继电器
       线圈间并一104和二极管,在触点和常开端间接472电容,效果不错!
    6、为防I/O口的串扰,可将I/O口隔离,方法有二极管隔离、门电路隔离、光偶隔离、电磁隔
       离等;
    7、当然多层板的抗干扰肯定好过单面板,但成本却高了几倍。
    8、选择一个抗干扰能力强的器件比之任何方法都有效,我想这点应该最重要。因为器件天生
       的不足是很难用外部方法去弥补的,但往往抗干扰能力强的就贵些,抗干扰能力差的就便
       宜,正如台湾的东东便宜但性能却大打折扣一样!主要看各位的应用场合了

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(716)
发表于:2007-1-19 21:58:12
标签:抗干扰  EMC  

1

系统抗干扰之我见

入行两年多来,感觉最头痛的问题就是EMC了,我不知道其它人是否有同感.因为是电力行业的原因吧,我在做设备时都得对这个可靠性的问题再三掂量.不敢说有多精通,但也有一点点拙见,今天写出来和大家分享一下.


        从设计周期看,可靠性设计是从头到尾都会涉及到,而且产品运行过程中也有涉及.因此在不同阶段,我们分析问题的方法上也有差异.在设计时靠的是理论功底,靠的是经验,靠的是仿真(软、硬)。样机调试阶段就可能会发现系统联调带来的一些新麻烦,这一般