搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。
下面讨论一下如何让你的设计避免走弯路:
抗干扰体现在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口收集信号的速率下降,比如在串口上并电容是绝不可取的,因为电容会把数字信号当干扰信号滤掉。
对于一些检测开关、干簧管、霍尔元件之类的是可以并电容的,因为这些开关量的变化是不可能有很高的速率的,并一个小电容对信号的采集是没任何影响的。
上一篇:STM8 ADC初始化+采集数据
下一篇:谈编程风格和格式
推荐阅读
史海拾趣
引言 各种测量仪器检测到的数据常常需要传送到PC机进行数据处理与存档,以充分利用PC机丰富的硬件和软件资源,获得更为完善和强大的数据处理、分析和存储能力。传统PC平台的数据采集卡受PC机插槽数目、地址、中断等硬件和软件资源的限制,可扩 ...… 查看全部问答∨ |
半导体的耀眼光芒正在消逝。近日,普华永道中国2009半导体行业最新报告显示,长远看来,中国半导体消费市场已驶离高速发展的快车道,未来该行业的增长率将更接近全球平均水平。 对技术尚不过关、规模更无法与国外半导体公司相提并论的中国 ...… 查看全部问答∨ |
单片机来控制四路LED,每路有102个LED(三个LED和一个120的电阻串联为一组,组和组之间是并联) 需要单片机来控制各路呈现各种规律亮或者灭(单路同时亮或者同时灭),采用的开关电源是5V4A,12V1A的,不知道怎么接电路,请指教,在线等,急。。。 ...… 查看全部问答∨ |
unsigned char* GetStroageID(LPCTSTR szDisk) { //HANDLE hDisk = CreateFile(_T("DSK1:"), GENERIC_READ, FILE_SHARE_READ ? FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); HANDLE hDisk = CreateFile(szDisk, GENERIC_READ, FILE ...… 查看全部问答∨ |
我按照下面的步骤, 1. 连接好串口线和电源线(未上电) 2. 启动DNW并且Connect,显示串口已经连接 3. 启动板子 问题:为什么我启动了板子以后不显示DNW的信息呢?而是直接启动了WinCE。我重新烧写了BIOS,但是还是不行。 请大虾们指教。… 查看全部问答∨ |
着液晶显示器市场的拉动,LED背光源产业呈现出一派繁荣景象。在显示技术水平上不断进步,巨大的LED市场注定将其发展成为一个庞大的产业。 经过多年的发展,LED显示屏行业中逐渐迈向成熟,在应用领域上也不断的拓宽。从近年统计数据来看,在国 ...… 查看全部问答∨ |
用自己设计的图纸,发现封装太小,自己做板难度不小.外发打样,一个来回至少14天,周期太长. iar至今没找到和谐版,先用免费的那个.现在还在仿真环境里面,还没有绕出来.也不知道是开发板附带的st-link问题还是哪里有问题.去官网找资料,再次迷失在 ...… 查看全部问答∨ |
我想在里面添加TL494进行仿真 可我没在库里面找到呀 那位高手帮个忙 感激不尽啊 尽量详细点哈 谢谢!!… 查看全部问答∨ |