What is the lowest voltage that a microcontroller can successfully read on the analog pin?

See data sheet section 28.8 ADC Characteristics: typical offset error 2 LSB and typical gain error 2 LSB. Absolute accuracy (INL, DNL, gain error, offset error, etc) could be typically 4.5 LSB under some operating conditions. These are Typical, not Min/Max guaranteed specs. So yes it’s pretty much normal behavior. You can buy an external ADC that has guaranteed min/max performance specs. But the internal ADC trades convenience for performance. Oh and by the way, your multimeter probably has its own measurement error specs, check the booklet it came with.


Aside from the theoretical and worst-case chip specs mentioned elsewhere, there's also a possible source of error in the voltage drops across copper traces.

Grounds are not equipotential at mV level with currents in the mA level or higher flowing through typical 1oz copper, so you could be reading that voltage drop. When you measure the voltage going into the chip put the negative lead of your meter directly on the GND pin nearest the Aref pin.


The ADC will have some zero offset on it, and so will any signal conditioning electronics (e.g. an op-amp) around it.

If you need accurate ADC measurements, it is usual to apply some self-calibration. On power-on, the signal input will be disconnected temporarily from the ADC, and the micro checks the ADC reading with a guaranteed 0V input. The micro can then subtract that value from real ADC readings, to get the actual voltage on the input.

For applications which need even better measurement accuracy, it is also common to add a further self-calibration stage at power-on where a known reference voltage was switched onto the signal input temporarily. By knowing the actual voltage, you can scale the ADC reading up or down as required. If you only have an ADC in the system then this is not needed, because ADCs on their own are accurate enough. However if you have some kind of signal conditioning circuit before the ADC, this will correct for gain errors due to component tolerances in the rest of the circuit.