

The ADS1118 is a high-precision, 16-bit analog-to-digital converter (ADC) manufactured by Texas Instruments. It features an integrated programmable gain amplifier (PGA) and operates over an I2C-compatible interface. This versatile component is designed for precision measurement applications, offering low power consumption and support for multiple input channels. Its compact VSSOP package makes it ideal for space-constrained designs.








The ADS1118 is available in a 10-pin VSSOP package. Below is the pinout and description:
| Pin | Name | Type | Description |
|---|---|---|---|
| 1 | VDD | Power | Positive supply voltage (2.0 V to 5.5 V). |
| 2 | AIN0 | Analog Input | Analog input channel 0. |
| 3 | AIN1 | Analog Input | Analog input channel 1. |
| 4 | AIN2 | Analog Input | Analog input channel 2. |
| 5 | AIN3 | Analog Input | Analog input channel 3. |
| 6 | GND | Ground | Ground reference for the device. |
| 7 | SCL | Digital Input | I2C clock line. |
| 8 | SDA | Digital I/O | I2C data line. |
| 9 | DRDY | Digital Output | Data ready signal (active low). |
| 10 | NC | - | No connection. |
0x48.Below is an example of how to interface the ADS1118 with an Arduino UNO to read a single-ended input:
#include <Wire.h>
// ADS1118 I2C address
#define ADS1118_ADDRESS 0x48
// Configuration register settings
#define CONFIG_REGISTER 0x8583 // Single-ended AIN0, ±4.096V, 128 SPS
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure the ADS1118
Wire.beginTransmission(ADS1118_ADDRESS);
Wire.write(CONFIG_REGISTER >> 8); // Send MSB of configuration register
Wire.write(CONFIG_REGISTER & 0xFF); // Send LSB of configuration register
Wire.endTransmission();
}
void loop() {
int16_t adcValue;
// Request conversion result
Wire.requestFrom(ADS1118_ADDRESS, 2);
if (Wire.available() == 2) {
adcValue = (Wire.read() << 8) | Wire.read(); // Combine MSB and LSB
}
// Convert ADC value to voltage (assuming ±4.096V range)
float voltage = (adcValue * 4.096) / 32768.0;
// Print the voltage to the serial monitor
Serial.print("Voltage: ");
Serial.print(voltage, 4); // Print with 4 decimal places
Serial.println(" V");
delay(500); // Wait 500 ms before the next reading
}
0x8583) sets the ADS1118 to read from AIN0 in single-ended mode, with a ±4.096 V range and a data rate of 128 SPS.No I2C Communication:
0x48) matches the ADS1118's default address.Incorrect Voltage Readings:
Device Not Responding:
Q: Can the ADS1118 measure negative voltages?
A: Yes, in differential mode, the ADS1118 can measure negative voltages relative to the reference input.
Q: What is the maximum sampling rate of the ADS1118?
A: The maximum sampling rate is 860 samples per second (SPS).
Q: How do I use the internal temperature sensor?
A: Configure the ADS1118 to read from the temperature sensor by setting the appropriate bits in the configuration register. The temperature data is returned in the conversion result.
Q: Can I use the ADS1118 with a 3.3 V microcontroller?
A: Yes, the ADS1118 operates with supply voltages as low as 2.0 V, making it compatible with 3.3 V systems.
Q: Is the ADS1118 suitable for battery-powered applications?
A: Yes, the ADS1118's low power consumption (150 µA in active mode) makes it ideal for battery-operated devices.