Im building low cost home energy monitoring system. I want to see how much energy is used by water heater, big water pump, kitchen equipment, lightning, computer. I would be awesome if I could measure every light and socket in my house.

I found relatively cheap current transformers at local market, but they are a bit too expensive for project like this (I need too many of them).

I need few current ranges (5A, 10A, 20A). I want to measure these currents with microcontroller ADC.

So, the question is:

How can I build low cost and relatively small size current transformer?

  1. Does it have to be toroidal, to be small (under 2x2x2cm for 20A CT) and cheap?

  2. If it has to be toroidal - what kind of core can I use? Iron powder cores are very cheap - can I use it? I can buy iron powder cores (AL range from 33 to 83). for 0.10EUR.

I know that winding toroids is complicated, but I have some mechanical skills and I feel I can build little toroid winding machine if toroid is required for small size.

If someone reply with exhaustive answer (in form of howto?) I will award it with big bounty (after 2 days).

  • \$\begingroup\$ The cheapest is an "air cored current transformer". Wrap wire A round wire B lots of times. \$\endgroup\$
    – Majenko
    Jun 21, 2014 at 16:48
  • \$\begingroup\$ I was thinking about this. But how many turns? How acurrate it will be? \$\endgroup\$
    – Kamil
    Jun 21, 2014 at 16:57
  • \$\begingroup\$ You would have to experiment to get a good number of turns - it depends what level of current you are sensing. As for how accurate - define accuracy? It won't change over time, so if you calibrate it properly then 100% accuracy ;) \$\endgroup\$
    – Majenko
    Jun 21, 2014 at 17:04
  • 4
    \$\begingroup\$ @Majenko: Since the axis of the big wire has to be parallel to the axis of the wire the magnetic field is cutting in the winding, wrapping wire A around wire B won't work. \$\endgroup\$
    – EM Fields
    Jun 21, 2014 at 17:28
  • 1
    \$\begingroup\$ @Majenko: It's not a question of efficiency, it just won't work. Consider, for example, one wire carrying AC and another one next to it with its axis parallel to the first. Will the varying magnetic field generated by the current through the first wire induce a voltage in the second? Absolutely! Now rotate the second wire by 90 degrees so the axes of the wires are perpendicular. Will a voltage now be induced in the second wire? Absolutely not! Now wind the second wire around the first. Has the axial arrangement been changed? If not, how then will a voltage be induced in the second wire? \$\endgroup\$
    – EM Fields
    Jun 21, 2014 at 20:24

2 Answers 2


Find the lowest cost 'iron cored' transformers you can that has enough room inside a lamination 'window" to allow you to push a wire through it. Room for two wires even better but room for one will do.

Insert an insulated wire through the hole so it is effectively a 1 turn winding.
Twist the ends(insulated)around each other so they form a tight loop around the core.
Two wires through (effectively two turns) MAY make it slightly less amenable to disturbance by wire movement. May.

You now have a current transformer.

Place a smallish resistor across the winding.
Pass AC current through the wire.
Measure voltage with a meter.
Adjust resistor to suit.

A small power transformer should work well but almost any steel cored transformer will work. Small audio interstage coupling transistors with steel cores should work - but more turns will usually give more volts per amp.

Report back.

NB I have NEVER tried this specific arrangement but am confident that it will work.
You will be able to calibrate a range of transformers by adjusting the resistor value.


Designing a current transformer:


Given a transformer with a single primary turn, an N turn secondary and a desired output of K Volts out per amp in. The resistor R across the secondary is given by

R = k x N

Note that core magnetisation and saturation are issues in real world cases. For A amps input current and 1 turn primary the core must support A amp turns of magnetisation without saturating.


Current transformers may seem magic but actually operate under very standard transformer rules.

A "normal" (ideal) transformer usually has a fixed voltage applied which is mirrored into the output but multiplied by the turns ratio N (Vout = Vin x N) and the output current is multiplied by 1/N so Iout = Iin/N.

A current transformer works no differently BUT instead of constraining Vin and letting Iin assume an appropriate value we instead constrain Iin and let Vin assume whatever value happens to happen. In fact, we do not care about the value of Vin usually - we care about Vout. So we set Iin - which is the current being "measured", this produces Iout = Iin/N, we select an output vresistor for Iout to flow in so that Vout is some desired value for a given Iin, and we then measure Vout to establish what Ion is. Vin is Vo/N but is almost never measured.

Given a transformer with 1 primary turn and N secondary turns.
R = resistor placed across secondary for Iout to flow in. Is = Isecondary
p = Iprimary.
N = turns ratio (Turns_in / Turns_out) . k= desired volts out across R per amp in the primary. R = resistor across secondary.


Is = Ip/N (standard transformer action.)
R = Vs/Is
but Is = Ip/N
Vs = K.Ip where we select R to make K = Vout/Iin to assume the value of our choosing.

Set Ip = 1 Amp
Is = Ip/N Vs = k
R = Vs/Is = k / (Ip/N) = KN/Ip
As Ip = 1

R = kN !!! Amazingly simple. ie Select K = Volts out per Amp in. Select or use available turns ratio N.

Set R = k.N = Volts/Amp x turns ratio

To find a resistor across output to get K Volts per amp. V=iR so R = V/I. For Iprim = 1, V sec = k. R = V/isec = VN/Iprim = kN/1 = kN. | R = Volts per amp x turns ratio.

  • \$\begingroup\$ This method is actually better than doing all calculations. I did something a bit diffrent. I put 200 turns on core, 1 primary turn, I put 1A thru it and measured secondary current (actually - voltage on 10ohm). That gave me ratio of CT with 200 turns. I adjusted turn count to have desired ratio, and checked if it's not saturating in desired CT range. \$\endgroup\$
    – Kamil
    Oct 31, 2014 at 20:52
  • \$\begingroup\$ N = turns ratio. Isec = Iprim / N. To find a resistor across output to get K Volts per amp. V=iR so R = V/I. For Iprim = 1, V sec = k. R = V/isec = VN/Iprim = kN/1 = kN. | R = Volts per amp x turns ratio. \$\endgroup\$
    – Russell McMahon
    Nov 1, 2014 at 6:41
  • \$\begingroup\$ +1 Russel I have implemented the scottish current transformer .It does work well been used for 20 years intermittantly on test jigs . \$\endgroup\$
    – Autistic
    Jan 13, 2016 at 20:03
  • \$\begingroup\$ @Autistic :-). I take it that by "Scottish" you mean my described method of using a std transformer with a wire passed through a suitable lamination window. \$\endgroup\$
    – Russell McMahon
    Jan 14, 2016 at 5:16

I think you'll have a great deal of trouble getting good enough performance at 50Hz from a powdered iron core toroid- the inductance won't be high enough. That's why tape-wound permalloy cores are typically used.

If you use a large powdered iron core (to give more room for winding) and put several turns through the primary rather than just one, you might be able to get acceptable performance (5 turns would give you 25x the inductance). Start with your requirements (minimum frequency, minimum current resolution) and do some transformer design calculations. Saturation needs to be considered too.

If you want to use air core coils, there is always the Rogowski coil, which provides an output you can integrate to give current.

enter image description here

  • \$\begingroup\$ I need low AL core, right? \$\endgroup\$
    – Kamil
    Jun 21, 2014 at 18:24
  • \$\begingroup\$ High AL for high inductance. \$\endgroup\$ Jun 21, 2014 at 18:26
  • \$\begingroup\$ I think I found suitable cores. AL range from 2500 to 10000, price 0.12EUR. Material F860. It will be good for CT? \$\endgroup\$
    – Kamil
    Jun 21, 2014 at 19:27
  • \$\begingroup\$ @Kamil Sounds like it has potential. \$\endgroup\$ Jun 21, 2014 at 19:35
  • 2
    \$\begingroup\$ @SpehroPefhany Potential? Was that a pun ? :-) \$\endgroup\$
    – Russell McMahon
    Jun 22, 2014 at 5:33

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.