

The ADS1232 is a high-precision, 24-bit analog-to-digital converter (ADC) manufactured by Texas Instruments. It is specifically designed for applications requiring high accuracy and low noise, such as weighing scales and industrial process control systems. The module integrates a low-noise programmable gain amplifier (PGA), an internal oscillator, and a precision voltage reference, making it an ideal choice for high-resolution measurements.








The ADS1232 module offers a range of features and specifications that make it suitable for precision measurement tasks. Below are the key technical details:
The ADS1232 module typically comes with a 16-pin configuration. Below is the pinout and description:
| Pin Name | Pin Number | Description |
|---|---|---|
| AVDD | 1 | Analog power supply (2.7V to 5.3V) |
| AGND | 2 | Analog ground |
| AINP1 | 3 | Positive input for differential channel 1 |
| AINN1 | 4 | Negative input for differential channel 1 |
| AINP2 | 5 | Positive input for differential channel 2 |
| AINN2 | 6 | Negative input for differential channel 2 |
| REFP | 7 | Positive reference voltage input |
| REFN | 8 | Negative reference voltage input |
| DVDD | 9 | Digital power supply (2.7V to 5.3V) |
| DGND | 10 | Digital ground |
| SCLK | 11 | Serial clock input for SPI communication |
| DOUT/DRDY | 12 | Data output and data ready signal |
| SPEED | 13 | Data rate selection (LOW = 10 SPS, HIGH = 80 SPS) |
| GAIN0 | 14 | Gain selection bit 0 |
| GAIN1 | 15 | Gain selection bit 1 |
| PDWN | 16 | Power-down control (LOW = Power-down mode, HIGH = Normal operation) |
The ADS1232 module is straightforward to use in precision measurement applications. Below are the steps and considerations for integrating it into a circuit.
Below is an example of how to interface the ADS1232 with an Arduino UNO for reading data from a load cell.
// ADS1232 Arduino Example Code
// This code reads data from the ADS1232 and prints it to the Serial Monitor.
#define SCLK_PIN 13 // Serial clock pin
#define DOUT_PIN 12 // Data output pin
void setup() {
pinMode(SCLK_PIN, OUTPUT); // Set SCLK as output
pinMode(DOUT_PIN, INPUT); // Set DOUT as input
Serial.begin(9600); // Initialize serial communication
}
long readADS1232() {
long result = 0; // Variable to store the ADC result
// Wait for the data ready signal (DOUT goes LOW)
while (digitalRead(DOUT_PIN) == HIGH);
// Read 24 bits of data from the ADS1232
for (int i = 0; i < 24; i++) {
digitalWrite(SCLK_PIN, HIGH); // Generate clock pulse
delayMicroseconds(1); // Short delay for stability
result = (result << 1) | digitalRead(DOUT_PIN); // Read bit
digitalWrite(SCLK_PIN, LOW); // End clock pulse
delayMicroseconds(1);
}
// Convert the 24-bit result to a signed long
if (result & 0x800000) { // Check if the sign bit is set
result |= 0xFF000000; // Extend the sign bit for negative values
}
return result;
}
void loop() {
long adcValue = readADS1232(); // Read ADC value
Serial.println(adcValue); // Print the value to Serial Monitor
delay(500); // Wait before the next reading
}
No Data Output:
Unstable Readings:
Incorrect ADC Values:
Q: Can I use the ADS1232 with a 3.3V microcontroller?
A: Yes, the ADS1232 supports a power supply range of 2.7V to 5.3V, making it compatible with 3.3V systems.
Q: How do I select the data rate?
A: Use the SPEED pin to select the data rate. Set SPEED to LOW for 10 SPS or HIGH for 80 SPS.
Q: Can I use the internal reference voltage for all applications?
A: The internal 2.5V reference is suitable for most applications. However, for higher accuracy, an external low-noise reference may be preferred.