Unexpected Output from SCT013 Transformer -> ADS1115 -> Arduino Uno

Hello!

I've connected an SCT013 Split Core Transformer to the differential 2_3 inputs on an ADS1115 ADC+PGA which connects to an Arduino Uno Genuino via I2C.

I followed this exactly: YouTube Tutorial

In attempting to measure power usage of my 3D printer, space heater, PC PSU and washer machine, everything works as expected, however, when connected to the old Kenmore 87376100 dryer in this house I'm renting a room in, the setup detects current draw when the machine is off. The current draw readings vary wildly.
Only when I remove the power cord from the SCT013 do the readings drop to zero.

The SCT013 I'm using is the 20A model with built in burden resistor that translates the 20A induced to 1V DC.

My guess is that I don't fully understand AC circuits and there's probably either interference in the mains lines from other connected devices or the dryers wiring has something to do with this. I say this because connecting the SCT013 to the washer machine (connected to the same 2 gang outlet box) produces extremely normal and predictable results: power spikes when the main tumbler is in motion agitating the clothes, and drops in power consumption between cycles when water is only draining or filling.

I attempted to use an SCT013 with 100A rating with multiple different burden resistors but found the 20A model more straight forward since the dryer's information plate says 120VOLTS 60Hz 6 AMPS.

I've also attempted the entire circuit with my own custom code and an ESP32 Devkit, exact same results.

I have a spare ADS1115 brand new in the packaging, but based on being able to correctly measure current draw from every device I've tried except the dryer, I'm thinking the ADC isn't the issue.

Imgur Album

Just to be clear, I understand my scaling factor is incorrect regarding the output (0.2-0.3A)
The values range from 0.1-0.8 regardless of if the machine is running or not.

For calibration:
my Ender 3 Pro reads about 0.065-0.07 with both the bed and hotend preheating, zero when off
my 120v 60Hz 1500w space heater generates readings of 0.247-0.260 when on max and zero when off
again, measuring the dryer's power cord produces readings of 0.1-0.8 both on and off
I'm sure I can fix the math to get these numbers correct, but the effort doesn't seem justified when I can't get the dryer to read 0.000 when off.

Please let me know what additional information you'd like!

SWAG It sounds like your system is wired properly. It also appears you may have an additional load on that dryer circuit. You may have an offset being generated by the ADS1115 ADC.

What reading do you get if you unplug the dryer?
S.

1500W at 120V is 12.5A, if 20A = 1V, 12.5A should read 0.625, not 0.247-0.260, are you sure the heater is set to "HIGH"? Post a link to that CT and a wiring diagram.

JCA34F:
1500W at 120V is 12.5A, if 20A = 1V, 12.5A should read 0.625, not 0.247-0.260, are you sure the heater is set to "HIGH"? Post a link to that CT and a wiring diagram.

I wonder about that. In my [limited] experience with SCT-013 sensors, they seem to be have a very nonlinear response. In my application I was only looking to see if current was present or not, so it didn't really matter. I sort of chalked it up to core saturation in a cheap sensor and didn't explore further.
S.

JCA34F:
1500W at 120V is 12.5A, if 20A = 1V, 12.5A should read 0.625, not 0.247-0.260, are you sure the heater is set to “HIGH”? Post a link to that CT and a wiring diagram.

Here’s the code from the YouTube video for your convenience:

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

Adafruit_ADS1115 ads;

const float FACTOR = 20; //20A/1V from teh CT

const float multiplier = 0.00005;

void setup() {
  Serial.begin(9600);

  ads.setGain(GAIN_FOUR);      // +/- 1.024V 1bit = 0.5mV
  ads.begin();

}

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

void loop() {
  float currentRMS = getcurrent();

  printMeasure("Irms: ", currentRMS, "A");
  delay(1000);

}

float getcurrent()
{
  float voltage;
  float current;
  float sum = 0;
  long time_check = millis();
  int counter = 0;

  while (millis() - time_check < 1000)
  {
    voltage = ads.readADC_Differential_0_1() * multiplier;
    current = voltage * FACTOR;
    //current /= 1000.0;

    sum += sq(current);
    counter = counter + 1;
  }

  current = sqrt(sum / counter);
  return (current);
}

With multiplier set to

const float multiplier = 0.00005;

I get

Irms: 0.032A
Irms: 0.032A
Irms: 0.033A
Irms: 0.033A

Between what he verbally says and what the code he uploaded says, I’m not sure if multiplier should be 0.00005 or 0.0005
With

const float multiplier = 0.0005;

I get

Irms: 0.326A
Irms: 0.326A
Irms: 0.328A
Irms: 0.329A
Irms: 0.148A
Irms: 0.000A
Irms: 0.235A
Irms: 0.475A
Irms: 0.464A
Irms: 0.458A
Irms: 0.460A
Irms: 0.468A
Irms: 0.463A

srturner:
What reading do you get if you unplug the dryer?
S.

Irms: 0.136A
Irms: 0.697A
Irms: 0.790A
Irms: 0.778A
Irms: 0.785A
Irms: 0.791A
Irms: 0.810A
Irms: 0.172A
Irms: 0.178A
Irms: 0.152A
Irms: 0.753A
Irms: 0.389A
<--- unplug --->
Irms: 0.000A
Irms: 0.000A
Irms: 0.000A

srturner:
I wonder about that. In my [limited] experience with SCT-013 sensors, they seem to be have a very nonlinear response. In my application I was only looking to see if current was present or not, so it didn't really matter. I sort of chalked it up to core saturation in a cheap sensor and didn't explore further.
S.

I'm perfectly okay with a non-linear relationship between actual current draw and the induced current turned voltage.
Only looking to detect whether the machine is on or off. Measuring actual power usage isn't necessary (yet) :stuck_out_tongue:

gilshultz:
SWAG It sounds like your system is wired properly. It also appears you may have an additional load on that dryer circuit. You may have an offset being generated by the ADS1115 ADC.

SWAG == scientific wild ass guesses?
or SWAG you're on the right track

mgiara:

Irms: 0.136A

Irms: 0.697A
Irms: 0.790A
Irms: 0.778A
Irms: 0.785A
Irms: 0.791A
Irms: 0.810A
Irms: 0.172A
Irms: 0.178A
Irms: 0.152A
Irms: 0.753A
Irms: 0.389A
<— unplug —>
Irms: 0.000A
Irms: 0.000A
Irms: 0.000A

To me that is a pretty strong indication that something weird is going on inside the dryer. Maybe there is a fused relay contact that is allowing current to flow to a heater element even when the dryer is not running? Maybe the erratic readings just represent different parts of the AC waveform? If you can verify these readings using a clamp-on ammeter, I’d get inside the dryer and look for problems. You could end up saving some money on electric bills.
S.

srturner:
To me that is a pretty strong indication that something weird is going on inside the dryer. Maybe there is a fused relay contact that is allowing current to flow to a heater element even when the dryer is not running? Maybe the erratic readings just represent different parts of the AC waveform? If you can verify these readings using a clamp-on ammeter, I'd get inside the dryer and look for problems. You could end up saving some money on electric bills.
S.

I couldn't agree more.
To throw another couple nice little nuggets of confusion into the mix, we recently got rid of a refrigerator that was connected to the circuit.
I'm almost positive I tested all outlets in the 2-gang box previously, but, now that the fridge is gone, I'm getting what appears to be predictable readings on the right-gang (the one the washer is plugged into). The left gang still shows current flow with the dryer off.
Also, the dryer is gas so the electrical circuit predominantly powers the tumbler motor. It is, however, probably 3+ decades old so I would expect some fishy business might be going on inside.
Our electricity bill is beyond absurd. I'm thinking this could be a culprit now.
Regarding erratic readings representing different parts of the AC waveform, I did a ton of math to account for this possibility inside of the ESP32 sketch. I take a hundred measurements in the 1/60'th of a second that the sine wave is and extract max and min values, then take the difference between them. In doing this, I'm assuming the amplitude of the AC wave is what changes when there is a load?
I've considered getting a clamp-on ammeter as they're only about $30-40 on Amazon but it feels like an expense I can't justify as I'm only a renter, and this is only a small side project for fun.
On top of that, the owner is understandably frugal and I can almost guarantee a little power loss in the circuit would not justify replacing the machine.

srturner:
To me that is a pretty strong indication that something weird is going on inside the dryer. Maybe there is a fused relay contact that is allowing current to flow to a heater element even when the dryer is not running? Maybe the erratic readings just represent different parts of the AC waveform? If you can verify these readings using a clamp-on ammeter, I'd get inside the dryer and look for problems. You could end up saving some money on electric bills.
S.

I feel very confident saying that something is going on inside the dryer.
I get 100% consistent readings plugging in a heat gun and my space heater into both outlets.
I can hear some kind of mechanical rotary switching mechanism clicking as I turn the 'cycle type' knob on the dryer.
The readings I get from my little circuit are Directly affected by those clicks.
Depending on how much I turn the knob, the values change, even if I don't push the 'start' button that turns on the tumbler.

mgiara:
I feel very confident saying that something is going on inside the dryer.

I think you’re right. The equation changes a little since it’s a gas dryer, but I still think the dryer is at fault given your other observations.
You can measure the current with a standard (non clamp-type) mutimeter, provided it has a 10A AC range setting. It’s a bit hazardous since you’re typically dealing with clip leads on wires carrying mains voltages … so exercise due caution if you try this. It would be nice to get independent verification (and measurement) of power consumption in the off state. It would be good evidence to present to your landlord.
Old gas dryers usually have a pilot light and a device to cut off the gas if the flame goes out. But I don’t think the safety device consumes any power. You can check by seeing if the pilot light goes out when the dryer is unplugged.
I can understand frugality; I am that way myself. But this is beyond frugal. It wastes power and could even present a safety hazard. If the landlord absolutely refuses to replace the dryer, I’d at least unplug it when not in use.
Say … maybe this dryer is one of those old instant-on tube type models, which maintain power to the filaments even when the unit is off …? :slight_smile:

S.

srturner:
I think you're right. The equation changes a little since it's a gas dryer, but I still think the dryer is at fault given your other observations.
You can measure the current with a standard (non clamp-type) mutimeter, provided it has a 10A AC range setting. It's a bit hazardous since you're typically dealing with clip leads on wires carrying mains voltages ... so exercise due caution if you try this. It would be nice to get independent verification (and measurement) of power consumption in the off state. It would be good evidence to present to your landlord.
Old gas dryers usually have a pilot light and a device to cut off the gas if the flame goes out. But I don't think the safety device consumes any power. You can check by seeing if the pilot light goes out when the dryer is unplugged.
I can understand frugality; I am that way myself. But this is beyond frugal. It wastes power and could even present a safety hazard. If the landlord absolutely refuses to replace the dryer, I'd at least unplug it when not in use.
Say ..... maybe this dryer is one of those old instant-on tube type models, which maintain power to the filaments even when the unit is off ......? :slight_smile:

S.

I have Southwire 10040N that just needs a new fuse. It has a 10A port but doesn't specify if that port is AC/DC, maybe that means both?
I've a bit of experience with electrical so no problem regarding the hazard.
I'll look around for the pilot light, haven't even checked for one but I doubt any mechanism related to that would draw current proportional to my 3D printer with its heating elements.
Will do my due-diligence and get the multimeter back in service so I can test.
Yes I've already got a circuit in mind to physically disconnect the dryer with a relay. I can use the capacitive inputs on the ESP32 to make a touch-sensor that powers the dryer for 2 hour increments.
I sure wouldn't be surprised!
My estimate is that this dryer is in the range of 20-40 years old ;D

mgiara:
I have Southwire 10040N that just needs a new fuse. It has a 10A port but doesn't specify if that port is AC/DC, maybe that means both?

It should apply to either. Multimeters typically have that separate input for high current measurements, but you select AC or DC and the appropriate range as usual, from the front knob or buttons.

BTW, you are correct that the amplitude of the CT's output is what is relevant to power consumption. The CT (theoretically) produces an output current proportional to the load current, and the burden resistor then converts that output current to a proportional voltage. An alternate processing idea would be to simply use the maximum value detected over one half-cycle and do the math on that, though your method might be more accurate for reactive loads.

Diagnosing the dryer would be a lot easier if you had a schematic to go on, but I suppose that's out of the question for an appliance this old...
S.

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