Extending DAC resolution using digital potentiometer

in Arduino, AVR by DP | 5 comments

ExtResDacSetup

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 in Arduino, AVR and tagged , , , , .

Comments

  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 Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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