Can an Arduino Analog Pin Read .01 of a Volt?

Hi all,

I am building a voltage divider with R1 = 70 and R2 = 10.
24V = 3V
18V = 2.25V
12V = 1.50V
6V = 0.75V
3V = 0.38V
1V = 0.13V
0.1V = 0.01V

The nice thing about this is you can just times the received value by 8 to get the original value before the voltage was dropped.

What I need to know is, can the Arduino's analog pin read .01 of a volt?

Thanks,

Zeb

Did you try it? That's the fun of Arduinos, easy to test this type of things.

The ADC has a 10 bit resolution (1024 steps). 5V / 1024 = 0.0049 V per step = 4.9 mV per step.

Hi sterretje thanks for your help,

The only way I can think of to test it is to use a potentiometer, but I don't have one yet! But I take it that the Arduino's analog pin can read in increments of 0.0049?

Zeb

I also wanted to check that using a voltage divider wasn't going to cause any problems with R1 = 70 and R2 = 10. Should that cause any problems?

Hi.

70 what ?

You need to check availability before you're going to plan things like this.
70 is not a standard value for resistors (68 is though).
10 is a standard value, but you need another balance if you are using 68 instead of 70.
12 and 15 are the next values, so using 12 and 68 would get close to what you've been planning.
But you need to check it still does what you've been planning.

Next, way before building, you should do some calculations.
Ohm's law states U= I * R.
U = voltage, I = current, R = resistance.

Highest voltage you mentioned, is 24 volts.
Total resistance is 80 something.
You can now calculate what current would be drawn by your setup:

U=I*R; so I=U/R

Do the calculations, and keep an eye on what your chosen components can handle.

Power (wattage): P=U*I, you will need that too

Hi MAS3,

Sorry the resistors are 70K and 10K. I have been using the tool on this webpage to calculate the output voltage https://bit.ly/30pkIQW.

I have not calculated the watts and current drawn so I should do that.

Thanks,

Zeb

I would use a 68k in series with a 2.2k (70.2k) for R1 and test all my 10k to see if I had a 10025 Ohm for R2.
10025 / (10025 + 70200) = 0.124961047055 * 24 = 2.99906512932.
1 / 0.124961047055 = 8.0024937656. :slight_smile:

You did not mention the board/processor. From the 328P datasheet (emphasis added)

The ADC is optimized for analog signals with an output impedance of approximately 10 kOhm or less. If such a source is used, the sampling time will be negligible. If a source with higher impedance is used, the sampling time will depend on how long time the source needs to charge the S/H capacitor, with can vary widely. The user is recommended to only use low impedance sources with slowly varying signals, since this minimizes the
required charge transfer to the S/H capacitor.

So if you're using a 328P, I would at least divide your resistor values by 10 (7k and 1k based on your original example or even a bit less).

And next you will need to check, as mentioned, if your source can deliver sufficient current for that.

I think voltage divider have equivalent resistance equal to the used resistor in parallel. From the Arduino analog input the divider acts as a voltage source with resistance less than 10k. (Exactly 700/80 ~ 9k).

If you switch to the [u]1.1V reference[/u] you can get approximately 1mV resolution, which will be more accurate at low voltages.

Then, if you read 1023 you can switch back to the regular 5V reference and re-read.

70 Ohms + 10 Ohms in a divider, so Rtotal = 80 Ohms. If you apply 24 Volts your current will be 24 / 80 = 0.3 Amp or 300 mA. In this case with the 70 Ohms on top to 24 volts and 10 ohms on bottom to ground the 70 Ohm resistor will be dropping about 21 volts with 300 mA of current. 21 * (0.3*0.3+ = 6.3 Watts so I hope you plan on some high power (at least 10 watt) resistors.

If the divider is only going to be a divider with an output to a high impedance uC like an Arduino you may want to think about maybe 70K and 10K That or just get a 10K pot and adjust it for what you want. I use a pair of 10K pots with an ADS1115 using differential inputs and it works just fine and I read my ADS1115 with an Arduino. Anyway, you may want to rething your resistor scheme.

Ron

Hi all,

Thanks very much for your help!

Thanks again,

Zeb