『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 9846|回复: 18

[基础教程] 【ESP32+电流互感器+ESPhome】低成本用电设备的电流监测,HASS

[复制链接]

4

主题

49

帖子

2044

积分

金牌会员

Rank: 6Rank: 6

积分
2044
金钱
1990
HASS币
20
发表于 2022-1-2 21:10:04 | 显示全部楼层 |阅读模式
本帖最后由 ttt105 于 2022-1-17 08:46 编辑

【ESP32+电流互感器+ESPhome】
【低成本】用电设备的电流监测,可在HASS集成实时电流卡片



=============劝退申明=============
以下部分内容涉及到强电操作,没有强电基础知识的同学请谨慎尝试,
最好在监护人的指导下进行,以免产生危险!!!
================================

因在疫情隔离中,闲来无事,看到B站上一位UP主分享的一个关于实时电功率监测的视频,https://www.bilibili.com/video/BV1PZ4y157dc
于是动手用ESP32做了一个用电设备电流监测的模块,在HASS中可以实时看到设备的电流情况。
经测试已经在自己树莓派上的HA中完美集成运行起来。特在此和大家分享,抛砖引玉,欢迎各位大神大开脑洞,做一些深入开发。

按UP主视频里的说明,搭建了基本的电流取样电路,本次我只使用到了电流监测。

因为之前已经在HA中集成了培正PZEM-004T的电功率模块(培正模块的集成方法可以参考另外一个大神的帖子,非常详细https://bbs.hassbian.com/thread-6081-1-1.html),
在入户总配电箱中安装,在HASS里已经可以看到总电源的电压、频率、总功率等信息,
所以只要监测到单个设备的运行电流,便可计算得到单个用电设备的实时功率,然后可以生成全屋的用电分布。这是后话了,等大神们深入开发。

以国产乐鑫ESP模块系列便宜的价格,外加几个电子元件,预计在10元左右,可以给家里的电设备加上电功率监测模块,全屋用电监测将不再是难事。
ESP8266还没测试,ESP8266上的A0端口,也是ADC模数转换功能,感觉同样可拿来用,目前还没测试,欢迎有时间的同学测试一下。

【2022-01-15更新】ESP8266的ADC同样可以做为电流检测口使用,但是ESP8266的ADC端口只有一个,如果做配电箱里的每一分路的电流监测推荐还是用ESP32。

                               
登录/注册后可看大图

----------------------------------------

以下进入正题:

需要的准备知识:1、ESPhome的设备添加方法以及代码调整和上传的方法,2、HASS布局卡片使用基本知识,3、简单电子电路搭建方法,4、强电使用安全知识

搭建基本的取样电路:
【材料】:

1、1000:1电流互感器5A           1个(电流互感器一定不可开路使用,★切记!★切记!)
2、200欧电阻                           1个
3、470K欧电阻                         2个
4、无极性10uf电容                   1个
5、ESP32S模组                         1个(我使用的是Pin35端口,可根据实际电路情况来调整代码)
6、面包板、杜邦线若干
7、电功率计,或万用表(用来电流数据校正)

02-2.png


以下电压取样电路本次未使用,仅供参考
01.png

搭建好的实物电路如下:
03.jpg

【代码】

视频为19年由老外录制的,当时ESPhome还没有集成EmonLib库,现在最新版的ESPhome已经包括该库,可直接调用类即可,不必再自定义添加模块了。
EmonLib库的地址https://github.com/openenergymonitor/EmonLib,高手有空可以研究一下

在ESPhome里添加了开发板后,在自动生成的代码后面再添加以下的代码:
具体的代码的释义可以参考官方文档:https://www.esphome.io/components/sensor/ct_clamp.html
在代码中倒数第二行“pin: 35”,是接互感电路的电流取样点,此处需和硬件环境一致。

在EPShome里编译、上传代码到ESP32开发板里(上传代码时,需要按一下ESP32板子上的BOOT按键才可正常上传)
sensor:
  - platform: ct_clamp
    sensor: adc_sensor
    name: "Measured Current"
    update_interval: 10s
    filters:
      - calibrate_linear:
          # Measured value of 0 maps to 0A
          - 0 -> 0
          # 监测到的数值: 4.0A
          # 将显示的数值校正为: 0.1333A
          - 4.0 -> 0.1333

  # Example source sensor
  - platform: adc
    #电流检测输入脚位
    pin: 35
    id: adc_sensor
06.png

07.png

关键一步】校准功率计量偏差

在用电设备的交流强电路中串联上万用表或直接使用电功率计,看一下设备的设备的运行时的电流为多少,修改“alibrate_linear:”里的参数,然后再上传到ESP32中,以便将校准的数据发送给HASS,
因为我已经装有培正的电功率模块,在其他用电设备不变情况下,把监测的设备关停两次,看一下HASS里的电流变化情况,可以估算设备运行电流。
这里需要说明一下,电流互感器的线性越好,校准点越少,要是设备在空载和满载时的电流偏差较大,可以多添加几个校准点,以真实反应电流情况。


05.png

【最后】
在HASS里就可以找到新添加的ESP32开发板,在“集成”中添加相应的设备。
然后在Lovelace的卡片里把获得的电流监测数据调用出来

09.png

08.png

评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
+ 20 + 20 膜拜大神!

查看全部评分

回复

使用道具 举报

8

主题

690

帖子

4556

积分

论坛元老

Rank: 8Rank: 8

积分
4556
金钱
3861
HASS币
0
QQ
发表于 2022-1-2 21:27:49 | 显示全部楼层
看一下,一直在用培正
回复

使用道具 举报

46

主题

641

帖子

4411

积分

元老级技术达人

积分
4411
金钱
3740
HASS币
120
发表于 2022-1-2 22:16:41 | 显示全部楼层
如果有开口ct的话,可以diy电流表了
回复

使用道具 举报

0

主题

220

帖子

1735

积分

金牌会员

Rank: 6Rank: 6

积分
1735
金钱
1515
HASS币
0
QQ
发表于 2022-1-5 20:01:36 | 显示全部楼层
感谢分享,学习了
回复

使用道具 举报

1

主题

79

帖子

1006

积分

金牌会员

Rank: 6Rank: 6

积分
1006
金钱
927
HASS币
0
发表于 2022-1-11 09:21:23 | 显示全部楼层
不错,学习了
回复

使用道具 举报

15

主题

636

帖子

2201

积分

金牌会员

Rank: 6Rank: 6

积分
2201
金钱
1565
HASS币
0
发表于 2022-1-11 09:58:53 | 显示全部楼层
流b大佬。

我的浴霸是红外遥控器控制的,浴霸灯有明/暗/关三个状态,但是都是通过遥控上的一个按键,按3下来控制。。。。用esp8266做了个红外遥控,之前经常发射信号存在不反应的状况,导致有事没人了,灯关不了,下次进人的时候,灯从开着变成关。。。折腾了我许久,当时就差点想在浴霸上串个培正电流表,根据led灯不同档的电流,来做一个浴霸灯开关的实时状态,如果电流不对,就在此发送红外信号,直到灯亮了,电流对了为止。。。。

结果前几个月重新折腾esphome,在N1上安装了docker的最新版,提示升级platform固件,之后红外遥控就无比稳定。。。。于是就不了了之了。

不过如果楼主这个能在esp01s上实现的话,那可就造福大众了。
感谢楼主。
回复

使用道具 举报

4

主题

49

帖子

2044

积分

金牌会员

Rank: 6Rank: 6

积分
2044
金钱
1990
HASS币
20
 楼主| 发表于 2022-1-11 18:34:35 | 显示全部楼层
telanx 发表于 2022-1-11 09:58
流b大佬。

我的浴霸是红外遥控器控制的,浴霸灯有明/暗/关三个状态,但是都是通过遥控上的一个按键,按3下 ...

ESP01S的ADC引脚,一般都不会引出到开发板上,
建议可以使用ESP-12F,今天专门找了一个ESP8266 12F的板子,
接到ADC接口上,电流检测同样可以用,电路和程序都不用改

002.png

回复

使用道具 举报

34

主题

709

帖子

4693

积分

论坛元老

Rank: 8Rank: 8

积分
4693
金钱
3974
HASS币
50
发表于 2022-1-16 10:26:47 | 显示全部楼层
ttt105 发表于 2022-1-11 18:34
ESP01S的ADC引脚,一般都不会引出到开发板上,
建议可以使用ESP-12F,今天专门找了一个ESP8266 12F的板子 ...

12F刷固件总不成功

刷固件时需要接上拉电阻吗,,怎么接
回复

使用道具 举报

4

主题

49

帖子

2044

积分

金牌会员

Rank: 6Rank: 6

积分
2044
金钱
1990
HASS币
20
 楼主| 发表于 2022-1-16 15:37:46 | 显示全部楼层
huang7dede 发表于 2022-1-16 10:26
12F刷固件总不成功

刷固件时需要接上拉电阻吗,,怎么接

ESP12F下载模式进入方式
F12.png

回复

使用道具 举报

34

主题

709

帖子

4693

积分

论坛元老

Rank: 8Rank: 8

积分
4693
金钱
3974
HASS币
50
发表于 2022-1-17 17:51:21 | 显示全部楼层
ttt105 发表于 2022-1-16 15:37
ESP12F下载模式进入方式

GPIO0接GND就行了么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 07:45 , Processed in 0.176934 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表