与电容有关的开发教训

1:ADC按键

以下是某平台提供的标准原理图:

功能很简单,就是通过分压进行ADC采集。标准应用是没什么问题。但我们因为需求原因需要把一个按键拉到长距离传输数据。如上图绿色虚线部分。长度大约30M x 2。

当按下S5的时候,CPU会误报S6按下的值,并且和S5来回切换,一段时间后才消失。断开绿色虚线,一切正常。

在KEYADC网络和GND之间加0.1uF电容没太大效果,在PCB上R48靠近绿色虚线和GND之间加0.1uF效果明显,CPU不再误报。

原因:当S5按下的时候,AVCC---->R46---->R47---->GND有电流变化,产生的电压变化,经过长的绿色虚线,产生谐振。从高速信号原理看,这个电压变化已经是高速型号,来回在线的两端反射。加了电容之后,吸收谐振或者高速型号反射值。

教训:若要外引按键,需要在靠近PCB的两端接上电容,去谐振。并且实践证明高速信号是相对的,跟传输路径长度和信号带宽有关。(这里是外接线和开关按下带宽)

 

2:USB热拔插

做了一个USB HUB小模块,在主板上电后,插入小模块导致主板CPU重启,主板USB供电电路和USB模块如下:

     

PS为电源管理的电压,VCC-5V为主板输出USB供电电压。VCC5V_USB为USB小模块的输入电压。

在插入USB小模块时,测量了VCC-5V和PS电压,均出现电压下滑到一定值,这个直接原因导致主板CPU重启。去掉C61后,重启由必然变成概率性,后续发现是U4不符合datasheet描述(坑爹的国产假货),动态负载效果很差,更换了替换型号后,拔插没有再出现主板CPU重启,此时C61并没有焊接回去。经测试工程师多次拔插USB模块,会导致无法识别USB。查看USB模块,发现USB芯片损坏。查看其datasheet,芯片最高承受电压6V。可以断定是拔插过程产生机械抖动使电压超过6V,多次实验会导致USB芯片损坏。换一块新的USB模块,并焊接上C61。USB模块再也没有损坏,但是主板CPU会有1%左右的概率重启。可以推断是C61的容值选取和U4的动态负载能力有关,更换C61为4.7uF,多次拔插一切正常。

原因:电源动态带负载能力与热拔插产生的机械抖动假负载之间矛盾。若受供电一端没有电容,则会因为机械抖动产生的电压击坏电路。若受供电一端电容太大,会把供电端的电源芯片电压拉下,因为在一定频率下,电容越大,产生的负载阻抗越小,负载越重。

教训:对于热拔插,在供电一端可接受范围内尽可能加大电容,并确认电源动态带负载能力。受供电端在保护电路留好足够余量的前提下,折中选择电容大小。

 

posted @ 2016-08-19 17:24  Kevin_Hwang  阅读(506)  评论(0编辑  收藏  举报