An ADC (Analog-to-Digital Converter) chip is a dedicated integrated circuit that samples continuous analog voltage signals and translates them into discrete digital binary values that a microcontroller can process. In a real circuit, an ADC chip changes an infinitely variable physical voltage (like 1.4583V from a thermocouple) into a finite binary integer (like 01101010), allowing digital logic to make decisions based on physical reality. Without it, a microcontroller is blind to the analog world, restricted only to digital highs and lows.
Common Confusion: Resolution vs. Accuracy vs. Sample Rate
Beginners commonly confuse an ADC chip's resolution (the number of bits, dictating how many slices the voltage range is divided into) with its accuracy (how close the measured slice is to the true physical voltage, dictated by noise and reference drift) or its sampling rate (how many times per second it can take a reading). A 24-bit ADC has massive resolution, but if its voltage reference drifts by 5mV due to heat, its accuracy is compromised regardless of the bit count.
The Core Function: Bridging Physics and Logic
Most modern microcontrollers, including the ESP32-WROOM-32 and the ATmega328P (Arduino Uno), have internal ADCs built into the silicon. However, these internal ADCs are general-purpose compromises. They share silicon real estate with the CPU, WiFi radios, and memory controllers, making them highly susceptible to internal digital noise.
When you introduce a dedicated, external ADC chip to your board, you are physically separating the sensitive analog sampling circuitry from the noisy digital switching environment of the microcontroller. External ADCs utilize dedicated voltage references, shielded internal architectures, and programmable gain amplifiers (PGAs) that internal MCU ADCs simply lack. This physical separation is what changes a jittery, unusable sensor reading into a stable, high-precision data stream.
The Math: Calculating Step Size and Resolution
To understand why an external chip matters, you have to look at the math behind the conversion. The smallest voltage change an ADC can detect is called the Least Significant Bit (LSB), or step size. The formula is:
LSB = Voltage Reference / (2^Resolution - 1)
Let's run a worked numeric example comparing a standard internal MCU ADC against a popular external I2C ADC chip, the Texas Instruments ADS1115 (a 16-bit ADC).
| Parameter | ESP32 Internal ADC | External ADS1115 ADC Chip |
|---|---|---|
| Resolution | 12-bit (4,095 steps) | 16-bit (65,535 steps) |
| Voltage Reference (Vref) | 3.3V (nominal) | 4.096V (internal precision) |
| Step Size (LSB) | 3.3V / 4095 = 0.805 mV | 4.096V / 65535 = 0.0625 mV (62.5 µV) |
With the ESP32's internal ADC, a voltage change of 0.5 mV is completely invisible; the digital output won't change at all. With the external ADS1115 chip, that same 0.5 mV change spans 8 distinct digital steps, allowing your code to track minute physical changes. According to the Texas Instruments ADS1115 datasheet, this external chip also features a programmable gain amplifier (PGA) that can scale the reference down to ±256mV, shrinking the LSB down to an astonishing 7.8 µV per step.
Where You Meet External ADC Chips in Practice
You will typically reach for an external ADC chip in practice when your project involves precision physical measurements that internal silicon cannot handle reliably. Common applications include:
- Battery Management Systems (BMS): Measuring LiFePO4 cell voltages where a 20mV difference dictates whether a cell is at 40% or 60% State of Charge (SoC).
- Load Cells and Strain Gauges: Digital scales require measuring microvolt-level changes from a Wheatstone bridge. Internal ADCs lack the resolution and the PGA required to amplify these signals.
- DC Current Monitoring: Reading the voltage drop across a low-value shunt resistor (e.g., 50mV at full scale) to measure high amperage without inducing significant voltage drop in the power line.
- Audio Sampling: While internal ADCs top out around 10-20 kS/s (kilosamples per second) with high noise floors, dedicated audio ADC chips (like the PCM1808) sample at 96 kS/s with high signal-to-noise ratios.
For hobbyists and prototypers, breakout boards from manufacturers like Adafruit or SparkFun make integrating these chips trivial, typically communicating via I2C or SPI and costing between $4 and $12.
Bench Walkthrough: Fixing a Noisy DC Current Sensor
Theory is great, but let's look at a real-world scenario where relying on an internal ADC fails, and how swapping to an external chip solves it.
- The Setup: We are building a solar charge controller monitor using an ESP32. To measure the DC current flowing to the battery bank, we installed a 100A, 75mV shunt resistor in the negative return path. At 100A, the shunt drops 75mV. At 1A, it drops 0.75mV. We wired the shunt's signal leads directly to GPIO 34 (an ADC input) on the ESP32.
- The Numbers: The ESP32 internal ADC has a 3.3V reference and 12-bit resolution (0.805mV per step). Our 1A load generates only 0.75mV. This means a 1A change is less than a single digital step. To read a 5A load (3.75mV), the ESP32 only has about 4 or 5 discrete steps to work with across the entire 0-100A range.
- The Outcome: When reading the serial monitor, the current values jump erratically from 0A to 4A to 2A, even with a steady resistive load. Furthermore, the ESP32's internal ADC is notoriously non-linear near 0V, meaning a true 0A load often reads as 12mA to 30mA of 'ghost' current.
- What Went Wrong & The Fix: The internal ADC lacked both the resolution and the low-end linearity to read a 75mV full-scale signal referenced to a 3.3V scale. We de-energized the circuit and wired an external ADS1115 ADC chip via I2C. We configured the chip's PGA to the ±256mV range. This gave us an LSB of 7.8 µV. A 1A load (0.75mV) now spans roughly 96 distinct digital steps. The readings stabilized immediately, resolving down to 0.1A increments with zero ghost current at zero load.
Expert Tip: Watch Your Source Impedance
When wiring any ADC chip, check the sensor's output impedance. ADCs use an internal sampling capacitor that must charge up during the acquisition window. If your sensor has a high output impedance (like a raw thermistor voltage divider with 100kΩ resistors), the capacitor won't charge fully in time, resulting in lower-than-actual readings. Keep source impedance under 10kΩ, or buffer the signal with an op-amp configured as a voltage follower before it hits the ADC pin.
Frequently Asked Questions About ADC Selection
Can I just use a voltage divider to step down 5V into my 3.3V ESP32 internal ADC?
Yes, for rough measurements like checking if a 12V battery is dead. However, a voltage divider introduces thermal noise, scales down your resolution proportionally, and relies on the ESP32's already noisy internal 3.3V reference. For precision, use an external ADC chip powered by 5V, read the 5V signal natively, and pass the digital data back to the ESP32 via I2C level shifters.
What is the difference between I2C and SPI ADC chips?
I2C ADC chips (like the ADS1115) use only two wires (SDA, SCL) and are perfect for low-speed, high-precision sensors like temperature or static current monitoring. SPI ADC chips (like the MCP3008 or ADS8688) use four wires (MOSI, MISO, SCK, CS) and support much higher clock speeds, making them mandatory for high-speed data acquisition, audio sampling, or reading multiplexed sensor arrays where sample rate is critical.
Why does my external ADC chip read slightly different voltages than my multimeter?
According to Analog Devices' guide on ADC accuracy, this discrepancy usually stems from the multimeter's input impedance (typically 10MΩ) loading the circuit differently than the ADC's sampling network, or from ground loops. Always ensure the ADC chip's analog ground (AGND) shares a single, star-grounded point with the sensor and the microcontroller to prevent ground-loop offsets.
Do I need decoupling capacitors on an external ADC breakout board?
Most commercial breakout boards (like those from Adafruit) include the necessary 0.1µF decoupling capacitors near the VCC pin. However, if you are integrating a raw surface-mount ADC IC onto a custom PCB, you must place a 100nF ceramic capacitor as physically close to the VDD pin as possible, alongside a bulk 10µF tantalum capacitor to supply the instantaneous current spikes required during the sampling phase.






