Digital-Analog-Wandler Marke "Simpel"

Mit der Hardware des weitbesten Interfaces wollen wir uns in der kommenden Ausgabe natürlich auch wieder beschäftigen. Angedroht war ein einfacher Digital-Analog-Wandler, der durch Hinzufügen eines einzigen Widerstandes realisiert werden soll. Doch zuvor einige Worte zu solchen Wandlern.

ADC und DAC

Wie so oft in der Elektronik- und Computerwelt stammen Begriffe und die zugehörigen Abkürzungen aus dem englischsprachigen Raum. Wandler bilden dabei keine Ausnahme. Ein Digital-Analog-Wandler nennt sich in Kurzform DAC, abgeleitet von Digital-Analog-Converter, das Gegenstück dazu ist eben ein ADC, ein Analog-Digital-Converter. Digitale Daten sind für Menschen sehr schwer verdaulich und in der Natur eigentlich nicht vorhanden. Unsere Welt ist sozusagen analog aufgebaut. Zwischen schwarz und weiß gibt es unendlich viele Zwischenstufen, die von uns problemlos "verarbeitet" werden, mit denen ein Computer aber nichts anfangen kann. Aus diesem Grunde müssen die "Daten" unserer analogen Welt für Computer und andere Digitalsehaltungen in ein für sie verständliches Format übersetzt werden. Im umgekehrten Fall gilt das gleiche: Die Daten eines Computers müssen in eine analoge Form übersetzt werden, damit sie für uns verständlich sind. In der Elektronik gibt es aber nicht nur Digitalschaltungen, sondern auch Schaltungen, die analog arbeiten. Bei Musikverstärkern beispielsweise wäre ein rein digitales Schaltungsverhalten fatal: Statt per Poti die Lautstärke auf das gewünschte Maß einzustellen, hätte man nur die Wahl zwischen volles Rohr und gar nix.

Bei der Bastelei an dem Romport-Interface wollen wir so langsam auf eine halbwegs sinnvolle Anwendung zusteuern. Das lustige Aufleuchten einer Handvoll LEDs kann zwar erste euphorische Verzückungen hervorrufen, vermag aber auf die Dauer nicht zu befriedigen. Die bereits realisierten Komponenten auf dem Interface sind ein 8 Bit Digitalausgang und ein 8 Bit Digitaleingang. Das ergibt zusammen einen digitalen 8 Bit Datenbus, über den andere digitale Schaltungen angesteuert oder ausgelesen werden können. Was fehlt, ist die Schnittstelle zur analogen Welt. Hier ist der Einsatzbereich von ADCs und DACs, die als nächstes auf dem Programm stehen.

Von digital nach analog

Befassen wir uns zunächst mit dieser der beiden möglichen Richtungen. Erfahrungen damit hat wahrscheinlich jeder, mehr oder weniger bewußt, schon gesammelt. Das fangt schon beim Tastaturklick an. Der Soundchip wandelt digitale Daten in eine Kurve, also ein analoges Signal, das dann über einen Lautsprecher hörbar wird. Die Genauigkeit dieser Kurve hängt von einer Reihe von Bedingungen ab, von denen hier erst einmal eine betrachtet werden soll: die Auflösung.

Unser Interface bietet uns zur Zeit 8 Bit Busbreite. Mit diesen 8 Bit läßt sich der Bereich von 0 bis 255 darstellen, das sind 256 Zustände. Wir haben also 256 digitale Darstellungsmöglichkeiten, die uns für die Beschreibung eines analogen Signals zur Verfügung stehen. Nehmen wir einmal an, wir haben eine variable Spannung, deren kleinster Wert 0 Volt und deren größter Wert 25,6 Volt ist, dann können wir mit unseren 256 Möglichkeiten den Wert der Spannung in Schritten von 0,1 Volt beschreiben, eben "auflösen". Bei einer doppelt so hohen Auflösung würde die Spannung in Schritten von 0,05 Volt beschrieben, was der Genauigkeit zugute kommt. Eine Spannung von 12,75 Volt kann in diesem Fall bei einer Auflösung von 0,1 Volt nicht genau erfaßt werden, es entsteht ein Fehler von 0,05 Volt (127 oder 128?). Hätten wir 512 Möglichkeiten (9 Bit) zur Verfugung, könnten wir einen Volltreffer landen (255). Kurz und gut, was nu' passieren soll, ist Folgendes: Ein per Lesebefehl an den Romport gesendetes digitales Datum soll in eine Spannung gewandelt werden. Schickt man eine 0 zum Romport, soll die Spannung z.B. 0 Volt betragen, bei einer l vielleicht 0,1 Volt, bei einer 7 0,7 Volt oder so ähnlich. Wäre natürlich toll, wenn man einer solchen Forderung durch den Einsatz nur eines zusätzlichen Widerstandes gerecht werden könnte. Leider ist das nicht möglich, der Schaltungsaufwand für "richtige" Digital-Analog-Wandler ist recht hoch, so dass es einfacher ist, sich so ein Ding als fertiges IC zuzulegen. Dazu kommen wir in der nächsten Ausgabe. Jetzt ist erst mal die Billigvariante dran.

Selbst ist der Atarianer

Die Erzeugung einer analogen Spannung aus dem digitalen Signal am Datenbus des Interfaces ist, wie die Anzahl der benötigten Bauelemente bereits dokumentiert, recht simpel. An die Ausgängen der Flip-Flops des 74LS374 sind ja jeweils ein Widerstand und eine LED angebobbelt. Die Widerstände sind auf der dem IC angewandten Seite alle miteinander verbunden und an Masse angeschlossen. Diese Verbindung nach Masse wird aufgetrennt, der bereitgehaltene Teilerwiderstand (10R-50R) wird an einer Seite mit den kurzgeschlossenen Pins der 8 Widerstände verbunden, das andere Ende gehört an Masse. Ich habe noch die LEDs lahmgelegt, die hatten eh nur eine Kontrollfunktion. Wenn das Ausgeben und Einlesen von Daten klappt, sind die sowieso über. Das war's schon. Leider hat dieser Digital-Analog-Wandler nur eine sehr geringe Auflösung, wir können damit lediglich 9

So in etwa sieht unsere "Wechselspannung" auf dem Oszilloskop aus. Hat doch was, oder? (in Worten: neun) Zustände, bzw. Spannungen erzeugen. Warum? Die Wertigkeit unserer Bits fallt bei diesem Verfahren unerfreulicherweise unter den Tisch. Diesem DAC ist es Wurscht, ob D7 oder D3 Hi wird, die Spannungsänderung ist die gleiche, denn die Ausgänge unseres 74LS374 liefern bei Hi alle die gleiche Spannung. Der erzeugte Spannungspegel hängt demnach nur davon ab, wieviel Ausgänge des 74LS374 Hi werden. Je nach Wert des verwendeten Teilerwiderstandes und der Anzahl der IC-Ausgänge mit Hi-Pegel stellen sich an der Verbindung Teilerwiderstand und (ex) LED-Vorwiderstände unterschiedliche Spannungen ein. (Siehe Tabelle 1)

Es lassen sich acht Hi-Pegel anlegen, zudem gibt es die Möglichkeit, alle Pegel auf Lo zu setzen. Auf diese Weise kommt man zu den 9 verfügbaren Möglichkeiten. Bei einem Wert von 10R für den Teilerwiderstand sind die erreichbaren Spannungen recht mickerig, die Differenz zwischen den einzelnen Werten beträgt läppische 0,01 Volt. Das Prinzip ist erkennbar, sonst läßt sich aber nicht viel damit anfangen. Ein Teilerwiderstand von 32R bringt schon bessere Ergebnisse, die Spannungsdifferenz beträgt im Schnitt ca. 0,14 Volt. Ein 47R-Widerstand beschert uns akzeptable 0,22 Volt Differenzspannung. Damit läßt sich schon was anfangen. Bisher haben wir über die LED's unsere Daten nur gesehen, jetzt woll'n wir auch mal etwas hör'n! Dazu ist die Gleichspannung, die (innerhalb gewisser Grenzen) ja jetzt problemlos am Interface eingestellt werden kann, in eine Wechselspannung zu verwandeln. Das funktioniert ohne zusätzliche Bauelemente durch einfache Programmierung. Eine hübsche Sinuskurve gibt es dabei nicht, aber immerhin eine Dreieckspannung. (Siehe Listing 1)

Offset 10R 32R 47R
+ 0 0,0027 0,034 0,052
+ 1 0,0122 0,178 0,269
+ 3 0,0217 0,322 0,486
+ 7 0,0312 0,465 0,700
+ 15 0,0409 0,612 0,923
+ 31 0,0505 0,757 1,144
+ 63 0,0598 0,901 1,364
+ 127 0,0692 1,045 1,587
+ 255 0,0790 1,195 1,820

Je nach der Größe des gewählten Teilerwiderstandes ergeben sich unterschiedliche Spannungsdifferenzen

' Erzeugung eines Spannungsdreiecks mit DAC Marke "Simpel"
FOR a%=0 TO 1000 ! 1000 Durchläufe
FOR c%-l TO 8 ! Zustände 1 bis 8
dummy=PEEK(&HFBOOOO-M2"c%-l) ) ! werden hochgezählt
NEXT c%
FOR o%=7 TO 0 STEP -l ! Zustände 7 bis 0
dummy=PEEK(SHFBOOOO+(2"c%-l)) ! werden runtergezählt
NEXT o%
NEXT a%

Entsprechend dem eingesetzten Teilerwiderstand ist der Spannungsbereich dieser Kurve mehr oder weniger groß. Bei Einsatz von 47R läßt sich ein Spannungshub von ca. 1,8 Volt erreichen.

Die erreichbare Frequenz richtet sich nach der Geschwindigkeit, mit der das Programm abgearbeitet wird. Bei dem vorliegenden Listing stellt sich ein Ton von ca. 120 Hertz ein, das liegt locker im hörbaren Bereich. Also flugs ein paar Kopfhörer besorgt, die Impedanz sollte so zwischen 20 und 50 Ohm liegen und wird statt des Teilerwiderstandes in unsere Elektronik gehängt. Bei Aktivboxen oder dem Eingang der Stereoanlage kann man parallel zum Teilerwiderstand das Signal abgreifen. (Siehe Grafik I)

Und weiter?

Gute Frage: Man könnte nun zum Beispiel ein Programm schreiben, um ein Lämpchen heller und dunkler werden zu lassen (wie beeindruckend!). Oder man kann sich daran erfreuen, wie mit Hilfe des in GFA aufgerufenen Random-Befehls immer wieder überraschende Werte auf dem Display des Multimeters erscheinen. Freunde und Bekannte lassen sich sicherlich gern zu einem lustigen Wettabend einladen. Alles Quark, diese "Schaltung" ist genau betrachtet nicht zu gebrauchen und sollte nur grob umreißen, wie digitale Daten in analoge umgewandelt werden können. In der nächsten Ausgabe machen wir's richtig. Eine Liste der benötigten Bauelemente gibt's noch nicht, weil ich die Schaltung noch nicht aufgebaut habe und erst mal sehen muss, was wirklich funktioniert. Keinesfalls schadet es, sich in der nächstgelegenen Bücherei ein bißchen was über den DAC0808 und den ADC0804 zu besorgen.



Aus: ST-Computer 02 / 1999, Seite 36

Links

Copyright-Bestimmungen: siehe Über diese Seite