

The ADS1115 is a high-precision, 16-bit analog-to-digital converter (ADC) with an I2C interface. It is capable of measuring up to four single-ended inputs or two differential inputs, making it ideal for applications requiring accurate sensor data acquisition. The device features a programmable gain amplifier (PGA) for handling a wide range of input voltages and operates with low power consumption, making it suitable for battery-powered devices.








The ADS1115 offers a range of features that make it versatile and reliable for various applications. Below are its key technical details:
The ADS1115 comes in an 8-pin package. Below is the pinout and description:
| Pin | Name | Type | Description |
|---|---|---|---|
| 1 | VDD | Power | Power supply input (2.0V to 5.5V). |
| 2 | GND | Ground | Ground reference for the device. |
| 3 | SCL | Input | I2C clock line. |
| 4 | SDA | Input/Output | I2C data line. |
| 5 | ALERT/RDY | Output | Configurable as an alert pin or data-ready signal. |
| 6 | A0 | Input | Address pin 0 for I2C address configuration. |
| 7 | A1 | Input | Address pin 1 for I2C address configuration. |
| 8 | AIN0-AIN3 | Analog Input | Analog input channels for single-ended or differential measurements. |
The ADS1115 is straightforward to use in a circuit, especially with microcontrollers like the Arduino UNO. Below are the steps and considerations for using the ADS1115:
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 the ADS1115
if (!ads.begin()) {
Serial.println("Failed to initialize ADS1115!");
while (1); // Halt if initialization fails
}
Serial.println("ADS1115 initialized.");
}
void loop() {
// Read the analog value from channel 0 (single-ended)
int16_t adcValue = ads.readADC_SingleEnded(0);
// Convert the ADC value to voltage (assuming default gain of ±6.144V)
float voltage = adcValue * 0.1875 / 1000; // 0.1875 mV per bit
// 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 1 second before the next reading
}
No I2C Communication:
Incorrect Readings:
Device Not Detected:
Fluctuating Readings:
Q1: Can the ADS1115 measure negative voltages?
A1: Yes, the ADS1115 can measure negative voltages in differential mode, provided the voltage stays within the configured PGA range.
Q2: What is the maximum sampling rate of the ADS1115?
A2: The maximum sampling rate is 860 samples per second (SPS), configurable via the data rate settings.
Q3: Can I use the ADS1115 with a 3.3V microcontroller?
A3: Yes, the ADS1115 is compatible with 3.3V systems. Ensure the VDD pin is connected to 3.3V, and the I2C lines are properly level-shifted if necessary.
Q4: How do I connect multiple ADS1115 devices to the same I2C bus?
A4: Configure each device with a unique I2C address by setting the A0 and A1 pins to different combinations of GND and VDD.
By following this documentation, you can effectively integrate the ADS1115 into your projects for precise analog-to-digital conversion.