如何防止单片机跑飞!
提高单片机抗干扰能力: 如何让你的设计少走弯路这是大家都非常关注的问题。
搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。
下面讨论一下如何让你的设计避免走弯路:
抗干扰体现在2个方面,一是硬件设计上,二是软件编写上。
这里重点提醒:在MCU设计中主要抗干扰设计是在硬件上,软件为辅。因为MCU的计算能力有限,所以要在硬件上花大工夫。
看看干扰的途径:
1:干扰信号干扰MCU的主要路径是通过I/O口,一是影响了MCU的数据采集,二是影响内部其它寄存器。
解决方法:后面讨论。
2:电源干扰:MCU虽然适应电压较宽(3-5。5V),但对于电源的波动却很敏感,比如说MCU可以在3V电压下稳定工作,但却不能在电压在3V-5。5V波动的情况下稳定工作。
解决方法:用电源稳压块,做好电源的滤波等工作,提示:一定要在电源旁路并上0。1UF的瓷片电容来滤除高频干扰,因为电解电容对超过几十KHZ的高频干扰不起作用。
3:上下电干扰:但每个MCU系统在上电时候都要经过这样一个过程,所以要尤其注意。
MCU虽然可以在3V电压下稳定工作,但并不是说它不能在3V以下的电压下工作,当然在如此低的电压下MCU是超不稳定状态的。在系统加电时候,系统电源电压是从0V上升到额定电压的,比如当电压到2V时候,MCU开始工作了,但这时是超不稳定的工作,极容易跑飞。
解决方法:1让MCU在电源稳定后才开始工作。PIC在片内集成了POR(内部上电延时复位),这功能一定要在配置位中打开。
外部上电延时复位电路。有多种形式,低成本的就是在复位脚接个阻容电路。高成本的是用专用芯片。这方面的资料特多,到处都可以查找。
*难排除的就是上面**种干扰,并且干扰信号随时可以发生,干扰信号的强度也不尽相同。
但��们也有相同点:干扰信号也遵循欧姆定律,干扰信号偶合路径无非是电磁干扰,一是电火花,二是磁场。
其中干扰*厉害的是电火花干扰,其次是磁场干扰。电火花干扰表现场合主要是附近有大功率开关、继电器、接触器、有刷电机等。磁场干扰表现场合主要是附近有大功率的交流电机、变压器等。
解决方法:**点:也是*经典的,就是在PCB步线和元件位置安排上下工夫,这中间学问很多,说几天都说不完^^。
二:综合考虑各I/O口的输入阻抗,采集速率等因素设计I/O口的外围电路。
一般决定一个I/O口的输入阻抗有3种情况:
A:I/O口有上拉电阻,上拉电阻值就是I/O口的输入阻抗。
一般大家都用4K-20K电阻做上拉,(PIC的B口内部上拉电阻约20K)。
由于干扰信号也遵循欧姆定律,所以在越存在干扰的场合,选择上拉电阻就要越小,因为干扰信号在电阻上产生的电压就越小。
由于上拉电阻越小就越耗电,所以在家用设计上,上拉电阻一般都是10-20K,而在强干扰场合上拉电阻甚至可以低到1K。
(如果在强干扰场合要抛弃B口上拉功能,一定要用外部上拉。)
B:I/O口与其它数字电路输出脚相连,此时I/O口输入阻抗就是数字电路输出口的阻抗,一般是几十到几百欧。
可以看出用数字电路做中介可以把阻抗减低到*理想,在许多工业控制板上可以看见大量的数字电路就是为了保证性能和保护MCU的。
C:I/O口并联了小电容。
由于电容是通交流阻直流的,并且干扰信号是瞬间产生,瞬间熄灭的,所以电容可以把干扰信号滤除。但不好的是造成I/O口收集信号的速率下降,比如在串口上并电容是绝不可取的,因为电容会把数字信号当干扰信号滤掉。
对于一些检测开关、干簧管、霍尔元件之类的是可以并电容的,因为这些开关量的变化是不可能有很高的速率的,并一个小电容对信号的采集是没任何影响的。