Home Navigationspfeil Arduino Navigationspfeil TLC5620 am Arduino

Anschluss des TLC5620 D/A-Wandler

Vor einiger Zeit hatte ich eine Auswahl von D/A- und A/D-Wandlern als Testexemplare bei TI bestellt. Diese sind ja wie bekannt kostenlos also genau richtige zum Experimentieren.

Nachdem ich ein wenig Zeit gefunden hatte, habe ich mich nun dem ersten Kandidaten, dem TLC5620, gewidmet. Diese IS enthält vier von einander unabhängige 8-Bit D/A-Wandler wobei unabhängig auch bedeutet das jeder dieser D/A-Wandler mit einer eignen Referenzspannung versorgt werden kann. Diese IS ist kompatibel zum TLV5620 mit dem Unterschied das der TLV5620 für eine Betriebsspannung von 3,3 Volt und der TLC5620 für eine Versorgungsspannung von 5 V ausgelegt ist. Auch wenn im Datenblatt des TL5620 eine Versorgungsspannung von 5,25 V genannt ist, sollte man für diesen Spannungsbereich schon auf den TLC5620 zurück greifen, da der TLV in diesem Bereich am oberen Ende der Spezifikation betrieben würde.

Interessant war das ich über diesen Schaltkreis in Bezug auf den Anschluss an einen Mikrocontroller so gut wie nichts finden konnte, also habe ich mich hingesetzt und ihn selbst erforscht.

Funktion des TLC5620

Der TLC5620 kann Ausgangsspannung bis zum doppelten der Referenzspannung erzeugen, dies wird durch das Bit "RNG" im insgesamt 11-Bit langen Steuerwort festgelegt (siehe Tabelle).

Steuerbyte Datenbyte
A1 A0 RNG
D7 D6 D5 D4 D3 D2 D1 D0

Wie zu erkennen ist werden vom Steuerbyte nur die drei niederwertigen Bit verwenden, die Bits 3 bis 7 spielen keine Rolle. Die Bits A0 und A1 legen den zu verwendenden D/A-Wandler, DACA ... DACD,  fest (siehe Tabelle).

A1 A0 D/A-Wandler
0 0 D/A (A)
0 1 D/A (B)
1 0 D/A (C)
1 1 D/A (D)

Das Bit 0 (RNG) des Steuerbyte legt den Ausgangsspannungsbereich fest. Ist dieses Bit gesetzt so kann eine Ausgangsspannung erzeugt werden, die dem doppelten der Referenzspannung entspricht, ist das Bit nicht gesetzt so kann die Höhe der Ausgangsspannung maximal den Wert der Referenzspannung annehmen.

Das Steuer- und Datenbyte werden mit dem MSB zuerst in den TLC5620 geschrieben.

Schaltungsaufbau des Testsystems

Der Aufbau des Testsystems bestand aus einem Arduino Leonardo, einem Spannungsteiler und dem TLC5620. Der TLC5620 belegt vier Ports des Arduino für die Pins DATA, CLK, LOAD und LDAC. Die Schaltung ist in der folgenden Abbildung dargestellt.

Testschaltung TLC5620

Der in der Testschaltung verwendet Spannungsteiler (2 x 10kOhm) kann auch durch eine Referenzspannungsquelle (z.B. LM385Z, oder TL431) ersetzt werden.

Zum ansteuern der aufgebauten Schaltung reicht ein kurzer Sketch der im folgenden wiedergegeben ist.


/*
 * Ansteuerung des TLC5620 D/A-Wandler
 *
 * (c) Frank A. Dullinger
 */

#define PIN_DATA  4   // TLC5620 Pin 6
#define PIN_CLK   5   // TLC5620 Pin 7
#define PIN_LOAD  6   // TLC5620 Pin 8
#define PIN_LDAC  7   // TLC5620 Pin 13

#define DACA  0
#define DACB  1
#define DACC  2
#define DACD  3

#define DAC_REF   0    // 1 * Vref
#define DAC_REFX2 1    // 2 * Vref


void setup() {

  initTLC5620();
  writeTLC5620(DACA, DAC_REF, 255);
 
}


void initTLC5620() {
  pinMode(PIN_DATA, OUTPUT);
  pinMode(PIN_CLK,  OUTPUT);
  pinMode(PIN_LOAD, OUTPUT);
  pinMode(PIN_LDAC, OUTPUT);
}


/*
 * channel D/A-Kanal siehe DCAA ... DCAD
 * range   Referenzspannung siehe DAC_REF ... DAC_REFX2
 * data    Nutzdaten 0...255 (0x00, 0xFF)
 */

void writeTLC5620(int channel, int range, int data) {
  int MSB;
  int LSB;

  MSB = (channel & 0x03) << 1 | (range & 0x01) << 0;
  LSB = data;

  digitalWrite(PIN_LDAC, HIGH);
  digitalWrite(PIN_LOAD, HIGH);

  shiftOut(PIN_DATA, PIN_CLK, MSBFIRST, MSB);
  shiftOut(PIN_DATA, PIN_CLK, MSBFIRST, LSB);

  digitalWrite(PIN_LOAD, LOW);
  delayMicroseconds(10);
  digitalWrite(PIN_LOAD, HIGH);
  delayMicroseconds(10);
  digitalWrite(PIN_LDAC, LOW);
  delayMicroseconds(10);
  digitalWrite(PIN_LDAC, HIGH);
}

void loop() {

  for (int i = 0 ; i < 8; i++)
    writeTLC5620(DACA, DAC_REFX2, i * 32);

}


 
TLC5620 Test-Programm

Das oben gezeigte Programm gibt ein s.g. Treppensignal, wie in der nächsten Abbildung zu sehen ist, aus.

Treppensignal mit TLC5620

Das soll es fürs erste gewesen sein, ich hoffe das diese kurze Anleitung nicht zu unverständlich war. Ich überlege mir noch eine nette Anwendung, die ich bereits im Kopf habe, dazu aber dann mehr im nächsten Teil zum TLC5620.

Links

 

Da die dargestellten Schaltungen und Programme nur dem Grundverständnis dienen sollen, kann ich für die Funktion keine Gewähr übernehmen.
Wie üblich kann ich für Schäden die durch die Verwendung der hier veröffentlichten Schaltungen und Programme entstehen keine Haftung übernehmen.

Alle genannten und durch Dritte geschützten Marken- und Warenzeichen unterliegen uneingeschränkt den Bestimmungen des jeweils gültigen Kennzeichenrechts und den Besitzrechten der jeweiligen eingetragenen Eigentümer. Allein aufgrund der bloßen Nennung ist nicht der Schluss zu ziehen, dass Markenzeichen nicht durch Rechte Dritter geschützt sind!