Skip to main content
Wie wil meedoen met de solarbike zelfbouw club?
Who wants to join the solarbike DIY club?

Cheap 16 bit DAC AD5662 for the Arduino

Published: 22 June 2013
Last updated: 08 August 2019


If you need a high resolution DAC for the Arduino, the AD5662 is good choice:

  • 16 bit resolution
  • Low price $4
  • No extra components required
  • 5V operation
  • Simple 3 pin interface
16 bit DAC AD5662 for the Arduino16 bit DAC AD5662 for the Arduino

MSOP package

The disadvantage is that the AD5662 can't be used on a perfboard because it is not available in a dual in-line package. The only available package is 8 pin SOT-23 or MSOP with a pin pitch of 0.65 mm.

AD5662 MSOP packageAD5662 MSOP package

You can use a MSOP adapter to mount the AD5662, but even than, soldering is not so easy. Because I was afraid to ruin a chip, I had already ordered two pieces. And indeed, the first chip was destroyed while messing around with soldering. Note that the allowed soldering temperature is just 260ºC. And it doesn't hurt to use an anti static wrist strap.

Soldering fine-pitch SMD components

Pitch 0.8mm or larger

For SMD components, with a pitch of 0.8mm or larger, use drag soldering:

But soldering in the traditional way is possible too. We just need a fine soldering iron tip, a steady hand, a fine tweezers, and good eyes. We can even solder wires to the pins:


Pitch 0.65mm or smaller

The problem with fine pitch, 0.65mm or smaller, is not the lack of the necessary watchmaker skills, but the problem that tin will be sucked immediately in between the pins, due to the capillary effect. Drag soldering doesn't work here, use the flood and wick method. Simply solder all pins together and suck the excess tin away with desoldering wick:

MSOP adapter

On eBay you find plenty of adapter boards.

MSOP adapter from eBayMSOP adapter from eBay

16 bit Arduino DAC example program

The example program creates a sawtooth.

#if ARDUINO >= 100 
  #include "Arduino.h"
  #include "WProgram.h"
#include "DAC16.h"
const byte SYNCpin = 2;
const byte SCLKpin = 3; 
const byte DINpin = 4;
DAC16 dac16(SYNCpin, SCLKpin, DINpin);
void setup(void) 
void loop(void) 
{ for(unsigned i=0; i<65536; i+=1024) dac16.write(i); // create a sawtooth 


Download the library and the examples at GitHub HERE.