Ich möchte einen einfachen präzisen Analog-Ausgang nachrüsten und habe
nur 8 digitale Pins an der Testbaugruppe. Das Einfachste wäre ein
R2R-DAC mit Widerstandsnetzwerk. Die geforderte Genauigkeit ist aber
1/1000 bei 1V Ausgang. Die 1V wollte ich mit einem Reihenwiderstand
machen, den ich einmalig einstelle zum Kalibieren.
Nun habe ich mich nach fertigen Netzwerken umgesehen, finde aber nur
solche von Burns und anderen mit einer angeblichen Toleranz von 2%. Die
Linearität für die 8Bit-Versionen wird aber mit 0,5LSB angegeben. Heisst
das, das die Widerstände untereinander genau genug sind?
Das LSD bei 256 Werten läge ja bei 1/500 = 0,2%, also einem Zehntel. Wie
passt das zusammen?
Zumindest die hohen Bits in diesem Ladder müssten doch auf 0,1% genau
sein, damit nicht durch Umschalten von z.B. 00111111 auf 01000000 ein
Sprung entsteht, der mehr als die 0,5 LSB sind. Woher kommt dann der
Fehler von 2%?
Kann man eigentlich aus einem anderen Netzwerk ein R2R bauen? Was ich
gefunden habe, ist allesamt sternförmig verdrahtet.
Bastler schrieb:> Ich möchte einen einfachen präzisen Analog-Ausgang nachrüsten und habe> nur 8 digitale Pins an der Testbaugruppe.
Mit einem externen DAC bist du sicher genauer und du kannst ihn
mit 3 Pins über SPI ansteuern.
Und das kostet auch nicht die Welt.
Das habe ich natürlich ins Auge gefasst, aber das scheidet aus. Die
Baugruppe kann auf diesem Port nur digitale streaming daten ausgeben.
Schnell, aber nicht mit einem Protokoll zu versehen. Das ist das
Problem.
Die Schaltung soll so aussehen, dass vor und nach dem R2R jeweils ein
Trimming R sitzt, der den Offset und die Begrenzung der Schaltung
regelt.
Spannung von 0,111V bis 0,999V.
Trimmung so:
Beitrag "Re: R2R - Dimensionierung - Spannungsbereich"
+ 3,3V - Poti - R2R - Poti - 0,0V.
Den Potis sind C beigeschaltet, die die HF kompensieren und das
AC-mässig trimmen und stabilisieren.
Bastler schrieb:> Heisst das, das die Widerstände untereinander genau genug sind?
Da du NATÜRLICH nicht das Datenblatt dieser Netzwerke angegeben hast,
und es sich um speziall für 8 bit DAC Anwendungen geeignete zu handeln
scheint: Ja (möglicherweise).
ABER: Wie kommst du auf das dünne Brett, daß die Ausgangsspannungen
deiner 8 digitalen Pins auf 1/1000 genau ist, also exakt 0V und nicht
mehr als 0.0025V und exakt 5V und nicht weniger als 4.9975V bei den
Strömen die am R2R zu schalten sind ?
Vergiss dein Widerstandsnetzwerk, kaufe dir ordentliche DACs.
Bastler schrieb:> habe> nur 8 digitale Pins an der Testbaugruppe. Das Einfachste wäre ein> R2R-DAC mit Widerstandsnetzwerk. Die geforderte Genauigkeit ist aber> 1/1000 bei 1V Ausgang
Das ist einfach nur Unsinn. Mit 8 bit erhält man eine Auflösung von 256
Stufen (und das im Idealfall), nicht 1000. Daran würde auch ein
R2R-Netzwerk mit ppm-Genauigkeit nichts ändern können.
Georg
Michael B. schrieb:> Vergiss dein Widerstandsnetzwerk, kaufe dir ordentliche DACs.
Richtig!
Beim R2R-DAC spielt ja nicht nur die Toleranz der Widerstände rein,
sondern auch der Widerstand der Treiberschalter.
Der R2R-DAC stammt noch aus der Zeit, wo DACs schwer zu beschaffen und
sauteuer waren, also bis etwa 1990.
Heutzutage denkt man bei R2R eher an R2R-OPVs (Rail to Rail).
Bastler schrieb:> Ich möchte einen einfachen präzisen Analog-Ausgang nachrüsten und habe> nur 8 digitale Pins an der Testbaugruppe.
Einfach UND präzise?
Ähemm....
Also, für deinen R2R-Diskret-DAC mußt du im Wesentlichen lediglich die
MSB-Stelle dezent kompensierbar machen, da der Einfluß aller kleineren
Stellen ja jeweils nur die Hälfte ausmacht. Für 8 Bit geht das durchaus
zu machen. Und den Innenwiderstand des Treibers kannst du
vernachlässigen, sofern du ausreichend hochohmig arbeitest. Also z.B.
11k und 22k. Wichtiger ist, daß die Spannung, an der dein µC hängt,
ausreichend genau und stabil ist. Das wirkt sich nämlich auf das
Gesamtergebnis aus.
Nebenbei gesagt, ist sowas sowohl vom Gefummel als auch vom Platz her
eigentlich nur ne Notlösung. Nimm lieber einen integrerten DAC müber
SPI, den kannst du recht schnell aktualisieren, das geht wesentlich
schneller als I2C.
W.S.
Bastler schrieb:> Die 1V wollte ich mit einem Reihenwiderstand> machen, den ich einmalig einstelle zum Kalibieren.
Das ganze musst du aber für alle deine 256 möglichen zustände
durchführen weil sich ja jeweils die Belastung verändert. Oder anders
gesagt eine einfacher Serienwiderstand kann eigentlich nie eine
konstante Referenzspanungsquelle sein - diese muss völlig Lastunabhängig
die Spannung konstant halten.
Nimm einfach einen 10 bis 12 Bit DAC, vom dem nur 8 Bit benutzt werden,
dann kommt die Genaugigkeit dann schon hin. Dürfte einfacher sein, als
entsprechend genaue Widerstände zu finden (und zu bezahlen)
Moin,
Um den Spass nochmehr zu verderben, merk' ich mal an, dass ein R2R
Netzwerk nicht auf allen seinen Eingangsbits die selbe Last darstellt,
d.h. die einzelnen Digitalausgaenge werden mit unterschiedlichen Lasten
belastet, wodurch sicherlich ihre Ausgangsspannung (auf der ja eh' schon
der ganze "Dreck", der ueblicherweise auf Betriebsspannungen fuer
Digitalschaltungen ist, ist) auch froehlich vor sich hinwackelt.
Gruss
WK
Bastler schrieb:> Schnell, aber nicht mit einem Protokoll zu versehen. Das ist das> Problem.
Wieso nicht? SPI kann man damit sicherlich emulieren. Du musst ja nur
halbwegs das Timing aus dem Datenblatt einhalten.
Alternativ: Erfinde eine parallele Schnittstelle, z.B. jeweils 4 Bit
Daten und 4 Steuerleitungen für Nibble 1/2/3/4, Stopbit, Parität. Damit
schiebst du 16 Bit in einen Controller, der puzzelt alles zusammen und
schiebt korrekte Daten in einen DAC.
Es gibt auch DACs mit 8-Bit-Parallel-Schnittstelle und interner
Referenz. Der AD557 z.B. hat auch noch einen OP als Ausgangstreiber an
Bord, und das alles in einem DIL-16 Gehäuse.
W.S. schrieb:> Nimm lieber einen integrerten DAC müber> SPI, den kannst du recht schnell aktualisieren, das geht wesentlich> schneller als I2C.
Ich weiß nicht, wo das Problem beim Lesen ist, aber ich habe schon
zweimal geschrieben, dass diese Pins nicht beliebig programmierbar sind
und ich kein DAC-Protokoll reinbekomme. Sonst hätte ich das ja getan.
Es MUSS ein R2R werden und auf 1/1000 genau muss er sein, weil es eben
nur 256 Stufen sind und die sollen stimmen. Die Widerstände dürfen somit
nicht ungenauer sein, als der DAC. Sollte eigentlich klar sein.
Es ging mir nur um das Verständnis, warum die Netzwerke nur auf 2% genau
sein sollen und worauf sich das bezieht.
Bastler schrieb:> Die Widerstände dürfen somit nicht ungenauer sein, als der DAC. Sollte> eigentlich klar sein.
Der Absolutwert, und darauf bezieht sich die Toleranzangabe der
Widerstände, ist für ein R2R-Netzwerk ziemlich egal. Es kommt einzig auf
das Widerstandsverhältnis an (Matching). Bei diskretem Aufbau kann es
sogar sinnvoll sein, alles gleiche Widerstände vom selben Gurt zu nehmen
und die ggf. parallel bzw. in Serie zu schalten.
Moin,
Bastler schrieb:> Es MUSS ein R2R werden und auf 1/1000 genau muss er sein, weil es eben> nur 256 Stufen sind und die sollen stimmen. Die Widerstände dürfen somit> nicht ungenauer sein, als der DAC. Sollte eigentlich klar sein.
Voellig klar.
Und ist dir derweilen auch klar, dass deine nicht als SPI verwendbaren
Pins natuerlich auch Impedanzmaessig, Spannungsmaessig, und
Stoerspannungsmaessig auch auf's 1/1000 genau sein muessen?
Und sind sie das?
Steht im Datenblatt des Chips mit den nicht als SPI verwendbaren Pins,
dass die bei Low max. auf 1/1000 der Betriebsspannung gehen, egal
wieviel Strom in sie reinfliesst und umgekehrt die Spannung an den Pins
weder schwankt noch von Lastverhaeltnissen an Nachbarpins um mehr als
1/1000 beeinflusst werden, wenn sie auf hi gehen?
Oder steht da eher z.B. sowas wie: Logische "0" geht von 0V...0.3V und
logische 1 geht von 2.5V..3.3V - also so ein klitzekleines bisschen
weiter weg als 1/1000?
Gruss
WK
Bastler schrieb:> Es MUSS ein R2R werden und auf 1/1000 genau muss er sein, weil es eben> nur 256 Stufen sind
Solange dir die Tatsache nicht klar ist, dass 256 nicht das gleiche ist
wie 1000 dreht sich alles nur im Kreis. Nur zukünftig ohne mich, der
Kampf gegen absolute Beratungsresistenz ist nichts für mich.
Georg
Bei der R2R-Lösung gibt es ja auch noch ein glitch-Problem. Deshalb muss
da ohnehin ein bisschen Digitales rein. Einfach dranhängen wird
schwierig.
Ich plädiere auch für einen DAC, z.B. MAX 5187. Kann bis zu 40MHz und
braucht keine wesentliche Beschaltung außer Takt und chip select. Damit
kriegst Du auch PCM-Audio bei 40kHz bis etwa 13..14 Bits genau hin. Mit
PDM auf dem untersten Bit bei 25MHz und einem richtig guten Filter
kommen sogar fast 24 Bit, braucht aber Linearisierung. Habe ich mal
aufgebaut, weil auf dem board nur ein grober Video-DAC drauf war. Macht
aber kein Mensch in der Praxis so :-)
Wenn das nur eine langsame asynchrone Ausgabe sein soll und kein Takt
existiert, dann einen eigenen OSC mit z.B. 10MHz mit Latch für die Daten
davor und einen Filter auf 100kHz am Ausgang.
Bastler schrieb:> Ich weiß nicht, wo das Problem beim Lesen ist, aber ich habe schon> zweimal geschrieben, dass diese Pins nicht beliebig programmierbar sind> und ich kein DAC-Protokoll reinbekomme. Sonst hätte ich das ja getan.
Ich weiß nicht, wieso bei dir das Verstehen nicht klappt. Bei einem
R2R-netzwerk wirst du ja auch mehrere Pins hi oder lo setzen müssen. Bei
einer SPI-Schnittstelle mußt du das auch bloß. Da brauchst du GARNICHTS
dran herumzukonfigurieren.
Also etwa so:
for i:= 0 to 7 do
Clockbit:= low;
if Zahl and (1<<i)=high
then Datenbit:= high
else Datenbit:= low;
Clockbit:= high;
das war's sinngemäß schon so etwa. Fehlt noch SSEL zu setzen. Aber das
überlasse ich dir als Fingerübung.
> Es MUSS ein R2R werden und auf 1/1000 genau muss er sein, weil es eben> nur 256 Stufen sind und die sollen stimmen. Die Widerstände dürfen somit> nicht ungenauer sein, als der DAC. Sollte eigentlich klar sein.
Also, wenn du derart beratungsresistent bist, dann hat es keinen
weiteren Zweck. Nimm irgend ein Netzwerk und miß dir die Widerstände für
die beiden MSB's aus. Dann entscheide, ob du im Layout dort jeweils
Platz für einen kleinen R in Reihe oder einen großen R parallel vorsehen
mußt. Für die restlichen Widerstände kannst du auf solchen Zeck
verzichten, denn der Einfluß von deren Toleranzen halbiert sich ja mit
jeder Stelle. Die Widerstände für's LSB können aus der Grabbelkiste
sein, denn deren Toleranzen sind nebensächlich.
Ein Beispiel:
Bit 7 0.25% (MSB)
Bit 6 0.5%
Bit 5 1%
Bit 4 2%
Bit 3 4%
Bit 2 8%
Bit 1 16%
Bit 0 32% (LSB)
Nochwas:
Wenn jemand sowas liest: "Ich weiß nicht, wo das Problem beim Lesen ist,
aber ich habe schon zweimal geschrieben..", dann klappt bei fast allen
die Fensterlade runter. Es ist nicht jeder so geduldig wie ich mit dir
hier.
W.S.
Michael B. schrieb:> Vergiss dein Widerstandsnetzwerk, kaufe dir ordentliche DACs.
So ist es. Da hilft die ganze Schönrechnerei nichts, wenn man von vorn
herein die Bahnwiderstände der Ausgangs-FET ignoriert.
Aber an diesem Punkt stand jeder schon mal: eine einfache Idee und man
verspricht sich selbst tolle Ergebnisse. Ein Jahr älter (bei manchen
auch mehrere) kann man über seine eigene Blauäugigkeit nur lachen...
Wenn ich 8 freie Portpins habe, dann schließe ich dort einen seriellen
DAC an und lasse mir für die restlichen 5..6 freien Pins was cooles
einfallen.
Dergute W. schrieb:> Oder steht da eher z.B. sowas wie: Logische "0" geht von 0V...0.3V und> logische 1 geht von 2.5V..3.3V - also so ein klitzekleines bisschen> weiter weg als 1/1000?
Dann guck mal auf die dazu angegebenen Ströme. Die spielen da auch noch
ein ganz klein wenig mit rein.
W.S. schrieb:> Ich weiß nicht, wieso bei dir das Verstehen nicht klappt. Bei einem> R2R-netzwerk wirst du ja auch mehrere Pins hi oder lo setzen müssen.
Das ist bereits gelöst. Die Baugruppe sendet 8 Bit Daten in Serie.
> Wenn jemand sowas liest: "Ich weiß nicht, wo das Problem beim Lesen ist,> aber ich habe schon zweimal geschrieben..", dann klappt bei fast> allen die Lade runter
Ich ärgere mich einfach darüber, dass alternative Lösungen empfohlen
wurden, die ich eingangs bereits durchdacht und ausgeschlossen hatte:
Bastler schrieb:> Das habe ich natürlich ins Auge gefasst, aber das scheidet aus. Die> Baugruppe kann auf diesem Port nur digitale streaming daten ausgeben.> Schnell, aber nicht mit einem Protokoll zu versehen. Das ist das> Problem.
Ich kann diese Daten nicht umfunktionieren. Damit war die Aufgabe klar.
Dass ich auch lieber I2C-DACs verdrahte, hilft mir hier nicht weiter.
Das R2R-ist also gesetzt.
Es ging mir auch einzig um das Verstehen der Angabe "2%-Toleranz" und
trotzdem "0,5LSB Fehler". Das ist aus meiner Sicht noch nicht geklärt.
Dass ein DAC nicht genauer sein kann, als das LSB ist trivial und muss
nicht erörtert werden. Warum aber hat dieses Ladder-R2R geschlagene 2%
Fehler? Wo bitte kommen die denn her?
Deine Tabelle zeigt doch, wie einfach die genau gemacht werden könnten:
> Ein Beispiel:> Bit 7 0.25% (MSB)> Bit 6 0.5%> Bit 5 1%
Ein R2R zu verkaufen, das zwar 8 Bit hat, aber 2% Fehler hat, ist
irgendwie unsinnig. Es läuft also aufs Selber bauen hinaus. Die Frage
wäre noch, ob ich die entsprechend genau kaufen kann, oder selektieren
muss. Ich nehme an, kaufen und selektieren.
Bastler schrieb:> Das R2R-ist also gesetzt.
Ja und nein, s.u.:
> Warum aber hat dieses Ladder-R2R geschlagene 2%> Fehler? Wo bitte kommen die denn her?
Ich nehme an, dass sich hochgenaue R2R als Bauteil nicht verkaufen
lassen, weil die keiner braucht und zu teuer werden. Soweit die Funktion
als solche benötigt wird, liegen sie ja vor, nämlich eben als DAC! Die
arbeiten z.T mit solchen Stufen, wobei sie KSQs verwenden, wegen der
Ströme.
Dann sind die auch genau und erreichen lineares Verhalten, wie
gewünscht.
R2R aus Einzelwiderständen baut man nur bei Leistungsanwendungen und
wenn es grob sein darf. Billig-Video aus dem FPGA ist da ein Beispiel.
Das macht aber nur für 4-5 Bit Sinn, weil eine höhere Genauigkeit mit
genauen Rs zu teuer wird.
W.S. schrieb:> Bit 7 0.25% (MSB)
Die Abstufung in der Tabelle wäre dann übrigens auch noch zu grob, weil
die Summe der Beiträge aller 8 Bits zu 0,5% Fehler kumulieren würde und
das ist mehr, als die 0,4% die die 256 Stufen bringen. Es macht aus
meiner Sicht keinen Sinn, einen Wandler zu haben, der einen größeren
Fehler aufwirft, als die Abstufung ermöglicht, es sei denn, man käme an
die physischen Grenzen des Rauschens. Bei den 32Bit-R2R die im DIY
Audio-Bereich benutzt werden, hat man diesen Fall. Die hohe Auflösung
wird dort zum Kalibrieren benötigt.
Meines Erachtens würden für die o.a. 8 Bit sogar 0,05% genaue
Widerstände benötigt werden, jedenfalls für das oberste Bit. Für den
Zweck kauft die aber keiner mehr.
Für absolut genaue Wandlung taugt das einfach nicht. Selbst bei 8 Bit
dürft man nämlich schon ein Temperaturproblem bekommen, weil das höchste
Bit richtig Leistung verbrät und die Einschaltdauer dann einen Einfluss
auf dessen Widerstand hat womit sich die Kalibrierung verschiebt. Die
Lösung dafür ist eine dynamische Temperaturkompensation als
3D-Kennlinienfeld, welche die Leistung virtuell in Erwärmung umrechnet,
die Widerstände neu berechnet und die Kalibrierung mathematisch
nachzieht. Für einen anderen Anwendungsfall habe ich das schon mal
gemacht. Bei den Randbedingungen hier ginge das nach meinen Berechnungen
aber trotzdem nur auf einige Dutzend ppm genau, heißt auf Deutsch: Der
DAC hat eine absolute zeitliche Genauigkeit von nur maximal 13-14 Bit,
je nachdem, wie oft man das Signal abschaltet und nachkalibiert, was nur
bei manchen Anwendungen geht.
Bei permanentem Audio gibt es also einen gewissen Kompressoreffekt. Es
ist natürlich nicht ganz so tragisch, weil die Amplitudenabschwächung
gering und zudem im Zehntelsekundenbereich geschieht und damit nicht
wirklich hörbar ist. Trotzdem ist der erzielbare DAC-Wert absolut
erheblich schlechter, als das, was mit den kalibrierten
Delta-Sigma-Wandlern machbar ist, welche die Puristen ja meiden wie der
Teufel das Weihwasser.
Das habe ich auch besagten DIY-Männern schon erklärt mit dem Ergebnis,
dass mein Beitrag im dortigen Forum gelöscht wurde, was wiederum seinen
Grund darin hat, dass einer der Foren-Chefs solche DAC-boards vertickt.
:-)
Bastler schrieb:> Warum aber hat dieses Ladder-R2R geschlagene 2% Fehler? Wo bitte kommen> die denn her?
Der absolute Fehler des Gesamtwiderstands ist 2%.
Du kannst also statt einem 10k Array mal eines mit 10,2k oder eines mit
9,98k erwischen.
Und doch kann die Abweichung der Widerstände innerhalb des Arrays
zueinander deutlich geringer sein.
Aber ich kann noch immer keinen Link auf ein Datenblatt finden, obwohl
das schon mal angefragt wurde. Deshalb wirst du die Angaben dort selber
bewerten müssen.
> Ein R2R zu verkaufen, das zwar 8 Bit hat, aber 2% Fehler hat, ist> irgendwie unsinnig
Wenn du die Fehlermechanismen deiner präferierten Lösung nicht mal
ansatzweise kennst, wirst du bei der kommenden Umsetzung noch einiges
lernen...
Bastler schrieb:> Ein R2R zu verkaufen, das zwar 8 Bit hat, aber 2% Fehler hat, ist> irgendwie unsinnig.
Liest du auch?
Wolfgang schrieb:> Der Absolutwert, ...
Das ist ja schon mehrmals erwähnt worden:
Bastler, auch wenn es keine Erklärung für die 2% ist, die du suchst.
Du möchtest 1000V mit einer Auflösung von 1V messen.
Du brauchst für den AD-Wandler also 1000 Stufen. Richtig?
Mit einem 8 Bit R2R-Wandler erreichst du aber nur 256 Stufen. 1000V /
256 = 3.91V.
Genauer wirst du nicht. Du erreichst dein Ziel nicht, auch wenn der
R2R-Wandler einen Fehler von 0% hätte.
http://www.ti.com/lit/ds/symlink/dac0800.pdf
Das ist im Prinzip das gleiche, nur dass es halt ein IC ist und die
ganzen dummen Probleme des Widerstandsnetzwerks nicht hat.
Kannst du direkt an deine 8 digitalen Ausgänge hängen, Ansteuerung ist
ident mit deinen Widerständen.
Passt genau der nicht, passt ein anderer. Sowas ist Katalogware.
Eine Sache noch: Wenn du deine Widerstandsfrage beantwortet haben
willst, dann setz einen Link aufs Datenblatt. Dann schaut man sich das
an. Ohne Datenblatt, kein Anschauen desselben...
Worin liegt denn bitteschön funktionsmäßig der Unterschied ob ich meine
8 Signale auf ein R2R-Netzwerk oder einen (mindestens) 8 Bit DAC mit
parallelen Eingängen gebe?
Moin,
Dieter W. schrieb:> Worin liegt denn bitteschön funktionsmäßig der Unterschied ob ich> meine> 8 Signale auf ein R2R-Netzwerk oder einen (mindestens) 8 Bit DAC mit> parallelen Eingängen gebe?
Das Eine kann mit der hier erhofften Genauigkeit funktionieren, das
Andere eher nicht.
Gaebe es diesen Unterschied nicht, waere kein Hersteller so dusselig und
wuerde DACs mit parallelen Eingaengen versuchen zu verkaufen.
Gruss
WK
Dieter W. schrieb:> Worin liegt denn bitteschön funktionsmäßig der Unterschied ob ich meine> 8 Signale auf ein R2R-Netzwerk oder einen (mindestens) 8 Bit DAC mit> parallelen Eingängen gebe?
Dass sich jemand anders um Linearisierung, Eingangs- und
Ausgangsimpedanzen und je nach Chip um Referenzen und Puffer gekümmert
hat, sowie das Verhalten der Schaltung in einem Datenblatt spezifiziert.
Dadurch musst du das alles nicht mehr machen und bekommst in unserer
nicht-idealen Welt ein besseres Ausgangssignal als mit händisch
verglichenen 1%-ern.
Dieter W. schrieb:> Worin liegt denn bitteschön funktionsmäßig der Unterschied ob ich meine> 8 Signale auf ein R2R-Netzwerk oder einen (mindestens) 8 Bit DAC mit> parallelen Eingängen gebe?
Aber du hast an sich Recht, idealerweise kommt an beiden Ausgängen
genau das selbe raus (bei perfekten Widerständen und Treibern), und
beide Lösungen haben die gleiche Funktion.
Also ich habe mit R2R-Netzwerken durchaus passable Ergebnisse erzielen
können. Mit einem Nennwert von 10kOhm sind auch die Bahnwiderstände von
HC-Buffern noch kein Problem. Die Linearität ist immerhin gut genug
gewesen um mit einem auf 16bit kaskadierten DDS-Generator bei 1kHz <0,1%
THD zu erreichen. Habe hier noch ein paar Hundert Stück im
SIL10-Gehäuse, bei Bedarf melde Dich per PM.
900ss D. schrieb:> Bastler, auch wenn es keine Erklärung für die 2% ist, die du suchst.> Du möchtest 1000V mit einer Auflösung von 1V messen.
Nein, falsch! Ich möchte 0,1% Präzision, damit die 256 Stufen stimmen
und nicht verschmiert werden.
Dieter W. schrieb:> Worin liegt denn bitteschön funktionsmäßig der Unterschied ob ich meine> 8 Signale auf ein R2R-Netzwerk oder einen (mindestens) 8 Bit DAC mit> parallelen Eingängen gebe?
Er liegt unter anderem darin, dass der Wandler einen Takt benötigt, was
ich gerne vermeiden möchte.
Jürgen S. schrieb:> Wenn das nur eine langsame asynchrone Ausgabe sein soll und kein Takt> existiert, dann einen eigenen OSC mit z.B. 10MHz mit Latch für die Daten> davor und einen Filter auf 100kHz am Ausgang.
Das kann nicht klappen, weil die Datenrate nicht mit dem Takt des
Wandlers zusammenspielen und Verzerrungen erzeugen würde.
Ein Wandler kommt nur in Frage, wenn ich an das R2R-Netzwerk direkt dran
komme.
Mark S. schrieb:> Also ich habe mit R2R-Netzwerken durchaus passable Ergebnisse erzielen> können.
Da schau einmal an!
Danke für dein Angebot, ich habe jetzt welche zum Testen bestellt. Die
2% Exemplarstreuung kriege ich sicher weggetrimmt.
Bastler schrieb:> ... dass der Wandler einen Takt benötigt ...
Aber nur, wenn man explizit danach sucht.
Nimm halt einen 10 Bit Typ wie z.B. den AD7533, der hat nur das R2R
Netzwerk und die Analogschalter drin und sonst nix weiter.
Mark und Bastler: Jetzt wurde schon mehrfach nach einem Typ oder einem
Datenblattlink für solche R2R gefragt, bitte beantworten.
Wenn man nicht weiß, wo nach man suchen soll, gestaltet sich die Suche
schwierig.
Bastler schrieb:> Nein, falsch! Ich möchte 0,1% Präzision, damit die 256 Stufen stimmen> und nicht verschmiert werden.
Klassischer Fall der Verwechslung von Auflösung und Genauigkeit. War
wohl doch zu früh für mich heute morgen :)
Wudu schrieb:> Abba die da könnendas doch auch mit 24Bits!????
Genau solche und ähnliche Bauten meine ich in meinem Beitrag weiter
oben, exakt diese!
Die benutzen Korrekturtabellen, um die eingehenden 32Bit (das derzeit
maximale Audio-Format) auf ihre internen 32 oder 36 Bit zu mappen. Mehr
Bits müssen es sein, weil sie einerseits die nichtlinearen Rs
korrigieren müssen, welche bei geringen Fehlern, Lücken im Binärmuster
erzeugen würden, die sich mit den geringeren Bits nicht ausgleichen
lassen. Also muss jedes Bit etwas mehr, als 0,5 seines Vorgängers
beitragen können, was am Ende mehr Bits für die statische Auflösung
erzwingt. Weniger Bits, als die eingehenden, können es wiederum aber
auch sein, weil die Digitalelektronik dithern kann und mit mehr, als den
768kHz tickeln könnte. Man kann also auch mit einem 24 Bit R2R-DAC das
32 Bit Audio voll übertragen, wenn die Abtastrate stimmt.
Das tun manche, manch andere tun es nicht, je nach Verständnistiefe des
Entwicklers und inwieweit er die Kapazität von DSD-Datenströmen
verstanden hat, die meistens die Quelle dessen sind, was zugespielt -
auch wenn es in einem anderen Format zugespielt wird.
Und je nachdem, wie sehr der eine oder andere verstanden hat, wie
PCM-Audio aussieht, nämlich ein ab und zu mal angeschaltetes MSB
oberhalb der -6dBfs-Grenze, kann er auch nachvollziehen, dass die
Belastung des R2R im Gegensatz zu einem analogen Filter, welches mit DSD
beschossen wird, eine digitale Signatur aufgebrummt bekommt, welche auch
nach super guter Filterung immer zu einem gewissen Anteil im
Audiodatenstrom enthalten sein wird, weil dessen Spektrum nichts mit dem
des Signals zu tun hat. Die Fehler beim DSD hingegen sind ganzzahlige
Vielfache der Grundfrequenz des Audiosignals und damit harmonisch und
viel weniger auffällig.
Die Geschichte ist insofern interessant, als dass das MSB eben mitunter
mit sehr geringer Pulsbreite und dafür großer Pause pulst, was laut
Fourier eben einen entsprechend niederfrequenten Anteil birgt, welcher
sich direkt im Signal abbilden kann, da er im hörbaren Bereich liegt.
Ein solcher R2R, welcher mit einer entsprechenden Leistung gefahren wird
(und das muss man aus Störsicherheitsgründen), braucht auch ein
entsprechendes Analogfilter dahinter und dieses muss tüchtig arbeiten,
will es gut glätten. Die Leistungen dieser Komponenten haben etliche
Streuungen zur Folge und außerhalb des R2R, blasen da einfach 36
digitale Leitungen, deren Werte sich addieren. Die kommen zwar nicht aus
dem FPGA, weil die schlauen Buben dort noch ein Latch dazwischen kleben,
aber die Latches müssen ordentlich Strom bringen und hier eben besonders
das höchste Bit.
Wenn man nun mal die digitalen Bits gedanklich aufaddiert, erhält man
nicht etwa ein Audiosignal, wie bei DSD oder einem rein analogen
Verstärker, sondern ein Störsignal mit der Bandbreite bis runter zur
Periode der Bit-Pausen. Diese Spektren kann man im Audiopfad messen :-)
Ich habe solche Betrachtungen auch für PCM-DACs angestellt, die aber
haben den Vorteil, dass das Getute im Chip und damit auf
Kleinsignalebene geschieht. Das gleiche gilt für die Filter im Chip: Die
sind optimal ausgesteuert und angesteuert. Solche hyperbolischen Filter
brauchen eine lineare Vorverzerrung, zusätzlich zur nichtlinearen
Korrektur, damit sie richtig linear arbeiten, was auch nicht jeder der
Produzenten dieser Gerätschaften verstanden zu haben scheint. Diese
Mimik extern außerhalb des Chips nachzubilden, ist auch nur auf den
ersten Blick trivial - dank FPGA: Auch da gibt es ein paar issues! In
jedem Fall muss man leistungsmäßig auf den Filter drauf und das mit
parallelen Leitungen und bitte glitchfrei und das gelingt nicht perfekt.
Im AA-Filter werden dann sowohl reguläre als auch irreguläre Stufen /
Glitches behandelt, also Rechtecke umgeformt, deren Frequenzen allesamt
nicht analog dem des Audiodatenstroms sind. Das gibt kräftiges digitales
Rauschen und stellt den Sinn der 32 Bit DAC infrage.
Ein "normaler" Audio-DAC hat mehrere dieser Probleme nicht - auch in der
Umbeschaltung und den PCM-Eingängen nicht. Da ist technisch meistens nur
das S/PDIF ein Problem, das den meisten Geräten per Coax zugeführt wird
und dann im Gerät umhergeistert, aber das hat signaltechnisch BMC (wie
Manchester) und damit kaum NF-Anteile. Die heutigen DACs machen ihre
Sache gut, besonders die Audio-DACs. Will man das toppen, muss man sehr
gut bauen. Analog wie digital. Es geht, aber es ist teuer und aufwändig.
Da müssen HF-Trenner rein, HF-Abschirmungen, Symmetrierungen für die
Treiber und einen ganzen Haufen Zeug, der in den Chips nicht gebraucht
wird oder drin ist, bis man überhaupt mal dahin kommt, wo der 25,-
Euro-Delta-Sigma-DAC schon ist. Dann geht es weiter mit präziser,
linearer und rauscharmer Analogtechnik, wie man sie bei Magnetresonanz-
oder Elektronenstrahlmikroskoptechnik einsetzt. Und wenn man es dann
gepackt hat, hebt es das Signal in Regionen, in denen nur noch
Fledermäuse kleine Unterschiede ausmachen können.
Auch das habe ich sinngemäß im dortigen Forum eingestellt und auch
dieser Beitrag ist auf wundersame Weise verschwunden. :-)
Egal, es lebe die 32-Bit-Audio-Real-Time-R2R-FPGA-Technik (und ihre
Käufer).
Bastler schrieb:> Das kann nicht klappen, weil die Datenrate nicht mit dem Takt des> Wandlers zusammenspielen und Verzerrungen erzeugen würde.
Doch, das kann sehr wohl funktionieren, weil der entstehende Jitter
gemäß der Überabtastung in ein dx/dt umgerechnet werden kann, welches
sich über 1/dx/dy auf die Amplitude auswirkt. Das sind kleine Rechtecke
in der Größenordnung des halben LSB. Das ist natürlich erst einmal ein
scheinbar gewaltiger Fehler, allerdings schon bei Faktor 100
Überabtastung in einem Spektralbereich den man locker weggefiltert
kriegt, weil man ohnehin einen AA-Filter braucht, der eine sehr viel
tiefere GF hat. Entscheidend ist, welche Abtastrate man zur
Überabtastung hinbekommt. Beim 1-Bit Audio geht es ja auch.
Dieses digitale Rauschen wird auch deshalb nicht so ins Gewicht fallen,
weil man ohne weitere Behandlung die hier
Beitrag "Re: Genauigkeit von R2R-Netzwerken"
erwähnten glitches auf den digitalen Leitungen hat, die direkt und
ungefiltert in den DAC gehen. Siehe das 3 Bit Beispiel im bild. Das ist
auch bei Dithering nicht besser. Bei 8 Bit ist das noch viel extremer.
Genau das ist auch ein Grund, warum man sich beim Audio schon in einer
Frühphase von parallelen DACs dieser Art verabschiedet hat und bei der
Übertragung auf serielles 1-Bit gesetzt hat. Weniger initiales
Störspektrum.
Bastler schrieb:> Dieter W. schrieb:>> Worin liegt denn bitteschön funktionsmäßig der Unterschied ob ich meine>> 8 Signale auf ein R2R-Netzwerk oder einen (mindestens) 8 Bit DAC mit>> parallelen Eingängen gebe?> Er liegt unter anderem darin, dass der Wandler einen Takt benötigt, was> ich gerne vermeiden möchte.
Ein Takt wird nicht benötigt. Ein multiplizierender DAC mit Parallelport
(z.B. MAX4580) arbeitet völlig transparent - 8-Bit gehen rein und
Spannung kommt raus. Was noch benötigt wird, wäre z.B. eine 1V Referenz
und ein OPV-Ausgangbuffer um damit 0...1V in 256 Stufen zu generieren.
Die Linearität über den Temperaturbereich liegt bei +/-0,5LSB. Der DAC
wird im Spannungsmodus betrieben, d.h. die Referenz kommt an den Ausgang
und die Ausgangsspannung wird am Referenzanschluß entnommen.