Thursday, August 21, 2014

Comparing DACs

Just some scratch paper comparing DAC converters currently on the market. I`m looking for a +-1% output accuracy without need to calibrate each device if possible. Resolution starting from 12bit is required. SPI or I2C has no preference. Price must be lower than 5 euro per part at 10pc quatities.

MCP4725 - 12 bit resolution *4095 steps* - Costs 0.79euro each @10pc
Powering from 3.0 volts ==> Each LSB equals 3v/12bit = 0.73mV

INL Error +-14.5 LSB MAX ==> 29.00 LSB per part variation MAX ==> 29LSB equ 24.25mV
DNL Error  +-0.75 LSB MAX ==> 1.50 LSB per part variation MAX ==> 1.50LSB equ 1.01mV
Offset error 0.75% of FSR ==> FSR = 3.0Volts, 0.75% from 3 volts = 22.5mV
Gain Error +-2% MAX of FSR ==> FSR = 3.0Volts, 4% from 3 volts = 120mV

Absolute output error 5.7% maximum or -2.4% to 3.3%. 
Please note: I assumes those error terms are additive -> aka worst case scenario. In reality, they may offset each other, at least partially.(thanks for the note @dannyf)

Note: Datasheet makes exception that specs are only valid from decimal value 100 to 4000, beyond that, there is no way telling what the accuracy is. Otherwise, don't use this DAC if you use it below 100 or above 4000 unless you don't care about unspecified accuracy.

AD5620b (b-grade) - 12 bit resolution - Costs 4.21euro each @10pc
Powering from 3.0 volts ==> Each LSB equals 3v/12bit = 0.73mV

Relative accuracy: +-1 (is this INL??)  ==> +-0.73mV ==> 1.46mV per part variation
DNL: +-0.25 ==> +-0.18mV ==> 0.36mV per part variation
Offset error: +-9mV==> 18mV per part variation possible.
FullScale error: +-0.85% FSR Max ==> +-25,5 mV ==> 51mV per part variation possible
Gain error: +-0.85% FSR max ==> +-25.5mV ==> 51mV per part variation possible
Zero-code error: 8mV ==> This parameter is useful to know that you do not select this part if you need to go below 8mV, because there is a change the output won't make it below 8mV.

0.73mV INL + 0.18mV DNL + 9mV OffSet + 25.5mV FullScale error = +-35,41mV
For 3000mV reference 35.41mV is +-1,18%
Absolute output error 2,36% maximum

MAX5705BAUB - 12bit resolution - Costs 1.11 euro each @10pc
Powering from 3.0 volts ==> Each LSB equals 3v/12bit = 0.73mV

INL : +- 0.25 ==> +-0.18mV ==> 0.36mV per part variation
DNL: +-1.00 ==> 1.46mV per part variation
Offset error: +-5mV ==> 10mV per part variation
Gain error: +-1.0% of full scale ==> 60mV per part variation
Zero scale error: 0 to +10mV
Full scale error: +-0.5% of FS ==> 30mV per part variation ==> why can this be less than gain error? Wasn't it gain error + gain error = full scale error?
Bonus/Pro: this one also includes internal precision reference.

0.18mV INL + 0.73mV DNL + 5mV offset + 60mV gain = +-65,91mV
For 3000mV reference 65,91mV is +-2,19%
Absolute output error 4.4% maximum

AD5641BKSZ - 14 bit resolution *16383 steps* - Costs 4.00 euro each @10pc
Powering from 3.0 volts ==> Each LSB equals 3v/14bit = 0,183mV

INL: +-4 LSB ==> +-0,732mV
DNL +-1 LSB ==> +-0.183mV
Offset error : +-10mV
Gain error: +-0.037% of FSR ==> +-11.1mV

0,732mV INL + 0.183mV DNL + 10mV Offset + 11.1mV gain = +-22,015mV
For 3000mV reference 22,015mV is +-0,734%
Absolute output error 1,47% maximum

AD7849A - 14 bit resolution *16383 steps* - costs 16.50 euro each @10pc
Powering from 3.0 volts ==> Each LSB equals 3v/14bit = 0,183mV

INL: +-5 LSB Max ==> +-0,915mV
DNL: +- 0.25LSB Max ==> +-0,04575mV
Gain Error: +-4LSB Max==> +-0,732mV
Offset error: +-6 LSB Max.==> +-1,098mV

0.915mV INL + 0.04575mV DNL + 0.732mV Gain + 1.098mV offset = 2,79075mV
For 3000mV reference 2,79075mV is +-0,093025%
Absolute output error 0,18605% maximum -WOW!-

AD5621b - 12 bit resolution - costs 1.94 euro each @10pc
Powering from 3.0 volts ==> Each LSB equals 3v/12bit = 0.73mV

INL (finally, this datasheet actiually calls it INL instead of only Relative Accuracy)
INL: +1 LSB max ==> +-0.73mV
DNL: +- 0.5 LSB max ==>+-0,365mV
Offset error: +- 10mV
Gain error: +-0.037% of FSR ==> +-11.1mV

0.73mV INL + 0.365 DNL + 10mV offset + 11.1mV Gain = 22,195mV
For 3000mV reference 22,195mV is +-0,74%
Absolute output error 1,48% maximum
Note: This one is a look alike of the AD5641 above, almost identical accuracy.

Please note that a gain and offset error are more easily calibrated by doing a 2 point measurement. INL error is more difficult to calibrate since it acts non-linear over the entire output so you will have to do multiple point measurement and try to extrapolate from each calibration to cover the INL error.