Today I was playing around with arduino analog voltage ranges, the error in output with respect to a digital multimeter started to happen when the reading was around 0.0014volts. How much low an arduino can read?

  • What reference voltage do you use? – chrisl Jun 9 '18 at 18:05
  • you could use an opamp to scale (amplify) low voltages like (0-0.05) to a 0-5v range. – dandavis Jun 10 '18 at 6:32
  • There are other possibilities to make more precise readings: one can use Arduino with an external ADC with better voltage resolution (e.g. 16 bit), or average several readings to reduce measurement noise. – MichaelT Jun 10 '18 at 9:30
  • If you are measuring lower voltages, you can use the internal 1.1 band gap voltage as a reference voltage. – Gerben Jun 10 '18 at 11:44

The Arduino Uno uses a processor containing a 10 bit ADC. This means the ADC can resolve (if we do not consider noise) 2 to the 10th or 1024 voltage levels between zero and the voltage supplied to the Arduino Uno at the AREF pin. There is a good explanation of the AREF pin in this stackexchange.com question / answer. It is common practice to supply the AREF with voltages lower than the positive rail the processor is operating at to improve resolution of expected lower voltages. For example, if you do not expect to measure voltages higher than 3.3 volts on a 5 volt Arduino, use the 3.3 volt supply as a reference. Relative to using a 5 volt reference, using a 3.3 volt reference decreases your granularity from 0.00489 to 0.00322 volts per step.

Of course there is a lot of noise in most ADC circuits. Finding the average of many ADC readings helps mitigate this problem. Consider using exponential averaging.


You divide your reference voltage by 1024. That tells you what the step size is. The smallest you can measure is an ADC reading of 1. So for say a 5V reference that works out to 0.00488V

Your Answer

