Measuring amps with Arduino Uno

Hello ,

I would like to measure the amps in a circuit.
I have a accurate clampmeter which has an output from 1mv is 1A. ( to a max of 1000A)
The maximum Amps in the circuit is 600 A.

The idea is logging the amps with a Arduino Uno and use a analog input for this.
When the 600 A is reached, it gives a then 600mv.
My feeling says that this will not be accurate as an input for the Arduino.

First question, is my feeling correct?

Then, if my feeling is correct how can this be solved?
Is a kind of opamp needed?

Could somebody help me out with a diagram for this?

Thanks for the replies.

A mechanical guy , who can do some soldering :wink:

What accuracy do you need? Nobody can have any “feeling” about that without knowing.

I will be happy if it can be +/- 3 A.

The A2D has a 10 bit output, which means 0 to 1023. You want to measure 0 to 600, so that's 1.705 steps per amp. +/- 3A, so a band of 6A means 10.23 steps. I guess with care that's doable.

AC or DC?

So we could say you have a sensor which has an output sensitivity of 1.0 mV/Amp or at full scale 1000 Amps = 1.000 Volt. You could set the Arduino ADC up using a 3.3 Volt external reference. You can find the reference explained here. The idea being since the Arduino uses a 10 bit ADC you will have, as mentioned, 1024 (2^10) quantization levels. So using the standard internal 5.0 volt reference the best resolution you can hope for is 5 / 1024 = 4.88 mV or in your case about 5 Amps. Using a lower reference voltage will improve that.

Something else you may want to consider is using (adding) an ADS1115 16 Bit 16 Byte 4 Channel I2C IIC Analog-to-Digital ADC a nice feature is it's a 16 bit (2^16) device so you now have 32,768 quantization levels and a max input of 6.144 Volts with the standard gain. That gives you a resolution of 0.1875 mV per bit. The gain is easily programmable but just with the standard gain you can see the improvement. A real nice feature is it uses the I2C bus with the Arduino. Very easy to mate with an Arduino as can be seen in this link. Considering a $7.00 USD price tag it's a big improvement and not that you need it does allow for differential isolated input. I have used the chip and they work fine and no shortage of code out there to use one. Gets you down to resolving about 0.2 Amp.


With the optional [u]1.1V internal reference[/u] you'd get about 1mV resolution.

The 1.1V reference isn't super accurate but it's very stable so you can calibrate-out the error in software. Section 23.6.3 of the [u]Atmega datasheet[/u] has more information on accuracy.

An op amp non-inverting amplifier with a gain of 8 would yield 8*0.6V = 4.80V (982 analog counts).
This gives a much greater resolution.
Google arduino non-inverting op amp

I recommend the LT1215 op amp because it is specifically designed to run off 5Vdc.

Something else you may want to consider is smoothing or averaging your readings. Works well if you want an average if your signal might have noise.


Thanks everybody for all the replies!.

I will go for the ADS1115 16 Bit 16 Byte 4 Channel I2C IIC Analog-to-Digital ADC.
As a not yet experianced guy, it looks the best way for me at the moment.

When i recieve the part , i need probably some help again but then I know were to go to :wink:


If you use the examples in the ADS2115 library
remember to change the default chip configuration from the 1015 to the ADS1115 in the first two
lines of the .ino file. ( comment out the unwanted

If you can loop the cable through the ammeter, you can reduce the full scale - eg with two loops 10A will make it read 20A

Small update,

I recieved the ADS1115 and it is working perfectly for my application.
Thanks for all the replies,



Glad it worked out for you.


You can use the programmable gain to get
the x8 amplification to amplify the 600 mV
to 4.8V to increase the resolution.