使用芯片:Esp8266-01s
问题:此芯片在上电瞬间,GPIO0、GPIO2、RX、TX这四个引脚中的三个(在这里,我把四个IO口都设置为普通的GPIO了,也就是RX、TX也设置为GPIO)会通断若干次,此时如果对应的GPIO口连接了继电器,那么继电器就会发生抖动,有可能会造成继电器控制的用电器烧毁。
几种解决方案
- 方案一:查找问题原因,重新编译固件。我查阅了官方资料,里面有一个Q&A提到了这个问题,我尝试使用其提供的解决方案,最终无果。我也给官方发email咨询此问题的解决方案,也无果。
- 方案二:在GPIO口直接接点解电容来消除上电抖动。此方案一方面要在四个GOIO都使用同样的电路,另一方面,对于小信号使用电解电容进行消抖,总有种高射炮打蚊子的方案。还有一点,我的插排里加装了此功能后,已经没有什么空间来放置电解电容这种大体积元件了。
- 方案三:使用硬件实现上电时的消抖,即在上电时的500ms内保证继电器的初级一直是开路状态,此时即使GPIO口抖动,继电器也不会动作。另外四个GPIO口公用一套消抖电路,大大减少了电路元件的数量。
最终我采用的方案三,其电路如下:
其中蓝 {MOD}方框内即为消抖电路,此电路右侧输出通过R2限流后直接连接光耦,然后连接至Esp8266即可。
当上电时,电容C1充电,此时R1几乎被短路,从而使Q1处于开路状态,这样GPIO的任何输出都不会导致光耦导通。
当经过一定时间后,C1充满电,从而使Q1导通,此时GPIO就可以控制光耦了。
经过测试,当电路断开后,此C1会在1s内放电完毕,也就是即使整体电路“频繁”上电,只要频率小于1s,消抖电路都可重复工作(我相信没人会以1s/次的频率开关自家插排的)。
完毕。
下篇博客介绍如何消除继电器通断时造成Esp8266重启的问题。