Texas Instruments' ADCs are all delta-sigma converters that primarily differ in resolution, interface type, sample rate, and integrated features such as input channels and programmable gain amplifiers (PGAs). The ADS111x series is a 16-bit, I2C-compatible device, while the ADS12xx series is typically a 24-bit, SPI-compatible device with more advanced features for high-precision applications such as weighing scales and industrial process control.
The Texas Instruments ADS111x series is a set of 16-bit-precision ADCs designed for low-power, space-constrained sensor measurement tasks. Key features include a broad supply-voltage range (2.0V to 5.5V), low current consumption (about 150µA in continuous operation), and built-in components such as a low-drift voltage reference and an oscillator.
ADS111x General Specifications
| Model | nterface | Channels (SE/Diff) | PGA | Comparator | Max Data Rate (SPS) | Unique Features |
|---|---|---|---|---|---|---|
| ADS1110 | I²C | 1 Diff | Yes (Gains up to 8) | No | 240 | Continuously self-calibrating |
| ADS1112 | I²C | 1 SE or Diff | Yes | No | 240 | (Similar to ADS1113/4/5 in core, but specific variant details are sparse) |
| ADS1113 | I²C | 1 SE or Diff | No | No | 86 | Basic model, minimal features |
| ADS1114 | I²C | 1 SE or Diff | Yes | Yes | 860 | Includes PGA and comparator |
| ADS1115 | I²C | 4 SE or 2 Diff | Yes | Ye | 860 | Input MUX for multiple channels |
| ADS1118 | SPI | 4 SE or 2 Diff | Yes | No | 860 | Integrated temperature sensor |
| ADS1119 | I²C | 4 SE or 2 Diff | Yes (Gains 1 or 4) | No | 1000 | Single-cycle settling filter at 20 SPS (for 50/60Hz rej.) |
| Pin | Name | Type | Description |
|---|---|---|---|
| 1 | SCLK | Digital Input | SPI serial clock |
| 2 | CS | Digital Input | Chip select; active low |
| 3 | GND | Supply | Ground |
| 4 | AIN0 | Analog Input | Analog input channel 0 |
| 5 | AIN1 | Analog Input | Analog input channel 1 |
| 6 | AIN2 | Analog Input | Analog input channel 2 |
| 7 | AIN3 | Analog Input | Analog input channel 3 |
| 8 | VDD | Supply | Power supply (2V to 5.5V) |
| 9 | DIN | Digital Input | SPI serial data input (MOSI) |
| 10 | DOUT/DRDY | Digital Output | SPI serial data output / Data-ready (MISO) |
Key Pin Notes
To interface the ADS1118 16-bit ADC with an Arduino, the most common approach is to use the ADS1118 library by denkitronik.
Wiring Diagram
The ADS1118 communicates via SPI. Connect it to your Arduino as follows:
| ADS1118 Pin | Arduino Pin (Uno/Nano) |
|---|---|
| VCC | 3.3V or 5V |
| GND | GND |
| DIN (MOSI) | Pin 11 |
| DOUT (MISO) | Pin 12 |
| SCLK | Pin 13 |
| CS | Pin 10 (or any digital pin) |
Example Arduino Code
This basic example initializes the ADC and reads the voltage from input AIN0 and the internal temperature sensor.
#include <SPI.h> #include <ADS1118.h> // Define the Chip Select (CS) pin #define CS_PIN 10 ADS1118 ads1118(CS_PIN); void setup() { Serial.begin(115200); // Initialize ADS1118 with default settings ads1118.begin(); // Optional: Set sampling rate (e.g., 128 SPS) ads1118.setSamplingRate(ads1118.RATE_128SPS); } void loop() { // Read voltage from Single-Ended Input 0 (AIN0) // Returns value in millivolts (double) double voltage = ads1118.getMilliVolts(ads1118.AIN_0); // Read internal chip temperature double temp = ads1118.getTemperature(); Serial.print("Voltage AIN0: "); Serial.print(voltage); Serial.print(" mV | "); Serial.print("Internal Temp: "); Serial.print(temp); Serial.println(" C"); delay(1000); }
Key Library Methods
If you'd like to support the development of the site with the price of a coffee — or a few — please do so here.
Here's a handy tip: you can quickly save this page as a PDF by clicking “export to PDF” in the menu on the right side of the screen.
The Texas Instruments ADS12xx series includes high-resolution, 24-bit delta-sigma ADCs designed mainly for precise measurement tasks such as weigh scales, strain gauges, and industrial process control. They come with built-in features such as onboard PGAs, internal references, and temperature sensors.
ADS12xx Series Specifications
| Model | Resolution (bits) | Interface | Max Data Rate (SPS) | Channels (SE/Diff) | PGA | Key Applications/Features |
|---|---|---|---|---|---|---|
| ADS1220 | 24 | SPI | 2k | 4 SE or 2 Diff | Yes (up to G=128) | RTDs, thermocouples, integrated temp sensor, IDACs |
| ADS1232 | 24 | Pin-driven Serial | 80 | 2 Diff | Yes (up to G=128) | Weigh scales, strain gauges, simple control (no registers) |
| ADS1234 | 24 | Pin-driven Serial | 80 | 4 Diff | Yes (up to G=128) | Weigh scales, strain gauges, simple control (no registers) |
| ADS1256 | 24 (23 noise-free) | SPI | 30k | 8 SE or 4 Diff | Yes (up to G=64) | High speed, chopper-stabilized buffer, self/system calibration |
| ADS1261 | 24 | SPI | 38.4k | Multiple | Yes (up to G=32) | Low-noise, low-drift, IDACs for sensor excitation |
| ADS1263 | 24 | SPI | 38.4k | Multiple | Yes (up to G=32) | Same as ADS1261, but with an auxiliary 24-bit ADC |
Key Takeaways
The ADS1220 is a 24-bit precision ADC. It uses an SPI-compatible interface and includes specific pins for dual-matched current sources (IDACs) and a low-side power switch.
Key pins include:
For a detailed pinout, please refer to the Olimex ADS1220 datasheet.
Critical hardware notes include
To use the ADS1220 with an Arduino, the ADS1220_WE library by Wollewald or the Protocentral ADS1220 library is the most common option. Both are available via the Arduino Library Manager.
Wiring Diagram (Typical)
The ADS1220 uses the SPI protocol. Connect it to your Arduino (e.g., Uno) as follows:
| ADS1220 Pin | Arduino Uno Pin | Description |
|---|---|---|
| VDD | 5V or 3.3V | Power Supply |
| GND | GND | Ground |
| SCLK | D13 | Serial Clock |
| DOUT/DRDY | D12 | MISO (Data Out) |
| DIN | D11 | MOSI (Data In) |
| CS | D7 (selectable) | Chip Select |
| DRDY | D6 (selectable) | Data Ready Indicator |
Basic Example Code
This example uses the ADS1220_WE library to perform a simple differential measurement between AIN0 and AIN1.
#include <ADS1220_WE.h> #include <SPI.h> #define ADS1220_CS_PIN 7 #define ADS1220_DRDY_PIN 6 ADS1220_WE ads = ADS1220_WE(ADS1220_CS_PIN, ADS1220_DRDY_PIN); void setup() { Serial.begin(9600); if (!ads.init()) { Serial.println("ADS1220 not connected!"); while (1); } // Set to differential mode: AIN0 vs AIN1 ads.setCompareChannels(ADS1220_MUX_0_1); // Set Gain (1, 2, 4, 8, 16, 32, 64, 128) ads.setGain(ADS1220_GAIN_1); // Optional: Set Data Rate (e.g., 20, 45, 90, 175, 330, 600, 1000 SPS) ads.setDataRate(ADS1220_DR_LVL_0); // 20 SPS (normal mode) } void loop() { // Read voltage in millivolts float voltage = ads.getVoltage_mV(); Serial.print("Voltage AIN0-AIN1 (mV): "); Serial.println(voltage, 4); // Read internal temperature sensor float temp = ads.getTemperature(); Serial.print("Internal Temp (°C): "); Serial.println(temp); delay(1000); }Advanced Usage Notes
This page has been accessed for: Today: 3, Until now: 5