

The ADS1115 is a high-precision 16-bit analog-to-digital converter (ADC) with an integrated programmable gain amplifier (PGA). It is designed to measure analog signals with exceptional accuracy and convert them into digital data for processing by microcontrollers or other digital systems. The ADS1115 supports four single-ended or two differential input channels, making it versatile for a wide range of applications. It communicates via an I2C interface, ensuring compatibility with most microcontrollers, including Arduino and Raspberry Pi. Additionally, its low power consumption makes it suitable for battery-powered devices.








The following table outlines the key technical details of the ADS1115:
| Parameter | Value |
|---|---|
| Resolution | 16-bit |
| Input Channels | 4 single-ended or 2 differential |
| Input Voltage Range | 0 to VDD (single-ended) |
| Programmable Gain Amplifier | ±0.256V to ±6.144V (7 ranges) |
| Supply Voltage (VDD) | 2.0V to 5.5V |
| Interface | I2C (up to 3.4 MHz) |
| Data Rate | Programmable (8 SPS to 860 SPS) |
| Operating Temperature Range | -40°C to +125°C |
| Power Consumption | 150 µA (typical) |
The ADS1115 is available in an 8-pin package. The pinout is as follows:
| Pin | Name | Description |
|---|---|---|
| 1 | VDD | Power supply input (2.0V to 5.5V) |
| 2 | GND | Ground |
| 3 | SCL | I2C clock line |
| 4 | SDA | I2C data line |
| 5 | ALERT/RDY | Configurable as an interrupt or data-ready output |
| 6 | A0 | I2C address selection bit 0 |
| 7 | A1 | I2C address selection bit 1 |
| 8 | IN0-IN3 | Analog input channels (IN0, IN1, IN2, IN3 for single-ended or differential use) |
Below is an example of how to use the ADS1115 with an Arduino UNO to read a single-ended input:
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
// Create an ADS1115 object
Adafruit_ADS1115 ads;
void setup() {
Serial.begin(9600); // Initialize serial communication
ads.begin(); // Initialize the ADS1115
// Set the gain to ±4.096V (suitable for most sensors)
ads.setGain(GAIN_ONE);
}
void loop() {
// Read the analog value from channel 0 (single-ended)
int16_t adcValue = ads.readADC_SingleEnded(0);
// Convert the ADC value to voltage
float voltage = adcValue * 0.125 / 1000.0; // 0.125mV per bit for GAIN_ONE
// Print the voltage to the Serial Monitor
Serial.print("Voltage: ");
Serial.print(voltage, 4); // Print with 4 decimal places
Serial.println(" V");
delay(1000); // Wait for 1 second before the next reading
}
Adafruit_ADS1X15 library is used in this example. Install it via the Arduino Library Manager.ads.setGain()) based on the expected input voltage range.No I2C Communication:
Incorrect Voltage Readings:
ADS1115 Not Detected:
Q: Can I use the ADS1115 with a 3.3V microcontroller?
A: Yes, the ADS1115 is compatible with 3.3V systems. Ensure the VDD pin is powered with 3.3V, and the I2C lines are pulled up to 3.3V.
Q: How do I measure differential signals?
A: Connect the positive signal to one input (e.g., IN0) and the negative signal to another input (e.g., IN1). Configure the ADS1115 in differential mode in the software.
Q: What is the maximum sampling rate?
A: The ADS1115 supports a maximum data rate of 860 samples per second (SPS). Adjust the data rate in the configuration register for your application.
Q: Can I use multiple ADS1115 devices on the same I2C bus?
A: Yes, up to four ADS1115 devices can be used by configuring the A0 and A1 pins to set unique I2C addresses.