Hi, we need help regarding DAC IC, we are using for our development.
We used AD5696ARUZ (Digital to Analog Converters - DAC 16 bit 4-ch 12C),
Right now we are using below configuration:
Vdd = 4.86 V, Vref = 4.86 V, Gain = 2
1. As per this configuration it's clear that, we can't get Vout at 2*Vref. It's clearly our mistake here.
Attaching schematic of design
2. Now, as part of solution we want to achieve range for Vout that's 0-5V Only. Also, let us know what is maximum output voltage this IC
can generate
Kindly refer below DAC vs Vout chart:
Vout | ||
DAC | Right | Left |
0 | 0.04 | 0.06 |
6000 | 0.7 | 0.7 |
10000 | 1.16 | 1.16 |
12000 | 1.39 | 1.39 |
14000 | 1.62 | 1.62 |
16000 | 1.85 | 1.85 |
20000 | 2.31 | 2.31 |
36000 | 4.15 | 4.15 |
38990 | 4.499 | 4.499 |
39000 | 4.5 | 4.5 |
39010 | 4.501 | 4.501 |
40000 | 4.61 | 4.61 |
40000 | 4.615 | 4.615 |
41400 | 4.774 | 4.774 |
41410 | 4.775 | 4.774 |
41420 | 4.775 | 4.774 |
41440 | 4.775 | 4.774 |
41450 | 4.775 | 4.775 |
48000 | 4.77 | 4.77 |
54000 | 4.77 | 4.77 |
58000 | 4.77 | 4.77 |
62000 | 4.77 | 4.77 |
65535 | 4.775 | 4.775 |
From above chart its clear that data is not linear.
3. Attaching code we are using for communicating on I2C interface.
from smbus2 import SMBus class AD5696(object): def __init__(self, Bus): self._device = SMBus(Bus) self._device.write_i2c_block_data( 0x0c, 0x70, [0, 0]) self.set_voltage(0, 1) self.set_voltage(65535, 2) def set_voltage(self, ValueDAC, SelectedChannel): Data = [(ValueDAC >> 8) & 0xFF, (ValueDAC) & 0xFF] if SelectedChannel == 1: self._device.write_i2c_block_data( DEFAULT_ADDRESS, WRITEDAC_A, Data) updateRunTime(ValueDAC) elif SelectedChannel == 2: self._device.write_i2c_block_data( DEFAULT_ADDRESS, WRITEDAC_B, Data)
Kindly look into this issue and let me know if you have any suggestions and solution on this.