本帖最后由 DIYSmartHome 于 2024-1-28 17:24 编辑
中移铁通插排确实便宜到没朋友,但可惜的是,标称2500w的排插,可能由于工程师的疏忽,里面居然用了个5A的继电器。所以,买回来后,就忍不住给他改造了下。直接改成10A的磁保持继电器,HF3F-L/12-1HL2T。而且这继电器仅3块多一点。下面就开始表演:
先搞清楚排插的IO定义,下面定义参考szlww发表的贴子整理。
原版排插的定义:
简化版:
由于磁保持继电器需要两个IO来控制,所以我把两个继电器合成了一个,这样对排插改动最小,改造后的定义如下图:
接着就是画一个小板子,替代原来的继电器小板,量了下,替换的磁保持继电器高度刚刚好,没跟排插干涉。
原理图
PCB
然后打样,等.....................................
回来焊好后,长这样,跟原来的对比下:
装起来,安装的时候参考我上面的图,里有IO定义
干路的继电器由于去掉了,要拿根粗导线,把它连起来,
最终成品
================到此,硬件就已经完事了==============
接下来要注入灵魂,直接拿@szlww大佬的代码来改下:【最终版本-代码开源】20元的中移铁通插排:esp+功率计量 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)
核心是这部分,继电器只需要触发70ms左右就可以动作。
script:
- id: id_power_turn_on_relay
then:
- button.press: id_trigger_relay_latch
- output.turn_on: id_pin_relay_set
- delay: 70ms
- button.press: id_trigger_relay_latch
- output.turn_off: id_pin_relay_set
- id: id_power_turn_off_relay
then:
- button.press: id_trigger_relay_latch
- output.turn_on: id_pin_relay_reset
- delay: 70ms
- button.press: id_trigger_relay_latch
- output.turn_off: id_pin_relay_reset
到这就全完事了。
硬件原理图跟PCB工程:
立创EDA的工程.rar
(28.6 KB, 下载次数: 96)
PS:第一次用立创的EDA,不知是不是把.epro文件分享出来就是整个工程了。
esphome本地工程:
cmcc-power.rar
(396.04 KB, 下载次数: 178)
PS:软件还有个小BUG,就是继电器是开的时候,断电再上电,继电器会关掉。这应该是上电瞬间,IO电平不确定导致的。看有没有大佬能解决下。
======================断电再上电,继电器会关闭的BUG,由chazikai24的建议可以解决。
把下面restore_mode: ALWAYS_OFF改成restore_mode: RESTORE_DEFAULT_OFF就可以了。
唯一不足是,继电器变化后,要等一分钟,让它保存这配置到flash。如果继电器状态改变,不到一分钟就断电,还是不能恢复断电前的状态的。
#插排按钮-逻辑开关
- platform: template
id: id_power_key_logic
name: Relay Power Key
optimistic: true
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
then:
- light.turn_on: id_led_white
- script.execute: id_power_turn_on_relay
- script.wait: id_power_turn_on_relay
on_turn_off:
then:
- light.turn_off: id_led_white
- script.execute: id_power_turn_off_relay
- script.wait: id_power_turn_off_relay
==========20240128 更新============
改成disable更合理:restore_mode: DISABLED
这样就不需要等存flash了。
#插排按钮-逻辑开关
- platform: template
id: id_power_key_logic
name: Relay Power Key
optimistic: true
restore_mode: DISABLED
on_turn_on:
then:
- light.turn_on: id_led_white
- script.execute: id_power_turn_on_relay
- script.wait: id_power_turn_on_relay
on_turn_off:
then:
- light.turn_off: id_led_white
- script.execute: id_power_turn_off_relay
- script.wait: id_power_turn_off_relay
|