Loading header...

ADC Resolution, Accuracy, and Errors

ADC resolution tells how many output codes exist. Accuracy tells how close the converted result is to the true input. A converter can have many bits and still produce poor measurements if reference, noise, offset, gain, linearity, timing, or layout errors dominate.

Learning Objectives

By the end of this lesson, you should be able to:

  • calculate nominal ADC LSB size;
  • distinguish resolution, accuracy, precision, and repeatability;
  • explain offset, gain, INL, DNL, noise, and missing codes;
  • use ENOB to compare real dynamic performance;
  • plan calibration and error-budget checks.

Resolution

For an N-bit ADC:

$$
\text{codes}=2^N
$$

$$
\text{LSB}=\frac{V_\text{REF}}{2^N}
$$

A 12-bit, 3.3 V ADC has:

$$
\text{LSB}=\frac{3.3}{4096}=0.805\ \text{mV}
$$

Resolution says the code spacing is about 0.805 mV. It does not prove the measurement is accurate to 0.805 mV.

For a unipolar converter, the highest output code is normally 2^N - 1. Code-to-voltage conversion is commonly estimated as:

$$
V_\text{estimate}=\frac{\text{code}}{2^N-1}V_\text{REF}
$$

Use the datasheet's exact transfer function for precision work, especially near zero scale and full scale.

Accuracy Terms

Term Meaning
accuracy closeness to true value
precision spread of repeated readings
repeatability same input gives same result under same conditions
resolution smallest ideal code step
noise-free resolution number of stable bits without code flicker

A noisy 16-bit ADC may deliver fewer stable bits than a well-designed 12-bit system for a given bandwidth.

Two words often cause confusion:

  • precision means readings cluster tightly;
  • accuracy means readings land near the true value.

A measurement can be precise but inaccurate if it repeats the same offset error. Calibration can often fix offset and gain, but it cannot fully fix noise, missing codes, bad layout, or nonlinear behavior.

Offset and Gain Error

Offset error shifts the transfer curve. Gain error changes its slope.

$$
V_\text{measured}=G V_\text{true}+V_\text{offset}
$$

Two-point calibration can remove much of offset and gain error:

$$
V_\text{corrected}=a\times\text{code}+b
$$

where a and b are found from known calibration points.

If calibration point 1 is (code_1, V_1) and point 2 is (code_2, V_2), then:

$$
a=\frac{V_2-V_1}{\text{code}_2-\text{code}_1}
$$

$$
b=V_1-a\text{code}_1
$$

Store calibration constants with versioning and units. Reusing constants after changing reference voltage, divider ratio, gain setting, or ADC range is a common source of silent measurement errors.

Linearity Errors

Differential nonlinearity, DNL, describes how much each code width differs from ideal. Integral nonlinearity, INL, describes deviation from the ideal straight-line transfer curve.

Bad DNL can cause missing codes. Bad INL creates measurement error that cannot be fully removed by simple offset and gain calibration.

Linearity is usually specified in LSB. An INL of +/-2 LSB on a 12-bit, 3.3 V ADC is about:

$$
2(0.805\ \text{mV})=1.61\ \text{mV}
$$

That error may be acceptable for a battery monitor and unacceptable for a precision sensor front end.

Noise and ENOB

Noise causes code variation. For dynamic sine-wave performance, effective number of bits is estimated from SINAD:

$$
\text{ENOB}=\frac{\text{SINAD}-1.76}{6.02}
$$

If a converter has SINAD = 68 dB:

$$
\text{ENOB}=\frac{68-1.76}{6.02}=11.0\ \text{bits}
$$

Oversampling and averaging can reduce random noise when the signal is slow and the noise is not correlated, but they do not fix offset, gain, aliasing, or nonlinear distortion.

For random uncorrelated noise, averaging M samples reduces RMS noise by:

$$
\sigma_\text{avg}=\frac{\sigma}{\sqrt{M}}
$$

Every extra bit of noise-free resolution needs about 4x more averaged samples. This only works when the signal is not changing too quickly and the samples are genuinely independent.

Error Budget Example

Suppose a pressure input uses a 12-bit ADC and 3.3 V reference.

Error source Example contribution
reference initial accuracy 0.1%
divider tolerance 0.2% after calibration or precision parts
ADC gain error 0.05%
offset after calibration 1 LSB
noise 2 LSB RMS
temperature drift application dependent

The total error is not just the LSB size. For independent random-like contributors, root-sum-square is sometimes used. For guaranteed worst case, add worst directions conservatively.

Root-sum-square for independent contributors is:

$$
E_\text{RSS}=\sqrt{E_1^2+E_2^2+\cdots+E_n^2}
$$

Worst-case addition is:

$$
E_\text{WC}=|E_1|+|E_2|+\cdots+|E_n|
$$

Use worst-case limits for safety, billing, and pass/fail guarantees. Use RSS only when the assumptions about independent error sources are valid.

Practical Verification

  • Short input to ground and record offset codes.
  • Apply a precision mid-scale voltage.
  • Apply a near-full-scale voltage below clipping.
  • Log readings across temperature if accuracy matters.
  • Compare raw code noise with expected sensor noise.
  • Verify reference voltage with the intended load active.

For a production-like test, log raw codes rather than only converted engineering units. Raw codes make it easier to separate firmware scaling mistakes from analog measurement problems.

Common Mistakes

  • Advertising bit count as measurement accuracy.
  • Calibrating offset but ignoring gain error.
  • Averaging aliased noise and believing it disappeared.
  • Ignoring reference drift in temperature-changing systems.
  • Comparing ADCs only by headline sample rate and resolution.
  • Reporting too many decimal places after conversion, implying accuracy the hardware does not have.
  • Mixing percent of reading, percent of full scale, volts, millivolts, and LSB without converting them to one error budget.

Summary

Resolution is code spacing; accuracy is total measurement correctness. Real ADC results include offset, gain, INL, DNL, noise, reference error, drift, source impedance effects, and layout coupling. Use error budgets, calibration, and bench verification to prove the measurement meets the application need.

Further Reading

Mind Map

mindmap root((ADC Errors)) Resolution Codes equal 2 power N LSB equals Vref over 2 power N Code max equals 2 power N minus 1 Code spacing only Not total accuracy Static errors Offset Gain INL DNL Missing codes Gain model Vmeas equals G Vtrue plus Voffset Dynamic errors Noise SINAD ENOB equals SINAD minus 1.76 over 6.02 Jitter Distortion Averaging reduces random noise by sqrt M Calibration Zero point Full scale point Slope and intercept a equals delta V over delta code Temperature check Error budget RSS for independent errors Worst case for guarantees Convert units first Common mistakes Bits equal accuracy Ignoring reference drift Averaging aliasing No error budget False decimal precision