This is a software library for the Analog Devices precision DAC chips AD5724, AD5734, and AD5754 that works with the Arduino-based prototype boards. A shield is presently in development to accompany the library.
Why this family of DAC chips?
Using the Arduino platform, there are many ways to get an analog output from digital data. One way is to use a PWM output and then smooth the output with external circuity. Unfortunately, while this works, it does not provide the precision one might need when working with sensitive systems such as those in industrial control i.e. controlling the power of a laser, for instance. 😉
Finding the right DAC chip to fit your needs can be a daunting task. I searched and searched until finally settling on the AD57X4 family. I chose this family of DAC chips for the following reasons:
– DAC settling time of 10uS
– 4-channel [Quad] output
– Single-supply dependency
– Unipolar or Bipolar output
– Selectable output range — six output ranges available, including the popular 0-10VDC
– Serial communication via the SPI of the Arduino
I think the only drawback to this chip is that it is so expensive. It’s not the most expensive DAC chip that I found, however. I think the value is right on though because it is such a versatile chip.
As these DAC chips are intended to be precision, some circuit design considerations should be made so that you get the best performance from these chips. I found a great resource in the AD5754 EVAL board PDF which explains the best practices when designing a board for this chip. This PDF also gives a full schematic of the Evaluation board which can be useful if you are designing your own shield.
There is also a wealth of information regarding these chips in the Analog Devices Circuit Note 86.
In addition to the above references, the datasheet for the AD57x4 chip suggests using a precision voltage reference chip. On my shield, I’m using the ADR421BRZ. I’m also using the ultra-low noise, low drop-out [LDO] TPS7A4700 regulator from Texas Instruments for the supply to both the ADR421BRZ and the AD5754 chip.
Arduino Mega 2560 R3 Precision DAC Shield Information:
As of March 13, 2014, I have sent off what I believe is my final draft of this precision DAC shield to the fabricator. I should have the new boards back in a few weeks and at that time I’ll be able to assemble them and see their performance. In the mean time, here are some rendered images of the shield courtesy of OSHPark.
UPDATE July 22, 2013:
I have received my prototype boards back from the fabricator and have installed the AD5754 onto it. The library works without a flaw so I’ve decided to expand it to cover all of the capabilities of this chip. I will upload the expanded Arduino DAC library [version 1.0.1] either tonight or later this week.
UPDATE July 27, 2013:
I’ve uploaded version 1.0.1 of the Analog Devices AD57x4 DAC library. This version now supports all of the various voltages that this DAC works with. Note that I have not tested the bipolar outputs so I do not know for sure if this code works, but it should. If you have any issues then please let me know.
UPDATE November 18, 2013
I’ve uploaded version 1.0.2 of the Analog Devices AD57x4 DAC library. This version allows one to customize which Slave Select [SS] pin used on the shield. Simply add the pin number as the third argument when instantiating the DAC library and you’re all set. This has been tested and it works.
UPDATE December 6, 2013
Special thanks to Bernd Rilling for not only confirming that the library works with his shield, but also for making some welcomed changes to the library, such as being able to read the registers and a bug fix from the previous version where the user-defined SS pin was not instantiated. This latest version, 1.0.3, is much improved with this collaboration.
UPDATE November 3, 2018
Adding the schematic and BOM for Version 1.0.4 in PDF format. Note, I seem to have lost the data for version 1.0.5, which uses a different power regulator. As I recall, this is the only change.
UPDATE April 13, 2019
I received a request to add support for Daisy Chaining devices together. In doing this, I decided to not make the library backwards compatible so I have changed the version to 2.0.0b. Note, this is a Beta release as I have not been able to test it.
Daisy Chain Support (Beta)
DAC57X4 Library, Version 2.0.0b: DAC57X4_V2.0.0b
No Daisy Chain Support (Stable)
DAC57X4 Library, Version 1.0.3: DAC57X4_V1.0.3
DAC57X4 Library, Version 1.0.2: DAC57X4_V1.0.2
DAC57X4 Library, Version 1.0.1: DAC57X4_V1.0.1
DAC57X4 Library, Version 1.0.0 [beta]: DAC57X4-V1-0-0-b