For a standard 10-bit analog to digital converter resolution with a 5.0V reference voltage, the step size (Least Significant Bit, or LSB) is exactly 4.88 mV (0.00488V). The formula used to convert bit-depth to voltage resolution is V_LSB = V_ref / 2^n. Substituting our baseline values: 5.0V / 2^10 = 5.0V / 1024 = 0.00488V. If you are using a 3.3V logic microcontroller (like an ESP32 or STM32), that same 10-bit resolution shifts to 3.22 mV per step. Below, we break down the exact conversions, real-world chip data, and the hidden assumptions that dictate whether your ADC is actually measuring what you think it is.
The Core Conversion: Bits to Millivolts
An ADC translates a continuous analog voltage into a discrete digital number. The "resolution" is the smallest voltage change the ADC can detect—its step size. To find this, you divide your total measurable voltage window (the reference voltage, V_ref) by the total number of steps the ADC can output (2^n, where n is the bit-depth).
Here is the conversion table for neighboring bit-depths (the ±20% range around the standard 10-bit baseline), showing how the step size shrinks as resolution increases across the two most common hobbyist reference voltages.
| Bit-Depth (n) | Total Steps (2^n) | Step Size @ 5.0V V_ref | Step Size @ 3.3V V_ref |
|---|---|---|---|
| 8-bit | 256 | 19.53 mV | 12.89 mV |
| 9-bit | 512 | 9.76 mV | 6.44 mV |
| 10-bit (Baseline) | 1024 | 4.88 mV | 3.22 mV |
| 11-bit | 2048 | 2.44 mV | 1.61 mV |
| 12-bit | 4096 | 1.22 mV | 0.80 mV |
Real-World ADC Resolution Reference Table
Theoretical bit-depth rarely tells the whole story on the workbench. Microcontroller manufacturers often quote high nominal bit counts, but noise, internal routing, and thermal drift reduce the Effective Number of Bits (ENOB). The table below maps popular development boards and standalone ADC ICs to their real-world LSB step sizes and practical limitations.
| Component / MCU | Nominal Bits | Default V_ref | Theoretical LSB | Practical ENOB & Notes |
|---|---|---|---|---|
| ATmega328P (Arduino Uno) | 10-bit | 5.0V (USB) | 4.88 mV | ~9.5 bits. USB rail noise often jitters the lowest bit. |
| ESP32-WROOM-32 | 12-bit | 3.3V (Internal) | 0.80 mV | ~10 bits. Notoriously non-linear near 0V and 3.3V rails. |
| Texas Instruments ADS1115 | 16-bit | 4.096V (Internal) | 0.125 mV | ~15.5 bits. Excellent I2C external ADC. Datasheet specifies programmable gain. |
| TI ADS1256 | 24-bit | 5.0V (External) | 0.000298 mV | ~19-21 bits. Sigma-Delta; resolution drops if you increase the sample rate (SPS). |
V_ref into the input pin. On an Arduino Uno (5V V_ref), feeding 6V into A0 will forward-bias internal protection diodes, potentially causing latch-up, erratic digital readings on other pins, or permanent silicon damage.
What Fixes the Answer (and When the Conversion Fails)
In AC power theory, calculating real power shifts based on 120V vs 230V systems or 3-phase configurations, and becomes meaningless without a known power factor. In ADC theory, the exact same logic applies to reference voltages and sampling architectures.
How the Answer Shifts by Reference Voltage
The bit-depth is just a ratio; the V_ref is what anchors it to physical reality.
- 3.3V vs 5.0V: As shown in the first table, dropping from a 5V to a 3.3V reference shrinks your step size, giving you finer resolution, but it also shrinks your maximum measurable voltage. You cannot measure a 4V sensor output on a 3.3V ADC without a voltage divider.
- The 4.096V Precision Trick: If you are designing a custom PCB or using an external ADC like the ADS1115, set your
V_refto exactly 4.096V. Why? Because4.096V / 2^12 (4096 steps) = exactly 1.000 mV per step. This eliminates floating-point math in your microcontroller code, allowing you to map digital values directly to millivolts using simple bit-shifting or integer multiplication.
When the Conversion is Meaningless
Calculating an LSB step size is completely meaningless under three specific conditions:
- Unknown or Noisy V_ref: If your Arduino is powered by an unregulated 9V battery through the barrel jack, the internal 5V regulator might actually be outputting 4.7V or 5.2V depending on the load. If
V_refis floating or unmeasured, your 4.88 mV calculation is a fiction. - Ignoring ENOB: The ESP32 boasts a 12-bit ADC (0.80 mV steps). However, due to internal Wi-Fi radio interference and silicon non-linearity, the lowest 2 bits are essentially noise. Treating the ESP32's internal ADC as a true 12-bit device will result in erratic sensor readings. You must design your circuit assuming 10-bit ENOB.
- Sigma-Delta ADCs without an SPS Rating: High-resolution chips (like the 24-bit ADS1256) use Sigma-Delta modulation. In these architectures, resolution and speed are inversely linked. Stating the resolution is "24-bit" is meaningless unless you also state the Samples Per Second (SPS). At 30,000 SPS, you might only get 16 bits of noise-free resolution; at 2.5 SPS, you get the full 24 bits.
Frequently Asked Questions
Q: How do I calculate the digital output value from a known analog voltage?
A: Reverse the formula. Digital_Value = (V_in / V_ref) * 2^n. For example, if you measure 2.5V on a 10-bit ADC with a 5V reference: (2.5 / 5.0) * 1024 = 512.
Q: Does a higher bit ADC always mean better accuracy?
A: No. Resolution (step size) is not accuracy. A 24-bit ADC with a 5V reference has a microscopic 0.298 µV step size, but if the ADC has an internal offset error of ±2 mV, your readings will be highly resolved (precise) but fundamentally wrong (inaccurate). Always check the Integral Non-Linearity (INL) and Offset Error specs on the datasheet, not just the bit count.






