250/5A AC current measuring

I got stuck with a problem.
I want to measure the AC current of some devices. The maximum current will be at 250A AC (230V). Whats interesting for the project is, is the current in between 100A and 250A.

I thought about using an transformer which is used for electical meters (250/5A) but I got stuck about how to use it with an Arduino.

I learned that I have to use an burden resistor. But how do I declare the neccessary Ohms for it?
And after this: How fine will the measurment be? Do I need an 16 Bit transformer?

I´m an electrician so I know how to handle currents and voltages around this height.

Thanks for the help!
If anything is unclear I gonna try to define it more precise.

An AC current transformer is defiantly the correct approach.
I'll assume the frequency is 50 or 60 Hz.
The burden resistor should be identified by the transformer mfg. The burden resistor (in theory) is simply the resistance of the secondary / the transformer turns ration squared.

So lets say you found a current transformer and burden resistor.

Now the current is represented by a voltage to the Arduino.

  1. Read the AC voltage (from the current transformer) many times and try to calculate the average current (maybe try RMS as well)

  2. Add a circuit to convert the input voltage (aka current) to average DC and measure that with the Arduino.

I think you must choose the value of the burden resistor to give the voltage you need from the current to be measured.

Since you mention currents as high as 200 Amps I will assume and industrial application. First I suggest you give this a read. Pay careful attention to the Current Transformer Wire Length Tables. The wire run length from the current transformer to the measurement plane is very important. Also consider burden resistance.

One problem, especially if this will be an industrial application is a current transformer is measuring AC current and measuring the Average Current not the True RMS current so you need to decide what you are actually interested in. Since you have an AC signal varying above and below 0.0 volts you need to offset that for an input to an Arduino ADC. There are circuits to do that but you will need some signal conditioning.

Rather than a CT you may want to consider a Current Transducer. I suggest a Google of Current Transducers to gain more understanding but simply put a current transducer can be selected for Average Responding or True RMS responding and have an output scaled for 0 to 5 volts or 4 to 20 ma. Very convenient.

Another trick I have used in a bind was using for example a 250:5 CT and just wrap 4 turns of the secondary through a 20 Amp current transducer having a 4-20 mA out or 0 to 5 volts out. Good units are not cheap though.

Much of all of this comes down to budget and how accurate you need things to be.

Finally when choosing a burden resistance consider:

  • The total burden includes the input resistance of the meter and the loop resistance of the wire and connections between the current transformer and meter.
  • Example: Burden = 2.0 VA. Maximum Voltage drop = 2.0 VA / 5 Amps = 0.400 Volts.
  • Maximum Resistance = Voltage / Current = 04.00 Volts / 5 Amps =0.080 Ohms.

There is quite a bit involved in setting up a CT in an industrial application and I suggest you be wary of the flood of inexpensive little CTs off the boat unless you are sure they will do as you want. :slight_smile:


@Ron_Blain provides some interesting suggestions. However the statement that a Current Transformer provides average current is not fully correct.

A current transformer provide a voltage output that is a "mirror" image of the current. So the current waveform of the measured current and the voltage waveform of the output of the current transformer will be the same (except for scale).

If you want average or RMS only depends on how you digitize the Current Transformer output.

Thank you so much for all the information (to all of you!)

So at first: It's 50hz.

I want to measure the average current in a period of 10 minutes to avoid measuring the short peaks of starting machines. But I'm not sure if rms or average is the way to go.

The price depends. In the first step I have 10 (30 if they want all three phases measured) measurement points. And it could be up to 27.000...

The goal is a cheap measurement of the cables if there is an overload.

The current transformers (CT) I can get are industrial quality.

Can you point me some current transducers which you'd recommend for an current like this?

I gonna read your links and Google by my own now too.

With that in mind I can give you a few examples of how I might go about it. If I only wanted single phase 0 to 250 Amps I would go with one of these from CR Magnetics or another manufacturer. If I wanted to go with a three phase design I would go with one of these from CR Magnetics or similar manufacturer. Both of the units I mentioned are Average RMS responding, they are not true RMS responding. True RMD responding can be had but come with a higher price tag. Both are transducer type and both can provide a 0-5 volt output proportional to current. Some also offer 0 to 10 volts out as well as 0-20 mA and 4-20 mA.

You may want to give some reading to the differences between Average Responding RMS Indicating and True RMS Responding RMS Indicating. For a nice clean sine wave Average Responding is fine and less costly.

Since you mention recording the data you may want to consider a small inexpensive data logger system. When we collect data we need to put it someplace. There are inexpensive Data Acquisition Starter Kits from a number of manufacturers. Nice part is you get a chart all plotted over a period of time. You can also scale the chart. You can use an Arduino but you want to add a logging shield and write code to save your data. While not high speed data acquisition systems inexpensive data loggers can be had including all the software needed. The link was for Dataq but a dozen or more manufacturers market them. The idea being I can log current, voltage, pressure, temperature, force and just about anything else over a period of time as long as I like. :slight_smile:

Least I forget just about any current transformer (doughnut) or current transducer will work just fine at line frequencies between 50 and 400 Hz.

Many thanks to JohnRob. I really did not explain the RMS relationship well. My bad on that note. Many thanks for the correction.


Thank you again!

I have plenty of SD-Card modules for Arduino.
My point is: I want to build it as cheap as possible. I know out of the box products would save time and so money but I want to stick to the Arduino. (Next step after figuring out how to measure is an SIM Module to send the data to a central server where I can check the values remotely)

Also I need around 10 (single phase) to 30 (3 phase) inputs per unit and I think this would be really expensive.

The Transducer looks nice thank you!
They can´t go higher than 5V output even if there is more than 250A running over the primary side, or?

Because one thought I got was: If i use normal CT´s and on the primary side some motors are starting, the current is gonna be up to 10 times the normal current. So also on the secondary side its gonna be a peak of 10 times I think. Could a Zehner-Diode solve this?

Any idea about protecting the arduino of peaks like this?

I´m not finished thinking about using the CT version but still searching for an easy practicable schematic to use it.

What I also have to say is that an accuracy of 5% is fine.

What if I use an normal CT and use an current transducer for up to 15A behind it? Do you think this would work out?

What do you think about this one:

Yeah it´s from aliexpress but it look like I have access to the calibration potentiometers, so I could calibrate them by my own if they are bad calibrated.

Thank you so far!

I too would just buy a current transducer - easy and it works , prob work out cheaper too


That should work just fine. Nice features on ordering is inexpensive current transducer, choose your current range. Available output 0 to 5 volts and loop powered with your choice of power supply. This is why I pointed out my links were merely examples and such transducers could be had at lower cost. With for example an Arduino UNO and data acquisition I would consider Adafruit Assembled Data Logging shield for Arduino. Nice feature there is the RTC (Real Time Clock). While I have never used that specific shield my guess is the data could be placed in a Excel or similar spreadsheet using CSV. You will have a DTG (Date Time Group) with your measured values of current.

Complete and inexpensive is the end result. You are on your own for code samples but things should work fine. :slight_smile:

Keep something in mind. Using the ADC in an Arduino UNO for example you have a 10 bit ADC. So for example 0 to 5.0 volts / 1024 bits = 4.88 mV resolution.

Using a current transducer scaled so 0 to 250 Amps = 0 to 5.0 Volts you get 5 / 250 = 20 mV / Amp.

The best you will resolve is about 5.0 Amps.


1 Like

In theory RMS it the mathematically best method. In real life it will make no difference.

@Ron_Blain seems to have a lot of experience with commercial measurements. His recommendation seem to be solid and relatively easy.
One thing to watch for is: whatever you decide on make sure the wire will fit through the hole of the transducer.

Back to your original question "how to select a burden resistor?"

Current transformers, transform current at the ratio of the transformer turns.
So a 250 Amp / 5V current transformer will generate 5A in the secondary when the primary is subject to 250 amps.

Note: it is recommended a CT be not powered with the secondary open but it must have a burden resistor or a short.

All this means the burden resistor can be a wide range of values but lets pick a usable situation:

  1. 250 A / 5A ct
  2. Arduino with a max Analog input of 4.5V .
  3. Secondary peak current will be: 1.414 * 5V = 7A
  4. Burden resistor = R = E / I = 4.5 / 7 = 0.64 ohms.

A circuit like this one will give you an average reading.

Yeah I definitely go for this option. But for tests and demonstration I gonna go for CT first.

@Ron_Blain "Using a current transducer scaled so 0 to 250 Amps = ) to 5.0 Volts you get 5 / 250 = 20 mV / Amp."
This I don´t understand. Don´t I also have 1024 bits with 0-5V on the transducer? Is it because it´s the factor/resolution caused by the circuit inside?
For me full numbers are just fine.

Another question: Is there an Arduino or some way to have more than 16 analog inputs?

@JohnRob Yeah I had a look about the diameter of the hole and the diameter of the cable. It fits :slight_smile: but thank you for the reminder!
Thanks for the calculation. I used an online calculator and it told me 0.8Ohms. But I gonna stick to your calculation.

Doesn´t the fb rectifier cuts me some volts and is falsifying the value?

Happily no :slight_smile: Because the transformer output is a current, the different voltage drops are without any effect on the current. Even if the output is shorted the current would still be the same.

Caution, the flip side of this is, if the secondary is left open excessive voltage can be generated (in an attempt to keep the current the same) and the winding insulation could be damaged.

1 Like

yeah I know that its not allowed to use them current transformers without load/shorted on the secondary side. :slight_smile:

I still don´t get this calculation:
"3. Secondary peak current will be: 1.414 * 5V = 7A"
Is the current also calculated with 1.414? I thought its the voltage. Cause 1.414 * Voltage = not Ampere o.O. I´m so confused now.

This calculation was to determine the peak current assuming a sinewave. I wanted to make sure the peak current didn't exceed the A/D input range.
Arguably this is excessively conservative as the R-C filter will reduce the peak.

1.414 = √2 = "square root of 2"
which is the relationship between RMS and peak.

My bad on the scaling. I corrected it.

Assume a transducer with a 0 to 5 volt output. So 0 to full scale transducer becomes 0 to 1024 bits (2^10). Therefore not even considering any other error since 0 to 1024 bits is 0 to 5 volts we can take 5 volts and divide by 1024 bits and get 0.00488 volts per step change. So we can call it at 4.88 mV being the best resolution we can get with a 10 bit ADC conversion.

That in mind if we use a transducer to convert current to a voltage it works out this way in this case. The current transducer converts 0 to 250 amps to a nice useable 0 to 5 volts. Therefore the transducer output becomes 5 / 250 = 0.020 or 20 mV/Amp. So with a 10 bit ADC our best resolution will be about 4.0 amps or 20 / 4.88 = about 4.098 Amps.

That is what I was getting at and that assumes no other error. That assumes a perfect 5 volt reference on the 10 bit ADC.

Now back a little I mentioned along with using a current transformer the importance of knowing that we can't just use any resistor for a burden resistor. I provided a link explaining that. This comes down to:

What is Burden?

The load, or burden, in a CT metering circuit is the (largely resistive) impedance connected to the secondary winding. Typical burden ratings for IEC CTs are 1.5 VA, 3 VA, 5 VA, 10 VA, 15 VA, 20 VA, 30 VA, 45 VA & 60 VA. ANSI/IEEE burden ratings are B-0.1, B-0.2, B-0.5, B-1.0, B-2.0 and B-4.0. This means a CT with a burden rating of B-0.2 can tolerate up to 0.2 Ohms of impedance in the metering circuit before its output current is no longer a fixed ratio to the primary current. Items that contribute to the burden of a current measurement circuit are switch-blocks, meters and lenghty secondary conductors.

The most common source of excess burden in a current measurement circuit is the conductor between the meter and the CT. Often, substation meters are located significant distances from the meter cabinets and the excessive length of small gauge conductor creates a large resistance. This problem can be solved by using a larger gauge secondary wire, or a CT with 1 ampere secondary which will produce less voltage drop between a CT and its metering devices (used for remote measurement).

The above was taken from here.

Something I overlooked and forgot to mention is what JohnRob was kind enough to point out. Do not leave the secondary of a current transformer open. either short it or have a burden resistor across it.


To be honest - I´m so confused now about the calculation in the code of the arduinos analog read...

Edit: I think I understood it. Also the current is affected by the rectifying. So I have to calculate with the peak current?
I gonna try to build the circuit tomorrow and give it a try. At work I have access to a lot of (high end) measuring devices, so I can recheck the result.

And also now I´m more confused about the burden ratings. I know that I can´t go over the rating but is the burden resistor counting this much in? Isn´t the schematic two resistors parallel? The burden resistor and the wires (+ measurement decive). And due to the really low resistance of the cables I gonna use the total resistance is going to be really low? 1/R(total) =1/Rburden+1/Rcable

And also now I´m more confused about the burden ratings. I know that I can´t go over the rating but is the burden resistor counting this much in?

I'm not quite sure what the confusion is. I don't know the rating of the transformer you have so it would be best to identify what you have or intend to purchase.

In my analysis I assumed a CT of 250A : 5A because I saw they were a common device.

@Ron_Blain 's description of "What is Burden?" is technically correct but was written by a lawyer or a professor.

In general CT are used with a (in this case) 5 A ammeter on the secondary. Usually ammeters have low internal resistance.

The rectifier will convert the current to something like the blue trace in the below waveforms.


Then R4 and C3 will filter the waveform somewhat to get a kind of average. If C3 is too large you will end up with peak current.

You will need to take a bunch of readings with the A/D and average them to get a stable reading.

NOTE this is not an instrument grade approach, but it will tell you if you are overloading your circuit.
You can get a better average but need more samples if you change C3 to a 0.1µF cap and take enough readings to get a good sample of the blue waveform, averaging all the readings.

R4 in not in parallel with R3 due to C3. However even if it were a 10k // 0.64 ohms will be 0.64 ohms. The change will be in the 3rd or 4th decimal place.

Sorry of course you can not know!
The transformer is rated as: 250/5A, 5VA, Class 0.5%
(Hope this is enough otherwise I have to have a look at it tomorrow at work).

Ah dang! I forgot about the 10k serial resistor and the Capacitor. I only thought about the wiring and the burden resistor.

I gonna try this tomorrow and let you know!
With the CT its a test at first. And if it works out fine I gonna order the transducers. I think this gonna be much easier then.

I was lucky, I picked the same spec as your CT. All should be good.

With the CT its a test at first. And if it works out fine I gonna order the transducers. I think this gonna be much easier then.

It will defiantly be easier and more accurate, but more costly.