Description: This current sensor gives precise current measurement for both AC and DC signals. These are good sensors for metering and measuring overall power consumption of systems. The ACS712 current sensor measures up to 5A of DC or AC current. We added an opamp gain stage for more sensitive current measurements. By adjusting the gain (from 4.27 to 47) you can measure very small currents.
The ACS712 Low Current Sensor Breakout outputs an analog voltage that varies linearly with sensed current. To calibrate, first set the output offset to the desired level (with zero current on the sense lines, read output with a DVM). Then with a known current input (a 100mA limited supply works well for this), set the output deflection with the gain pot. Sensitivity is then calculated as (Vref - Vdeflect)/(current input).
The bandwidth on the ACS712 Low Current Sensor Breakout has been set to 34Hz to reduce noise when using at high gains. The full 80KHz bandwidth that the sensor is capable of can be recovered by removing C1. See schematic for more details.
Based on 4 ratings:
in my board I received, it had different potentiometers than in pictures, in my case models are ones with metal plates. I hadn’t suitable instrument to easily regulate them, so I broke Vref potentiometer after testing it. It started to output jerky values until it was either 0 or 5v. I succesfully replaced it with external 10k pot.
I think it’s not good idea to calibrate, based on external current source. As a beginner I don’t have such sources, and second, it adds further imprecision.
I think that manual potentiometers consume too much of my time, so after this experience, my confidence is that digital pots are better and more reliable. Their cost is not too high for comfort they provide.
In the end I soldered wire directly to ACS712 Vout pin. This board has 5amp version with 185 mV/A sensitivity. At least, I can be sure about precision of this.
4.1 Accordingly, Arduino 10-bit ADC is unsuitable for such small measurements. My calculations:
volts at 0 current = midpoint of 5V, it’s 2.5 v
sensitivity 185 mV/A.
range is 5 A, so
5 * 185 = 925 ma, on -5A gets 2.5 - 0.925 = 1.575
on 5A gets 2.5 + 0.925 = 3.425 volts.
ADC works in range 0…5V (it’s important to provide stable 5V to both Adruino AREF, this sensor, and/or external ADC). It can be achieved using voltage stabiliser, I used L7805ABV feeded with 12V, and got stable 5.03 v.
To find out real precision I can get from 10-bit ADC, I have to fill this “5V window” with 185 mV “parts”. From there, I can calculate, how much milliamps I can measure with 1 part from ADC value.
So, 5000 mV / 185 mV = 27,027 “fill ups” or “amps to be seen” projects onto 1024 values provided by ADC. It’s 27.027 / 1024 = 0,026. 1 ADC value part can represent 26 ma.
I want better precision, so I ordered 16-bit ADC. I’m waiting for it but math shows that:
16 bits provide about 65000 values.
27.027 / 65000 = 0,0004158 or 0,4158 ma. Much better!
ah, here is my detailed logic for calibration of this board. It’s how I understood, but as I wrote, I didn’t use and validated this method fully:
vin = 5.03
desired max range = +/- 2 A
so vref should be about in midpoint of Vin, about 5.03 / 2 = 2.5
set gain to minimum.
current reference = 83.46 ma
reference to range ratio = 2000 / 83.46 = 23,963575365
reference current in volts = 2.5 (full range) / 23,963575365 = 0,104325 volts
desired volts after gain correction should be 2.5 - 0,104325 = 2,395675 v (on positive current)
sensitivity = (full range volts * 1000) / full range amps
= (2.5 * 1000) / 2 = 1250 mV/A
Great little sensor for the application needed. Thanks Sparkfun!
I would have given this 5 stars… but I haven’t investigated it thoroughly yet.
“Just worked” for me… when I changed current through device from 180mA to 500mA, I saw a swing on the output voltage from 1v7 (1.7 volts) to 3v8..
In other words, a change of 320mA in the current though the device gave me a 2v1 swing in the voltage on the analog output.
If you want to watch something that may range over, say, 10mA to 25mA, then this isn’t the device for you… but it doesn’t claim to be. If the current you need to watch stays below 5A, and will swing by, let’s say 500mA… then it might be the one for you.
Also written up at…
Make you laugh? I had a pretty rough and ready test rig lashed up. I hadn’t paid much attention to the precise specs of the pot I was using. I couldn’t figure out why the output was taking time to settle to a consistent value. Then I burned my finger on one of the pins of the pot. I was putting more current though it that it was rated for. It was getting hot. And thus its resistance was changing, and the current was changing… so it SHOULD have been drifting… as it was.
Have spent a few hours with this, looked over the wiring many times, read the schematics and datasheet…I am not able to get any signal out of this for any current I put through it. Have tried a wide variety of voltage and current seeing from very small upwards to as large as the specs allow. Trying to to see anything, but I don’t. Adjusting vref and gain shows effect, but not relative to whether there is current going through it or not.
Have also bought more than one and tried more than one. Same issue. I am open to it being something I am not understanding but I’ve put in a fair amount of time into this and am not seeing it.
Issue for me with this device is that there are no “getting-started” docs or project samples specific to it…any project-oriented documentation you find has to do either with the ACS712 or another breakout board using it. Of course one can and should be able to extrapolate from that board to this one, but when things don’t work at all, you can not be sure where your problem lies.
Greetings. Sorry to hear you are having issues with several of these products. We are going to contact you privately to see if we can assist you with your setup and get your project up and running!