Tutorial zum Erlernen der AVR Assembler-Sprache von
AVR-Einchip-Prozessoren
von ATMEL anhand praktischer Beispiele.
Einfacher 8-Bit-Digital-zu-Analog-Wandler mit einem R/2R-Netzwerk Rechengrundlagen R/2R-Netzwerk
Rechengrundlagen R/2R-Netzwerk
Hier wird stufenweise gezeigt, wie so ein R/2R-Netzwerk funktioniert und wie es
gerechnet werden kann.
Ein-Bit-DAC
Das hier ist ein einfacher Ein-Bit-DAC.
Abhängig vom Zustand des Einganges an Bit 0 liefert der 1-Bit-DAC zwei
verschiedene Analogspannungen:
Ist Bit 0 Null, beträgt die Ausgangsspannung 0 Volt.
Ist Bit 0 Eins, ergibt sich die Ausgangsspannung 1/2 UB
UB ist dabei die Betriebsspannung der Schaltung, also z. B.
5,0 V. Die halbe Betriebsspannung ergibt sich daraus, dass die Spannung
durch die beiden gleich großen Widerstände "2*R" geteilt
wird und deshalb nur die Hälfte der Spannung am Ausgang ankommt, die
andere Hälfte bleibt am oberen Widerstand hängen.
Für den Anfänger noch drei Anmerkungen:
Warum "2*R" und nicht einfach "R" erschließt
sich erst ab dem Zwei-Bit-DAC. Bei dem kommt nämlich tatsächlich
auch ein "R" vor, halb so groß wie ein "2*R".
Der waagrechte Strich unten am zweiten Widerstand heißt
"0 Volt", manchmal auch Ground oder kurz "GND" genannt.
In unserem Fall ist es der Minuspol der Betriebsspannung.
Es ist übrigens weitgehend egal, um was für Widerstände es
sich handelt. Sie dürfen nicht allzu klein sein, weil sonst der
Portausgang, der Bit 0 antreibt, zu viel Strom liefern muss und seine
Ausgangsspannung zusammenbrechen würde. Er soll aber auch nicht zu
groß sein, weil dadurch
die Last, die an den Ausgang angelegt wird, zu einer Spannungssenkung
führt, und weil
die kapazitative Last, die an den Ausgang angeschlossen wird, zum
Verschleifen des Signals beiträgt.
Zwei-Bit-DAC
Jetzt wird es schon spannender, ein 2-Bit-DAC.
Abhängig vom Zustand zweier Bits, Bit 0 und 1, lassen sich nicht nur zwei,
sondern vier verschiedene Analogspannungen einstellen. Die Zustände
00, 01, 10 und 11 an den Eingängen bewirken dies. Hier kommen wieder die
"2*R" vor, die an die Eingänge angeschlossen sind, aber auch
ein "R", der die untere Stufe mit der oberen Stufe verknüpft.
Deshalb heißt das Ding R/2R-Netzwerk.
Das gleiche Prinzip kann so fortgesetzt werden, um 4-, 8- oder 10-Bit-ADCs
zu bauen.
Wie es funktioniert, dass die beiden Eingänge Bit 0 und 1 so unterschiedlich
zum Endergebnis UR1 beitragen, kann man nur verstehen, wenn man die
Ströme durch das Netzwerk genauer betrachtet. Alle Ströme wirken dabei
zusammen:
Der Strom im unteren Zweig teilt sich auf: ein Teil fließt zum
Eingangspin Bit 0, der andere fließt direkt zum Minuspol, in beiden
Fällen gebremst durch Widerstände 2R.
Der Strom im unteren Zweig fließt auch durch "R" zum
Ausgangspin und derselbe auch durch den oberen 2R-Widerstand zum Eingang
Bit 1, allerdings in umgekehrter Richtung.
Die Berechnung dieser Stromorgie ist etwas komplizierter und erfordert ziemlich
viel Algebra, kommt aber zu einem recht einfachen Ergebnis. Hier ist der ganze
Rechengang.
Das Ergebnis der ganzen Rechnerei in Gleichung (18) ist schrecklich einfach, alle
Rs und 2Rs und alle Is haben sich vollständig ausgeixt und das Ergebnis kann
sich sehen lassen: jedes Bit trägt zum Endergebnis entsprechend seiner
binären Wertigkeit bei, Bit 1 die Häfte, Bit 0 ein Viertel.
Die Gleichung (19) macht daraus eine allgemeingültige Regel für n
Portausgänge, so dass wir uns den elendigen Formelwust für
8 Eingänge mit 9 mal 2R und 7 mal R sparen können. Passt auch nicht
auf eine HTML-Seite und schon gar nicht auf eine Handy-Anzeige.
Acht-Bit-DAC
Das ist nun ein Acht-Bit-DAC. Auf die Berechnung aller Ströme müssen
wir hier mal verzichten, weil es wie beschrieben auch nicht auf eine Webseite
passt.
Die hohe Popularität dieser Seite hat mich darüber nachdenken lassen,
wie man auf vereinfachte Weise zu den Formeln für einen 8-Bit-DAC kommt
(scheinbar gibt es Professoren, die ihre Studenten mit solch einem Unsinn
beschäftigen). Hier also die einfache Lösung.
Beginnen wir von unten nach oben und berechnen zunächst die Spannung am
Knotenpunkt UR0. Der Strom, der von oben her, von UR1,
in diesen Knoten fließt, fließt aus dem Knoten einerseits in den
Treiberpin von Bit 0 über den Widerstand 2*R, andererseits nach
Null Volt, ebenfalls über 2*R. Gleichung (1) setzt beides gleich.
Nach Ohm ist der Strom U / I, sodass wir zu Formel (2) kommen. Um das
lästige R loszuwerden, nehmen wir beide Seiten mit 2*R mal und
kriegen (3). Dann sortieren wir ein wenig um, so dass alle UR1
links stehen, in Formel (4). Nach Summieren in Gleichung (5) teilen wir
das Ganze durch 4 und kriegen eine recht einfache Formal (6) daraus. Wir
wissen schon mal, dass die Hälfte der Spannung an diesem Knotenpunkt
von oben her stammt, von UR1, und ein Viertel aus dem Pin 0. Nur
UR1 darin ist noch unbekannt.
Die UR1 kriegen wir aber auch noch kleingehackt. Dazu nehmen wir
uns die nächst höhere Ebene des Netwerks vor und machen genau
dasselbe damit: Ströme gleichsetzen, nach Ohm in Spannungen und
Widerstände umrechnen und ein wenig umsortieren, so dass die Unbekannte
UR1 allein steht. Und wir machen noch eins: für UR0
seten wir schon mal die Formel (6) ein und kommen so zu Formel (13).
Und wieder trägt der nächst höhere Knotenpunkt zu der Spannung
am Knotenpunkt UR1 die Hälfte bei, der Pin 1 ein Viertel und
der Pin 0 ein Achtel.
Und, auch wenn wir es schon ahnen, was herauskommt, hier noch eine weitere
Ebene höher.
Immer dasselbe, nur müssen wir hier UR1 mit der Formel aus
(13) ersetzen. Und siehe da: der Einfluss von Pin 0 ist jetzt nur noch ein
Sechzehntel, Pin 1 ein Achtel und Pin 2 ein Viertel.
Mit jeder weiteren Ebene mit jedem weiteren Datenpin geht das mit den
Zweierpotenzen immer so weiter, bis wir bei Pin 7 angekommen sind und unsere
Formel fertig ist. Langweilig und allenfalls als akademische Wixerei zum
Quälen von Studenten geeignet.
R2R-DAC-Ströme
Und jetzt noch für Schlaumeiers: was passiert eigentlich, wenn Pin 1
und alle darüber auf Null sind und nur Pin 0 auf Eins? Nun, dann kehren
sich halt die Vorzeichen aller Ströme um, und trotzdem bleibt alles wie
gehabt. Pin 0 betankt dann alle Pins darüber mit Strom, mit zunehmender
Entfernung nach oben hin halt immer weniger davon. Der Strom-Potpourri wird
dann halt immer vielfältiger.
Obacht, Professoren: quält Eure Studenten doch mal mit der Frage, bei
welchen Binärkombinationen der Port am meisten Strom liefern muss. Und
zwar nach beiden Richtungen (nach GND und zur Betriebsspannung hin).
Um Euch Professoren den Spaß zu verderben, gibt es
hier schon mal das fertige Libre-Office-Rechensheet
dazu. Man beachte hierin die Eins! Alles bis auf Pin 0 negativ.