

The AD5693, manufactured by 7SEMI, is a high-performance 16-bit Digital-to-Analog Converter (DAC) designed to convert digital signals into precise analog voltages. With its 16-bit resolution, the AD5693 ensures smooth signal transitions and fine control over output levels, making it ideal for applications requiring high accuracy and stability.








The AD5693 is a single-channel DAC with an I²C-compatible interface, offering excellent performance in a compact package.
| Parameter | Value |
|---|---|
| Resolution | 16 bits |
| Output Voltage Range | 0 V to VREF |
| Reference Voltage (VREF) | 2.5 V (typical) or external |
| Supply Voltage (VDD) | 2.7 V to 5.5 V |
| Power Consumption | 0.7 mW (typical at 3.3 V) |
| Interface | I²C (up to 400 kHz) |
| Output Type | Voltage output |
| Operating Temperature | -40°C to +125°C |
| Package | 8-lead MSOP or 8-lead LFCSP |
The AD5693 is available in an 8-pin package. Below is the pinout and description:
| Pin No. | Name | Description |
|---|---|---|
| 1 | VDD | Positive power supply (2.7 V to 5.5 V) |
| 2 | GND | Ground |
| 3 | SDA | I²C data line |
| 4 | SCL | I²C clock line |
| 5 | VOUT | Analog output voltage |
| 6 | VREF | Reference voltage input (internal or external) |
| 7 | A0 | I²C address selection pin |
| 8 | NC | No connection |
The AD5693 is straightforward to use in a circuit, thanks to its I²C interface and flexible voltage reference options. Below are the steps and considerations for integrating the DAC into your design.
0x0C, but it can be modified by connecting A0 to VDD or GND.Below is an example of how to interface the AD5693 with an Arduino UNO to output a specific voltage.
#include <Wire.h> // Include the Wire library for I²C communication
#define DAC_ADDRESS 0x0C // Default I²C address of the AD5693
void setup() {
Wire.begin(); // Initialize I²C communication
Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
uint16_t dacValue = 32768; // 16-bit value (e.g., mid-scale for 2.5V reference)
writeDAC(dacValue); // Write the value to the DAC
delay(1000); // Wait for 1 second
}
// Function to write a 16-bit value to the AD5693
void writeDAC(uint16_t value) {
Wire.beginTransmission(DAC_ADDRESS); // Start communication with the DAC
Wire.write(0x30); // Command to write to the DAC register
Wire.write(value >> 8); // Send the upper 8 bits of the value
Wire.write(value & 0xFF); // Send the lower 8 bits of the value
Wire.endTransmission(); // End communication
Serial.print("DAC Value Written: ");
Serial.println(value); // Print the written value for debugging
}
dacValue variable determines the output voltage. For example, with a 2.5 V reference, a value of 32768 corresponds to 1.25 V (mid-scale).DAC_ADDRESS) if the A0 pin configuration changes.No Output Voltage:
Incorrect Output Voltage:
I²C Communication Failure:
Q: Can I use an external reference voltage?
A: Yes, the AD5693 supports external reference voltages for improved accuracy. Ensure the voltage does not exceed the supply voltage.
Q: What is the maximum output current of the DAC?
A: The AD5693 can source or sink up to 10 mA. For higher loads, use a buffer amplifier.
Q: How do I calculate the output voltage?
A: The output voltage is calculated as:
[
V_{OUT} = \left(\frac{\text{DAC Value}}{2^{16}}\right) \times V_{REF}
]
For example, with a DAC value of 32768 and a reference voltage of 2.5 V, the output voltage is 1.25 V.
Q: Can I use the AD5693 with a 5 V microcontroller?
A: Yes, the AD5693 supports supply voltages up to 5.5 V, making it compatible with 5 V systems. Ensure the I²C lines are properly level-shifted if needed.
By following this documentation, you can effectively integrate the AD5693 into your projects for precise digital-to-analog conversion.