前言
之前写过一篇关于使用HLW8032芯片的说明,然后最主要的就是HLW8032的供电和高压隔离问题,因为HLW8032的GND是需要接220V交流电的其中一根零线或者火线,使用起来不方便,所以我做了一个光耦隔离的HLW8032模块。以下就是我用这个模块做的一些电能测试!
一、准备材料
1 | HLW8032采集模块 | 采集电能数据 |
2 | USB转TTL串口模块 | 把HLW8032模块输出的输入传到电脑 |
3 | 电源线一根 | 作为模块的输入电源 |
4 | 小螺丝刀一把 | 用来拧HLW8032模块上的接线端子 |
HLW8032和USB转TTL串口模块可以问马爸爸要:https://url.cn/5Qy8qDf
电源线我是剪了我一个充电器的,螺丝刀我作为一个专业的冒牌电工必须有的啦!
鉴于“山西大学”某个同学的操作,模块资料不免费开源!!!
需自行用积分或进群下载!!
https://download.csdn.net/download/qishi3250/89240567
STM32把电能数据通过NB-IOT上传onenet代码及教程:
链接:百度网盘 请输入提取码 提取码:1234
基于STM32设计的NB-IOT电量采集系统(超级详细)--1.Onenet平台配置及M5311配置_Knight-20的博客-CSDN博客_m5311 stm32驱动
二、接线
接线其实很简单的,模块上有字符标识,直接丢接线表:
HLW8032模块上的标识 | USB转TTL模块的标识 |
5V | 5V |
T | RXD |
G | GND |
HLW8032的5V引脚是指需要外面给模块提供5V电源才会工作,而不是模块能对外提供5V哦。因为模块使用的是5V隔离电源,必须使用5V,不能使用3.3V哦。T引脚可以直接接3.3V单片机的RXD引脚。
模块上的IN接线端子接220V交流电,OUT接线端子接负载,就是用电设备啦!交流电不分正负的,所以IN和OUT端子哪个接火线、零线都没关系的。
测试可以先不接交流电,也会有电参数数据输出!!!
三、上电测试
1.把USB转TTL串口模块插到电脑USB口上,此时HLW8032模块的指示灯不停闪烁为正常工作状态,如果常亮或者不亮灯都为异常,检查接线或者模块已损坏;
2.打开资料里面的调试软件目录下的HLW8032.exe软件,软件无毒,放心使用;
3.打开软件后通过看电脑的设备管理器查看USB转TTL模块所在的串口号,然后再软件选择对应的端口号,然后点击打开串口(如果没显示COM号就需要安装驱动,自行百度安装):
电脑端的解析软件也能看到数据了:
此时因为没有连接交流220V,所以参数比较小,这个是属于正常现象的哈。接下来就可以连接220V进行测试了。
接上电源线,不区分火线和零线,然后确认模块背后无金属物品后再接通220V电源。接通220V电源后,就不要触碰HLW8032模块了。
接通220V电源后的软件显示:
1)为啥有效电压为231V,而不是220V?
这个是正常的,和附近的变压器有关,这个主要和你所在地方的区域有关,供电所为了供电容量,都会提高供电电压。最高我见过是258V的。这个电压范围也不会烧家电的,放心使用就好,你也可以使用万用表交流档测试电压,基本也是和模块测量的差不多的。
2)为啥有效电流在不接用电器的时候也会有显示,而不是显示0?
这个是正常现象的,模块电流检测范围为50ma-10A;虽然有效电流显示有参数,但是用电量不会增加的,这个可以放心。检测有没有接用电器的方法最好是检查第一个字节是不是0xF2,如果是0xF2就是没有接用电器了。
关于原数据里面的每一位代表的含义,可以去看HLW8032的数据手册哈,这里就不过多阐述了,不然我都睡着了。
四、数据计算方法
关于有效电压和有效电流及功率的计算,我这里结合公式和用我上面采集到的数据来举例说明:
首先,我们看一下数据手册怎么说的:
知道了电压系数和电流系数,接下来我们就要知道电压参数寄存器,和电压寄存器了,这两个参数在哪呀,你大爷的!!!
MM:你听我慢慢说嘛!
WW:我想听你快点说,我裤子都脱了,你给我说这个!
MM:好吧,在HLW8032发送过来的串口数据里面呀!
WW:特么的一大堆数据,我哪知道哪个啊!
MM:这个。。。
这里说明一下,每个模块的电压、电流、功率参数寄存器是出厂设置好了的,为固定值。
结合我们软件上的数据:F2 5A 2 E1 80 0 6 52 0 3E A8 3 A6 C8 4F 9A E8 5E 79 B 61 0 1 27
所以我在用的这个模块的电压参数寄存器的值为: 02 E1 80;这个是十六进制数据,我们要知道哪个是高位,哪个是低位才能转成十进制数据;
看不懂???意思是高位先发,低位后发,就是02为高位,E1为中位,80为低位!
还是没懂???没关系,那我直接给你来个公式;
电压参数寄存器=2*65536+225*256+128=188800
因为02的十进制是2并且该位为高位,所以就是2*65536;
因为E1的十进制为225并且该位为中位,所以就是225*256;
因为80的十进制为128并且该位为低位,所以就是128;
关于为什么要乘上65536和256的问题,这是进制转换的问题!别问我,我不想回答!
然后就是电压寄存器:00 06 52
电压寄存器=0*65536+6*256+82=1618
所以根据公式
有效电压=(电压参数寄存器/电压寄存器)*电压系数
=(188800/1618)*1.88=219.372V
怎么感觉我在教数学课。。。
其他的话就自己琢磨一下啦,有问题可以留言哈!
五、瞎鸡儿乱搞
为了测试模块的功率计算,我用上了我的违规电器--吹风筒,和我的小米原装快充充电器,为啥注明快充呢,一会你就懂了!
首先,为了测试方便,我买了一个插板,然后用我的超高的电工技术接入HLW8032的OUT接线端子,看图,然后夸我:
注:把负载接入OUT接线端子前,先把电给拔了!!!
先看看我的违规电器--吹风筒,下图是最大热风,马力开最大的数据:
(注:从这里往下的数据截图中的实时数据是缺一位的,是我把实时数据放进显示框时,放少了一个,解析后数据是正确的)
为了这个数据,我前后花了我足足0.5度电,唉,太难了我!~!~
接下来就是我的小米原装快充充电器的数据啦
首先,我打了几把落地成盒的游戏把手机电量耗到了19%,然后插入充电器的数据为:
这就是为啥我要说快充的缘故啦,输出功率19W耶。
然后当我的手机充电到85%时:
再然后我的手机充电到92%时:
最后,我的手机充满电,并且手机息屏时:(为啥要注明息屏呢,因为充满电后我边充边玩时的功率大概在5W左右)