HLW8032模块常见疑问解答

此处收集HLW8032模块的一些问题,建议认真看每一个问题,可能你也会遇到。

HLW8032模块链接:https://item.taobao.com/item.htm?ft=t&id=670345655739

一、HLW8032模块故障排查

如果使用模块过程中发现不显示数据或者工作不正常可以参考这里的故障排查步骤,可方便于定位问题位置。

  • 观察模块的指示灯是否闪烁?

因为指示灯连接的是串口输出引脚,如果有数据输出,指示灯就会闪烁。此时可以判断模块有数据输出的;未确定数据是否正确,可以用USB转TTL连接到电脑查看数据是否正确。

如果指示灯常亮或者常灭,这个时候把模块的T引脚线拔了,单独接5V和G的线看看指示灯是否正常闪烁。因为如果你单片机引脚配置有误,就会导致T引脚无法正常发送数据,所以指示灯会常亮或常灭,断开T的接线就是为了防止单片机的干扰。如果断开T引脚接线后,指示灯恢复闪烁,代表你单片机引脚配置有问题或者接线不对。

如果在只接5V和G的情况下,指示灯常亮基本可以判断模块自身有问题;如果指示灯常灭,建议先检查提供的5V电源接线是否正确或者电压是否稳定,可以用万用表测量电压,一般大于4.8V才为正常;如果电压正常情况下,指示灯还是常灭,可以判断模块自身有问题。

  • 检查模块的数据是否正确?

这个需要使用USB转TTL模块连接到电脑测试。

测试流程可以看这个文章:基于HLW8032芯片的电能参数采集--附测试软件-CSDN博客

二、HLW8032模块类问题

  • HLW8032模块有什么功能?做什么用的?

HLW8032模块是一款用于测量交流有效电压、有效电流、有功功率及用电量的模块;可以自行计算出视在功率和功率因数。视在功率=有效电压x有效电流;功率因数=有功功率÷实在功率。可以用于智能插座、充电桩等应用场景。HLW8032模块会输出一串16进制的串口数据,用户根据提供的计算公式算出对应的数据即可。模块的测试和数据解析教程可以看这个:基于HLW8032芯片的电能参数采集--附测试软件-CSDN博客

  • 能测直流吗?能测三相电吗?测量电压电流范围多少?采样频率多少?精度是多少?

不支持测量直流,不支持测量三相电;测量电压范围交流85V~280V,电流范围50ma~10A/20A;采样频率0.89475Mhz;测量精度是2%。

特殊说明:HLW8032模块在采集低功率的用电设备时,更新电流及功率会非常慢,在用电设备为3W左右更新数据大概需要8秒左右。所以会有一个现象就是拔掉用电设备后5秒钟左右后才能判断出未接用电设备。

  • 采用什么采样方式?串口输出可以通过USB转TTL模块直接接电脑吗?

采用非隔离采样方式;串口数据经过光耦隔离输出,所以串口输出排针是安全的,可以直接单片机或者通过USB转TTL接电脑解析数据都可以。下图绿色圆圈区域是安全的,隔离高压电。

  • 串口波特率多少?可以修改波特率吗?

串口波特率固定4800bps,不支持修改波特率;数据位8位,停止位1位,偶校验。

  • 模块的接线怎么接的?区分零火线?可以不接负载吗?5V直流供电可以不接吗?

220V交流的接线:把螺丝拧松,不用完全拧开;然后把线的金属部分插入端子后再拧紧螺丝固定,如下图:(螺丝比较紧,拧松时把模块放置桌面,然后左手扶住模块,右手螺丝刀用力垂直往下压着螺丝刀再慢慢转动)

不区分零火线 

 可以不接负载,接了220V输入可以测量电压;就算220V交流输入也不接,只要接了直流5V共供电,模块就会输出数据。

5V直流供电必须要要接,这个是给芯片供电的电源,如果不接,芯片就不会工作。不能接3.3V供电,T引脚可以接3.3V的单片机的RXD引脚。

  • 模块的10A和和20A有什么区别?已焊排针和未焊有什么区别?加厚焊锡加在哪?

10A和20A是指测量的最大电流;两者区别在于采样电阻的大小区别,其他都一样;10A的采样电阻为3毫欧,20A采样电阻为1毫欧;

 已焊接排针和端子是指串口接线的3P排针和接220V的端子是否已经焊接在模块上;未焊接的可以更方便加厚220V走线焊锡和反向焊接排针插在其他板子上面。发货是带有这两个物料的。

因为模块走线空间有限,所以为了防止大电流时出现熔断走线(10安培内可以不用),需要自行加厚220V走线焊锡,加在模块正反面的220V走线上;看下图红线位置,注意别把零火线短接了:

  •  可以接STM32、51、Arduino或者其他单片机吗?

可以,只要是TTL类型的串口单片机都可以接。不过指提供了STM32和51系列的例子,你可以参考一下。

二、代码软件类问题

  • 资料里面的测试软件打不开?

测试软件是用易语言写的,会被杀毒软件认为是病毒,所以需要先临时关闭杀毒软件后再重新解压一个打开。

ESP8266可以通过SPI接口与HLW8032模块进行通信,从而实现能监测功能。 首先,需要连接ESP8266和HLW8032模块的SPI接口,具体连接方式可以参考HLW8032模块的数据手册。然后,在ESP8266中使用SPI库进行SPI通信,通过发送特定的命令和读取相应的寄存器值,即可获取能监测数据。 以下是示例代码,可以根据具体情况进行修改和调试: ``` #include <SPI.h> // 定义HLW8032模块的寄存器地址 #define HLW8032_REG_V 0x01 // 压值寄存器地址 #define HLW8032_REG_I 0x02 // 流值寄存器地址 #define HLW8032_REG_P 0x03 // 功率值寄存器地址 #define HLW8032_REG_ENERGY 0x04 // 能值寄存器地址 // 定义SPI接口的引脚 #define PIN_SPI_CS 10 // CS引脚 #define PIN_SPI_CLK 14 // CLK引脚 #define PIN_SPI_MISO 12 // MISO引脚 #define PIN_SPI_MOSI 13 // MOSI引脚 void setup() { // 初始化SPI接口 pinMode(PIN_SPI_CS, OUTPUT); digitalWrite(PIN_SPI_CS, HIGH); SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV2); // 设置时钟分频为2 } void loop() { // 读取压值 float v = readHLW8032(HLW8032_REG_V); Serial.print("Voltage: "); Serial.print(v); Serial.print(" V"); // 读取流值 float i = readHLW8032(HLW8032_REG_I); Serial.print("Current: "); Serial.print(i); Serial.print(" A"); // 读取功率值 float p = readHLW8032(HLW8032_REG_P); Serial.print("Power: "); Serial.print(p); Serial.print(" W"); // 读取能值 float energy = readHLW8032(HLW8032_REG_ENERGY); Serial.print("Energy: "); Serial.print(energy); Serial.print(" Wh"); delay(1000); // 延时1秒 } // 读取HLW8032模块的寄存器值 float readHLW8032(byte reg) { digitalWrite(PIN_SPI_CS, LOW); // 选中HLW8032模块 SPI.transfer(reg); // 发送寄存器地址 byte b1 = SPI.transfer(0x00); // 读取高8位数据 byte b2 = SPI.transfer(0x00); // 读取低8位数据 digitalWrite(PIN_SPI_CS, HIGH); // 取消选中HLW8032模块 // 将读取的数据转换为浮点数 uint16_t value = (b1 << 8) | b2; return (float)value / 100.0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight-20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值