PIC单片机和AVR单片机的自身抗干扰性能

在我的产品中有AVR单片机和PIC单片机两种单片机同时存在,当用AVR单片机推动继电器--再推动接触器。用PIC单片机来显示。发现PIC单片机居然有点小小的干扰,不得不在外围电路上加措施才解决问题。都说PIC单片机的抗干扰一流的,我怀疑之下对两种单片机做一个小小的测试。

首先说明,我只是比较单个芯片的最小系统,比较单片机的自身抗干扰能力。
1。电源用变压器变压12V,7805稳压,输入输出均接电解电容和104电容。
2。单片机最小系统,用3个I/O,按钮,指示灯,驱动三极管(继电器--再推动接触器)不用的管脚不管。
3。干扰源,由于没有仪器,只好用接触器的线圈来做干扰源,为了加强干扰,接触器线圈两端没有加104电容。
4。软件,最小最简单,不加任何处理只推动作用。
5。元件选择,PIC的用PIC16C54,PIC16F54,PIC16F877A,PIC16F716。AVR的选用M8。AT28,AT13。
接下来做测试了:
PIC16C54:
先是接触器放在芯片旁边。无论怎么按动按钮,接触器的干扰对它一点反映也没有,真是稳如泰山。再用接触器线圈引线缠绕芯片。在6圈以下还是稳如泰山。上了7圈就有干扰了。看来PIC16C54真是强悍啊。佩服。接下去就试PIC16F54了。
PIC16F54:
先是接触器放在芯片旁边。不得了!程序简直没有办法运行,和PIC16C54简直一个在天上,一个在地下。万思不得其解。查阅PIC资料都说PIC的F 系列比C系列差,就是F系列的不同产品抗干扰也不一样。于是又测试PIC16F716。
PIC16F716:
先是接触器放在芯片旁边。果然好多了,10次也就1次复位。
PIC16F877A:
先是接触器放在芯片旁边。无论怎么按动按钮,接触器的干扰对它一点反映也没有,再用接触器线圈引线缠绕芯片。在1圈就有干扰复位了。
以上就是对我有的几种PIC片子的测试结果。接下来对AVR的M8做测试。
M8:
先是接触器放在芯片旁边。先是接触器放在芯片旁边。无论怎么按动按钮,接触器的干扰对它一点反映也没有,再用接触器线圈引线缠绕芯片。在1圈就有干扰复位了。
AT28:结果和PIC16F54一样。
AT13:
先是接触器放在芯片旁边。先是接触器放在芯片旁边。无论怎么按动按钮,接触器的干扰对它一点反映也没有,再用接触器线圈引线缠绕芯片。在1-2圈就有干扰复位了。
从我自己测试的效果看,PIC的C系列很好。F系列的早期产品如PIC16F54很差,还不如51。后期的F系列如PIC16F877还可以。个人估计:原来PIC是生产OTP单片机的,他的OTP技术真是一流,F是后来才生产的(可能是C系列的学习版),技术还在学习和摸索中,所以F系列是早期产品不如后期产品。没有测试18F系列的不知道好不好。
AVR的M8就和PIC16F877A差不多。AT13比M8好一点。M28差。
同一个厂家的产品怎么有如此大的差别呢?干扰又是怎么造成CPU复位的呢?带着疑问我又对M8和PIC16F716再继续做试验。
1:用示波器测试芯片任意地方,发现都有干扰脉冲。不能确定干扰具体位置。
2:用接触器线圈引线对准芯片一个一个脚来测试。结果出来了。
PIC16F716:只要引线对准复位脚,100%的复位,有状态指示出是MCLR复位。引线对准电源脚没有影响。
M8:只要引线对准复位脚,100%的复位,有状态指示出是RESET复位。引线对准电源脚(20-30)%复位。
从以上看来干扰主要是影响了复位脚。电源对PIC的影响比AVR的小。查阅PIC和AVR的复位系统,终于有了答案:
AVR的复位脚通过一个电阻连接到电源,而PIC的则没有,故电源对PIC的影响比AVR的小。将PIC的复位脚外接一个电阻,电源对PIC的影和AVR一样。
将电源和复位连接103或者104电容到地,奇迹发生了。
M8的稳定性能居然和PIC16C54一样了。先是接触器放在芯片旁边。无论怎么按动按钮,接触器的干扰对它一点反映也没有,真是稳如泰山。再用接触器线圈引线缠绕芯片。在4圈以下还是稳如泰山。上了5圈就有干扰了。
PIC16F716:先是接触器放在芯片旁边。无论怎么按动按钮,接触器的干扰对它一点反映也没有,真是稳如泰山。再用接触器线圈引线缠绕芯片。在1-2有干扰了。
查阅PIC的MCLR时间没有结果,看了PIC16F系列的复位电路没有什么改变估计是PIC16F系列的内部质量不高。再说“奇迹发生了”抗干扰能力提高不显著。
查阅各种AVR的复位电路,发现AT11是最差的,连“尖峰滤波电路也没有”所以淘汰停产了。AT24/26/28/15的复位时间只有50-900ns。AT25/13/2313的复位时间要2.5us,难怪要稳定些。M48/88/168为2us,M8为1.5us。(没有比较过M48是不是比M8稳定一些)。复位时间短的肯定比时间长的容易受干扰一些,可是AVR为什么还如此明了的标出复位时间呢?只有一个原因:让用户根据不同的环境选择不同抗干扰的芯片。
终上所述:芯片自身抗干扰能力。个人认为:
PIC的C系列片子可以得10分。
AVR的M8可以得8-9分。
PIC的16F系列片子可以得4分。
AVR的AT13可以得8-9分。
可以看出AVR的足可以用于工业控制了,注意使用AVR的片子的时候要根据不同的环境选择不同的片子,还有AVR的复位脚处理,由于AVR的复位脚通过一个电阻连接到电源,所以电源也要处理。
以上所述只是个人认识,做的试验也不全面,请大虾们不要太计较。现在有一棵新星STC单片机,网上传的很神奇,特别恳请哪位大虾做个测试。
JAMESKING:
谢谢陈先生这篇好文章,这帖子应该上裤子了!!
STC我无法买到,不好做试验。
Mega16L/32L/128L都具有类似Mega8这个特点。
当电源纹波在5mv以内时,就算直接对引脚火花放电都没关系,只是用料比较多而已。
接触器的RC或者压敏还是要加上。
yy_zxl:  
用楼主的办法对我的mega16进行试验,10圈,接触器点动5次就复位了。在接触器的线圈上并TVS或电容,问题解决,看来在接触器的线圈上并TVS或电容是有必要的,对23楼
“4,最关键的一点是软件问题,就是在接触器输出指令后加10ms的延时,然后再重复输出接触器指令。这样MCU就不会复位了。为什么呢?自己体会。这点是一些工程师不愿意讲的,或者是不知道的。简单的说,其实MCU或者其他元件也好。受到干扰的情况总是在处于接受或者输入的状态下的。如果你的元件处于输出状态的话是不会受到干扰的。延时10ms是因为接触器是慢动作元件,在MCU指令后要大约10ms才可以吸合的,这时候就要让MCU处于输出状态,输出比输入受干扰小多多了。所以要重复输出接触器指令。用了该方法,MCU就不会受干扰了。”
觉得不一定有用,因为干扰是从空中耦合到reset端,此时单片机处于什么状态对干扰reset端是毫无办法的。


多谢qdreamv老师对pic和AVR所做的抗干扰试验,我基本同意您的试验,试验很细致,比较客观。抗干扰能力是综合的,仅凭一两个试验还不能全面的说明问题,AVR和PIC我都用过,我个人感觉PIC好一点,当然这只是经验和感觉,没有详细的数据,再者,工艺的不同,比较起来也有待商榷,例如,OTP和flash比,较前者就是好,还有高集成工艺flash和低集成工艺flash比较。在PCB布局方面,必要的抗干扰措施方面,干扰源的类型和作用方式,电源的高低和性能方面,...等因素都是不能忽视的。还烦请qdreamv老师为我们多提供些抗干扰方面的信息和资料。
抗干扰复位,它有两方面的考虑,一方面我们希望单片机在受干扰的情况下越耐久复位越好,另一方面希望在强干扰到来时,单片机产生复位,避免强干扰带来的更大伤害,在编程方面可以把这种情况考虑进去,即冷启动和热启动所产生不同的效果,热启动基本上不做任何初始化的处理,并在程序结构上有所考虑,现在很多工程师都知道这些,在编程时都有所考虑,然而,在用c语言编程时,c标准规定静态区变量都是要清零的,这样以来就和前面所讲的发生了矛盾,幸好现代针对单片机的c编译器也都有这方面的考虑,增设了一些关键字 或 增设了一些编译环境的设置 或 对引导程序做些必要的修改,例如,picc就增设了关键字persistent — 非初始化变量声明。当然增设的关键字会对程序的移植带来很多不方便。修改引导程序倒是挺好的办法,IAR就是这样做的。
本文转载于网络

posted @ 2021-06-08 23:19  炽热的舞者  阅读(474)  评论(0编辑  收藏  举报