计量芯片HLW8032在充电桩设备中的典型应用

                 

                计量芯片HLW8032在充电桩设备中的典型应用

行业介绍

随着全球气候的进一步变暖,欧洲各国近两年来相继发布了禁售燃油车的时间表,

挪威:2025年禁售燃油车…

荷兰:2025年禁售燃油车…

德国:2025年禁售燃油车…

法国:2040年禁售燃油车…

英国:2040年禁售燃油车…

到2020年,我国的纯电动汽车和插电式混合动力汽车生产能力将达到200万辆、累计产销量将会超过500万辆。我国已经将应对气候变化全面融入国家经济社会发展的总战略,争取2020年实现碳强度降低40%至45%。随着时间的临近以及电池技术瓶颈的突破,电动汽车的销量会逐渐超过传统燃油汽车的销量,同时与之配套的充电桩装备行业必将也会迎来一次大的产业爆发机会。

充电桩方案介绍

现在市面上的充电桩设备质量良莠不齐,下图是市面上两款充电桩产品图,图1是电动自行车的充电桩产品,具有10路同时充电功能;图2是国家电网推出的电动汽车的充电方案,一台充电桩设备可以对两辆电动汽车同时充电。

  图 1 电动自行车充电桩

  图 2 电动汽车充电桩

        

充电桩设备根据充电路数的不同分为单路充电桩和多路充电桩,目前单路充电桩方案比较少,一般以2-10路为主。

低成本的充电桩方案以ADC测量电流为主,采用互感器测量充电电流,经MCU采样后得到充电电流的大小,然后通过充电电流乘以充电时间得到消耗的用电量,如图3。因为只用到互感器测电流,在遇到的相位差或干扰时,电流测量会存在误差,影响计费电量的精度。

  图 3 低成本多路充电桩方案

        

高成本的充电桩方案一般会采用专业计量芯片方案,每一路会使用单独一颗计量芯片,然后通过互感采样或采样电阻的采样方式进行电能参数的测量。采用计量芯片方案,除了可以测量用电量以外,还可以测量电流、电压、功率等参数。下图是采用计量芯片方案的方案框图,需要单独为每一路计量模块配置一路单独的MCU,通过继电器控制每一路通道的开关,耗费硬件资源,但是在精度和稳定性上会高于图3的方案。

      图 4 

基于HLW8032的充电桩方案

HLW8032可以通过UART口进行数据通讯,采用5V供电,内置3.579M晶振,8PIN的SOP封装, 下图是HLW8032的芯片管脚图:



  图 5 HLW8032芯片管脚图

HLW8032的串口输出的波特率是4800bps,每隔50ms 发送一次数据,HLW8032 的UART 使用两个引脚,TX 引脚用于从HLW8032 发送数据,数据以低位(LSB)优先发送,RX 引脚用于来接收来自微控制器的数据。HLW8032每发送一次完整数据是24byte; 从寄存器1(State REG)开发发送,到寄存器11(CheckSum REG)结束一组数据,一共11个寄存器,24 byte数据。

下图是1byte的数据格式:


                图6  HLW8032 UART数据时序

 

  图7是基于HLW8032的充电桩的电能计量解决方案,电能计量部分的原理与图4一致,唯一区别在于使用HLW8032的计量方案不需要每一路计量电路都配置一路MCU,因为HLW8032采用的是单向UART通讯,电能数据通过TX口自动发出,所以可以通过一颗逻辑芯片74LS145进行片选,实现十路通道与CPU进行分时通讯,且不影响正常的数据读取。

图 7 基于HLW8032的充电桩计量方案框

图4基于HLW8032的电能解决方案,可以测量有功电能、有功功率、有效电压和有效电流,从图中可以看出,图7的方案在成本上优于图4的方案,在可靠性方面也优于图3的方案。

因为HLW8032是SOP8封装,且内置晶体,所以在PCBA的尺寸上面可以做的更小,不但适合于普通的充电桩设备,也同样适合于对尺寸有要求的充电桩设备应用场合。

 

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
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; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值