Fault Cause Switch

Hi, I am watershade. This blog will record some of my technical articles. Wish it is valueable to you. Thanks!

My areas of focus include robotics and ROS, embedded SW/HW, linux, RTOS, IoT and computer languages (C/C++, Python, RUST).

Confession of Hardware No.1 —— Fault cause switch

失误集/硬件-01/因为一个开关引起的故障 __________________

一、Cause/前因

最近做了一块全功能驱动板。其中有两个接插件用来连接接近开关或者简单的微动开关、霍尔开关等。总之就是作为两个DI/EXTI被MCU接收,以便设备采取行动。因为现实种的设备接近开关多种多样,有三线的也有双线的,有三线的也有两线的。通过预留电路的方式让这两个接口支持PNP或者NPN类型的开关,接插件更换为2P的,预留的电路也可以适配这种状态。所以就大大提升了这个接口的普适性。但是电路种往往还有和电机电压一样12V或者24V的工业接近开关,也有简单的5V供电的开关。因为内部已经用光耦做了隔离,所以最大的问题是如果为外部的接近开关/微动开关/霍尔开关等开关提供两种级别的电压。

国内常见的铁壳电源为了适配不同的电压等级和频率有一个切换开关。我的做法也是类似: power switch schmatic

图1:电源切换原理图

图中VPS是给开关提供电源(或上拉电源)的电源。VM是和电机电压等同的12V或者24V。+5V是常规5V供电(或上拉电源)的开关(比如霍尔开关)。 设计意图是通过不同的方向选择,使其可以让VM和VPS接通或者VPS和+5V接通。 最初,我对这个设计没有什么不满的地方。

二、Stange Glitch/奇怪的故障

然后就是布线、加工板子,焊接。然后我就得到了一张看起来不错的板子。 nice board

图2:开关插入模拟图

因为原来的已经拆除,图2用一块空板插入了这个开关做演示。我选用的是一个廉价单刀双掷开关,型号是韩下的HX SK12D07VG3。图2最下面的开关就是原理图中的SW5.

在检查完硬件并上电后,一切正常。最后我想切换一下开关,看看VPS输出的电压是否按照我的预期。但是不幸的是供电电源提示短路。一测量果真如此。原来5V转3.3V的LDO被击穿,导致了短路。拆掉LDO之后发现上一级的DC-DC模块将VM转成5V的输出也高达8.5V左右。所以不得不更换DC-DC模块。起初我怀疑是不是DC-DC因为干扰之类的导致了电路出现问题。结果更换了之后,再我再次执行切换操作时。还是出现了短路问题。

三、Trace/溯源

最后经过分析,我认为在切换开关的时候导致VM和+5V有一瞬间闭合了。从而导致了5V被烧坏,DCDC降压芯片(BL9342)的输出不知道什么原因也被部分损坏。

那怎么证明自己的猜测呐。我尝试将1号和3号引脚分别接出一根线,然后在其中一根上加上5V电压,用逻辑分析仪或者示波器测试另一个引脚上的电平。(因为示波器不方便操作,我这次简单的使用了逻辑分析仪来分析。)接线如下图: 短路测试硬件

图3:短路测试接线图

然后用逻辑分析仪获得的波形如下: 逻辑分析仪测试波形

图4:逻辑分析仪测试波形图

可以看到在我滑动开关的一瞬间的确有一段时间(图中大概是135us,实际上应该会根据用户切换的快慢有所不同)出现了1和3引脚接通的情况。 按照我的原理图来说,就是这一瞬间VM流向了5V导致电路出现了问题。

四、Solution/方案

理论上我可以找到一个制作比较好的封装类似的开关。但是测试的话要采购很多家。作为临时方案,我先用一个PLC(自恢复保险丝)将VM和VPS短路,这样接近开关暂时只支持VM作为电源。 临时解决方案

图5:逻辑分析仪测试波形图

后面如何出新版本的话,我可以找一个单刀三掷的开关,只接两边的。或者在5V的电路种加一个二极管来限制电流方向等方法来解决。也可以找一个能明确断开的单刀双掷开关。

<全文完>