CT Only Solution


I'm looking to just get something working with a CT (no voltage measurement) to basically get an order of magnitude sort of measurement, but I'm having some issues.

The CT I'm using already has a builtin burden sensor.  If I hook it up the leads coming off it to a multimeter in VAC mode, I get stable mV readings that correlate well with a KillAWatt I have the load plugged into.

I'm having some trouble with the Arduino part of it though.  I have the wires of the CT going into GND and one of the Analog Inputs.  My program samples the analog input 5000 times, calculates the RMS from the input value, accounting for it only being a half wave due to me not biasing the signal.  Here's the weird part...if I put my fingers on some exposes metal on the leads coming off the CT (which go into GND and Analog In), then the signal is reasonably good.  However, if I don't, then the reading is WAY off, reading amps when it should only be showing mA.  With or without my fingers, if I move the clamp off the wire (or surround both the Hot/Neutral), then the reading goes to zero as expected.

Any thoughts?

Paul Reed's picture

Re: CT Only Solution

 Hi, I think the first thing that you need to do is to calibrate the output from the CT.

Have you decided what the maximum power is that you wish to measure? (usually people opt for about 10kW), then you need to measure how much voltage is developed with a known power flow in the primary, and if necessary add a external shunt resistor to ensure that at 10 kW, that the peak to peak voltage signal does not exceed 5 Volts, so you do not damage the Arduino.

The easiest way to do this is if you have a spec sheet for the CT, which discloses how many turns the CT coil has and also the value of the internal shunt resistor, and then refer to this guide. If you do not have access to this info you may need to run some tests with known loads, and again do the calcs in the aforementioned guide.

You then need to apply a 2.5 V DC bias to the input (because the signal swings +2.5V to -2.5V within each cycle on full load) to ensure that the input to the Arduino does not go below 0V nor above 5V. See the guide quoted for the simple circuit required.

I hope that you don't measure the mains voltage in the same way!

chrisp's picture

Re: CT Only Solution

 Thanks for the reply.  I measured the output of the CT at different currents, and it gives off 60mV RMS per amp of current going through it according to my multimeter.  I'm not going to measure any more than 20 amps, so I wouldn't expect the voltage output to go any higher than 1.2V RMS at peak.

Biasing the input so that it revolves around 2.5 Volt makes sense...since then the Arduino sees both halves of the wave.  Is there a problem if it is not biased, so one end of the CT is hooked to GND and the other to the analog input?  To the arduino, part of the signal would be negative then, but I thought it would just give a zero value for this portion, and I could correct for the half wave when sampling the voltage to calculate the RMS.

For whatever reason I seem to be getting a bunch of noise in the circuit which goes away when I apply some conductivity to the leads off the CT.  I saw the capacitor in the diagram, used to soak up unwanted high frequency noise, but when I'm hooking up the CT as I am, I can't really use the capacitor as shown in the diagram.

I'll find the appropriate resistors so I can give it a try with biasing the signal and see if it helps.


Paul Reed's picture

Re: CT Only Solution

 The Arduino's specifically work on a 0 - 5V input range, and I have read that negative voltages may damage the chip.

Try the biasing circuit, and let us know how you get on.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.