Current Transformer


Good day, trust we are doing well.

I am handling a project to design a digital clamp meter, so, I chose a LEM HO 100-S current transducer, it uses 5V as supply volt and out voltage of 0-5V. To see my results, I interfaced the Arduino with an LCD

But, on powering the CT with 5V, the analog output Vout was reading 2.8V constantly, with and without current through it, I have tried several CTs, same result, please, what can I do.

Attached is the datasheet for the CT.

This is the code below.

Thanks in Advasnce

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

int current = A1;
float val = 0;
float readCurrent = 0;
String par = “Amps”;

unsigned long i = 0;

void setup() {


// pinMode(A0, INPUT);


void loop() {
float readCurrent = analogRead(A1);

val = (readCurrent * 50) / 1023;

lcd.setCursor(0, 0);
lcd.setCursor(6, 0);



ho_50_250-s-0100_series.pdf (1.78 MB)

Searching on the Internet I found this:
It looks like the output is balanced at some 2.8 vots for 0 current. 2-8 - 5 volt for positive current, 2.8 to 0 for negative current is my guess.

The output is biased at 1/2 vcc. How else do you measure an ac waveform?

Start over using the library for the acs712 sensors. They work the same way, you, just need to figure out the scaling value for the transducer rating you have. You can do that, right? Right?

the sensor is for 125 A. with how much current did you test it?

AC oscillates. you want a RMS value, not individual values.

  unsigned long long sum = 0;
  int n = 0;
  unsigned long start_time = millis();
  while (millis() - start_time < 200) { // in 200 ms measures 10 50Hz AC oscillations
    int v = analogRead(A1);
    sum += v * v;
  int rms = sqrt((double) sum / n);

That's not "just" a current transformer... There's some active circuitry inside.

I chose a LEM HO 100-S current transducer,

That's a 100 Amp device. How much current are you trying to measure?

But, on powering the CT with 5V, the analog output Vout was reading 2.8V constantly,

If I'm reading the datasheet correctly, the output is biased. (That's good for negative/reversed current or AC since the Arduino can't read negative voltages.) Positive/forward current should read above the bias, negative/reversed current should read below the bias, and AC should read above & below.

Hello wattsThat, I haven't used the library before, but I'll see what I can do

DVDdoug, I did not know that

I tested it on an Air conditioner, using my clamp meter, I got a reading of 13 amps, though I noticed some changes in the readings, but was around +2

Maybe the air conditioner is reulating its doings and the reading then changes. What about using an oldfashioned heater that burns the same power al the time?

OK railroader

Big thanks to everyone, I used the ACS712 library and I got positive results, I used the examples in the library

#include "ACS712.h"

  This example shows how to measure the power consumption
  of devices in 230V electrical system
  or any other system with alternative current

// We have 30 amps version sensor connected to A1 pin of arduino
// Replace with your version if necessary
ACS712 sensor(ACS712_30A, A1);

void setup() {

  // This method calibrates zero point of sensor,
  // It is not necessary, but may positively affect the accuracy
  // Ensure that no current flows through the sensor at this moment

void loop() {
  // We use 230V because it is the common standard in European countries
  // Change to your local, if necessary
  float U = 230;

  // To measure current we need to know the frequency of current
  // By default 50Hz is used, but you can specify own, if necessary
  float I = sensor.getCurrentAC();

  // To calculate the power we need voltage multiplied by current
  float P = U * I;

  Serial.println(String("P = ") + P + " Watts");