SCT013 - Zero output with burden resistors

Hi All, Good day!

I am getting zero reading for SCT013 with burden resistors. Setup is with ESP32-S2 (NodeMCU) with ADS1115. Below are the scenarios I have tested so far:

SCT013 - 30A/1V => Zero output
SCT013 - 100A/50mA => Zero output with burden resistors ( 22 Ohm)
SCT013 - 100A/50mA => Getting some readings without burden resistor.

I have also checked 100A/50mA circuit, it's not fitted with default burden resistor.

Regards,
Mehar

As far as I understand it...

The sensor is outputs AC voltage with the same frequency as measured current. So you need setup ADS1115 in differential mode than make a hundreds measurements in a second, select the peak to determine the amplitude and calculate Vrms. This value give you the current according to the table of your sensor

As Edison says the CT develops an AC voltage across the burden resistor. This should be quite low, typically 10R but maybe up to 22R. If you measure the output with a DC voltmeter you will see zero. Assuming 22R as in your second example, for 100A in the primary circuit you will see a voltage of 50mA x 22R = 1.1v rms. DO NOT run the CT with significant primary current without a burden resistor - it can generate very high voltage across the winding which could easily destroy an Arduino and you!

There are two ways of measuring the voltage. One is to simply connect it to a full-wave rectifier, provide a suitable smoothing capacitor, and measure the resulting DC. Frequently however you want to also measure the current phase relative to voltage in order to calculate real power, and for this the signal needs to be digitised, first sampling it at a suitable frequency which needs to be several times mains frequency. You don't need a differential input, but you probably do need to bias one side of the CT winding at half supply rail, or equivalent mid-range voltage of the ADC, so the ADC will see both positive and negative cycles of the waveform. In another thread I posted a link to a site with schematics of a solar bypass controller that does this which would show you how this can be done. I'll try to find it.

Edit: found it.
" The website I referred to above is this: Learn | OpenEnergyMonitor
...which gives details of a DIY solar diverter. Somewhere in that there's a schematic showing how the CT input is arranged. In that design he uses a "burden" resistor of 150R (but also says that later information suggests this is too high and 10R would be better)."

I'll leave you to find the schematic on the website

Hi Edison,

I am new and didn't have much knowledge of electronics. Just stared following this post https://www.poweruc.pl/blogs/news/non-invasive-sensor-yhdc-sct013-000-ct-used-with-arduino-sct-013 for the setup.

ADS1115 is setup in differential mode. K is connected on A0 and L on A1.
ads1115

I have attached the connection diagram and code. I tried with almost 3x different CT with 1V output but results are always zero.

#include<Wire.h>
#include<Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;

const float FACTOR =30;

const float multiplier = 0.0625F;
  
void setup() {

 Serial.begin(9600);
 ads.setGain(GAIN_TWO);
 ads.begin();
 
}

void printMeasure(String prefix, float value, String postfix)
{
  Serial.print(prefix);
  Serial.print(value, 3);
  Serial.println(postfix);
}

void loop() {
float currentRMS = getCorriente();
float power = 230.0*currentRMS;
printMeasure("Current:",currentRMS,"A");
printMeasure("Power:",power,"W");
delay(1000);
}


float getCorriente()
{
  float voltage;
  float Corriente;
  float sum = 0;
  long tiempo = millis();
  int counter = 0;
  
  while (millis()-tiempo<1000)
  {
    voltage = ads.readADC_Differential_0_1()*multiplier;
    Corriente = voltage*FACTOR;
    Corriente /= 1000.0;
    sum += sq(Corriente);
    counter = counter + 1;
  }
  Corriente = sqrt(sum/counter);
  return(Corriente);
}

I don't see noticeable errors in your code. Try connecting the sensor output to an oscilloscope to see if there is any signal?

From the ADS1115 data sheet page 31:
"The fully-differential voltage input of the ADS111x is ideal for connection to differential sources with moderately
low source impedance, such as thermocouples and thermistors. Although the ADS111x can read bipolar
differential signals, these devices cannot accept negative voltages on either input."

Actually your inputs are floating, but if you grounded A0 or A1 the the other input would go negative on every other half cycle. You need a set a DC bias level for the inputs which is half-way between zero and full scale volts of the ADC. This could just be a potential divider between 3.3 and ground, with say a 3k3 resistor from Vdd to A0, and another one from A0 to GND. With the circuit as it stands the ADC has no idea what the input voltages are relative to. If you just earthed one of A0 or A1 the negative voltage on the other input might well blow the chip.

1 Like

Hi,
Good day!

Now I can read the data (I was supposed to clamp the CT around the live wire only) but there are lot of fluctuations in the readings.

Seems there is no noise from the sensor as when I switch off the power I am getting zero amp.
Any idea how to troubleshoot and fix this ?

Regards,
Mehar

If you are reading current samples they need to be multiplied by voltage and then take the mean over lots of samples. Otherwise you are measuring instantaneous power. What value is your burden resistor? Incidentally millis() is an unsigned long number but you declare your tiempo as just long. Have you biased up the differential inputs?

I am using 30A/1V CT with built-in load resistor.

Have you biased up the differential inputs?
Can you please let me know how to biased up the differential inputs ? Currently the wires from CT are connected directly on ADS1115 A0 and A1.

Thanks,
Mehar

I covered this in post #6. The easiest way I can see is to arrange a potential divider using say 2 3k3 resistors in series between 3.3v and Gnd, with the junction connected to A0 or A1. Both inputs will then be at 1.65v when there is no current because the CT winding is a dc short circuit. As mentioned in the extract from the datasheet I posted, you cannot drive either input below 0v which is why you need some bias.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.