RoeTest - Computer-Röhrenprüfgerät / Röhrenmessgerät (c) - Helmut Weigl www.roehrentest.de 12-Bit D/A-Wandler Ausgangssituation: Das RoeTest ist mit den 8-Bit D/A-Wandlern PCF8591 bestückt. Ich wurde schon öfters gefragt, warum ich "nur" 8-Bit-Wandler verwende und keine 12- oder 16-Bit-Wandler. Die Frage ist einfach zu beantworten: Über Wandler mit höherer Auflösung hatte ich mir gar keine Gedanken gemacht - dies werde ich hier nachholen. 8-Bit - das sind 256 Stufen von 0-255. Betrachten wir die sensibelste Spannungsquelle - die G1-Spannung. Die G1-Spannung betrachte ich deshalb als am sensibelsten, da winzige Änderungen der Spannung bereits die Messergebnisse beeinflussen können. 8 Bit ermöglichen folgende Auflösungen: Bereich groß klein Endspannung 51 V 5,1 V Auflösung je Schritt 0,2 V 0,02 V Die Auflösung ist bei Umschaltung in zwei Bereichen mehr als ausreichend. Eine noch höhere Auflösung mit 12 oder 16 Bit bringt nichts. Die Überlegungen hinsichtlich D/A-Wandler mit höherer Auflösung ist eine andere: Wäre es möglich mit einem besseren Wandler die Bereichsumschaltung einzusparen? Die Vorteile wären: Relais-Bereichsumschaltung kann entfallen Da es nur einen Bereich gibt, ist der Abgleich einfacher da nur ein Bereich vorhanden ist, gibt es keine Probleme hinsichtlich der Linearität im Übergangsbereich Erforderliche Auflösung: Bei 12 Bit gibt es 4096 Stufen (von 0-4095). Betrachten wir den sensibelsten Bereich, die G1-Spannung: ca. 51V : 4095 = 0,0125V je Stufe. Die Auflösung ist noch etwas besser als bei 8 Bit (mit Bereichsumschaltung), aber über den gesamten Bereich. Eine noch höhere Auflösung (16Bit) wäre unsinnig. Auch könnte ein höhere Auflösung wohl kaum realisiert werden (erforderliche Präzisionsreferenzspannung - Störquellen im RoeTest). Bausteine: Nach umfangreichen Recherchen bleiben einige wenige Bausteine verschiedener Hersteller übrig. Es muß ein 1-fach-12-Bit-D/A-Wanlder mit I²C-Schnittstelle sein. Dabei müssen mindestens 5 Stück am selben Bus betrieben werden können. Jetzt kommt der erste Schock: Es gibt diese Bausteine nur im SMD-Gehäuse. Für Bestückungsautomaten sind diese sichlich gut geeignet. Für meine Hände und Augen nicht. Da insgesamt nur 5 Bausteine notwendig sind, kann man die Fummelei gerade noch akzeptieren. Welchen Wandler? Die Datenblätter für die wenigen in Frage kommenden Bauteile sind alle ähnlich was Präzision (Offset, INL, DNL, Gain-Error, Drift ..) anbelangt. Von daher ist es relativ egal welchen man verwendet. Nachstehend zwei Beispiele: DAC121C085: Vorteil: Bis zu 9 Wandler können an einem Bus betrieben werden. Nachteil: Die I²C-Adressen überschneiden sich mit bereits im RoeTest vorhandenen Bauteilen, so daß die bestehende Hardware und Firmware wegen der Vergabe der I²C-Adressen geändert werden muß. MCP4725: Bei I²C-Adressen gibt es keine Überschneidungen mit der bestehenden Hardware. Dafür hat der Baustein nur ein herausgeführtes Adress-Pin, so daß nur zwei derselben Wandler am Bus betrieben werden können. Dafür gibt es das IC in 4 verschiedenen Ausführungen mit 4 Adressbereichen (Endnummer A0 ... A3). Beschaffung: Der nächste Schock: Keiner der üblichen Elektronikversender hat anscheinend passende Wandler im Angebot (auch nicht andere Typen). Lediglich die großen Disitributoren (RS, Farnell) scheinen welche zu führen. Diese Firmen liefern aber nur an Gewerbetreibende und nicht an Privatpersonen (Kommentar: Wenn die mein Geld nicht benötigen, dann sollen sie es halt bleiben lassen - oder in Deutschland kann man für Geld nicht alles kaufen). Das RoeTest soll aber für Jedermann nachbaubar sein. Man kann sich die Bauteile problemlos im Ausland bestellen. Dort hat man aber die Nachteile, daß man entweder Mindestbestellmengen oder hohe Transportkosten (zzgl. Zoll, Einfuhrumsatzsteuer) für die paar Bauteile hat. Auch diese Klippe könnte man umschiffen. Ich würde einfach einen kleinen Bestand bestellen und an Nachbauer abgeben. Zum Test und Zwecke der Entwicklung bestellte ich mir bei Microchip ein paar Samples. Die Firma Microchip war so freundlich diese kostenlos zur Verfügung zu stellen. Zum Test kamen also die Bausteine der Firma Microchip MCP4725. Nachstehend Größenvergleich des MCP4725 mit dem PCF8591: Änderung der Hardware: Die Änderung der Hardware wäre gar kein Problem. Einfach ein neues Layout und Baustein eingesetzt. Getestet wurde der Baustein auf der G1-Karte - mit Handverdrahtung. Im Bild sieht man die Fummelei mit dem kaum erkennbaren IC. Dieses wurde zum Test mit ein paar Drähten auf eine normale IC-Fassung gelötet und dann in die Schaltung gesteckt. Auf einer geätzten Platine läßt sich das IC sicherlich leichter einlöten. Änderung der Software: Hier war der Aufwand enorm: Zuerst mußte die Firmware die neuen Bausteine ansteuern können. Das Übertragungsprotokoll zwischen PC und RoeTest mußte geändert werden, da ja bisher nur 8-Bit-Daten notwendig waren. Zum Schluß wurde noch die Messsoftware angepaßt. Dort waren die umfangreichsten Änderungen notwendig. Was mich wunderte: Die Ansteuerung der MCP4725 funktionierte trotz der umfangreichen Softwareänderungen von anfang an sofort und fehlerfrei!! Bei der Softwareänderung stieß ich auf ein Problem, daß ich gar nicht erwartet hätte: Im manuellen Modus werden die Spannungen über Schieberegler eingestellt. Bei 8 Bit war dies kein Problem (256 Positionen). Bei 12 Bit kann der Schieberegler gar nicht in soviele Positionen gebracht werden (4096). Die Anzahl der möglichen Positionen der Schieberegler hängt von der Bildschirmauflösung des PC's ab. Man muß den Schieberegler um mindestens einen Bildschirmpixel verschieben. Da es wohl keinen Monitor mit 4096 Pixel vertikaler Auflösung gibt, läßt sich die Einstellung nur sehr grob vornehmen. Die Spannungswerte springen immer mehrere Werte weiter und dazu auch noch zu krummen Werten. Dabei kann es an einem anderen PC wieder ganz anders aussehen! Mißt! Um diese Klippe zu bewältigen habe ich jeden Schieberegeler um "Fine-Buttons" ergänzt. Damit kann man die Wandler um genau einen Schritt ansteuern. Dies erweist sich auch bei 8-Bit Auflösung als hilfreich. Messung: Um in der Entwicklung genaue Messungen machen zu können, reicht ein billiges Taschenmultimeter nicht mehr aus. Ich habe mir deshalb ein hochgenaues Tischmultimeter gegönnt. Meine Auswahl fiel auf das Peaktech 4000. Es hat eine Grundgenauigkeit von 0,03 % in den Gleichspannungsbereichen. Unter mehreren geeigneten Modellen entschied ich mich sowohl wegen des Preises als auch wegen des VFD-Displays für dieses Gerät. Schließlich ist ein VFD-Display eine "Röhre" (der Röhrenfreak). Das Display läßt sich sowohl bei Tageslicht, als auch in Dunkelheit sehr gut, auch aus einiger Entfernung, ablesen. Nachstehendes Foto wurde mit Blitzlich aufgenommen. Auch in dieser Situation ist das Display noch sehr gut lesbar. Erster Test: Der erste Test war ernüchternd: Die Spannungen ließen sich zwar im gesamten Bereich bis 51 V einstellen. Am unteren Bereich waren diese jedoch sehr ungenau. 1. Offset: Der MCP4725 hat (wie alle anderen Wandler) einen Offset. Dieser beträgt beim Testobjekt-D/A-Wert = "0"- 0,001213 V. Es gibt nur einen Bereich. Bei geforderter Ausgangsspannung von 51V muß nach dem Wandler ein Verstärkung von ca. 10,25-fach erfolgen. Dies verstärkt natürlich auch den Offset. Dieser Offset ist kein Problem. Bei geforderten 0V am Ausgang wird einfach das Ausgangsrelais der Karte gegen Masse geschaltet (wie bisher). 2. Ungenauigkeiten am unteren und oberen Bereichsende: Microchip schreibt im Datenblatt selbst, daß die Wandler nur zwischen D/A-Wert 100-4000 ausreichend genau sind. 4000 entspricht 50 V. Die obere Grenze kann damit vernachlässigt werden. Nicht aber die untere Grenze, da in dieser Anwendung ja besonders kleine Spannungen eine hohe Genauigkeit erfordern. Ich habe einfach mal die Spannungen am Ausgang gemessen: MCP4725 Belastung Ausgang mit 18 KOhm ____________Am Wandler_______ Fehler D/A-Wert Spannung Spannung Abweichung Verstärkung geforderte ist soll 10,25-fach Ausg.Sp. 0 0,001213 0 -0,001213 -0,01243325 0 1 0,001217 0,0012207 0,0000037 0,000037957 0,0125 2 0,001219 0,0024414 0,0012224 0,012529664 0,025 3 0,001222 0,0036621 0,0024401 0,025011121 0,0375 4 0,001225 0,0048828 0,0036578 0,037492578 0,05 5 0,001762 0,0061035 0,0043415 0,044500535 0,0625 6 0,00296 0,0073242 0,0043642 0,044733242 0,075 10 0,00792 0,012207 0,004287 0,04394207 0,125 20 0,02028 0,0244141 0,0041341 0,042374141 0,25 30 0,0326 0,0366211 0,0040211 0,041216211 0,375 40 0,045 0,0488281 0,0038281 0,039238281 0,5 50 0,0574 0,0610352 0,0036352 0,037260352 0,625 60 0,0698 0,0732422 0,0034422 0,035282422 0,75 70 0,0824 0,0854492 0,0030492 0,031254492 0,875 80 0,0949 0,0976563 0,0027563 0,028251563 1 90 0,10748 0,1098633 0,0023833 0,024428633 1,125 100 0,1216 0,1220703 0,0004703 0,004820703 1,25 200 0,2436 0,2441406 0,0005406 0,005541406 2,5 300 0,3657 0,3662109 0,0005109 0,005237109 3,75 400 0,487 0,4882813 0,0012813 0,013132813 5 500 0,613 0,6103516 -0,002648 -0,02714648 6,25 600 0,733 0,7324219 -0,000578 -0,00592578 7,5 700 0,856 0,8544922 -0,001508 -0,01545508 8,75 800 0,978 0,9765625 -0,001437 -0,01473437 10 900 1,1 1,0986328 -0,001367 -0,01401367 11,25 1000 1,222 1,2207031 -0,001297 -0,01329297 12,5 1500 1,8335 1,8310547 -0,002445 -0,02506445 18,75 2000 2,45 2,4414063 -0,008594 -0,08808594 25 2500 3,06 3,0517578 -0,008242 -0,08448242 31,25 3000 3,676 3,6621094 -0,013891 -0,14237891 37,5 3500 4,286 4,2724609 -0,013539 -0,13877539 43,75 4000 4,9 4,8828125 -0,017188 -0,17617188 50 4095 4,9987 4,9987793 0,0000793 0,000812793 51,1875 tats. Anmerkungen Ausg.Sp. 0,0124333 Bis D/A-Wert 4 reagiert der Wandler kaum 0,012462 nicht relevant, da die kleinste einstellbare 0,0124703 Spannung 0,1 V sein soll, das aber genau! 0,0124889 0,0125074 0,0179995 interessanter Bereich für kleine 0,0302668 Spannungen, hier fallen die Abweichungen 0,0810579 besonders unangenehm auf 0,2076259 0,3337838 0,4607617 0,5877396 0,7147176 0,8437455 0,9717484 1,1005714 1,2451793 2,4944586 3,7447629 4,9868672 6,2771465 ok, Abweichungen tolerierbar 7,5059258 nach oben hin, kann Abweichung 8,7654551 durch Verstärkungseinstellung 10,014734 angenähert werden 11,264014 12,513293 18,775064 25,088086 31,334482 37,642379 43,888775 50,176172 51,186687 nicht mehr relevant Die theroretische Ausgangsspannung bestimmt sich folgendermaßen: D/A-Wert x Ref.Spannung/4096 Resultat: Gerade in den wichtigen, kleinen Spannungsbereichen sind die Abweichungen zu groß. Die Abweichungen würden die Messergebnisse des RoeTest verfälschen. Verbesserung durch Trimmer: Der D/A-Wandler ist nichts anderes als eine Widerstandskette mit verschiedenen Abgriffen. Legt man zwischen Masse-Pin und Masse einen keinen Widerstand kann man die unteren Werte etwas nach oben schieben. Ich habe einen Trimmer vorgesehen um den Mittelwert der unteren Spannung anzupassen. Mit den Trimmern "unten" und "oben" habe ich versucht, die Ausgangsspannung an zwei Punkten (1V und 50V) möglichst genau einzustellen. Ich habe dann die Ausgangsspannung bei DA-Wert 16 - dies entspricht einer Soll-Ausgangsspannung von -0,2V gemessen: Ist-Spannung: -0,189V (Abweichung 11 mV). Die Abweichung ist immer noch zu groß. Schlechter als bei Verwendung der 8-Bit-Wandler und Bereichsumschaltung! (meine neueste 8-Bit-G1-Karte hat bei 0,2 V einen tats. Wert von 0,2013 V (Abweichung 1,3mV). Bei größeren Spannungen ist die Genauigkeit sogar meist besser als 0,1 %. Die Fehler des 12-Bit-D/A-Wandlers werden durch die erforderliche 10-fache Verstärkung ebenfalls 10-fach verstärkt und wirken sich besonders in den wichtigen kleinen Bereichen aus. Bei 8-Bit und Bereichsumschaltung gibt es im kleinen Bereich ja nur eine 1-fache Verstärkung und somit keine Verstärkung der Ungenauigkeit. Deshalb kann der 8-Bit-Wandler genauer sein, als der 12-Bit-Wandler ohne Bereichsumschaltung! Lediglich die Auflösung ist halt nicht über den ganzen Bereich von 0-50V so hoch. Das ist aber gar nicht notwendig. Die Aussage von Microchip, daß im unteren Bereich die Linearität ungenau ist, ist richtig. Microchip sagt im Datenblatt, daß man nur die D/A-Wertebereiche von 100-4000 verwenden soll, wenn eine Genauigkeit von mindestens 1% gefordert wird. Man könnte mit einem OP die Ausgangsspannung nach unten verschieben und per Software die ersten 100 Stufen weglassen. Diese zusätzliche Maßnahme bedeutet aber weiteren Schaltungsaufwand mit allen Problemen (Temperaturdrift?). Eine bessere Genauigkeit als mit der 8-Bit-Lösung würde man aber nicht erreichen. Fazit: 12-Bit-Wandler sind nur im SMD-Gehäuse existent schwer beschaffbar auch nach zusätzlichen schaltungstechnischen Maßnahmen ist die Genauigkeit schlechter als bei der bisherigen Lösung (Bereichsumschaltung) Ich werde also auch künftig bei den 8-Bit PCF8591 bleiben. In Verbindung mit der Bereichsumschaltung über Relais sind diese die bessere Lösung . Man könnte es vergleichen mit den Digitalkameras: Eine hohe Pixelzahl sagt noch nichts über die Qualität der Bilder aus. Diese ist vielmehr vom Gesamtsystem (z.B. Objektiv, etc.) abhängig. Übertragen auf das RoeTest: Ein D/A-Wandler mit höherer Auflösung bringt alleine nichts. Die Gesamtlösung muß stimmen!