

The ADU is an Analog-to-Digital Converter (ADC) designed to convert analog signals into digital data for processing in digital systems. This component is essential in bridging the gap between the analog world and digital electronics, enabling microcontrollers, processors, and other digital devices to interpret real-world signals such as temperature, pressure, sound, and light.








The ADU is a versatile ADC with the following key specifications:
| Parameter | Value |
|---|---|
| Resolution | 10-bit, 12-bit, or 16-bit options |
| Input Voltage Range | 0V to 5V |
| Sampling Rate | Up to 200 kSPS (kilo-samples per second) |
| Supply Voltage | 2.7V to 5.5V |
| Power Consumption | Low power (typical: 1.5 mW) |
| Communication Interface | SPI or I2C |
| Operating Temperature | -40°C to +85°C |
Below is the pinout for the ADU:
| Pin Name | Pin Number | Description |
|---|---|---|
| VDD | 1 | Positive power supply (2.7V to 5.5V) |
| GND | 2 | Ground |
| VREF | 3 | Reference voltage input |
| AIN+ | 4 | Positive analog input |
| AIN- | 5 | Negative analog input (for differential mode) |
| SCLK | 6 | Serial clock input (SPI mode) |
| SDI/SDA | 7 | Serial data input (SPI) or data line (I2C mode) |
| SDO/ADDR | 8 | Serial data output (SPI) or address select (I2C) |
| CS | 9 | Chip select (active low, SPI mode only) |
| NC | 10 | No connection |
#include <SPI.h>
// Define ADC pins
const int CS_PIN = 10; // Chip select pin for the ADU
void setup() {
// Initialize SPI communication
SPI.begin();
pinMode(CS_PIN, OUTPUT);
digitalWrite(CS_PIN, HIGH); // Set CS pin high to deselect the ADC
Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
uint16_t adcValue = readADC(); // Read ADC value
float voltage = (adcValue * 5.0) / 1023.0; // Convert to voltage (assuming 10-bit ADC)
Serial.print("ADC Value: ");
Serial.print(adcValue);
Serial.print(" | Voltage: ");
Serial.println(voltage, 3); // Print voltage with 3 decimal places
delay(500); // Wait for 500ms before the next reading
}
uint16_t readADC() {
digitalWrite(CS_PIN, LOW); // Select the ADC
delayMicroseconds(1); // Small delay for stability
// Send and receive data over SPI
uint8_t highByte = SPI.transfer(0x00); // Send dummy byte to receive high byte
uint8_t lowByte = SPI.transfer(0x00); // Send dummy byte to receive low byte
digitalWrite(CS_PIN, HIGH); // Deselect the ADC
// Combine high and low bytes into a 16-bit value
return (highByte << 8) | lowByte;
}
No Output or Incorrect Readings
Noisy or Fluctuating Readings
Communication Failure
Can the ADU handle negative input voltages?
What is the maximum sampling rate?
Can I use the ADU with a 3.3V microcontroller?
How do I select between SPI and I2C modes?