ATM90E32 Power Sensor

The atm90e32 sensor platform allows you to use your ATM90E32 voltage/current and power sensors (datasheet) sensors with ESPHome. This sensor is commonly found in CircuitSetup 2 and 6 channel energy meters.

Communication with the device is done via an SPI bus, so you need to have an spi: entry in your configuration with both mosi_pin and miso_pin set.

The atm90e32 IC can measure up to three AC voltages although typically only one voltage measurement would be used for the mains electricity phase of a household. Three current measurements are read via CT clamps.

The CircuitSetup 2-Channel Energy Monitor can read 2 current channels and one voltage channel.

../../_images/atm90e32-cs-2chan-full.jpg

CircuitSetup Split Single Phase Real Time Whole House Energy Meter.

The CircuitSetup 6-Channel Energy Monitor can read 6 current channels and 2 voltage channels at a time, this board has two atm90e32 ICs and requires two sensors to be configured in ESPHome.

../../_images/atm90e32-cs-6chan-full.jpg

CircuitSetup Expandable 6 Channel ESP32 Energy Meter Main Board.

# Example configuration entry
spi:
  clk_pin: 18
  miso_pin: 19
  mosi_pin: 23

sensor:
  - platform: atm90e32
    cs_pin: 5
    phase_a:
      voltage:
        name: "EMON Line Voltage A"
      current:
        name: "EMON CT1 Current"
      power:
        name: "EMON Active Power CT1"
      gain_voltage: 41820
      gain_ct: 25498
    phase_b:
      current:
        name: "EMON CT2 Current"
      power:
        name: "EMON Active Power CT2"
      gain_voltage: 41820
      gain_ct: 25498
    frequency:
      name: "EMON Line Frequency"
    line_frequency: 50Hz
    gain_pga: 2X
    update_interval: 60s

Configuration variables:

  • cs_pin (Required, Pin Schema): The pin CS is connected to.
  • line_frequency (Required, string): The AC line frequency of the supply voltage. One of 50Hz, 60Hz.
  • phase_a (Optional): The configuration options for the 1st phase.
    • voltage (Optional): Use the voltage value of this phase in V (RMS). All options from Sensor.
    • current (Optional): Use the current value of this phase in amperes. All options from Sensor.
    • power (Optional): Use the power value on this phase in watts. All options from Sensor.
    • gain_voltage (Optional, int): Voltage gain to scale the low voltage AC power pack to household mains feed. Defaults to 41820.
    • gain_ct (Optional, int): CT clamp calibration for this phase. Defaults to 25498.
  • phase_b (Optional): The configuration options for the 2nd phase. Same options as 1st phase.
  • phase_c (Optional): The configuration options for the 3rd phase. Same options as 1st phase.
  • gain_pga (Optional, string): The gain for the CT clamp, 2X for 100A, 4X for 100A - 200A. One of 1X, 2X, 4X. Defaults to 2X which is suitable for the popular SCT-013-000 clamp.
  • update_interval (Optional, Time): The interval to check the sensor. Defaults to 60s.
  • spi_id (Optional, ID): Manually specify the ID of the SPI Component if you want to use multiple SPI buses.

Calibration

This sensor needs calibration to show correct values. The default gain configuration is set to use the SCT-013-000 current transformers, and the Jameco Reliapro 9v AC transformer. A load which uses a known amount of current can be used to calibrate. For for a more accurate calibration use a Kill-A-Watt meter or similar, mains voltages can fluctuate depending on grid load.

Voltage

Use the expected mains voltage for your region 110V/230V or plug in the Kill-A-Watt and select voltage. See what value the ATM90E32 sensor reports for voltage. To adjust the sensor use the calculation:

New gain_voltage = (your voltage reading / ESPHome voltage reading) * existing gain_voltage value

Update gain_voltage for all phases in your ESPHome yaml, recompile and upload. Repeat as necessary.

Current

Switch on the current load and see what value the ATM90E32 sensor reports for current on the selected phase. Using the known or measured current adjust the sensor using calculation:

New gain_ct = (your current reading / ESPHome current reading) * existing gain_ct value

Update gain_ct for the phase in your ESPHome yaml, recompile and upload. Repeat as necessary.

It is possible that the two identical CT current sensors will have different gain_ct numbers due to variances in manufacturing although it will be small. The current calibration can be done once and used on all sensors or repeated for each one.

Additional Examples

# Example CircuitSetup 6-channel entry
spi:
  clk_pin: 18
  miso_pin: 19
  mosi_pin: 23
sensor:
  - platform: atm90e32
    cs_pin: 5
    phase_a:
      voltage:
        name: "EMON Line Voltage A"
      current:
        name: "EMON CT1 Current"
      power:
        name: "EMON Active Power CT1"
      gain_voltage: 47660
      gain_ct: 12577
    phase_b:
      current:
        name: "EMON CT2 Current"
      power:
        name: "EMON Active Power CT2"
      gain_voltage: 47660
      gain_ct: 12577
    phase_c:
      current:
        name: "EMON CT3 Current"
      power:
        name: "EMON Active Power CT3"
      gain_voltage: 47660
      gain_ct: 12577
    frequency:
      name: "EMON Line Frequency"
    line_frequency: 50Hz
    gain_pga: 2X
    update_interval: 60s
  - platform: atm90e32
    cs_pin: 4
    phase_a:
      current:
        name: "EMON CT4 Current"
      power:
        name: "EMON Active Power CT4"
      gain_voltage: 47660
      gain_ct: 12577
    phase_b:
      current:
        name: "EMON CT5 Current"
      power:
        name: "EMON Active Power CT5"
      gain_voltage: 47660
      gain_ct: 12577
    phase_c:
      current:
        name: "EMON CT6 Current"
      power:
        name: "EMON Active Power CT6"
      gain_voltage: 47660
      gain_ct: 12577
    line_frequency: 50Hz
    gain_pga: 2X
    update_interval: 60s