Extending DAC resolution using digital potentiometer

Posted on Monday, March 10th, 2014 in Arduino, AVR by DP


Kerry Wong writes:

One way to extend the resolution of a digital-to-analog converter (DAC) is by employing a sigma-delta converter in software. The main disadvantage of such approach is the slow speed. Alternatively, we can use some extra hardware to extend the usable resolution of a DAC. In this post, I will illustrate one such method to extend an 8-bit DAC to 16 bits using a digital potentiometer.
So why do we want to extend the resolution of a DAC at the first place? Well, one of the key reasons is to lower cost. A 8-bit DAC usually costs less than a dollar, whereas a 16-bit DAC can easily cost ten to twenty times more. Fortunately, with the help of a potentiometer we can make a high resolution DAC out of a low resolution one.

This entry was posted on Monday, March 10th, 2014 at 7:00 pm and is filed under Arduino, AVR. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

5 Responses to “Extending DAC resolution using digital potentiometer”

  1. JBeale says:

    Using a digital pot between two DAC outputs is perfectly valid. Does it really save money? The three parts in this circuit together are over $10 in unit qty: LTC1665 $3.55 + AD5206 $4.89 + AD8603 $1.69 = $10.13
    Compare that with a simple I2C 16-bit DAC like MAX5217 which is $3.00 from Digikey and no hand-selection of DAC channels needed.

  2. JBeale says:

    Or, for $8 each, you can get the AD5680 which is guaranteed 12 bit accurate and 18 bit monotonic, which may be better than the 8 bit dac + digipot could do.

  3. kdw says:

    I used AD5206 because that was the only digital potentiometer I have on hand, you can easily get a single channel digital pot for around $1. The same goes with LTC1665. If you use TLV5620, you can cut that cost by half as well.

    The main point of this post though was to illustrate another way of improving DAC resolution, but you are correct, MAX5217 is pretty good spec-wise.

  4. Drone says:

    Study the data sheets. Ask yourself how these digital potentiometers stack up when it comes to accuracy and resolution – pay attention to the temperature dependencies.

  5. vlad xxx says:

    atmega328 supports up to 16 bit pwm on timer1. ( pins 9, 10)

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Recent Comments

  • KH: IMHO PCA9685 is not a really good part for this application. It's a PWM LED driver for goodness' sake. NXP _does_not_ mention servos in the...
  • KH: So it's a servo library designed by a software guy, or a library targeted at embedded newbies, or a learner bike. Given the design of...
  • Max: A thing I wish I knew getting into Arduino-controlled servos is that the typical "180 degrees" servos DO NOT move 180 degrees for the standard...
  • Max: I have certainly noticed certain suppliers (like Adafruit, Pololu) being... "western-facing" - which is another way to say their prices definitely aren't Eastern Europe compatible,...
  • Shawn: Hello