CT Voltage sensing

Hi All

I'm using the SCT-013-000 100A:50mA Current transformer. I've been trying the tutorials and schematics with no luck. I want to connect this CT to the Arduino to sense load (current). I need to convert the mA output to a dc voltage to be sensed. When I test the CT, the mA output is correct and linear as expected.

1. Current sensing resistor

When I try passing the current over a resistor to sense the voltage I get 0V dc. I tried various different resistance values (33,100,1k etc) and no change to the output. I've tried the resistors on a breadboard and soldered them to a veroboard - no difference. This should follow Ohms Law and produce a voltage output, Vout = Iout x Resistor

(Circuit is attached)

2. Tutorial

I also tried the Open Energy Tutorial and the voltage stays fixed around 2.5V dc, irrespective of the load I apply via the CT. (http://openenergymonitor.org/emon/buildingblocks/ct-sensors-interface). I've tried loads up to 30A with no change.

Please could you assist me and tell me what I'm doing wrong?


calypso_rae's picture

Re: CT Voltage sensing

The ADC in your Arduino works over the range 0 - 5V, so the output from your CT needs to be centred within this range.  Otherwise, you will only see half of the signal.  The recommended interfacing circuit is as you have noted at:


With this circuit in place, values from the ADC should be centred around the mid-point (512) with the AC component showing up as variations on either side of this.  When the AC signal occupies the full range of the ADC, the data values will range from 0 to 1023.  The measurement range of the system (in kW) is determined by the size of the burden resistor.

You can check the operation of your circuit using a simple sketch which repeatedly takes ADC samples and prints their value.  There are a couple of such sketches at:



Robert Wall's picture

Re: CT Voltage sensing

Have you tried the sketch at the bottom of that Building Blocks article you link to? I strongly suspect - given that you don't tell us how you are trying to measure the transformer output - that all you have is v = analogRead(input_pin). That will measure the voltage at one instant, but remember that the output of a transformer - both voltage and current transformers - is alternating, and you need to do the sums in that sketch, and those are roughly the same sums that your multimeter does, to read a sensible current.

Read more in Building Blocks and it is all explained for you.

cpaw's picture

Re: CT Voltage sensing

The issue is before I can even get to the sketch.

The output voltage does not change from 2.5V dc irrespective of the primary load I apply to the transformer.

I built the circuit as per http://openenergymonitor.org/emon/buildingblocks/ct-sensors-interface but the voltage to analogue pin stays at 2.5V dc.

Why would the output voltage not change?

emjay's picture

Re: CT Voltage sensing


You mentioned that the sketch is not even running yet, so how are you measuring the voltage on the ADC pin?

If you are using a multimeter, if you have selected 'DC', you will see only 2.5V displayed.


[Edit - RW]
And even if you have selected "AC", you still will not necessarily read the result that you are expecting because the voltage you want is sitting on top of the 2.5 V that you are measuring. Look at and study the diagram on that Building Blocks page.

Comment viewing options

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