Many microcontrollers include analog inputs, so it is tempting to connect every analog sensor directly to the board. For simple projects, that often works well. But when accuracy, resolution, stable readings or small voltage changes matter, an external analog-to-digital converter such as the ADS1115 can be a much better choice.
This article compares built-in microcontroller ADC inputs with an external ADS1115 ADC module from a practical Arduino-compatible project point of view.
What an ADC Does
An ADC, or analog-to-digital converter, converts an analog voltage into a number that a microcontroller can process.
- A potentiometer produces a changing voltage
- A sensor may output a voltage proportional to temperature, pressure or light
- A current shunt amplifier may output a small measurement voltage
- The ADC converts that voltage into a digital value
The quality of that conversion depends on resolution, reference voltage, noise, input range, board layout and software handling.
Built-In Microcontroller ADC: Simple and Convenient
Most Arduino-compatible boards have at least some analog input pins. These are built into the microcontroller and can be read with functions such as analogRead().
- No extra module required
- Simple wiring
- Easy beginner examples
- Good for potentiometers and rough sensor readings
- Fast enough for many simple tasks
- Quality depends strongly on the microcontroller and board design
The built-in ADC is often the right choice when the project only needs approximate readings or user input values.
ADS1115: External 16-Bit I2C ADC
The ADS1115 is a popular external ADC used in Arduino, ESP32, Raspberry Pi and many other microcontroller projects. It communicates over I2C and provides higher resolution than many built-in ADCs.
- 16-bit ADC
- I2C interface
- Four single-ended inputs or two differential input pairs
- Programmable gain amplifier
- Useful for small voltage measurements
- Good library support
The ADS1115 is useful when the project needs better resolution, differential measurements or more stable analog readings than the microcontroller ADC can provide.
Main Comparison Table
| Feature | Built-In Microcontroller ADC | ADS1115 External ADC |
|---|---|---|
| Hardware required | No extra ADC module | External I2C ADC module required |
| Typical resolution | Often 10-bit to 12-bit, depending on microcontroller | 16-bit converter |
| Interface | Direct analog input pin | I2C |
| Wiring complexity | Lowest | Slightly higher, but only SDA/SCL plus power |
| Differential input support | Usually no, or limited depending on microcontroller | Yes, two differential pairs or configurable input combinations |
| Small signal measurement | Often limited | Better, especially with programmable gain |
| Speed | Often faster for simple readings | Slower than many internal ADCs, but suitable for many sensors |
| Best for | Simple sensors, knobs, rough voltage readings | Higher-resolution measurements, small voltage changes and differential readings |
Resolution: Why Bits Matter
ADC resolution describes how many steps the input voltage range is divided into. A 10-bit ADC has 1024 steps. A 12-bit ADC has 4096 steps. A 16-bit ADC has 65536 steps.
More resolution does not automatically mean perfect accuracy, but it allows the converter to see smaller changes in voltage.
| ADC Resolution | Number of Steps | Practical Meaning |
|---|---|---|
| 10-bit | 1024 steps | Common on classic Arduino boards, fine for many simple readings |
| 12-bit | 4096 steps | Better detail, common on many modern microcontrollers |
| 16-bit | 65536 steps | Much finer step size, useful for small changes and measurement projects |
For a simple knob, 10-bit resolution may be enough. For a small sensor voltage or a shunt measurement, higher resolution can be very helpful.
Accuracy Is Not Only Resolution
A common mistake is to compare only the number of bits. Resolution tells you how many steps the ADC reports, but accuracy depends on more than that.
- Reference voltage stability
- Electrical noise
- Input impedance
- PCB layout
- Power supply quality
- ADC linearity and offset error
- Sensor accuracy
An external ADC module does not magically make every sensor accurate, but it can provide a much better measurement foundation than many built-in ADC inputs.
Reference Voltage and Stability
The ADC compares the input voltage to a reference. If the reference voltage changes, the reading changes too.
Many beginner projects use the microcontroller supply voltage as the ADC reference. This is easy, but not always accurate. If the 5V or 3.3V rail moves, the ADC result moves with it.
- USB voltage can vary
- Onboard regulators may not be precision references
- WiFi modules can cause supply dips
- LEDs, relays and motors can add noise
External ADC modules such as the ADS1115 can improve measurement behavior, especially when combined with careful wiring, filtering and stable sensor supplies.
Single-Ended vs Differential Measurements
Most basic analog inputs are used as single-ended inputs. This means the voltage is measured relative to ground.
The ADS1115 can also measure differentially. In a differential measurement, the ADC measures the voltage difference between two input pins.
- Single-ended: measure one input relative to ground
- Differential: measure the difference between two inputs
Differential measurement can be useful for small sensor signals, bridge sensors, shunt voltages and signals where the difference between two points matters more than the absolute voltage to ground.
Programmable Gain
The ADS1115 includes a programmable gain amplifier. This allows the ADC input range to be adjusted for smaller signals.
For example, if the signal only changes by a few hundred millivolts, using a smaller input range can make better use of the ADC resolution.
- Useful for small voltage signals
- Useful for current shunt measurements
- Useful when the full supply voltage range is not needed
- Requires attention to maximum input limits
Programmable gain is one of the biggest practical reasons to use an ADS1115 instead of only a built-in ADC.
Speed and Sampling Rate
The ADS1115 is not meant for very high-speed waveform capture. It is excellent for slower measurements such as sensors, voltages, currents, pressure, load cells with suitable front-end circuits and similar signals.
- Good for slow sensors
- Good for panel meters
- Good for battery voltage monitoring
- Not suitable for oscilloscope-style high-speed capture
- Not ideal for audio sampling
For high-speed analog sampling, a different ADC or microcontroller platform may be required.
Noise and Filtering
Higher-resolution ADCs can also reveal more noise. This is not a problem with the ADC; it simply shows that the analog signal is not perfectly stable.
- Use short analog wires when possible
- Keep analog wiring away from switching signals
- Add simple RC filtering when suitable
- Average multiple readings in software
- Use good grounding practices
- Keep motors, relays and high-current LEDs away from sensitive analog inputs
Good analog measurement is a system design problem, not only an ADC choice.
Input Voltage Limits
Neither a built-in ADC nor an ADS1115 input should be connected to voltages outside its allowed range. ADC inputs are not protected voltmeter terminals.
- Check the maximum input voltage
- Do not exceed the supply rails unless the datasheet allows it
- Use resistor dividers for higher voltages
- Use protection components when measuring external signals
- Use isolation where safety requires it
For measuring batteries or power supplies above the ADC input range, a properly designed voltage divider is required.
I2C Bus Considerations
The ADS1115 communicates over I2C. This makes wiring easy, but the I2C bus must be designed correctly.
- SDA and SCL need pull-up resistors
- All devices on the bus need unique addresses
- Bus voltage must match connected devices
- Long wires can cause communication problems
- I2C speed may need to be reduced for difficult wiring
In modular systems, the ADS1115 can share the I2C bus with RTC modules, displays, DACs, I/O expanders and other sensors.
When the Built-In ADC Is Enough
- Reading a potentiometer
- Reading a light sensor where approximate value is enough
- Reading a simple analog joystick
- Detecting whether a voltage is above or below a threshold
- Battery level monitoring where rough accuracy is acceptable
- Fast simple readings where high precision is not required
For many beginner and control projects, the built-in ADC is perfectly adequate.
When the ADS1115 Makes Sense
- You need higher resolution
- You need differential measurements
- You are measuring small voltage changes
- You want programmable gain
- Your microcontroller ADC is noisy or poorly suited to the job
- You need more analog inputs on an I2C bus
- You want the same ADC behavior across different microcontroller platforms
The ADS1115 is especially useful when the analog measurement is an important part of the project rather than a rough input.
Choosing by Project Type
| Project Type | Good Choice | Reason |
|---|---|---|
| Potentiometer menu knob | Built-in ADC | Precision is not critical |
| Analog joystick | Built-in ADC | Simple position reading usually does not need 16-bit resolution |
| Battery voltage monitor | Built-in ADC or ADS1115 | Built-in ADC for rough level; ADS1115 for better measurement detail |
| Current shunt measurement | ADS1115 or dedicated current-sense ADC/module | Small voltage differences benefit from differential input and gain |
| Sensor voltage with small changes | ADS1115 | Higher resolution and programmable gain are useful |
| High-speed waveform capture | Neither as a first choice | Use a faster ADC or suitable microcontroller/peripheral |
Platform Differences
One advantage of an external ADC is consistency across microcontroller boards. Built-in ADC behavior can vary greatly between Arduino UNO, ESP32, RP2040, STM32 and other platforms.
- Classic Arduino boards have simple and predictable ADC examples
- ESP32 ADC readings can require calibration for better accuracy
- RP2040 and STM32 ADC behavior depends on board design and reference conditions
- An external ADS1115 can provide a more consistent measurement method across platforms
If a project may move from one controller family to another, using an external ADC can make the analog part of the design more portable.
Common Mistakes
- Assuming more ADC bits automatically means more accuracy
- Using a noisy supply as a measurement reference
- Running long analog wires next to digital or motor wiring
- Measuring voltages above the ADC input range without a divider
- Ignoring I2C address conflicts
- Using ADS1115 for high-speed signals it was not meant to capture
- Expecting software averaging to fix bad analog wiring
Which One Should You Choose?
| Need | Best Choice | Why |
|---|---|---|
| Simple analog input | Built-in ADC | No extra hardware needed |
| Higher resolution measurement | ADS1115 | 16-bit conversion provides finer measurement steps |
| Small differential voltage | ADS1115 | Differential input and gain are useful |
| Fast analog sampling | Built-in ADC or faster external ADC | ADS1115 is not intended for high-speed waveform capture |
| Same analog behavior on many controller platforms | ADS1115 | External ADC makes the analog front end less dependent on the microcontroller |
| Lowest cost and simplest wiring | Built-in ADC | Uses pins already available on the board |
When to Use Something Else
Sometimes neither a built-in ADC nor ADS1115 is the best answer.
- Use a dedicated current sensor for current measurement when isolation or high-side sensing is needed
- Use a load-cell amplifier such as HX711 for strain gauge load cells
- Use a faster ADC for audio or waveform capture
- Use a precision voltage reference when absolute accuracy matters
- Use isolation when measuring dangerous or high-voltage systems
Conclusion
Built-in microcontroller ADC inputs and ADS1115 modules are both useful, but they fit different levels of analog measurement.
- Use the built-in ADC for simple sensors, knobs, joysticks and rough voltage readings.
- Use the ADS1115 when higher resolution, differential measurement, programmable gain or more stable analog behavior is needed.
The ADC is only one part of an analog measurement system. Good wiring, stable references, correct voltage scaling and noise control are just as important as choosing the converter itself.
