打开网易新闻 查看精彩图片

作为一名摸爬滚打多年的硬件老鸟,今天不得不挂一个典型案例。 上午学弟拿来一个WL01涡流传感器模块要退货,说是坏的。一上电,5V电压下电流直接飙到0.4A,发热严重,芯片烫得能煎鸡蛋!

还没开始测涡流,板子先成了“暖手宝”。是模块质量太差?还是玄学问题? 我一把拦住准备退货的学弟:“别急着甩锅,先查查你怎么用的。”

这一查,还真查出了教科书级别的错误操作。 我看了一眼他的连接方式,发现几个致命疑点:

供电分离:模块由外部电源供电,输出端接STM32单片机的PA0引脚。

引脚悬空电压:PA0口虽然设为模拟输入,但在悬空状态下竟然存在1.2V左右的电压。

致命的时序:这才是最骚的操作——电源还没给模块上电,输出端就已经插在了带电的STM32引脚上了。

很多人觉得:“这有啥?不就是没供电吗,没电不就是断路吗?” ❌大错特错!在模拟电路的世界里,没上电 ≠ 断路。

为了讲清楚这个原理,我们必须把芯片“剖”开看。 大家看下面这张图,这是去年我自己设计的运放(与本次事故运放结构相似)。请注意看输出级,它是推挽输出的三极管结构。为了保护电路,外部通常会串联二极管到正负电源。

打开网易新闻 查看精彩图片

图片来源:实在太懒不想取名

看懂了吗?当模块还没上电(VCC=0V)时,芯片内部究竟发生了什么? 我们拿万用表实测一下。当学生电源接入但不开启时,用万用表通断档测量,你会发现内部竟然是导通的!

打开网易新闻 查看精彩图片

译中...

再看读数:0.713V

打开网易新闻 查看精彩图片

这熟悉的压降,毫无疑问,就是二极管导通了。这意味着,当你的模块没上电时,内部结构等效于下面这张图:

打开网易新闻 查看精彩图片

图片来源:实在太懒不想取名

这时候,灾难发生了。 如果你将输出端接入单片机,而单片机IO口上存在高于导通压降的电压(比如那1.2V),就会导致二极管导通! 此时,外部电流顺着STM32的引脚,倒灌进运放的输出端。看下仿真结果,电流高达314mA!。

打开网易新闻 查看精彩图片

图片来源:实在太懒不想取名

这0.4A的电流根本不是在工作,而是在疯狂加热内部结构。如果不先供电再接信号,芯片分分钟就会烧毁。

问题找到了,怎么解决? 靠“规范操作”?告诉用户“必须先开电源再接线”? 不,好的硬件设计必须考虑容错性。我们可以在运放的输入和输出端添加电阻。

打开网易新闻 查看精彩图片

图片来源:实在太懒不想取名

加这个电阻(例如跟随器用相同电阻,放大器用并联值)有两个巨大好处:

  1. 限流保护:有效抑制输入电流,防止倒灌烧毁芯片。
  2. 抗干扰:防止外部电压乱窜或静电击穿。

把原理讲透后,我批评了学弟一通。 无论是用模块还是画芯片,出现问题并不可怕。可怕的是出了问题就逃避,就把锅甩给模块。

从自身出发,对问题寻根问底,才能避免下一次炸机。这才是硬件工程师正确的成长道路。