ACMeasure 单元
C Measure Unit 是一款具备隔离能力的单相 AC 测量模块。它采用 STM32+HLW8032 方案,可实时监测高精度的电流、电压、功率等数据。该模块内置 AC 隔离芯片 B0505ST16-W5,并通过 EL357 光耦隔离芯片与 STM32 通信。
支持以下产品:
MicroPython 应用示例
1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from hardware import * 9from unit import ACMeasureUnit 10 11 12label0 = None 13title0 = None 14label1 = None 15i2c0 = None 16ac_measure_0 = None 17 18 19def setup(): 20 global label0, title0, label1, i2c0, ac_measure_0 21 22 M5.begin() 23 Widgets.fillScreen(0x222222) 24 label0 = Widgets.Label("label0", 1, 81, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 25 title0 = Widgets.Title( 26 "ACMeasureUnit CoreS3 Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18 27 ) 28 label1 = Widgets.Label("label1", 1, 125, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 29 30 i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000) 31 ac_measure_0 = ACMeasureUnit(i2c0, 0x42) 32 33 34def loop(): 35 global label0, title0, label1, i2c0, ac_measure_0 36 M5.update() 37 label0.setText(str((str("Voltage:") + str((ac_measure_0.get_voltage_str()))))) 38 label1.setText(str((str("Current:") + str((ac_measure_0.get_current_str()))))) 39 M5.update() 40 41 42if __name__ == "__main__": 43 try: 44 setup() 45 while True: 46 loop() 47 except (Exception, KeyboardInterrupt) as e: 48 try: 49 from utility import print_error_msg 50 51 print_error_msg(e) 52 except ImportError: 53 print("please update to latest firmware")
UiFlow2 应用示例
class ACMeasureUnit
Constructors
- class ACMeasureUnit(i2c, address)
通过设置 I2C 端口和 AC Measure 从机地址来初始化 AC Measure 单元。
- 参数:
i2c – 用于通信的 I2C 接口对象或 PAHUBUnit。
address – AC Measure 单元的 I2C 地址,默认为 0x42。
UiFlow2

Methods
- ACMeasureUnit.init_i2c_address(slave_addr)
初始化 AC Measure Unit 的 I2C 地址。
- 参数:
slave_addr (int) – AC Measure Unit 的 I2C 地址应在 1 到 127 之间。
- ACMeasureUnit.get_voltage_str()
从 AC Measure 单元获取电压字符串值。
- 返回:
电压值的字符串。
UiFlow2

- ACMeasureUnit.get_current_str()
从 AC Measure 单元获取当前字符串值。
- 返回:
当前值的字符串。
UiFlow2

- ACMeasureUnit.get_active_power_str()
从 AC Measure 单元获取有功功率字符串值。
- 返回:
有功功率值的字符串。
UiFlow2

- ACMeasureUnit.get_apparent_power_str()
从 AC Measure 单元获取视在功率的字符串值。
- 返回:
视在功率值的字符串。
UiFlow2

- ACMeasureUnit.get_power_factor_str()
从 AC Measure 单元获取功率因数字符串值。
- 返回:
作为字符串的功率因数值。
UiFlow2

- ACMeasureUnit.get_kwh_str()
从 AC Measure 单元获取 kWh 字符串值。
- 返回:
kWh 值的字符串。
UiFlow2

- ACMeasureUnit.get_voltage_byte()
从 AC Measure Unit 获取原始电压值。
- 返回:
原始电压值(整数)。
UiFlow2

- ACMeasureUnit.get_current_byte()
从 AC Measure 单元获取原始电流值。
- 返回:
原始电流值,类型为整数。
UiFlow2

- ACMeasureUnit.get_active_power_byte()
从 AC Measure 单元获取原始有功功率值。
- 返回:
原始有功功率值(整数)。
UiFlow2

- ACMeasureUnit.get_apparent_power_byte()
从 AC Measure Unit 获取原始视在功率值。
- 返回:
原始视在功率值(整数)。
UiFlow2

- ACMeasureUnit.get_power_factor_byte()
从 AC Measure 单元获取原始功率因数值。
- 返回:
原始功率因数值(整数)。
UiFlow2

- ACMeasureUnit.get_kwh_byte()
从 AC Measure 单元获取原始的 kWh 值。
- 返回:
原始 kWh 值,类型为整数。
UiFlow2

- ACMeasureUnit.get_voltage_coeff()
从 AC Measure 单元获取电压系数值。
- 返回:
电压系数值,类型为整数。
UiFlow2

- ACMeasureUnit.set_voltage_coeff(value)
设置 AC Measure 单元的电压系数值。
- 参数:
value (int) – 要设置的电压系数值,范围为 0 到 255。
UiFlow2

- ACMeasureUnit.get_current_coeff()
从 AC Measure 单元获取当前系数值。
- 返回:
当前系数值(整数)。
UiFlow2

- ACMeasureUnit.set_current_coeff(value)
设置 AC Measure 单元的当前系数值。
- 参数:
value (int) – 要设置的当前系数值,范围为 0 到 255。
UiFlow2

- ACMeasureUnit.set_save_coeff()
将电压和电流系数值保存到 flash 存储器中。
UiFlow2

- ACMeasureUnit.get_data_ready()
检查 AC Measure 单元数据是否已准备好。
- 返回:
如果数据已准备好,则为 True,否则为 False。
UiFlow2

- ACMeasureUnit.set_jump_bootloader()
将 AC Measure 单元设置为跳转到 bootloader。



