

The AD7781 is a low-power, 24-bit sigma-delta analog-to-digital converter (ADC) manufactured by Analog Devices. It is designed for high-precision measurement applications, offering exceptional performance with minimal power consumption. The AD7781 features an integrated programmable gain amplifier (PGA) and operates via a simple serial interface, making it ideal for applications requiring accurate and reliable data acquisition.








| Parameter | Value |
|---|---|
| Resolution | 24-bit |
| Input Type | Differential |
| Supply Voltage | 2.7 V to 5.25 V |
| Power Consumption | 330 µA (typical) |
| Input Voltage Range | ±VREF/Gain |
| Programmable Gain Settings | 1, 2, 4, 8, 16, 32, 64, 128 |
| Reference Voltage Range | 0.1 V to AVDD |
| Output Data Rate | Up to 16.6 Hz |
| Interface Type | Serial Peripheral Interface (SPI) |
| Operating Temperature | −40°C to +105°C |
| Package Options | 16-lead TSSOP |
The AD7781 is available in a 16-lead TSSOP package. Below is the pin configuration and description:
| Pin No. | Pin Name | Description |
|---|---|---|
| 1 | AVDD | Analog power supply (2.7 V to 5.25 V). |
| 2 | REFIN(+) | Positive reference input. |
| 3 | REFIN(−) | Negative reference input. |
| 4 | AIN(+) | Positive analog input. |
| 5 | AIN(−) | Negative analog input. |
| 6 | GND | Ground reference. |
| 7 | SCLK | Serial clock input for SPI communication. |
| 8 | DIN | Serial data input for SPI communication. |
| 9 | DOUT/RDY | Serial data output and data ready signal. |
| 10 | CS | Chip select input (active low). |
| 11 | P3 | Programmable digital output pin. |
| 12 | P2 | Programmable digital output pin. |
| 13 | P1 | Programmable digital output pin. |
| 14 | P0 | Programmable digital output pin. |
| 15 | DVDD | Digital power supply (2.7 V to 5.25 V). |
| 16 | RESET | Reset input (active low). |
Below is an example of how to interface the AD7781 with an Arduino UNO using SPI:
| AD7781 Pin | Arduino UNO Pin |
|---|---|
| AVDD | 5V |
| DVDD | 5V |
| GND | GND |
| SCLK | D13 (SCK) |
| DIN | D11 (MOSI) |
| DOUT/RDY | D12 (MISO) |
| CS | D10 (SS) |
| RESET | D9 |
#include <SPI.h>
// Define AD7781 pins
#define CS_PIN 10
#define RESET_PIN 9
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Configure SPI settings
SPI.begin();
SPI.setDataMode(SPI_MODE1); // CPOL = 0, CPHA = 1
SPI.setClockDivider(SPI_CLOCK_DIV16); // Set SPI clock speed
SPI.setBitOrder(MSBFIRST); // Most significant bit first
// Configure AD7781 pins
pinMode(CS_PIN, OUTPUT);
pinMode(RESET_PIN, OUTPUT);
// Reset the AD7781
digitalWrite(RESET_PIN, LOW);
delay(10); // Hold reset low for 10 ms
digitalWrite(RESET_PIN, HIGH);
delay(10); // Wait for the device to initialize
// Set CS pin high (inactive)
digitalWrite(CS_PIN, HIGH);
}
void loop() {
// Start SPI communication with AD7781
digitalWrite(CS_PIN, LOW);
// Read 24-bit data from AD7781
uint8_t data[3];
for (int i = 0; i < 3; i++) {
data[i] = SPI.transfer(0x00); // Send dummy byte to receive data
}
// End SPI communication
digitalWrite(CS_PIN, HIGH);
// Combine the 3 bytes into a 24-bit value
long adcValue = ((long)data[0] << 16) | ((long)data[1] << 8) | data[2];
// Print the ADC value
Serial.print("ADC Value: ");
Serial.println(adcValue);
delay(1000); // Wait 1 second before the next reading
}
No Data Output:
Incorrect ADC Values:
Device Not Responding:
By following this documentation, users can effectively integrate the AD7781 into their designs and achieve high-precision measurements for a variety of applications.