ADC accuracy
Work out effective bits from SINAD or measured noise, build a worst-case and RSS error budget from the reference, gain, offset, INL, and divider tolerances, check whether a divider settles the ADC's sample capacitor in time, and plan oversampling.
Added
How to use it
Values accept engineering notation (100k, 8p, 964n).
-
ENOB & noise — the ideal SNR of an N-bit converter is 6.02·N + 1.76 dB, and the effective number of bits is ENOB = (SINAD − 1.76)/6.02 (Analog Devices MT-003). From measured noise: hold the input steady and take the standard deviation σ of many readings in counts; the effective resolution is N − log2σ and the noise-free resolution (the bits that never flicker) N − log2(6.6σ).
-
Error budget — every error as a fraction of full scale: the reference’s initial tolerance and its drift (tempco × temperature span), the ADC’s gain, offset, and INL, the divider’s ratio error from its resistor tolerances (computed exactly; about 2·tol·(1 − ratio)), and ±½ LSB of quantization. Worst case adds them; RSS (root-sum-square) is the realistic figure for one board. Gain and offset can be calibrated out; INL, drift, and noise cannot.
-
Loading & settling — an ADC samples by charging a small capacitor Cs through a switch. To settle within ½ LSB the source must charge it in t = (Rsource + Rswitch)·Cs·ln(2N+1) during the acquisition time. The tool shows the source resistance a divider presents (and the ratio error from an ADC input resistance), whether it settles, the largest source resistance that would, and the alternative: a capacitor at the pin of at least Cs·2N+1, which supplies the charge but slows the input to τ = Rsource·C. Presets use STM32F1 and ATmega328P datasheet figures.
-
Oversampling — each extra bit needs four times the samples (Atmel AVR121, Silicon Labs AN118), and averaging n samples gains 10·log10(n) dB — but only with at least about 1 LSB of random noise to dither the input, and it does not remove INL or reference errors.
For LSB size, voltage ↔ counts, and divider values for a voltage range, see the
ADC tab of the circuit tool. ESP32 ADCs are notably non-linear near the
ends of their range: use the calibrated driver (esp_adc_cal, analogReadMilliVolts), and ADC1 when
Wi-Fi is on.
For the sensor in front of the ADC see thermistors and RTDs and current sensing.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.