作为一名摸爬滚打多年的硬件老鸟,今天不得不挂一个典型案例。 上午学弟拿来一个WL01涡流传感器模块要退货,说是坏的。一上电,5V电压下电流直接飙到0.4A,发热严重,芯片烫得能煎鸡蛋!
还没开始测涡流,板子先成了“暖手宝”。是模块质量太差?还是玄学问题? 我一把拦住准备退货的学弟:“别急着甩锅,先查查你怎么用的。”
这一查,还真查出了教科书级别的错误操作。 我看了一眼他的连接方式,发现几个致命疑点:
供电分离:模块由外部电源供电,输出端接STM32单片机的PA0引脚。
引脚悬空电压:PA0口虽然设为模拟输入,但在悬空状态下竟然存在1.2V左右的电压。
致命的时序:这才是最骚的操作——电源还没给模块上电,输出端就已经插在了带电的STM32引脚上了。
很多人觉得:“这有啥?不就是没供电吗,没电不就是断路吗?” ❌大错特错!在模拟电路的世界里,没上电 ≠ 断路。
为了讲清楚这个原理,我们必须把芯片“剖”开看。 大家看下面这张图,这是去年我自己设计的运放(与本次事故运放结构相似)。请注意看输出级,它是推挽输出的三极管结构。为了保护电路,外部通常会串联二极管到正负电源。
图片来源:实在太懒不想取名
看懂了吗?当模块还没上电(VCC=0V)时,芯片内部究竟发生了什么? 我们拿万用表实测一下。当学生电源接入但不开启时,用万用表通断档测量,你会发现内部竟然是导通的!
译中...
再看读数:0.713V。
这熟悉的压降,毫无疑问,就是二极管导通了。这意味着,当你的模块没上电时,内部结构等效于下面这张图:
图片来源:实在太懒不想取名
这时候,灾难发生了。 如果你将输出端接入单片机,而单片机IO口上存在高于导通压降的电压(比如那1.2V),就会导致二极管导通! 此时,外部电流顺着STM32的引脚,倒灌进运放的输出端。看下仿真结果,电流高达314mA!。
图片来源:实在太懒不想取名
这0.4A的电流根本不是在工作,而是在疯狂加热内部结构。如果不先供电再接信号,芯片分分钟就会烧毁。
问题找到了,怎么解决? 靠“规范操作”?告诉用户“必须先开电源再接线”? 不,好的硬件设计必须考虑容错性。我们可以在运放的输入和输出端添加电阻。
图片来源:实在太懒不想取名
加这个电阻(例如跟随器用相同电阻,放大器用并联值)有两个巨大好处:
- 限流保护:有效抑制输入电流,防止倒灌烧毁芯片。
- 抗干扰:防止外部电压乱窜或静电击穿。
把原理讲透后,我批评了学弟一通。 无论是用模块还是画芯片,出现问题并不可怕。可怕的是出了问题就逃避,就把锅甩给模块。
从自身出发,对问题寻根问底,才能避免下一次炸机。这才是硬件工程师正确的成长道路。
热门跟贴