# 16 bit R2R DAC?

I want to build a 16 bit R2R DAC using two 74HC595 chip. I need the DAC to replace the potentiometer of a lab PSU.

While researching, in the forums and basically everywhere they suggested that R2R DACs shouldn't be above 8-10 bits because they lose precision in higher bits and I have to use 0.001% resistors. but because I'm not going to use it for some audio stuff, even +5-10% of error is fine. as long as I'm getting steps below 1mV.

• Is it practical to build a 16 bit R2R DAC for this purpose?
• There's no problem building it as far as I can see but it seems pointless. I would imagine that variations in each output's high and low voltages will introduce large errors and you may not be able to reach V+ or V0. – Transistor Jan 4 '20 at 8:17
• @Transistor What if I reduce the resolution to 14 bits? same problem? – ElectronSurf Jan 4 '20 at 8:55
• I've never done it. Try creating a spreadsheet with a cell for each bit. Set each bit to 0 or 1 as required. Read the datasheet and get the spread of voltages for a logic low and a logic high. Let's say the logic high is in the range 4.8 V +/- 0.1 and logic low is 0.3 V +/- 0.18 V. Write a function to give the output voltage: =if(A1 = 1, 4.8 + Rand() * 0.2 - 0.1, 0.3 * 0.18 - 0.09) for each bit. Then write your R-2R calculation. On Excel you press F9 to recalculate and new random numbers will be generated. Watch the output change for a particular bit-pattern. – Transistor Jan 4 '20 at 9:05
• Accuracy is not the only problem. You also need to worry about linearity and monotonicity. You may get small steps but some will be positive and some negative, and the size of steps will vary. – Elliot Alderson Jan 4 '20 at 14:28
• The sensitivity to error is 50% of the bit position. thus the wort case is the msb R's of 1% contribute 0.5% error of their weight which is 1/2 of the total range. so a 10 bit DAC has a resolution of 0.1% and 0.1% R value for msb contributes 0.05% error. If the R error is > 0.2% then there are missing codes near 0111111111 or the mid voltage range. Other R position errors will show up with missing AND extra codes near near ...0111...boundaries due to tolerance errors and noise. – Tony Stewart EE75 Jan 4 '20 at 19:27