For a standard 12-bit ADC with a 3.3V reference voltage, the exact resolution (Least Significant Bit, or LSB) is 0.805 mV per step. The formula used to derive this is LSB = V_ref / 2^n. Substituting our baseline values: 3.3V / 2^12 = 3.3 / 4096 = 0.000805V. This calculation assumes a unipolar input range (0V to 3.3V) and an ideal noise floor. If your reference shifts to 5V, that same 12-bit resolution degrades to 1.22 mV per step. Below, we break down the exact conversions, how scaling for high-voltage mains destroys your primary-side resolution, and exactly which silicon to pick for your bench.

The Core Conversion: Bits and Volts to Millivolts

The resolution of an analog to digital converter is strictly fixed by two assumptions: the reference voltage (V_ref) and the bit-depth (n). While some textbooks use 2^n - 1 to represent the maximum digital code, modern datasheets from manufacturers like Texas Instruments use 2^n to define the actual step size (LSB) between codes. We use 2^n here because it represents the physical voltage quantum the ADC adds for every 1-bit increase in the digital output.

Bench Tip: Never confuse resolution with accuracy. A 16-bit ADC might resolve 0.05 mV steps, but if its offset error is ±2 mV, those fine steps are marching up the wrong hill.

Here is the exact resolution for neighboring bit-depths (±20% range around our 12-bit baseline) assuming a fixed 3.3V V_ref:

Bit-Depth (n) Total Steps (2^n) Resolution (LSB) Common Silicon / Use Case
10-bit 1,024 3.222 mV ATmega328P (Arduino Uno internal)
11-bit 2,048 1.611 mV Legacy sensor interfaces
12-bit 4,096 0.805 mV ESP32 / STM32 internal ADCs
13-bit 8,192 0.402 mV Sigma-delta audio front-ends
14-bit 16,384 0.201 mV Precision lab equipment (e.g., AD7940)

Scaling for Mains: 120V vs 230V vs 3-Phase

When you move from low-voltage DC to measuring AC mains, you must scale the voltage down to fit the ADC's 0-3.3V input window using a voltage divider or potential transformer (PT). This scaling factor brutally multiplies your LSB on the primary (mains) side. The conversion shifts dramatically depending on the peak voltage of your target system.

Assuming our 12-bit, 3.3V ADC (0.805 mV LSB), here is how your primary-side resolution shifts across global mains standards:

  • 120V AC (North America): Peak voltage is ~170V. Scaling factor to 3.3V is 51.5x. Your primary resolution becomes 0.805 mV × 51.5 = 41.4 mV per step.
  • 230V AC (EU/UK/AU): Peak voltage is ~325V. Scaling factor is 98.4x. Your primary resolution drops to 0.805 mV × 98.4 = 79.2 mV per step.
  • 400V 3-Phase (Industrial): Line-to-line peak voltage is ~565V. Scaling factor is 171x. Your primary resolution falls to 0.805 mV × 171 = 137.6 mV per step.

If your application requires detecting a 50 mV sag on a 400V 3-phase line, a 12-bit ADC is mathematically incapable of seeing it. You must increase n (bit-depth) or use a dedicated isolated measurement IC.

When the Conversion Becomes Meaningless (The ENOB Trap)

The mathematical LSB conversion becomes entirely meaningless when your circuit's noise floor exceeds the LSB size. This is defined by the Effective Number of Bits (ENOB). According to Analog Devices design guidelines, a nominal 16-bit ADC operating in a noisy switching environment might only yield 12 bits of ENOB.

If your power supply introduces 5 mV of peak-to-peak ripple, and your 14-bit ADC has an LSB of 0.201 mV, the bottom 4 to 5 bits are just digitizing your power supply noise. In this scenario, paying a premium for a 14-bit or 16-bit part is a waste of budget. The conversion is meaningless until you implement proper analog front-end filtering (RC low-pass) and use a dedicated low-dropout regulator (LDO) for the V_ref pin.

Decision Path: Picking the Right ADC Part Number

Use this decision tree to terminate your part selection process. Do not default to the microcontroller's internal ADC unless your accuracy requirement is loose (±5%).

If Your Requirement Is... And Your Interface Is... Then Pick This Exact Part Why This Wins
Basic UI pots, battery voltage (±2% accuracy) Internal MCU pins STM32G4 Internal 12-bit Zero BOM cost, hardware oversampling built-in.
12-bit precision, 5V logic, SPI bus SPI (up to 20 MHz) Microchip MCP3008 Cheap (~$2.50), 8 channels, perfect for Arduino 5V systems.
16-bit precision, I2C, differential inputs I2C (up to 860 SPS) Texas Instruments ADS1115 Internal PGA, programmable gain, ~$3.00 on Adafruit breakouts.
24-bit load cells / strain gauges Proprietary 2-wire serial TI ADS1232 or HX711 Built-in 128x PGA specifically designed for Wheatstone bridges.

Default Recommendation: If you are unsure and need better resolution than an Arduino Uno's internal 10-bit ADC, buy an ADS1115 breakout board. It solves 90% of hobbyist and prototyping precision problems via I2C without requiring complex SPI timing code.

FAQ: ADC Resolution Edge Cases

Why do some datasheets say 12-bit but the output is 16-bit left-justified?
Silicon vendors often package a 12-bit ADC core inside a 16-bit communication register to align with standard SPI/I2C byte boundaries. The bottom 4 bits will always read as zero. Your resolution calculation remains based on the 12-bit core (2^12), not the 16-bit register.

Does a bipolar (+/- 5V) input change the LSB formula?
Yes. If the ADC measures from -5V to +5V, the total voltage span is 10V. The formula becomes LSB = Total_Span / 2^n. For a 12-bit ADC over a 10V span, the LSB is 10 / 4096 = 2.44 mV, which is significantly worse than a unipolar 0-5V setup. See the All About Circuits ADC guide for deeper math on bipolar sign-magnitude vs two's complement outputs.

Can I just software-average (oversample) to get more bits?
Yes, but with strict limits. Oversampling by a factor of 4 yields exactly 1 extra bit of resolution, provided the input signal has at least 1 LSB of natural white noise (dither) to toggle the lowest bit. Averaging 1000 samples of a perfectly stable, noiseless DC signal will not magically create a 13th bit; it will just give you the exact same 12-bit number 1000 times.