# Fluctuating ADC results - is it normal and characterized in a datasheet?

As I have been reading [1], there exist four different DAC error types, which contribute to the overall error:

• Offset Error
• Gain Error
• INL Error
• DNL Error

Is my understanding correct, that these are static errors?

So if I was to take a measurement of a stable analog voltage, the obtained result by the ADC has a certain error. However, If I am to repeat the measurement x times, I would still obtain the same result, no fluctuation?

Background:

I am using a 10 bit ADC, and my voltage reading fluctuate all the time. The ADC accuracy specs are:

• Integral Nonlinearity INL ±0.5 LSB (typ) ±1 LSB (max)
• Differential Nonlinearity DNL ±0.25 LSB (typ) ±1 LSB (max)
• Offset Error ±1.5 LSB max
• Gain Error ±1.0 LSB max

I took multiple readings with a voltage divider formed of 2 1k Ohm resistors, sourced by 3v3 on a raspberry pi 3.

The results are (left column is the abs. frequency, right col gives the voltage value):

      4 1.633887
14 1.637109
57 1.640332
7927 1.643555
7585 1.646777
9042 1.650000
605 1.653223
9 1.656445
2 1.659668


With a better circuit board would I ideally only obtain the same value all the time, regardless of how large INL, DNL and other errors are?

Thank you!

Edit:

As suggested by @JRE and @JustMe the unclean voltage and breadboard setup was indeed causing all the fluctuations. I am still using the poor setup on a breadboard as before where I had the fluctuating readings.

For anyone else with the same problem, a capacitor next to the ADC on the breadboard (as it would have been suggested for PCB designs anyway) fixed things nicely (used a Panasonic FR capacitor with 270 uF). My readings are now repeatedly 1.65 V without any fluctuations.

• Which ADC is it? Make and model.. Commented Jun 11, 2020 at 21:44
• @Justme Sorry. It is a Microchip MCP3004
– 0laf
Commented Jun 11, 2020 at 21:47
• What is your sampling rate? Do you have bypass caps or supply filters? Schematic? Commented Jun 11, 2020 at 21:54
• 3.3Von a Pi is probably anything but clean. Your problem has less with the ADC and more to do with a noisy signal.
– JRE
Commented Jun 11, 2020 at 22:01
• @Justme - It is a very simple circuit on a breadboard - also fed by the 3.3V of the raspberry pi pmic (not a linear regulator). I will try to improve all that later - Foremost I just want to make sure I understand the accuracy values in the datasheet correctly.
– 0laf
Commented Jun 11, 2020 at 22:03

Yes, the ADC lists those parameters under "DC Accuracy", meaning even if these DC parameters are non-ideal, it should give same value when sampling an ideal noise-free DC voltage source, assuming it is connected to ideal noise-free DC power supply. Some other additional assumptions may apply as well.

So, in light of this, under non-ideal conditions, fluctuating results due to external sources of fluctuations is normal, but they can't be characterized in the datasheet, because the datasheet won't know what signal you are measuring, how noisy the ADC power supply, and how the signal or supplies fluctuate.

• I am unsure why it got downvoted, could the downvoter please explain? - To me it seems to answer exactly what I wanted to ask. :-)
– 0laf
Commented Jun 11, 2020 at 22:50

You have a few contributions that cause AC offsets. Generally wrapped up under the term quantisation noise.

PSRR (power supply ripple rejection) from any noise on your supply rails

Reference noise, the reference used in ADC's have some output noise. As you may be measuring in relation to that reference. This noise ends up effecting the measurement

Layout related factors. E.g. the ground shifting slightly between the ADC and the signal source due to currents from other devices assuming its only a single ended measurement.