跳转到内容

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。

  • spi_id (可选, ID): 如果您希望 使用多个 SPI 总线,请手动指定 SPI 组件 的 ID。

此传感器需要校准才能显示正确的值。为了校准您的 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'