自制大功率磁保持继电器控制板,带电量计量,环境温度

首先感谢iobroker论坛的@qlwz、Domoticz中文论坛的@DT27,正是他们的开源的精神才得以让我展现今天的学习成果。

声明:

本项目需要强弱电、低压电器元件、安全用电等专业性较强的基础知识,在未储备足够的知识前,
请慎重开展本项目。PCB上电试验过程中请注意安全用电,否则可能造成人身伤害,严重者可能
导致死亡。作者本人并非专业的电路板设计人员,出于业余爱好开展本项目,同时无法保证本项
目中的电路设计、PCB设计完全符合行业设计标准或者规范,无法保证本项目不存在设计缺陷,
故本人不承担任何人使用本项目产生的任何后果,请诸位悉知。
#本项目特点
  • [x] 采用合力为旗下HLW8032电量计量IC,高精度、免校准
  • [x] 采用宏发双线圈磁保持继电器,可选8A、16A。仅需脉冲激励、功耗低,负载强
  • [x] 采用低成本光耦实现负载侧通电、断电检测
  • [x] 采用DS18B20数字温度传感器采集环境温度
  • [x] 采用Hi Link DC-DC隔离电源,增强安全系数
项目进度:
  • [x] 原理图设计、PCB设计
  • [x] PCB功能测试、验证
  • [x] 固件功能测试、验证
  • [x] 实地应用
  • [x] 改版优化
  • [x] PCB源码公布
综述:

​ 2016年,我依稀记得那时,曾在一个装修论坛上,一点一点看着一位广东惠州的大神用面包板、磁保持继电器,一个廉价的24点位的信科可编程IO模块实现一个略微简陋的全屋灯光、插座智能控制系统。那时,我特想跟随大神的脚步去做一个属于自己的智能家居控制系统。时至今日,我买过莱特的开关面板、Sonoff Basic及SV、囧大的模块、NodeMCU、ESP01M模组、自制罗总的模块。种类越来越繁杂,功能越来越丰富,价格越来越廉价,一路走来,一直在学习,一直在进步。我并不是特意要去想办法降低智能设备的投入成本,其实是很享受这个不断改变、尝试,学习的过程,所以就有今天这个项目。

​ 大概是在2020年年底开始通过立创EDA学习一些PCB的基础知识,2021年3月开始准备本项目,截止到现在,原理图和PCB不知道改了多少版,打的样板也有七八十张了,期间遇到一些问题始终无法解决,一度要放弃,好在有好多前辈的成功案例可以借鉴,终于在近期完成了最终的定型和测试。后续主要测试模块的稳定性,安全性,以及固件适配的相关问题,论证完毕后,择机发布PCB源码与固件配置文件。

一些大家可能关心的问题:
  1. 为什么采用磁保持继电器?

    磁保持继电器的优点大家自行度娘。电表上应用比较多,16A电流以下场合应用就很少了。个人对磁保持继电器情有独钟,但有些场合是不允许突然断电的,比如说NAS、服务器等等。磁保持继电器不会因为模块软重启、固件升级等行为导致负载侧断电。肯定有人问为啥不上UPS?额…坏掉了一个不打算买新的了。不过磁保持继电器虽然电路上容易实现,但是在固件的通断反馈上就比较棘手,所以又引入了光耦检测,作为辅助的状态反馈信号。

  2. 模块是否能够放入86底盒?

    PCB分为两个版本,8A、16APCB尺寸相同,约51mmX43mmX22mm,标准86底盒深度50mm。我家使用的是西门子睿智的插座,22mm这个高度勉强放进去。具体实测结果,请等待后续报告。

  3. 模块采用固件?

    没有学习过Auduino,所以没有开发自制固件的计划。目前采用Tasmota,部分功能需要配合Rule规则,也可以采用ESPhome,灵活性比Tasmota更好一些,但是我对ESPhome也不甚了解。喜欢ESPhome的可以自行测试。

  4. 模块成本?

    我个人喜欢堆叠功能,所以期初只是想要做一个大功率磁保持继电器版本的智能插座,后来又加入了电量计量,为了增强用电安全,加了隔离电源,看到别人还整了环境温度检测,我这板子还有多余空间,也就加上了。粗略算下来,电子元件的成本约36元(不含PCB打板,样板立创、捷配都免费)。这个价钱可以买到涂鸦10A带计量的智能插座,各自权衡利弊吧。话说项目进行现在,项目产生的材料成本我花了少说也有四五百块了。

11月18日项目进度:
Tasmota的Rule规则编制完成,测试通过,另外根据本次的测试结果,又重新调整了下PCB部分电路。完成度99%,逐步公布PCB源码,物料清单,Tasmota配置、Rule规则,欢迎对本项目感兴趣的同学打板验证。本次先公布PCB源码,Tasmota配置和Rule规则,物料清单正在整理。PCB附件见文末

配置说明:
GPIO3→CSE7766 RX
GPIO4→DS18x20
GPIO5-→Switch3
GPIO9→relay3
GPIO12→relay1
GPIO14→relay2
可保持继电器有两个线圈,使用relay1和relay2分别控制,relay3物理上不存在,只是用于rule规则及HomeAssistant中使用。Switch3是光耦反馈信号,用于检测继电器辅助触点状态,就是通断电状态,这个用来确保模块和HA的状态同步。另外还有一个switch1和状态指示灯图中未体现,如果需要外接物理开关和状态指示灯控制时,再进行配置,switch1使用GPIO13,状态指示灯采用GPIO15。板载的LED灯和自复位按钮开关如果焊接了,板载LED配置为GPIO16,自复位按钮配置为GPIO0。注意Rule规则中没有按钮自复位开关的相关规则,无法使用板载按钮正常控制继电器通断。

Tasmota规则:
rule1
  on switch3#boot do var1 %value% endon
  on switch3#state do var1 %value% endon
rule2
  on switch1#state do event toggling=%var1% endon
  on event#toggling=1 do event open=1 endon
  on event#toggling=0 do event close=1 endon
  on power3#state=1 do event open=1 endon
  on power3#state=0 do event close=1 endon
  on event#open=1 do power1 1 endon
  on event#close=1 do power2 1 endon
  on power1#state=1 do backlog delay 20; power1 0 endon
  on power2#state=1 do backlog delay 20; power2 0 endon
rule3
  on var1#state=0 do publish stat/Socket/POWER3 ON endon
  on var1#state=1 do publish stat/Socket/POWER3 OFF endon

注意需要在控制台中执行switchmode3 1 命令,如果有外接的物理开关,根据开关形式修改switchmode1参数值

HomeAssistant配置:
switch:
  - platform: mqtt
    name: "Socket"
    state_topic: "stat/Socket/POWER3"
    command_topic: "cmnd/Socket/POWER3"
    payload_on: "ON"
    payload_off: "OFF"
    qos: 0
    retain: false

11月26日:
调整PCB,原switch3使用的GPIO10引脚在模块重新上电时会触发高电平,会导致状态反馈异常。

Gerber_PCB_Socket 16A V1.3.zip (130.5 KB) BOM_PCB_Socket 16A V2_2021-11-18.rar (1.7 KB)

感觉很不错的样子 留个标记 回头再看

可以用ESPHOME么。

如果使用ESPhome的话,需要在GPIO12和GPIO14上做两个物理下拉,否则会导致PCB严重发热。