SnipCard DAC 16 bit – 0-5V unbuffered

34,90 inc. VAT

DAC 16 bit single channel SnipCard for Archiduino System (or Arduino, if used as breakout board).

This SnipCard gives Archiduino an accurate 16 bit DAC thanks to the AD5662 made by Analog Devices. With breadbording cables you can easily adapt it to work with every Arduino board model.

Description

DAC 16 bit single channel SnipCard for Archiduino System (or Arduino, if used as breakout board).

This SnipCard gives Archiduino an accurate 16 bit DAC thanks to the AD5662 made by Analog Devices. With breadbording cables you can easily adapt it to work with every Arduino board model.

Techical specifications:

The AD5662, a member of the nanoDAC family, is a low power, single, 16-bit buffered voltage-out DAC that operates from a single 2.7 V to 5.5 V supply and is guaranteed monotonic by design.
The AD5662 requires an external reference voltage to set the output range of the DAC. The part incorporates a power-on reset circuit that ensures the DAC output powers up to 0 V (AD5662x-1) or to midscale (AD5662x-2), and remains there until a valid write takes place. The part contains a power-down feature that reduces the current consumption of the device to 480 nA at 5 V and provides software-selectable output loads while in power-down mode. (from AD5662 datasheet).

The output channel is secured by a single-line ESD-protection diode (according to IEC 61000-4-2: ± 30 kV contact discharge, ± 30 kV air discharge)

The 16 bit DAC SnipCard voltage reference is provided by a LT1236 made by Linear Technology.

The LT® 1236 is a precision reference that combines ultralow drift and noise with excellent long-term stability and high output accuracy. The reference output will both source and sink up to 10mA and is almost totally immune to input voltage variations. The LT1236 combines both superior accuracy and temperature coefficient specifications without the use of high power, on-chip heaters. The LT1236 references are based on a buried zener diode structure which eliminates noise and stability problems with surface breakdown devices. Further, a subsurface zener exhibits better temperature drift and time stability than even the best band-gap references. (from LT1236 datasheet)

Document reference

LT1236 datasheet

AD5662 datasheet

GSOT05 datasheet

SnipCard DAC 16 bit V0.4 schematic

Driving a serial DAC with Arduino IDE example

/*

ARCHIDUINO TEST DAC
The purpose of this firmware is to send some values to the new Archiduino DAC 16 Bit SnipCard.
The SnipCard is built with Analog Devices AD5662 DAC

*/


const byte SCLK = PC3; // SERIAL CLOCK PIN 
const byte SYNC = PD4; // SYNC PIN
const byte DATA = PC2; // SERIAL DATA PIN

int incomingByte;
String readString;

//------------------------------------------------------------------------------------

void setup() {

  pinMode(SCLK, OUTPUT);
  pinMode(SYNC, OUTPUT);
  pinMode(DATA, OUTPUT);                              

  digitalWrite(SYNC, LOW);
  digitalWrite(SCLK, HIGH);
  
  Serial.begin(57600);
  
  shiftOut(0);
}

//------------------------------------------------------------------------------------

void loop()
{
  while (Serial.available()) {
    char c = Serial.read();            //gets one byte from serial buffer
    readString += c;                   //makes the String readString
    delay(2);                          //slow looping to allow buffer to fill with next character
  }

  if (readString.length() >0) {
    int n = readString.toInt();        // convert readString into a number
    
    Serial.print ("You typed: ");
    Serial.print(n, DEC);
    Serial.print (" % equivalent to ");
    int q = 65535 * n / 100;           // convert the percentage in absolute value
    float f = 5.0 * n / 100.0;         // convert the percentage in Voltage value
    
    Serial.print(f, 4);
    Serial.println (" volts");
    
    shiftOut(q);
    readString="";
  } 
}

//------------------------------------------------------------------------------------
void shiftOut(long myDataOut) {
  
  int i=0;
  int pinState;

  digitalWrite(SCLK, LOW);             // set SCLK to LOW
  digitalWrite(SYNC,LOW);              // as well as SYNC
  
  for (i=23; i>=0; i--)  {
    
    if (  myDataOut & (1 <<  i)  ) {
      pinState= 1;
    }
    else {  
      pinState= 0;
    }

    digitalWrite(SCLK, HIGH);          // a tick to the CLOCK
    digitalWrite(DATA, pinState);      // write the bit
    digitalWrite(SCLK, LOW);           // 
    
  }
  
  digitalWrite(SYNC, HIGH);
  digitalWrite(SCLK, HIGH);
  
}

// -----------------------------------------------------------------------
int readline(int readch, char *buffer, int len) {

/*  
  This routine is made by: 
  Reading Serial on the Arduino
  
*/

  static int pos = 0;
  int rpos;

  if (readch > 0) {
    switch (readch) {
      case '\n': 				// Ignore new-lines
        break;
      case '\r': 				// Return on CR
        rpos = pos;
        pos = 0;  				// Reset position index ready for next time
        return rpos;
      default:
        if (pos < len-1) {
          buffer[pos++] = readch;
          buffer[pos] = 0;
        }
    }
  }
								// No end of line has been found, so return -1.
  return -1;
}



// END CODE HERE************************

This operation yields:

Test with SnipCard DAC 16 bit and Keysight U1252B

Test with SnipCard DAC 16 bit and Keysight U1252B

.