Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.
After designing industrial sensor systems requiring millivolt-level measurement accuracy, I learned that <a href=”https://pcbsync.com/arduino/”>Arduino</a>’s built-in 10-bit ADC falls dramatically short for precision applications. The standard Uno measures voltage in 4.88mV steps—adequate for basic projects but completely inadequate when measuring thermocouples, load cells, or sensitive analog sensors where resolution matters. Integrating the ADS1115 Arduino combination transforms measurement capability from 1024 discrete levels to 65,536 levels, improving resolution 64-fold while adding programmable gain amplification enabling accurate measurement of signals from 256mV to 6.144V full scale.
The Arduino community often accepts the built-in ADC’s limitations without exploring better options. You’ll spend hours debugging sensor drift or erratic readings that stem directly from insufficient ADC resolution rather than faulty sensors or code. Professional instrumentation, industrial monitoring, and scientific data acquisition all demand precision the Arduino alone cannot deliver. Understanding how to implement ADS1115 Arduino systems properly bridges this capability gap, enabling genuinely accurate analog measurements in maker projects and commercial products alike.
From understanding 16-bit resolution benefits to wiring I2C connections correctly, from configuring programmable gain for optimal accuracy to implementing differential measurements for noise rejection, this comprehensive guide covers everything needed to leverage the ADS1115’s precision capabilities. Whether measuring battery voltage with millivolt accuracy, reading strain gauges for weight measurement, or monitoring analog sensors in industrial environments, mastering ADS1115 integration elevates project capabilities dramatically.
Understanding ADC Resolution and the ADS1115 Advantage
Before diving into implementation details, understanding why 16-bit resolution matters clarifies when you need the ADS1115 versus when Arduino’s built-in ADC suffices.
Arduino’s Built-in ADC Limitations
Standard Arduino boards (Uno, Nano, Mega) incorporate a 10-bit ADC providing 1024 discrete measurement levels across its reference voltage range:
Board
ADC Resolution
Reference Voltage
Voltage Step Size
Practical Limitations
Arduino Uno
10-bit (1024 levels)
5V
4.88mV
±2 counts noise typical
Arduino Nano
10-bit (1024 levels)
5V
4.88mV
Temperature drift
Arduino Mega
10-bit (1024 levels)
5V
4.88mV
Slow sampling (15kHz max)
ESP32
12-bit (4096 levels)
3.3V
0.8mV
Non-linear, noisy
Calculation Example: Measuring a 2.5V signal with Arduino’s 10-bit ADC:
ADC reading = (2.5V / 5V) × 1024 = 512
Actual voltage = 512 × 4.88mV = 2.499V
This 4.88mV resolution seems acceptable until you consider real-world noise. Arduino’s ADC typically exhibits ±2-3 count jitter even with stable DC input. That 512 reading bounces between 510-514, representing ±10mV uncertainty—over 0.4% error without accounting for linearity or reference voltage accuracy.
Detecting button analog keyboards (voltage divider detection)
Monitoring battery voltage with ±50mV accuracy acceptable
Light sensors, basic temperature sensors (±1°C precision)
Projects where relative measurements matter more than absolute accuracy
ADS1115 16-Bit Resolution Benefits
The ADS1115 provides 16-bit resolution, translating to 65,536 discrete measurement levels:
Resolution Calculation: At ±6.144V range (default gain):
Voltage step = 12.288V / 65536 = 0.1875mV per bit = 187.5μV
This represents 26× better resolution than Arduino’s 4.88mV steps. But resolution alone doesn’t guarantee accuracy—the ADS1115 combines high resolution with precision components:
ADS1115 Specifications:
16-bit Delta-Sigma ADC architecture
Typical accuracy: 0.01% (best case scenario)
Maximum accuracy: 0.15% (includes all error sources)
Low noise: ~25μV RMS at highest gain
Four single-ended or two differential input channels
Programmable data rate: 8 to 860 samples per second
Understanding the ADS1115 breakout board’s physical connections and addressing scheme prevents common wiring mistakes.
Physical Pin Configuration
Most ADS1115 modules follow Adafruit’s standard 10-pin layout:
Pin Name
Function
Connection
VDD
Power Supply
Arduino 5V or 3.3V
GND
Ground
Arduino GND
SCL
I2C Clock
Arduino A5 (Uno) or SCL pin
SDA
I2C Data
Arduino A4 (Uno) or SDA pin
ADDR
Address Select
GND, VDD, SDA, or SCL
ALRT
Alert/Ready
Optional interrupt pin
A0
Analog Input 0
Sensor signal input
A1
Analog Input 1
Sensor signal input
A2
Analog Input 2
Sensor signal input
A3
Analog Input 3
Sensor signal input
Power Supply Considerations: The ADS1115 operates from 2.0V to 5.5V supply voltage. Most modules work identically whether powered from Arduino’s 5V or 3.3V rail. Input signals cannot exceed VDD + 0.3V without risking damage—measure 5V signals only when powering ADS1115 from 5V supply.
Internal Pull-up Resistors: Quality breakout boards include 10kΩ pull-up resistors on I2C lines (SCL/SDA) and ALRT pin. When using multiple I2C devices, verify total pull-up resistance stays above ~2kΩ to prevent excessive bus loading.
I2C Address Configuration
The ADS1115’s clever addressing scheme enables connecting up to four modules on a single I2C bus using only one address pin (ADDR):
ADDR Pin Connection
I2C Address
Hex Value
Connected to GND
0x48
0b1001000
Connected to VDD
0x49
0b1001001
Connected to SDA
0x4A
0b1001010
Connected to SCL
0x4B
0b1001011
Default Configuration: Most breakout boards include a 10kΩ pull-down resistor connecting ADDR to GND, setting default address to 0x48. This works immediately without additional wiring.
Multiple ADS1115 Configuration: For applications needing more than 4 analog inputs, connect multiple ADS1115 modules with different ADDR pin configurations. Total capacity: 16 single-ended inputs or 8 differential inputs from four modules sharing the I2C bus.
Wiring ADS1115 to Arduino
Proper physical connections ensure reliable communication and accurate measurements.
Basic Single-Ended Measurement Wiring
Arduino Uno Connections:
ADS1115 VDD → Arduino 5V
ADS1115 GND → Arduino GND
ADS1115 SCL → Arduino A5 (or SCL on newer boards)
ADS1115 SDA → Arduino A4 (or SDA on newer boards)
ADS1115 ADDR → GND (default address 0x48)
Sensor output → ADS1115 A0
Arduino Mega I2C Pins: Unlike Uno, the Mega places I2C on different pins:
SDA: Pin 20
SCL: Pin 21
Connect ADS1115 to these pins rather than A4/A5 which serve only as analog inputs on Mega.
Sensor Ground Reference: Critical consideration often overlooked—the sensor being measured must share common ground with both Arduino and ADS1115. Floating grounds create offset voltages and erratic measurements.
Differential Measurement Wiring
Differential mode measures voltage difference between two input pins, rejecting common-mode noise affecting both inputs equally:
Example Application: Measuring bridge sensor (load cell, strain gauge):
Load cell excitation+ → 5V regulated supply
Load cell excitation- → GND
Load cell signal+ → ADS1115 A0
Load cell signal- → ADS1115 A1
The ADS1115 measures only the voltage difference between A0 and A1, ignoring any common-mode voltage present on both inputs simultaneously. This dramatically improves noise immunity in electrically noisy environments.
Installing and Configuring ADS1115 Library
Software integration requires installing proper libraries and understanding configuration options.
Library Installation
Adafruit ADS1X15 Library (recommended):
Open Arduino IDE Library Manager (Sketch → Include Library → Manage Libraries)
Alternative Library: The jrowberg/I2Cdevlib provides another ADS1115 implementation with different features. Most users find Adafruit’s library better documented and easier to use.
Verifying Installation: After installation, verify by opening File → Examples → Adafruit ADS1X15 → singleended. If this menu item appears, library installed successfully.
Serial.print(voltage, 4); // Print with 4 decimal places
Serial.println(“V)”);
delay(1000);
}
This basic example reads channel A0 every second, displaying both raw ADC value and calculated voltage. The computeVolts() function automatically accounts for current gain setting.
Configuring Programmable Gain Amplifier
The ADS1115’s PGA enables optimizing measurement range for signal amplitude, maximizing resolution and accuracy.
Available Gain Settings
Gain Setting
Voltage Range
Resolution (LSB size)
Ideal Signal Range
GAIN_TWOTHIRDS
±6.144V
187.5μV
4V to 6V signals
GAIN_ONE
±4.096V
125μV
2.5V to 4V signals
GAIN_TWO
±2.048V
62.5μV
1V to 2V signals
GAIN_FOUR
±1.024V
31.25μV
500mV to 1V signals
GAIN_EIGHT
±0.512V
15.625μV
250mV to 500mV signals
GAIN_SIXTEEN
±0.256V
7.8125μV
<250mV signals
Gain Selection Strategy: Choose the lowest gain setting that prevents signal clipping. Higher gain provides better resolution but clips sooner. If measuring a 3V signal, use GAIN_ONE (±4.096V range) rather than default GAIN_TWOTHIRDS, improving resolution from 187.5μV to 125μV.
Setting Gain in Code:
void setup() {
Serial.begin(9600);
ads.begin();
// Set gain for ±2.048V range (62.5μV resolution)
ads.setGain(GAIN_TWO);
// For low-voltage sensors (<256mV), use maximum gain
Critical Warning: Setting gain does NOT change the absolute maximum input voltage! The ADS1115 can measure inputs from GND-0.3V to VDD+0.3V regardless of gain setting. Gain only determines full-scale range within that absolute limit. Applying 5V input with GAIN_SIXTEEN won’t damage the chip (if VDD=5V) but will clip, reading maximum value.
Reading Multiple Channels and Differential Measurements
The ADS1115 provides four single-ended inputs or two differential pairs, enabling various measurement configurations.
Sequential Reading: The ADS1115 uses a single internal ADC multiplexed across channels. Each readADC_SingleEnded() call reconfigures the multiplexer, waits for conversion (conversion time depends on data rate setting), then returns the result. Reading four channels sequentially takes 4× as long as reading one.
Accuracy Improvement: Arduino’s 10-bit ADC measuring 4.2V (divided to 2.1V) provides ~2mV resolution. The ADS1115 at GAIN_ONE provides 125μV resolution—16× improvement enabling state-of-charge estimation accurate to ~1% versus Arduino’s ~5% precision.
Advanced Features and Optimization
Beyond basic measurements, the ADS1115 offers features improving performance in challenging applications.
Adjustable Data Rate
The ADS1115 supports eight data rates from 8 to 860 samples per second (SPS). Default setting: 128 SPS.
void setup() {
ads.begin();
// Set data rate to 860 SPS for fastest conversion
ads.setDataRate(RATE_ADS1115_860SPS);
// Or for lowest noise, use 8 SPS
// ads.setDataRate(RATE_ADS1115_8SPS);
}
Data Rate Options:
RATE_ADS1115_8SPS: 8 samples/sec, lowest noise
RATE_ADS1115_16SPS: 16 samples/sec
RATE_ADS1115_32SPS: 32 samples/sec
RATE_ADS1115_64SPS: 64 samples/sec
RATE_ADS1115_128SPS: 128 samples/sec (default)
RATE_ADS1115_250SPS: 250 samples/sec
RATE_ADS1115_475SPS: 475 samples/sec
RATE_ADS1115_860SPS: 860 samples/sec, fastest
Tradeoff: Lower data rates provide better noise filtering through longer integration time. Higher rates enable faster sampling but sacrifice noise performance. For DC measurements (battery voltage, temperature), use 8-32 SPS. For dynamic signals needing quick response, use 250-860 SPS.
Continuous Conversion Mode
Default mode reads one sample per function call. Continuous mode samples constantly, reading latest value immediately:
Adafruit ADS1115 Breakout: https://www.adafruit.com/product/1085 Original high-quality breakout board with STEMMA QT connector for easy wiring.
SparkFun ADS1115 Breakout: https://www.sparkfun.com/products/15350 Alternative breakout board with Qwiic connector compatibility.
Application Notes and Guides
Understanding Delta-Sigma ADCs: https://www.ti.com/lit/an/slyt423/slyt423.pdf Technical explanation of delta-sigma ADC architecture used in ADS1115.
PCB Layout Guidelines: https://www.ti.com/lit/an/sbaa485/sbaa485.pdf Best practices for PCB design with precision ADCs including grounding and filtering.
Frequently Asked Questions
Q: Why does my ADS1115 reading jump around even with stable DC input?
A: Several factors cause noise in precision ADC measurements: (1) Inadequate power supply filtering—add 0.1μF ceramic and 10μF electrolytic capacitors close to ADS1115 VDD pin, (2) Ground loops—ensure sensor, Arduino, and ADS1115 share single-point ground connection, (3) I2C signal integrity—long wires act as antennas picking up noise; keep I2C connections under 6 inches or use shielded cable, (4) Incorrect gain setting—signal too small relative to noise floor; increase gain to use more of ADC range, or (5) Fast data rate with noisy signal—reduce data rate to 8 or 16 SPS for better noise filtering.
Q: Can I measure negative voltages with ADS1115?
A: Yes, but with limitations. The ADS1115 chip itself can only measure voltages within -0.3V to VDD+0.3V range absolutely. In single-ended mode, inputs must stay between GND and VDD. For measuring truly negative voltages, use differential mode with appropriate voltage divider or op-amp level shifting. Example: measuring -5V to +5V signal requires op-amp circuit shifting signal into 0V to VDD range, then ADS1115 differential measurement reconstructs original. Alternatively, for signals near ground, connect sensor ground to ADS1115 A1, sensor signal to A0, and use differential measurement—this measures voltage difference even if sensor ground sits below ADS1115 ground within the -0.3V limit.
Q: How many ADS1115 modules can I connect to one Arduino?
A: Four ADS1115 modules maximum on single I2C bus, providing 16 single-ended inputs or 8 differential pairs. Connect ADDR pin of each module differently (GND, VDD, SDA, SCL) assigning unique I2C addresses (0x48, 0x49, 0x4A, 0x4B). In code, initialize each module with its specific address: ads1.begin(0x48); ads2.begin(0x49); etc. Practical limit depends on I2C bus loading—multiple devices increase bus capacitance requiring stronger pull-up resistors. Typical setups handle four modules reliably with standard 10kΩ pull-ups, but very long wires or many devices may require 4.7kΩ or 2.2kΩ pull-ups for signal integrity.
Q: Does ADS1115 work with 3.3V Arduino like ESP32 or Due?
A: Absolutely. The ADS1115 operates from 2.0V to 5.5V supply, working identically whether powered from 5V or 3.3V. When powered from 3.3V, maximum measurable voltage (VDD+0.3V) becomes 3.6V. For measuring 5V signals with 3.3V-powered ADS1115, add voltage divider reducing signal to under 3.6V full scale. I2C communication works fine mixing voltage levels (5V Arduino with 3.3V-powered ADS1115) because I2C is open-drain with pull-up resistors determining logic high voltage. Just ensure pull-ups connect to the lower voltage rail (3.3V) to prevent damage.
Q: How do I calibrate ADS1115 for maximum accuracy?
A: The ADS1115 includes internal voltage reference and typically requires no user calibration for stated 0.15% maximum accuracy. For applications demanding better than specification performance, implement software calibration: (1) Measure known precision voltage reference (like REF3033 3.3V source) using ADS1115 at intended gain setting, (2) Calculate correction factor: correctionFactor = knownVoltage / measuredVoltage, (3) Apply correction in code: calibratedVoltage = rawVoltage * correctionFactor. Store correction factors in EEPROM for persistence. For ultimate accuracy, calibrate at multiple points across measurement range compensating for non-linearity. Professional approach: use precision voltage calibrator and create lookup table or polynomial correction equation.
Conclusion: Precision Measurement Within Reach
Integrating the ADS1115 Arduino combination elevates measurement capability from hobbyist to professional grade. The transformation from 10-bit to 16-bit resolution, combined with programmable gain amplification and differential measurement capability, enables projects requiring genuine precision rather than mere approximation. Whether monitoring battery state-of-charge with millivolt accuracy, measuring sensor outputs in noisy industrial environments, or building scientific instruments documenting actual measurement uncertainty, the ADS1115 provides the precision previously requiring expensive specialized equipment.
From my perspective designing commercial data acquisition systems, the ADS1115 represents exceptional value—professional-grade 16-bit precision for under $15. This accessibility democratizes accurate measurement, enabling maker projects and small-batch commercial products to achieve measurement capabilities previously limited to expensive industrial instruments. The I2C interface simplifies integration while the extensive Arduino library support removes low-level programming complexity.
Whether upgrading existing projects suffering from Arduino ADC limitations or designing new precision measurement systems from scratch, understanding and implementing ADS1115 integration properly unlocks measurement capabilities that separate professional deployments from prototype experiments. The difference between reading “about 3.3 volts” and measuring “3.287 volts with documented 0.15% accuracy” determines whether your measurements enable genuine analysis or merely provide rough approximations.
Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.