# ACS712 Low Current Sensor

Before I begin, just to let you know that I'm new to electrical engineering, in case that my question sound weird to you, but here's my problem.

I bought few days ago ACS712 Low Current Sensor and hooked up everything on my Arduino board, but the values that I'm getting are weird.

From my understanding, the Vout from that sensor without any load should be 2.5v, right? And if there's any load, it should change.

However, I'm getting different values on Vout while I read them in my code (from 505 to 520) (as raw input without any analog to digital conversion). Is that normal? I thought I will get stable (constant) input value if there's no load?

How can I tweak that and how to convert it properly from that number into milliamps?

• If you are running the ADC in a mode where full scale is 1024, then values ranging from 505-520 sound rather normal for a circuit which probably has some electrical noise. You can explore better supply biasing, and both electrical and software filtering. Commented May 23, 2016 at 0:55
• Ok and let say that this number is ok, how can I convert it into milliamps?
– ShP
Commented May 23, 2016 at 0:58
• The present number appears likely to be the center once noise is removed. But for a number with an actual offset, you would convert it to a voltage using the ADC range relationship and convert that to a current using the information on the ACS712 data sheet. Commented May 23, 2016 at 1:08
• "as raw input without any analog to digital conversion" - this makes no sense. The raw input is an analog voltage, not numbers. The numbers you read (from 505 to 520) are the raw output of the ADC. They will vary due to noise in the sensor and in the ADC, power supply etc. To get stable numbers you will have to take several readings and average them. Commented May 23, 2016 at 3:22

$${ADC\_Value \over ADC\_MAX} \times ADC\_Volt\_Scale = ADC\_Voltage$$
$$(ADC\_Voltage - 2.5V) \div mV\_per\_mA\_CONST = Curent\_in\_mA$$