From 87f7a1c82af5010d96cc2b7171c58d907988e7af Mon Sep 17 00:00:00 2001 From: danieltwagner Date: Wed, 12 Jul 2023 01:10:25 -0400 Subject: [PATCH] Add ATM90E26 documentation (#3002) --- components/sensor/atm90e26.rst | 158 +++++++++++++++++++++++++++++++++ images/atm90e26.jpg | Bin 0 -> 26000 bytes index.rst | 1 + 3 files changed, 159 insertions(+) create mode 100644 components/sensor/atm90e26.rst create mode 100644 images/atm90e26.jpg diff --git a/components/sensor/atm90e26.rst b/components/sensor/atm90e26.rst new file mode 100644 index 000000000..7b14bec7e --- /dev/null +++ b/components/sensor/atm90e26.rst @@ -0,0 +1,158 @@ +ATM90E26 Power Sensor +===================== + +.. seo:: + :description: Instructions for setting up ATM90E26 energy metering sensors + :image: atm90e26.jpg + :keywords: ATM90E26, Single-Phase High-Performance Wide-SpanEnergy Metering IC, Single Phase Energy Meter + +The ``atm90e26`` sensor platform allows you to use your ATM90E26 voltage/current and power sensors +(`datasheet `__) with +ESPHome. This sensor is found in the `DitroniX GTEM ESP32 `__ energy meter and other devices. + +Communication with the device is done via an :ref:`SPI bus `, so you need to have an ``spi:`` entry in your configuration +with both ``mosi_pin`` and ``miso_pin`` set. + +The ATM90E26 IC measures a single phase's voltage (using a transformer) and current (using a shunt or CT clamp) +and additionally provides active, reactive, and apparent power, frequency, power factor and phase angle measurements. + +Configuration variables: +------------------------ + +- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin CS is connected to. For the 6 channel meter main board, this will always be 5 and 4. For the add-on boards a jumper can be selected for each CS pin, but default to 0 and 16. +- **line_frequency** (**Required**, string): The AC line frequency of the supply voltage. One of ``50Hz``, ``60Hz``. +- **meter_constant** (**Required**, float): The number of pulses per kWh. The ATM90E26 internally works based on pulses and this value converts a pulse into Wh, which are emitted as `forward_active_energy` etc. Matching it against an existing meter is useful in that it allows visual confirmation for some devices that blink an LED for each pulse. Common values are 1000 pulses/kWh, 1666.66 pulses/kWh, or 3200 pulses/kWh. See also **gain_metering** which determines after how much energy a pulse is emitted. +- **voltage** (*Optional*): Use the voltage value of this phase in V (RMS). + All options from :ref:`Sensor `. +- **current** (*Optional*): Use the current value of this phase in amperes. All options from + :ref:`Sensor `. +- **power** (*Optional*): Use the power value on this phase in watts. All options from + :ref:`Sensor `. +- **reactive_power** (*Optional*): Use the reactive power value on this phase. All options from + :ref:`Sensor `. +- **power_factor** (*Optional*): Use the power factor value on this phase. All options from + :ref:`Sensor `. +- **forward_active_energy** (*Optional*): Use the forward active energy value on this phase in watt-hours. + All options from :ref:`Sensor `. +- **reverse_active_energy** (*Optional*): Use the reverse active energy value on this phase in watt-hours. + All options from :ref:`Sensor `. +- **frequency** (*Optional*): Use the frequency value calculated by the meter. All options from + :ref:`Sensor `. +- **pl_const** (*Optional*, int): A constant derived from the physical characteristics of your measurement setup. See the Calibration section. + Defaults to ``1429876``. +- **gain_metering** (*Optional*, int): This value determines how quickly internal energy registers accumulate and hence defines the value of a "pulse". Matching it against an existing meter is useful in that it allows visual confirmation for some devices that blink an LED for each pulse. See also the **meter_constant**. + Defaults to ``7481``. +- **gain_voltage** (*Optional*, int): Voltage gain to scale the low voltage AC power back to household mains feed. + Defaults to ``26400``. +- **gain_ct** (*Optional*, int): CT clamp calibration value. + Defaults to ``31251``. +- **gain_pga** (*Optional*, string): The gain for the CT clamp. Valid values are ``1X``, ``4X``, ``8X``, ``16X``, and ``24X``. + Defaults to ``1X``. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. +- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want + to use multiple SPI buses. + +Calibration +----------- + +This sensor needs calibration to show correct values. In order to calibrate your AC-AC transformer and CT clamp +it is easiest to start with the default values and then adjust them as necessary while measuring a known current. +For a more accurate calibration you can use a Kill-A-Watt or similar meter. + +**Voltage** is adjusted linearly to bring the observed value in agreement with a reference measurement. If your +Kill-A-Watt shows 241 Volts and the ATM90E26 shows 234 Volts using the default `gain_voltage` of 26400, it would +need to be adjusted to `241 / 234 * 26400 = 27190`. + +**Current** is best measured with an ideal load (e.g. a space heater). The process is the same as for voltage, but +you modify the `gain_ct` value instead. For a SCT-013-000 clamp a value of 28621 worked well for me but you should +calibrate your specific clamp. Note that the ATM90E26 can output a **maximum current of 65A**. If you expect to +measure higher current, simply "mis-calibrate" the CT clamp by a factor of e.g. 2 so that the ATM90E26 thinks it is +measuring a lower current (e.g. 10A when 20A are flowing) and multiply the sensor's output by 2. + +**PL Constant** is computed using the physical characteristics of the device we use. We compute the constant +as `as 838860800 * gain_pga * * / ( * )`. +See Section 3.2.2 in the +`application note `__ +for additional details. Say we use a SCT-013-000 CT clamp, which has an output of 50mA for 100A input current. Our +burden has a value of 12 Ohm. We therefore expect to measure 6mV per amp of input current. Say our AC-AC +transformer outputs 19.3V at 230V and we use a 100:1 voltage divider in front of the ATM90E26. We would therefore +expect to measure 193 mV at a line voltage of 230V. The resulting PL Constant is, assuming a meter constant of +3200 pulses/kWh (see below): `838860800 * 1 * 6 * 193 / (3200 * 230) = 1319838`. + +**Meter Calibration** is completed by matching the ATM90E26's CF1 (active energy) pulse to those of your electricity +meter by adjusting the `gain_metering` value until the pulses match. Next, set the `meter_constant`, which defines +how many pulses make up one kWh of energy. If you are matching an existing meter, typical values may be 3200 pulses/kWh, +1000 pulses/kWh, or for some rotating meters 1666.66 pulses per kWh. If you're not matching against a meter you may +want to calibrate this value to emit 1000 pulses per kWh, or whatever other value is useful for your project. + +If your current clamp or voltage transformer aren't well matched to the specific A90E26-based device you're using +it **may be necessary to multiply values**, to stay within the value ranges specified in the +`datasheet `__ and +`application note `__. +This component will enforce the stated maxima. In the example below, the AC-AC transformer used read 230V line voltage +as 86.6V with default settings. This would imply a `gain_voltage` value of `230 / 86.6 * 26400 = 70115`. +However, the chip's application note says this value must be below 32768. If we divide the `gain_voltage` by 4, we +stay within the specified range, but must then multiply the voltage output as well as the power reading, which are +off by a factor of 4. This is due to the width of registers in the chip and **is not necessary if your components +can be calibrated within the specified range.** + +Keeping the calibration values at the top of your yaml might make editing easier. + +.. code-block:: yaml + + substitutions: + plconst_cal: '1429876' # default: 1429876, compute as 838860800 * (gain_pga * * / ( * )) + 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: 18 + miso_pin: 19 + mosi_pin: 23 + + sensor: + - platform: atm90e26 + cs_pin: 5 + 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' + +See Also +-------- + +- :ref:`sensor-filters` +- :apiref:`atm90e26/atm90e26.h` +- :ghedit:`Edit` diff --git a/images/atm90e26.jpg b/images/atm90e26.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b328bc25efd1c5121c767001c10d179eb891a273 GIT binary patch literal 26000 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 hs~&Rv{{X8LwXdJ`