Ein D/A Wandler (auch Digital Analog Umsetzer (DAU) oder englisch Digital Analog Converter (DAC)) kann man auch als das Gegenstück zu einem A/D Wandler bezeichnen.
Bei einem A/D Wandler liegt eine sich ständig ändernde Spannungsgröße am Eingang und der Wandler ordnet einzelnen Spannungsintervallen diskrete binäre Werte zu.
Bei einem DAU liegt am Eingang eine binäre Zahl und am Ausgang ein dazu entsprechender Spannungswert. Dieser Wert ändert sich bei unterschiedlichen Eingangszahlen nicht stetig sondern in Sprüngen.
Dabei ist die Anzahl der Spannungspegel, die ein DAU abgeben kann, abhängig von der Anzahl seiner binären Stellen oder Bits. Allgemein gilt:
Der in dieser Übung eingesetzte DAU, eine sogenannte Widerstandsleiter, hat eine 4 Bit Auflösung, dass heißt, die Anzahl der von ihm dargestellten Spannungspegel beläuft sich auf 16. Wie der Name schon verrät, ist dieser DAU nur aus Widerständen aufgebaut. Mit Hilfe eines BASIC Programms werden der 4 Bit Widerstandsleiter binär codierte Werte übergeben, die von dem Netzwerk in einzelne Spannungsstufen umgesetzt werden.
Mit dem DVM aus dem Kapitel A/D Wandler werden die Spannungswerte im Debug Terminal angezeigt.
Aufbau einer Widerstandsleiter | |
Material |
1x Board of Education mit BASIC Stamp 6x Widerstand, 2kOhm 3x Widerstand, 1kOhm 1x ADC0831 - A/D Wandler 1x separates Steckbrett |
Aufgaben |
|
Schaltungsaufbau der Widerstandsleiter
Das Widerstandsleiter-Netzwerk zeigt Abb. 1. Der Name rührt von der Ähnlichkeit der Widerstandsanordnung mit einer Leiter und ihren Sprossen her. Es hat sich als hilfreich erwiesen, wenn man den ADC0831 separat auf einem zweiten Steckbrett aufbaut. Die Gesamtschaltung würde auf dem Steckbrett des Board of Education zu unübersichtlich werden.
Schaltskizze der Widerstandsleiter
Achte beim Aufbau der Schaltung sehr genau auf die Widerstandswerte. Es ist ärgerlich und kostet viel Zeit, wenn sich am Ende herausstellt, dass man Widerstände vertauscht hat. Achte ebenso darauf, dass sich die Anschlussdrähte der Widerstände nicht gegenseitig berühren.
Vollständiger Schaltungsaufbau
Das Programm DAWandler_1.bs2
Die Terminalausgabe
Jeder Widerstand in der Widerstandsbrücke hat in der Regel einen Toleranzfehler von 10%. Rechnet man die Widerstandsbrücke mathematisch durch, dann müsste sich bei einer Eingabe von 11112 (entspricht der Zahl 15) ein Spannungswert von 3,13 V einstellen. Tatsächlich erfolgt das nicht, aufgrund der eben erwähnten Fehlertoleranzen. Bei den von mir eingesetzten Widerständen mit einer Toleranz von 1% ergibt sich immerhin ein Wert von 3,08 V.
Bei dem Wert 00102 ergibt sich rechnerisch ein Wert von 0,416... und gemessen von 0,41V.
Es gibt mehrere Möglichkeiten, ein Widerstandsleiter-Netzwerk zu berechnen. Mit den herkömmlichen Kenntnissen aus der Mittelstufe (Knoten- und Maschenregel, Ohmsches Gesetz) sollte es einem guten Schüler/einer guten Schülerin möglich sein, das Netzwerk zu berechnen. Eine zweite Methode ist der Einsatz von sogenannter elektronischer Simulationssoftware.
Mir erscheint die kostenfreie Software TINA-TI V9 von Texas Instruments besser geeignet als TSpice, das ebenfalls kostenfrei im Internet herunterzuladen ist. Aber das muss jeder selbst entscheiden. Ich habe mich für TINA-TI V9 entschieden. Es ist einfacher zu bedienen und die Einarbeitungszeit ist überschaubar kurz.
Die Rechenergebnisse zu den oben gezeigten beiden binären Eingaben 1111 und 0010 zeigen die folgenden beiden Abbildungen.
Links in Abb. 5 sind die vier Schalter SW_SPDT1 ... 4 zu sehen. Die Binäreingabe entspricht 0010. Rechts unten ist mit der Bezeichnung U_DAC der am Ausgang anliegende berechnete Spannungswert zu entnehmen; in diesem Fall 416,67 mV.
Wie arbeitet das Programm DAWandler_1.bs2
Im Deklarationsbereich der Variablen ist neu hinzugekommen die Variable
n vom Typ Nib.
Im Hauptprogramm ist ein Unterprogramm neu:
gosub dac
Über es wird die Umwandlung von digital zu analog geregelt. Der Vorgabewert für n im Programm ist in der abgebildeten Fassung 11. Der Ausgabe-Spannungswert sollte also n = 11 Stufen von insgesamt 16 über dem Wert von 0 Volt liegen. Der Wert von n sollte bei jedem neuen Programmlauf abgeändert werden, so wie es bei den Aufgaben beschrieben wurde.
Zeilen 29 - 32
Die mit dem D/A Wandler verbundenen I/O Pins P4 - P7 der BASIC Stamp sind als Ausgang definiert. Normalerweise erscheinen diese Zeilen im Deklarationsteil eines Programms (sie müssen nur einmal durchlaufen werden), sind hier aber zu Demonstrationszwecken in das Unterprogramm übernommen worden (in dem die Zeilen bei jedem Programmdurchlauf abgearbeitet werden und das Programm insgesamt langsamer werden lassen).
Zeilen 34 - 37
Die an den Ausgangspins P4 - P7 liegende 4-Bit Binärzahl wird dem DAU parallel übergeben. Die Syntax ist neu und muss kurz erläutert werden. Der Wert von n ist auf 11 gesetzt, das entspricht binär 1011.
OUT7 = n.BIT3
bedeutet, dass das vierte Bit (BIT3) der binären Zahl n = 1011, das ist eine 1, an den Ausgang von P7 gelegt wird. Entsprechend wird P6 auf LOW gesetzt, da das dritte Bit (BIT2) bei der binären Zahl 1011 eine 0 ist.
Die Umrechnungen im Unterprogramm calc_volt sind uns aus dem Abschnitt A/D Wandler bekannt und müssen hier nicht weiter besprochen werden.
Im Unterprogramm display sind entsprechende Anpassungen für die Zahlausgaben vorgenommen worden, die ebenfalls selbsterklärend sind.
Die Adressierung einzelner Datenleitungen ist nicht immer sehr effizient. Es kostet viel Zeit, nacheinander die 4 Bit von 0 bis 15 über die Variable n jeweils neu zu schreiben, das Programm zu starten und den Spannungswert des DAU abzulesen. Effizienter wäre es, wenn gleich alle 16 möglichen Werte untereinander im Debug Terminal ausgegeben werden könnten.
Dazu werden zwei Register benötigt, über die die Ausgabe von aufeinanderfolgenden I/O Datenleitungen gesteuert wird.
Unter PBASIC gibt es spezielle Befehle, mit denen sich I/O Datenleitungen von 16 Bit direkt adressieren lassen. Gleichbedeutend damit wären auch 2 verschiedene 8 Bit (Byte) oder 4 verschiedene 4 Bit (Nibble) Adressierungen.
Im folgenden Beispiel wird das Nibble P4 - P7 direkt adressiert. Es gilt dabei die folgende Bezeichnungsweise:
die Pin P0 - P3 heißen Nibble "a", die Pin P4 - P7 heißen Nibble "b", die Pin P8 - P11 heißen Nibble "c" und die Pin P12 - P16 heißen Nibble "d".
Wenden wir dieses Wissen jetzt auf den Programmcode von DAWandler_1.bs2 an. Dazu wird das Unterprogramm dac neu geschrieben:
16-Bit, 8-Bit und Nibble Adressierung | |
Aufgaben |
|
Setzt man zum Beispiel DIRB = 4, dann entspricht das der binären Zahl 0100. Es bedeutet, dass nur das dritte Bit im Nibble "b" auf Ausgang (1) und alle anderen Bits auf Eingang (0) gesetzt werden. Eine Fehlfunktion des Programms wäre die Folge.
Mit diesen wenigen Änderungen ist es nun möglich, alle 16 DAU Eingabewerte untereinander im Debug Terminal auszugeben mit ihren entsprechenden Spannungswerten. Dazu muss nur noch eine entsprechende Zählschleife in das Hauptprogramm eingebaut werden.
Der komplette Programmcode der Unterprogramme sieht damit wie folgt aus:
Im Debug Terminal erscheinen jetzt alle 16 Spannungswerte untereinander. Damit steht einer Untersuchung eines 12 oder gar 16 Bit DAC nichts mehr im Wege;-)
Was passiert eigentlich, wenn man an den DAU-Ausgang eine LED mit Vorwiderstand, einen Piezolautsprecher oder einen beliebigen Verbraucher anschließt? Bevor wir lange darüber brüten, bauen wir die Schaltung mit einer LED und einem 270 Ohm Vorwiderstand einfach mal auf und setzen sie in Betrieb.
Der LED Schaltkreis wird vom DAU gespeist oder man sagt auch, der LED Schaltkreis belastet die Widerstandsleiter-Schaltung. Um herauszufinden, was da mit der Schaltung passiert, werden die 16 binären Zustände am DAU Eingang und die sich am Ausgang einstellenden Spannungswerte wiederum gemessen und mit den Werten aus Kapitel 4 verglichen.
Belasteter Digital-Analog-Umsetzer | |
Aufgaben |
|
Die gemessenen Spannungswerte zu den 16 binären Eingangszuständen zeigt die folgende Tabelle.
Das Ergebnis ist eindeutig und zeigt, dass die Spannungswerte ab einem Eingangszustand 10002 aufwärts (dezimal 8) gegenüber denen bei einem unbelasteten DAU zurückfallen.
Wird als Puffer zwischen den DAU und den LED Schaltkreis ein hochohmiger OPV eingebaut, und anschließend noch einmal über alle 16 binären Zustände die Spannungsmessung wiederholt, ist das Ergebnis eindeutig.
Widerstandsleiter mit Spannungsfolger LM358 | |
Aufgaben |
|
Ausgabe im Debug Terminal
Vergleicht man die Messwerte der beiden letzten Terminalausgaben, so ist klar erkennbar, dass mit dem Einbau eines Spannungsfolgers (Puffer) das Problem des Spannungsabfalls beseitigt werden konnte.
In diesem Kapitel schauen wir uns ein besonderes Signal mit dem Oszilloskop an. Dazu benutzen wir die BASIC Stamp mit dem AD Wandler und dem DAU Schaltkreis aus Abschnitt 5.
Die Ausgangsspannung des Widerstandsleiter-Netzwerks verändert sich mit der Zeit und wird mit dem Oszilloskop sichtbar gemacht. Es wird mit Hilfe der Schaltung aus Abschnitt 5, Abb. 8 eine besondere Schwingungsform untersucht; die sogenannte
Über die zugeschaltete LED lässt sich die Signalform zusätzlich beobachten.
Zeitvariierendes Signal - Dreieckspannung | |
Material |
1x Board of Education mit BASIC Stamp 6x Widerstand, 2kOhm 1x ADC0831, AD Wandler 10x Steckdraht |
Aufgaben |
|
Das Programm DAWandler_3P91.bs2
Das Oszillogramm
Nach dem Start des Programms leuchtet die rote LED auf und geht für einen kurzen Moment aus.
Im Zusammenhang mit Schwingungsformen werden drei häufig benutzte Größen im Oszillogramm noch einmal besonders herausgehoben:
Auf der Rechtsachse ist im Oszillogramm die Zeit aufgetragen, auf der Hochachse die Spannung.