ATM90E26 功率传感器
atm90e26 传感器平台允许您在 ESPHome 中使用 ATM90E26 电压/电流和功率传感器
(数据手册)。此传感器
出现在 DitroniX GTEM ESP32 能量计和其他设备中。
与设备的通信通过 SPI 总线 完成,因此您需要在配置中包含带有
已设置 mosi_pin 和 miso_pin 的 spi: 条目。
ATM90E26 芯片测量单相的电压(使用变压器)和电流(使用分流器或 CT 钳), 并提供有功、无功和视在功率、频率、功率因数和相角测量值。
-
cs_pin (必选, Pin Schema): CS 连接的引脚。对于 6 通道电表主板,此值始终为 5 和 4。对于附加板,每个 CS 引脚可以选择跳线,但默认为 0 和 16。
-
line_frequency (必选, string): 供电电压的交流电源频率。可选值为
50Hz、60Hz。 -
meter_constant (必选, float): 每 kWh 的脉冲数。ATM90E26 内部基于脉冲工作, 此值将脉冲转换为 Wh,并发出
forward_active_energy等。将其与现有 电表匹配很有用,因为它允许对某些设备(每脉冲闪烁一次 LED)进行视觉确认。常见值有 1000 脉冲/kWh、1666.66 脉冲/kWh 或 3200 脉冲/kWh。另见 gain_metering,它决定了在多少能量 后发出一个脉冲。 -
voltage (可选): 使用此相的电压值,单位为 V(RMS)。 来自 Sensor 的所有选项。
-
current (可选): 使用此相的电流值,单位为安培。来自 Sensor 的所有选项。
-
power (可选): 使用此相的功率值,单位为瓦特。来自 Sensor 的所有选项。
-
reactive_power (可选): 使用此相的无功功率值。来自 Sensor 的所有选项。
-
power_factor (可选): 使用此相的功率因数值。来自 Sensor 的所有选项。
-
forward_active_energy (可选): 使用此相的正向有功能量值,单位为瓦时。 来自 Sensor 的所有选项。
-
reverse_active_energy (可选): 使用此相的反向有功能量值,单位为瓦时。 来自 Sensor 的所有选项。
-
frequency (可选): 使用电表计算出的频率值。来自 Sensor 的所有选项。
-
pl_const (可选, int): 根据测量设置的物理特性得出的常数。请参阅校准部分。 默认为
1429876。 -
gain_metering (可选, int): 此值决定内部能量寄存器累积的速度,从而定义了”脉冲”的值。将其与现有电表匹配很有用,因为它允许对某些设备(每脉冲闪烁一次 LED)进行视觉确认。另见 meter_constant。 默认为
7481。 -
gain_voltage (可选, int): 电压增益,用于将低压交流电源放大回家用 mains 电源。 默认为
26400。 -
gain_ct (可选, int): CT 钳校准值。 默认为
31251。 -
gain_pga (可选, string): CT 钳的增益。有效值为
1X、4X、8X、16X和24X。 默认为1X。 -
update_interval (可选, Time): 检查传感器的时间间隔。默认为
60s。
此传感器需要校准才能显示正确的值。为了校准您的 AC-AC 变压器和 CT 钳, 最简单的方法是从默认值开始,然后在测量已知电流时根据需要调整它们。 为了获得更精确的校准,您可以使用 Kill-A-Watt 或类似的电表。
电压 线性调整以使观测值与参考测量一致。如果您的
Kill-A-Watt 显示 241 伏,而 ATM90E26 使用默认的 26400 gain_voltage 显示 234 伏,则需要
调整为 241 / 234 * 26400 = 27190。
电流 最好使用理想负载(如暖风机)来测量。过程与电压相同,但
您修改的是 gain_ct 值。对于 SCT-013-000 钳,28621 的值对我来说效果很好,但您应该
校准您自己的钳。请注意,ATM90E26 可以输出最大 65A 的电流。如果您期望
测量更高电流,只需将 CT 钳”错误校准”一个倍数(例如 2 倍),这样 ATM90E26 就会认为它
在测量更低的电流(例如 20A 流过时显示 10A),然后将传感器输出乘以 2。
PL 常数 使用我们使用的设备的物理特性计算。我们将常数
计算为 838860800 * gain_pga * <1A 电流时的 mV> * <参考电压时的 mV> / (<脉冲常数> * <参考电压>)。
请参阅
应用笔记
中的第 3.2.2 节以获取更多细节。假设我们使用 SCT-013-000 CT 钳,其输出为 100A 输入电流下的 50mA。我们的
负载电阻值为 12 欧姆。因此,我们预计每安培输入电流测量到 6mV。假设我们的 AC-AC
变压器在 230V 下输出 19.3V,并在 ATM90E26 前面使用 100:1 分压电路。因此,我们
预计在 230V 线电压下测量到 193 mV。得到的 PL 常数,假设电表常数为
3200 脉冲/kWh(见下文):838860800 * 1 * 6 * 193 / (3200 * 230) = 1319838。
电表校准 通过将 ATM90E26 的 CF1(有功能量)脉冲与电力
电表的脉冲匹配来完成,通过调整 gain_metering 值直到脉冲匹配。接下来,设置 meter_constant,它定义了
多少脉冲构成 1 kWh 能量。如果您要匹配现有电表,典型值可能是 3200 脉冲/kWh、
1000 脉冲/kWh,或对于某些旋转式电表 1666.66 脉冲/kWh。如果您不匹配电表,您可能
希望将此值校准为每 kWh 发出 1000 个脉冲,或对您项目有用的其他任何值。
如果您的电流钳或电压变压器与您使用的特定 A90E26 设备不匹配
可能需要乘以数值,以保持在
数据手册 和
应用笔记 中指定的值范围内。
此组件将强制执行规定的最大值。在下面的示例中,使用的 AC-AC 变压器以默认设置将 230V 线电压
读为 86.6V。这意味着 gain_voltage 值应为 230 / 86.6 * 26400 = 70115。
然而,芯片的应用笔记说此值必须低于 32768。如果我们将 gain_voltage 除以 4,我们就
保持在指定范围内,但还必须相应地乘以电压输出和功率读数,这两者
偏差了 4 倍。这是由于芯片中寄存器的宽度造成的,如果您的组件
可以在指定范围内校准,则不需要这样做。
将校准值放在 yaml 顶部可能会使编辑更容易。
substitutions: plconst_cal: '1429876' # default: 1429876, compute as 838860800 * (gain_pga * <sampled voltage (mV) at 1Amp current> * <sampled voltage (mV) at reference voltage> / (<pulse constant (e.g. 3200 pulses/kWh)> * <reference voltage, e.g. 230V>)) current_cal: '32801' # default: 31251 voltage_cal: '17528' # default: 26400 - Application note says this should be < 32768, maybe for some internal computation? metering_cal: '7481' # default: 7481 - Calibrate this to match your meter based on the CF1 (CFx) pulse.
spi: clk_pin: GPIOXX miso_pin: GPIOXX mosi_pin: GPIOXX
sensor: - platform: atm90e26 cs_pin: GPIOXX voltage: name: House Voltage accuracy_decimals: 1 filters: - multiply: 4 current: name: House Amps # The max value for current that the meter can output is 65.535. If you expect to measure current over 65A, # divide the gain_ct by 2 (120A CT) or 4 (200A CT) and multiply the current and power values by 2 or 4 by uncommenting the filter below # filters: # - multiply: 2 power: name: House Watts accuracy_decimals: 1 filters: - multiply: 4 reactive_power: name: House Reactive Power power_factor: name: House Power Factor accuracy_decimals: 2 forward_active_energy: name: House Forward Active Energy reverse_active_energy: name: House Reverse Active Energy frequency: name: House Freq line_frequency: 50Hz pl_const: ${plconst_cal} meter_constant: '3200.0' # My old rotating-disc meter has a meter constant of 1666.66 gain_metering: ${metering_cal} gain_voltage: ${voltage_cal} gain_ct: ${current_cal} gain_pga: 1X update_interval: '10s'