AD5791 based DAC platform - Page 1
Forum section: electronics / general

author: niner_007
author_rank: Frequent Contributor
timestamp: April 12, 2021, 11:28:23 pm
content: Hey folks, I'm working on a precision voltage source platform. Not done yet, with much more left to do.I'll probably make a handheld version of this, inspired by Ian's very excellent PDVS.The architecture is modular, made of a DAC board, a reference board, analog supplies board and main board. The modularity is intentional and done for design flexibility as a top goal (reference, DAC, supplies can be replaced, improved or graded), and each board can be used separately in other designs by themselves as well.Main board runs isolated digital supply, the digital electronics, battery charger, cal circuitry. A section of it will be dedicated to output buffering and output kelvin sensing. Main board, holds all other boards, on both sides, and is 100x70mm, smaller than most handheld instruments, a Fluke 57V is 150x70mm, Keysight U1272 is 170x80mm, Keysight U1733C is 140x70mm.Reference board is based on LTC6655-5, it buffers and scales/inverts the reference to +10V and -10V. Reference board also contains an LDO supplied from the analog +15V supply.The DAC board hosts some supply filtering, the AD5791 DAC IC, output buffer, and a small STM32 microcontroller which controls the DAC, keeps the cal constants, and communicates over UART.The supplies board is based on ADP5070, with filters and with ADP7118 and ADP7182 as LDO post regulators.Main board runs planned to run an STM32 micro, with an LTM8068 uModule isolated supply, for digital power.The entire system runs on 3V, from which +15V and -15V is generated. The DAC is configured and can generate a 0 to +/-10V output. I plan to run the system from two independent 18650 cells, each independently powering the system. A charger will be built in to charge the cell that is not in use. Each cell should power the system for about 20hrs for a total of 40hrs. I do not plan to use an LM399 or LTZ1000 in a handheld version as simply they use too much power for handheld. However, the architecture can easily accommodate it with minimal or no changes to the mainboard and other modules.If I ever experiment with an LTZ1000 version, it will be based on a 3458A reference module, with the buffering and scaling on the main board.I plan to experiment at some point with an LT1533 regulator for lower noise. Of course the system can use any different supply scheme, like 2 x 9V batteries, and an 7815 regulator with an inverter to create the negative supply. Or external power from a dedicate low noise supply, like described above, but bigger, 2 x 7 x 18650 cells in an independent bank configuration. Such modification I'm considering for later not initial rev.

author: Blue
author_rank: Regular Contributor
timestamp: April 13, 2021, 12:30:25 am
content: Very interesting,Care to share your schematic?

author: niner_007
author_rank: Frequent Contributor
timestamp: April 13, 2021, 12:48:23 am
content: Quote from: Blue on April 13, 2021, 12:30:25 amWhich one? Honestly I mostly follow the designs from Analog, from their two reference designs (the old one, and the new one, I find the old reference design more voltnutty, EVAL-5791). I need to clean them a little bit before sharing. :-)

author: TiN
author_rank: Super Contributor
timestamp: April 13, 2021, 02:39:41 am
content: Using LTC6655 in LCC package would make more sense. LTZ1000 would make even more sense

author: Andreas
author_rank: Super Contributor
timestamp: April 13, 2021, 04:11:46 am
content: Quote from: niner_007 on April 12, 2021, 11:28:23 pmWhy then a LTC6655? with > 5 mA current consumption and needing a extra voltage regulator to reduce the 15V to less than 12V?By the way: the 1/f noise of the LTC6655 is dependant on supply voltage. At 10.2 V I measured 30% more 1/f noise than at 5.7V.https://www.eevblog.com/forum/metrology/lm399-based-10-v-reference/msg2379519/#msg2379519with best regardsAndreas

author: niner_007
author_rank: Frequent Contributor
timestamp: April 13, 2021, 04:18:43 am
content: It’s not final, I’ll probably used a zener regulator for it in the end, as for LTC6655, do you have another recommendation?

author: MiDi
author_rank: Frequent Contributor
timestamp: April 13, 2021, 12:12:15 pm
content: Nice project niner_007, looking forward for a PDSV-like OSHW projectI am curious why one would combine AD5791 with LTC6655 and not LM399A or even LTZ1000?At least the AD5781 is drop in replacement and would better fit LTC6655, but "only" 18bit resolution.The new Ti DACx1001-Series - especially DAC11001A would be a lower noise alternative with slightly worse INL/TC/drift specs.

author: Kleinstein
author_rank: Super Contributor
timestamp: April 13, 2021, 04:00:59 pm
content: The LTC6655 is not that bad. It takes quite some power, but also gets low noise.If 10 V are wanted, a Ref102 (maybe 2 or 3 in parallel) may be an option too. It directly gives 10 V and has lower power, though higher noise.The LTC6655 should be lower noise than a LM399 and still a bit lower power. A gain of 2 to get 10 V is also easier than some 1.45 needed for a 7 to 10 V step. The main drawback is the TC and long term drift.I don't think one would really need 2 µCs. The calibration and similar part would not need much extra processing power. A single µC should be sufficient.An idolated supply for the µC may cause more trouble than it help - good supply fitlering may be easier and lower noise, especially if the µC runs low power and maybe even goes to a deep sleep for DC output.

author: KT88
author_rank: Frequent Contributor
timestamp: April 13, 2021, 06:45:14 pm
content: QuoteWhy would 7nV/rtHz matter against 7.5nV/rtHz for DAC11001A vs. AD5791B when the INL of the DAC11001A is +/-4LSBs versus +/-1LSB max. for the AD5791B?The DAC11001A is only an 18-bit DAC in that regard...The 5791A is at the same 1k-price level as the DAC11001A that has no option to upgrade if performance is key...CheersAndreas

author: niner_007
author_rank: Frequent Contributor
timestamp: April 13, 2021, 10:51:17 pm
content: Quote from: MiDi on April 13, 2021, 12:12:15 pmLTC6656 is a favoriteMostly battery life and warm up time were the concern for handheld operation. It would only be an option I consider with two independent battery banks topology within the handheld unit, were battery power is always used even when charging. The idea is that the architecture is modular, any reference could be used.For non handheld operation LTZ1000 would be the way to go.

author: niner_007
author_rank: Frequent Contributor
timestamp: April 13, 2021, 10:55:21 pm
content: Quote from: Kleinstein on April 13, 2021, 04:00:59 pmIt’s not for processing power, it’s for added modularity. I could use the DAC board anywhere, it needs only the supplies and reference.

author: KT88
author_rank: Frequent Contributor
timestamp: April 13, 2021, 11:10:42 pm
content: There is one issue with plastic packages that is still vastly underestimated: Moisture.You can get uncertainties in the order of 100ppm or more even with the best references like the LTC6655. A viable way to mitigate that problem is to store the circuit in an air tight box together with a desiccant which would need to be regenerated from time to time.It won't matter to take the circuit out of that box for a couple of hours as it takes many houres to days for the package to soak enough water to influence the calibration. But it also depends on the ambient relative humidity...LM399 or LTZ1000 are inherently immune against that uncertainty both by the heater and the metal can.CheersAndreasEdit: The calibration would have to be done in the dried state of course.

author: MiDi
author_rank: Frequent Contributor
timestamp: April 14, 2021, 12:18:30 am
content: Quote from: KT88 on April 13, 2021, 06:45:14 pm1.1µVpp vs. 0.4µVpp, low frequency noise is more of a concern at DC than noise density at higher frequencies.Then the AD5791Ais an 18-bit DAC in that regard tooWhy do you compare specs for AD5791Band than referring to price of AD5791A?

author: Kleinstein
author_rank: Super Contributor
timestamp: April 14, 2021, 06:34:00 am
content: The numbers for the noise are not directly comparable: the AD number is for a +-10 V reference, while the Ti data are for a 10V/0 V reference and with an extra added buffer.Chances are the DAC110001 would still be slightly low LF noise, but more like twice the 0.4 µV_pp. So the difference is not that large, more like very similar if the AD noise data also includes the reference inversion.I think the point of comparing the data for the A and B version is, that that the cheaper B version is about comparable to the DAC11001A in price and performance. One still has the option to upgrade to the higher price and performance A version.

author: Andreas
author_rank: Super Contributor
timestamp: April 14, 2021, 07:11:20 am
content: Quote from: KT88 on April 13, 2021, 11:10:42 pmnot only the plastic package. It is also the Epoxy PCB which soaks moisture.So the problem is also visible with those modern ceramics SMD packages. (LS8-package).100 ppm is a bit on the high side.Maybe this is true for a SMD package which is ~factor 2-3 worse in stability than a DIP package.What I have measured is more like up to 0.5ppm / % rH for a DIP 8 package.(it depends a bit on the manufacturer of the epoxy).Quote from: KT88 on April 13, 2021, 11:10:42 pmAnd let at least 2 or more weeks for drying.with best regardsAndreas

author: KT88
author_rank: Frequent Contributor
timestamp: April 14, 2021, 08:49:56 am
content: QuoteKleinstein nailed it -I intended to make an apples to apples comparison - both AD5971A and DAC11001A are at 18Bit performance level and in the $30 ballpark. Comparing the DAC 11001A with the AD5791Bwould have been unfair as the B-version of the AD5791 is north of $60 (1k-price).QuoteYes, they drift as well - even with a U-cut around it.CheersAndreas

author: Anders Petersson
author_rank: Regular Contributor
timestamp: April 14, 2021, 10:21:00 am
content: Personally I would trade away handheld-ability if it means better performance. Battery operation could still be useful as UPS if the stability calls for constant power.If the user interface board is a separate module, we can experiment with different boards for different use cases, extend with USB or Ethernet, etc.

author: KT88
author_rank: Frequent Contributor
timestamp: April 14, 2021, 01:33:17 pm
content: QuoteOops - I missed that... in the Analog Devices worldBis forBetter.CheersAndreas

author: MiDi
author_rank: Frequent Contributor
timestamp: April 14, 2021, 01:50:11 pm
content: Quote from: KT88 on April 14, 2021, 08:49:56 amThanks, now got it, the points have to be taken independently and then it makes complete sense.Quote from: Kleinstein on April 14, 2021, 06:34:00 amI am puzzled why would the output voltage noise scale with reference voltage?Simplified this would mean output noise of resistive divider would scale with input voltage...

author: KT88
author_rank: Frequent Contributor
timestamp: April 14, 2021, 02:06:09 pm
content: QuoteThe reference noise is fixed in amplitude - if gain is applied, the noise will be amplified.CheersAndreas

author: niner_007
author_rank: Frequent Contributor
timestamp: April 14, 2021, 06:05:59 pm
content: One of the good ideas I saw earlier, after I finish it I can contribute one to the metrology kit going around so people could play, if folks are interested.

author: Kleinstein
author_rank: Super Contributor
timestamp: April 14, 2021, 06:31:19 pm
content: How the LF noise changes with differente operation point is not so easy to predict. There are several noise sources that add up. Noise from ampliers would be about undependent from the reference amplitude. 1/f noise from the resistors, which is well possible at that level would scale with the applied votlage and the other point is noise from the reference scalung - here the data-sheets are not very specific on the details. At that level the noise measurment is also not easy, as there can be noise from the reference at a comparable level. So they may subtract reference noise - a method that can introduce errors it the model is not correct.

author: branadic
author_rank: Super Contributor
timestamp: December 30, 2022, 12:22:46 pm
content: Just in case it wasn't posted before, here is something to read about AD5791.The 20-Bit DAC Is the Easiest Part of a 1-ppm-Accurate Precision Voltage SourceNow that we have ADR1399/LTZ1000/ADR1000 I wonder if someone has finished one of the designs already?I still have the evalboard, time to combine it with one of my references.-branadic-

author: macaba
author_rank: Regular Contributor
timestamp: December 30, 2022, 06:28:05 pm
content: A couple of months ago, I had the opportunity to evaluate the full platform - EVAL-SDP-CB1Z (controller), AD5791SDZ (DAC) and EV-LTZ1000-REFZ (reference).Figure 49 of the datasheet shows that the AD5791 is a segmented DAC with 6-bits of linear equal resistors and remaining 14-bits of R2R. I iterated through every setpoint in the MSB 9-bits and measured the resulting voltage (between -10V and +10V) using 3458A. This covers the 6-bit linear section, and the MSB 3-bits of the R2R section.As shown in the attached charts for 2 different AD5791SDZ boards; the linearity of the 6-bit linear segment is good but when the R2R section is used, it degrades the linearity.

author: branadic
author_rank: Super Contributor
timestamp: December 30, 2022, 09:26:50 pm
content: That pretty much looks like what is given in the datasheet Fig. 5, if we get rid of the additional curves.-branadic-

author: sahko123
author_rank: Frequent Contributor
timestamp: December 31, 2022, 01:38:01 am
content: can you post the comparison between the two as well. It's interesting to note how the r2r section varies

author: branadic
author_rank: Super Contributor
timestamp: December 31, 2022, 06:35:07 pm
content: It's not that one can extract the real datapoints from the diagram, even though the pdf contains scaleable vector graphics, so the answer is no.-branadic-

author: jaromir
author_rank: Unknown
timestamp: January 01, 2023, 10:01:20 pm
content: Quote from: branadic on December 30, 2022, 12:22:46 pmBack in early 2021 I made simple voltage source with LTZ1000A and AD5791B as the main components.Design requirementsIntended as voltage source for linearity sweeps, with short term stability and low noise as key requirements. INL was expected to be good enough for 5-digit-ish precision, but anticipated use was with external voltmeter.Apart from +-15V DC voltage, AC range with maximal 10VAC and 50/60/100/400 and 1000Hz frequencies is provided, too.How it worksThis is achieved in a single voltage range, +-16V, so it has some margin over desired range.Base of this unit is AD5791B in datasheet configuration. DAC has voltage reference +-7V, taken from LTZ1000 source and opamp inverter to obtain negative reference. Output range +-7V is amplified by amplifier with gain of 2,3 to obtain desired +-16V range. Output capability of this amplifier is increased by LT1010 buffer.It's driven by underutilized dsPIC33 microcontroller, display is bubble starburst, DL1414 type. RS232 for remote control is brought to the back panel.PSU is unsurprising, toroid transformer with separate windings for earth-referenced logic and +-15V for floating analog section.Each section (analog, PSU, digital) has separate compartment in the enclosure, with reference and DAC having its own plastic shield.AC is done with simple sinewave lookup table (no DDS), digital interface is plentiful fast for this task.ResultsI ran a quick DC INL check and found no surprises over what I expected, see attachment.Despite being designed as test source for short term stability, I found it was quite stable. It drifted approximately -4ppm after being continuously powered for three months (most of the drift happened in first week, likely relieving stress from soldering) and stayed there since then (~18 months) within 1ppm range. I can only compare it against a single Solartron 7081 and bunch of 6 digit meters with LM399 reference, so not much of a metrological value in those.Things to take a look atI made this as a tool for my personal use, from what I had lying around. No design files attached here, as this project is somehow untidy and half-baked, it takes a bit of effort to make it publishable. On the other hand - I really doubt anyone would replicate it and no particularly big surprises are hidden in this design to learn from.I collected a bunch of higher-resolution photographs in an imgur album herehttps://imgur.com/a/W15Z97Jand shaky video of output switching by 1V stepsResumeAD5791B works as datasheet says. LTZ1000A too.

author: r6502
author_rank: Regular Contributor
timestamp: January 01, 2023, 11:10:56 pm
content: Hi all,It is an interesting Project, similar to LTAN86andXdevs'srealisation with 18bit DAC's instead with 16Bit DAC's in LT's AN86.I wonted to realise this in 2023, but I think it will be difficult to realise as the needed parts are not available ...Guido

author: Mickle T.
author_rank: Frequent Contributor
timestamp: January 03, 2023, 07:44:23 pm
content: These are the results of scanning the MSB 9-bits of the AD5791 DAC with voltage measurement using the recently adjusted R6581.Attention is drawn to the bifurcation point in the middle of the scale, after which the differential nonlinearity increases.

author: macaba
author_rank: Regular Contributor
timestamp: January 04, 2023, 11:19:26 am
content: It looks like you've got a AD5791 that has a better matching between the 6-bit segment and the R2R segment compared to the 2 that I tried. Keep it safe and use it well!

author: branadic
author_rank: Super Contributor
timestamp: January 06, 2023, 12:53:19 pm
content: Thanks for the results shown so far. I wonder how a relatively simple 20 bit DAC like in the Data Precision 8200 performs to that in comparison. Sure, the reference in there is "only" an LM299 with its rather large noise, but assuming it would be replaced by the lower noise ADR1399, mh?-branadic-

author: Mickle T.
author_rank: Frequent Contributor
timestamp: July 01, 2023, 09:34:18 pm
content: The AD5791 configuration register has semi-documented LIN COMP bits that can be used to compensate for 3rd order residual non-linearity.The graphs show the amount of compensation for different values of the LIN COMP bit field. (Advantest R6581 PLC100, AD5791B, LTZ1000 10V).

author: NNNI
author_rank: Regular Contributor
timestamp: July 17, 2023, 10:55:10 am
content: Has the 'Gain of Two' configuration from the AD5791 datasheet (https://www.analog.com/media/en/technical-documentation/data-sheets/ad5791.pdf), Fig. 53 on page 25 been tried before? Does it have particular advantages in terms of drift or tempco, since the resistors are part of the same package?

author: iMo
author_rank: Super Contributor
timestamp: July 17, 2023, 11:00:38 am
content: Provided the two resistors are wired as a divider (it seems they are) it will help as the "ratio TC" with both resistors on a single die could be low.

author: Mickle T.
author_rank: Frequent Contributor
timestamp: July 17, 2023, 11:24:20 am
content: In the last two versions of AD5791-based multifunction calibrators, I have included support for both DAC modes (Gain 1x with Ib compensation and Gain 2x) to implement unipolar and bipolar ranges. During the tests, I did not find any measurable differences. Even the INL curve matches up to 0.1 ppm.

author: felixd
author_rank: Regular Contributor
timestamp: June 25, 2025, 05:31:51 pm
content: Hi Jaromir.Any updates on the project?

author: jaromir
author_rank: Unknown
timestamp: June 26, 2025, 07:52:36 am
content: Not really. I did no adjustments or other tweaking to the design since 2021, so I guess it reached its maturity. It serves me well for four years, mostly as a precision voltage source for linearity measurement sweeps.If I were to build it again, I'd go for lower common mode noise PSU and would add option for voltage dividers to obtain +-1,6V or +- 0,16V ranges.

author: Mickle T.
author_rank: Frequent Contributor
timestamp: June 26, 2025, 04:59:05 pm
content: Inspired by the great projects of Jaromir and Micke (https://www.eevblog.com/forum/metrology/diy-acvdcv-calibrator-with-ad5791/) I also made a simple ACV/DCV/DCI/OHM calibrator, slightly reworking the old DC-Source based on ADR1399+AD5791 (https://youtu.be/0AOd9971DGY).The modification primarily affected the transition from software to hardware SPI ATmega328P and switching the /LDAC signal from high to low level (I had to raise the pin of the DAC chip).Two ACV ranges 0...0.7 and 0...7 V RMS with a frequency from 10 Hz to 1 kHz were added. A table in RAM is used to generate a sine wave. At frequencies up to 1 kHz, the table has 400 samples, at 1 kHz the table length is reduced to 183 samples (SPI frequency is only 8 MHz).The rest of the capabilities remain unchanged: two DCV ranges +/- 1 V and +/- 10 V, five DCI ranges from 10 µA to 100 mA, six standard resistors from 10 Ω to 1 MOhm.

author: derZockerMP
author_rank: Regular Contributor
timestamp: July 06, 2025, 09:37:18 am
content: Nice projectDo you have photos from the PCB without the cover. Which precision resistors do you use?Best Regrds

author: Mickle T.
author_rank: Frequent Contributor
timestamp: July 06, 2025, 07:07:11 pm
content: Quote from: derZockerMP on July 06, 2025, 09:37:18 amSelecting resistors is the number one headache. Since the sealed oil-filled Vishay BMFs are currently unavailable for order due to embargo, I tried to select from the available stock of metal-foil and precision wire-wound resistors. Unfortunately, their overall dimensions are often beyond good and evil

author: Mickle T.
author_rank: Frequent Contributor
timestamp: July 08, 2025, 01:41:15 pm
content: One of the advantages of the AD5791 based DAC platform is the ability to easily expand its functionality. For example, when I needed to reproduce a current greater than 103 mA, I quickly assembled a simple and dirty voltage-controlled current source unit. It uses an ALMA 0.1 Ohm current shunt, whose residual temperature coefficient of 3 ppm/C is compensated by a copper resistor installed inside the ceramic tube. This, in turn, minimizes the error due to self-heating of the shunt. The slope of the transfer characteristic of 1 A / V is provided by a Hammon divider of 6 sealed metal-foil resistors C5-61, selected to sub-ppm TCR.