Energy metering using Arduino

I want to build a customized data logger that captures the signal and its characteristics, such as energy, power factor, and so-on. I found several energy metering IC's from analog devices for interfacing to arduino. But all of them have dedicated current input channels connected to them. I would like to tap CT signal to arduino analog inputs for data capture and simultaneously measure other parameters such as energy, PF etc using the metering IC. Is it possible?

Of course it's possible.

You'll have to flesh your description out a bit.

When I read "energy monitoring", I'm thinking the sort of setup I have where I monitor electrical energy as kWhrs as well as gas. I do this at the supply meter and simply transmit the Whr LED on the electricity meter and the cubic metre magnet on the gas meter. I do the same for water.

The data is transmitted by Xbees to a coordinator and a Mega 2560.

it's run like that for years.

If I were starting out now from scratch, I wouldn't be using Xbees or Zigbee. Too unreliable and expensive.

Data-logging shouldn't be a problem. I'd throw in a few other things like temperature. Has it been useful? Yes, very.

Take care if tinkering around with mains electricity.

have a look at the pzem-004t-v3 energy monitor

with an ESP32 microcontroller

Iam planning to use ADE9430 chip for polyphase energy and power quality measurements. The eval board recommends a center-tapped burden across CT. I am not sure how to connect this output to a differential amplifier followed by ADC for further processing.

Use a buffered analog voltage derived from the CT's burden resistor, and feed that buffered signal to both:

An analog input on Arduino
The analog input of the metering IC (if it accepts a voltage input)

probably worth getting a EVAL-ADE9430 which includes a STM32 NUCLEO-F413Z
all the interfacing is done for you

The link is provided https://www.analog.com/media/en/technical-documentation/user-guides/eval-ade9430.pdf. Please refer to page 8. Please guide as how to tap the IAP, IAN to arduino ADC and ADE chip in parallel

Do you want to connect the CT directly to the Arduino ADC?
As far as I know, Arduino’s ADC only support single ended measurements, but I don't know, I only know the Arduino UNO.

I am not sure how to connect this output to a differential amplifier followed by ADC for further processing.

If you are going to use the ADE9430 the connections would be like this:

ENERGY METER.pdf (86,4 KB)

The ADE9430 has some delta-sigma ADC. Each of the seven internal channel converters is differential and requires that the input voltages at the pins does not exceed ±1V (PGA gain = 1)

This is the analog front end used for a current channel. The positive and negative leads from a CT for Phase A are connected to the analog fron end circuit as shown below
In this figure, R3 y R8 are the burden resistors. The design use two identical burden resistors for best THD performance.

if you want to calculate the range of differential voltages fed to the current ADC channel for a given maximum current, CT turn ratio, and burden resistor value then:


Based on a maximum current of 100 A rms, a CT turns ratio of 2000 and burden resistors of (R3 + R8 = 10.2 Ohms), the input signal to the current ADC has a voltage swing of ±721 mV maximum (510 mV rms). This is within the ±1V input range of the device for the selected PGA gain of 1.

And this is the analog fron end for voltage measurements. Remember that the nominal voltage from the Mains is from 110V - 240 V so the voltage needs to be scaled down in order to be sensed by the ADC


To calculate the range of differential voltages fed to the voltage ADC channel for a Mains voltage then:


For a mains voltage of 120 V (measured between the line and neutral), the input signal to the ADC has a voltage swing of ±170 mV (120 mV rms). For a mains voltage of 240 V then voltage swing is ±340 mV (240 mV rms). This two ranges are withing the ±1 V range that can be measured by the ADE9430.