最近,做了一批板子,不像以前的板子一样,工作不正常。
花了将近5个工作日,终于把问题原因找到了:就是这个RC电路造成的。
如下图所示的电容滤波电路,在应用中很常见。
如果电容值选择不合适,会导致问题比较麻烦,特别是系统中还使用了看门狗电路。
问题描述
下图是使用的系统构成框图。
有三部分:MCU电路,看门狗,模块。
MCU的复位由硬件看门狗提供。
看门狗的喂狗由MCU来完成。
模块的电源由MCU的一个IO口控制,缺省不上电。电路中电阻R0用于给电容提供放电回路。另外,模块的供电电源电路是厂家推荐电路。
基本工作流程: MCU工作后,初始化IO口,然后根据需要设置IO口,打开MOS管,给模块供电。同时,喂狗。
使用中,发现部分板子能够正常工作,大部分板子不能正常工作,用示波器检查看门狗的输出,发现:周期性的输出复位信号,但是该周期又不是看门狗芯片手册中的周期信号,其周期比不喂狗的周期短很多。
原因分析
上电后,MCU工作。当打开MOS管给模块供电时,瞬时先对电容充电,充满到模块的正常工作的阈值后,模块可以工作。
但是,这个瞬时充电会导致3V3的供电电压有个波动。
由于看门狗的检测电压阈值是2.93V,当这个波动使得3V3跌落至2.93V以下时,看门狗就会输出复位信号,复位MCU。
然后,MCU有重复上面的过程,打开MOS管供电。。。
。。。
看门狗周期输出复位信号。
模块被周期上电。
。。。
解决办法
减小电容的值(4.7uF -> 0.1uF),从而减少波动,即减小电源电压跌落的幅度。
使得电源跌落幅度维持在看门狗检测的阈值(2.93V)以上,这样,看门狗就不会输出复位,从而保证MCU正常工作了。
深层原因
以前用同样大小的电容(4.7uF)从来没有发现问题,为什么这批板子就出问题呢?
回头再仔细考虑这个问题,发现并不简单,还有更深层的原因:采购。
这批板子采用的是新购买的电容,从淘宝上购买的,当时也没有要求精度。
测量后发现其值大概是5.9uF左右,与设计的4.7uF(原来是用的大厂的料)差距还是不小的。而原来采用的电容值还是比较靠谱的。
同时,也说明了一个问题:原来设计的4.7uF使系统工作在一个临界状态。
经验教训
以下两点需要注意:
-
采购物料时,一定要从大厂采购,同时标明精度,如%1。
-
设计系统时,一定要留有余量,不要让系统工作在一个临界状态。虽然这种临界状态不好获知。就像电影《疯狂的石头》中,那个来自国外的“高手”在中国购买的登山绳长度就没有考虑余量,所以被坑了。