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 ADS1115 features a programmable gain amplifier (PGA) and operates with low power consumption, making it suitable for battery-powered devices.
Explore Projects Built with ADS1115
Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
This circuit features an Arduino Due microcontroller interfaced with two ADS1115 ADC modules for differential voltage measurement. It includes a 9V battery for powering an LM324 operational amplifier, which processes input signals from multiple resistors and 21700 LI batteries. The Arduino Due reads the processed signals and communicates the data via I2C.
This circuit includes an ADS1115 analog-to-digital converter connected to two voltage divider networks formed by resistors. The voltage dividers are used to scale down the input voltages before they are read by the ADS1115 on channels A0 and A1.
This circuit features an Arduino UNO microcontroller interfaced with an ADS1115 ADC for precise analog-to-digital conversion, an ACS712 current sensor for current measurement, and a potentiometer for adjustable input. It includes toggle switches and a push button for user input, with the Arduino programmed to read and process sensor data, switch states, and potentiometer values, outputting the information via serial communication for monitoring or further processing.
This circuit features a Raspberry Pi 4B as the central processing unit, interfaced with an ADS1115 analog-to-digital converter (ADC) and a 0.96" OLED display via I2C communication (using GPIO2 and GPIO3 for SDA and SCL, respectively). The ADS1115 is connected to two current sensors: a generic current sensor and an ACS712, to measure current and report values to the Raspberry Pi, which can display the data on the OLED. Power is distributed from the Raspberry Pi's 5V pin to the other components, and all components share a common ground.
Sensor data acquisition (e.g., temperature, pressure, light sensors)
Battery monitoring systems
Industrial process control
Portable medical devices
Data logging systems
IoT applications requiring precise analog measurements
Technical Specifications
Key Technical Details
Resolution: 16-bit
Input Channels: 4 single-ended or 2 differential
Input Voltage Range: ±0.256V to ±6.144V (configurable via PGA)
Supply Voltage: 2.0V to 5.5V
Interface: I2C (up to 3.4 MHz)
Programmable Data Rate: 8 SPS to 860 SPS (samples per second)
Operating Temperature: -40°C to +125°C
Low Power Consumption: 150 µA (typical during operation)
Pin Configuration and Descriptions
The ADS1115 is available in an 8-pin package. Below is the pinout and description:
Pin Number
Pin Name
Description
1
VDD
Power supply input (2.0V to 5.5V).
2
GND
Ground reference.
3
SCL
I2C clock line. Connect to the microcontroller's I2C clock pin.
4
SDA
I2C data line. Connect to the microcontroller's I2C data pin.
5
ALERT/RDY
Configurable as an alert pin or ready signal output.
6
A0
I2C address selection pin (connect to GND, VDD, or float for address setup).
7
A1
I2C address selection pin (connect to GND, VDD, or float for address setup).
8
IN0-IN3
Analog input pins for single-ended or differential measurements.
Usage Instructions
How to Use the ADS1115 in a Circuit
Power Supply: Connect the VDD pin to a 2.0V to 5.5V power source and the GND pin to ground.
I2C Connection: Connect the SCL and SDA pins to the corresponding I2C pins on your microcontroller. Use pull-up resistors (typically 4.7kΩ) on both lines.
Analog Inputs: Connect your analog signal(s) to the IN0-IN3 pins. For differential measurements, use pairs of input pins (e.g., IN0-IN1).
Address Configuration: Set the I2C address by connecting the A0 and A1 pins to GND, VDD, or leaving them floating. This allows up to four ADS1115 devices on the same I2C bus.
Alert/Ready Pin: Optionally, configure the ALERT/RDY pin for interrupt-driven applications.
Important Considerations and Best Practices
Input Voltage Range: Ensure the input voltage does not exceed the configured PGA range or the supply voltage.
Bypass Capacitor: Place a 0.1µF ceramic capacitor close to the VDD pin for power supply decoupling.
I2C Pull-Up Resistors: Use appropriate pull-up resistors on the SCL and SDA lines to ensure reliable communication.
Data Rate: Choose a data rate that balances power consumption and measurement accuracy for your application.
Example Code for Arduino UNO
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 at 9600 baud
if (!ads.begin()) {
Serial.println("Failed to initialize ADS1115! Check connections.");
while (1); // Halt execution if initialization fails
}
Serial.println("ADS1115 initialized successfully.");
}
void loop() {
int16_t adc0; // Variable to store ADC reading from channel 0
// Read the analog value from channel 0
adc0 = ads.readADC_SingleEnded(0);
// Convert the raw ADC value to voltage (assuming default gain ±6.144V)
float voltage = adc0 * 0.1875 / 1000; // 0.1875mV per bit for default gain
// Print the ADC value and corresponding voltage
Serial.print("ADC Value: ");
Serial.print(adc0);
Serial.print(" | Voltage: ");
Serial.print(voltage, 4); // Print voltage with 4 decimal places
Serial.println(" V");
delay(1000); // Wait for 1 second before the next reading
}
Troubleshooting and FAQs
Common Issues and Solutions
No I2C Communication:
Ensure the SCL and SDA lines are connected correctly and have pull-up resistors.
Verify the I2C address matches the configuration of the A0 and A1 pins.
Check for loose or incorrect wiring.
Incorrect or Unstable Readings:
Ensure the input voltage is within the configured PGA range.
Use a stable power supply and add a bypass capacitor near the VDD pin.
Verify the analog signal source is properly grounded.
ADS1115 Not Detected:
Confirm the device is powered correctly (check VDD and GND connections).
Use an I2C scanner sketch to detect the device address.
FAQs
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 supplied 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 pin (e.g., IN0) and the negative signal to another input pin (e.g., IN1). Configure the ADS1115 to read the differential pair in your code.
Q: What is the maximum sampling rate of the ADS1115?
A: The maximum sampling rate is 860 samples per second (SPS). You can configure the data rate in the code to suit your application.
Q: Can I connect multiple ADS1115 devices to the same I2C bus?
A: Yes, you can connect up to four ADS1115 devices by configuring the A0 and A1 pins to set unique I2C addresses.