I'm trying to read the (0~1V) output of a current transformer (CT) into the 10-bit ADC input of an Arduino Nano. The CT is sensing the L wire carrying 120V at 60Hz.

Current Transformer Specs:

  • Input Current: 0~30A AC
  • Output Mode: 0~1V
  • Non-linearity: ±1%
  • Build-in sampling resistance(RL): 62Ω
  • Turn Ratio: 1800:1

Since the Arduno accepts analog input of 0-5V, the CT's output have to be scaled to make full use of the 10 bits.

Additionally, I think the CT's output is a AC waveform, so it would vary between -1V and +1V. If this is correct, I would need to bias the output by AREF/2 (5V/2 = 2.5V) by diving the 5V and GND rails equally using a potential divider made out of 2 resistors.

How should I scale the 0-1V to 2.5V, assuming the output vary between -1V and 1V? Is there a solution that will both amplify the CT's output signal and bias it as well?

The circuit I'm using currently looks like

enter image description here

and a plot of the analogRead() values is shown below, where the x-axis represents the index number of the ADC sample, while the y-axis represent the ADC value (0-1024). Sampling rate is about 9 kHz (110us per sample). Peak-to-peak difference is about 55 samples, giving us a frequency of 165 Hz.

enter image description here

  • 1
    \$\begingroup\$ arduino.cc/en/Reference/AnalogReference That leaves solving the DC bias, which depends on frequency and waveform (bandwidth) which you didn't mention. \$\endgroup\$
    – jippie
    Commented Mar 22, 2014 at 17:23
  • \$\begingroup\$ @jippie Updated question with the current I'm sensing: 120VAC at 60Hz. \$\endgroup\$
    – Nyxynyx
    Commented Mar 22, 2014 at 17:38
  • \$\begingroup\$ Before trying to get any circuit configuration advice you will need to change the state of every "I think" and "I believe" in your question to "I Know". Before that is done all supposition is a full waste of time. \$\endgroup\$ Commented Mar 22, 2014 at 18:33
  • \$\begingroup\$ @MichaelKaras The specsheet states that the CT has an output of 0-1V. But I am under the impression that a CT outputs will vary between positive and negative values. Is it possible to tell without using an oscilloscope? I only have a Fluke 179 multimeter and a Arduino. \$\endgroup\$
    – Nyxynyx
    Commented Mar 22, 2014 at 18:41
  • \$\begingroup\$ What sampling rate are you using - what is the scale on the x axis? What current was flowing at the time in the AC wire? \$\endgroup\$
    – Andy aka
    Commented Mar 22, 2014 at 19:39

1 Answer 1


Just to move things forward I'm posting an idea (not an answer): -

enter image description here

I believe that the waveform shown above is current into a device containing a bridge rectifier, charging capacitor and load. It's too similar to the stereotype to be anything else (within reason) and the only conclusion of this is that the OP is incorrect about the sampling rate because between AC current peaks there are pretty much 56 samples, and, at 60Hz this must mean the sampling time is approximately 300 microseconds or the sampling rate is about 3.3kHz.

The OP is invited to state what the load is and, if it is a device that rectifies the AC supply then, he should recalculate the sampling frequency based on the diagram he has provided and if necessary amend his figure or amend the x axis of the graph.

  • \$\begingroup\$ Why is there a trough in the waveform if a bridge rectifier is used? I am not sure if there is a rectifier inside the current transformer. The CT is clamped around a AC wire connected to a desktop computer which uses a switching power supply. \$\endgroup\$
    – Nyxynyx
    Commented Mar 23, 2014 at 0:30
  • \$\begingroup\$ The current registered by the CT if connected to a pc as load will look very similar to your picture. You are supposedly measuring 60Hz current so the peaks are very typical of what flows into a power load that incorporates a bridge rectifier. I might also add that the PC's power supply doesn't likely contain adequate power factor correction circuitry so it's probably a few years old compared to latest standards. I'm pushing the analysis now! \$\endgroup\$
    – Andy aka
    Commented Mar 23, 2014 at 0:56
  • \$\begingroup\$ obviously there is no bridge in the CT... I'm referring to the desktop load current and I invite you to recalculate your sampling rate or the numerical scale on the X axis of the waveform graph. \$\endgroup\$
    – Andy aka
    Commented Mar 23, 2014 at 0:59
  • \$\begingroup\$ Remeasured the sampling rate more accurately to be 262us per sample, which is a 14.147ms period or 68 Hz. I guess this is close enough to 60 Hz given it's an Arduino? \$\endgroup\$
    – Nyxynyx
    Commented Mar 23, 2014 at 2:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.