原理是这样:
1) 当220v断开时,光耦不导通,右侧为一阻容电路,SIG_IN1电平是高电平
2) 当220v导通时,在交流电的正半周期,光耦导通,3和4脚近似短路,SIG_IN1为低电平;在交流电的负半周期,光耦不导通,此时SIG_IN1电压为多少呢? 注意并不是高电平。原因是电容要充电,需要一定的时间,时间常数为100K*2.2uF=0.22s。而220V交流电频率为50Hz,周期为0.02s,负半周时间只有0.01s,电容远远没有充满电,所有对单片机来说还是低电平。
这样就实现了在220V断开时单片机检测为高电平,当220V导通时单片机检测为低电平的逻辑。
附上实际测量的波形:
1)SIG_IN1 波形图
2)光耦1脚和SIG_IN1波形图
有几个地方在此补充一下:
1)上述电路前面2个电阻的选取问题,现在两个都是100K,电流大约是0.5mA,这个电流设计的太小了,设计到20mA左右比较合适,具体参考你选用的PC817的芯片手册。 这个电流同时会影响后端C17电容的放电速度。另外要考虑电阻封装,由于电阻的电压和功率较大,要保证不超过额定值,防止爆了。
2)IN4148的作用是保护光耦不被反向电压击穿
3)LED指示灯,可以前端,用来指示是否有电。
4)PC814双向光耦 可简化电路
引用自:「topsemic (https://topsemic.com/402.html)」