R2R-Netzwerk an Atmega328 - wie klein darf R sein?

Gast #6958901
Lesenswert?

hallo,

es soll ein R2R-Netzwerk an einen 8-Bit-Port von einem Atmega328P-PU 
angeschlossen werden. Wie klein darf R höchstens sein? Wäre ein Wert um 
500 Ohm akzeptabel? Dann wäre an jedem der 8 Port-Pins ein Widerstand 
von 1k angeschlossen (2*R).

Vcc ist 5V und alle 8 Port-Pins sollen an demm Netzwerk angeschlossen 
sein. Die anderen Pins sind Eingangs-Pins, an zweien ist ein 20MHz-Quarz 
angeschlossen und die restlichen sind unbenutzt.


https://de.wikipedia.org/wiki/R2R-Netzwerk
Gast #6958994
Lesenswert?

> 2 auf Gleichheit ausgesuchte Kondensatoren

Auf Gleichheit ausgesuchte Widerstaende kann jedes Baummartmultimeter.
Mann braucht halt ein paar mehr.
Aus 100 Widerstaenden von der Rolle, werden so 100 "relative"
Praezisionswiderstaende.

Ansonsten gibt es noch den Shannon-Dekoder. Der hat sicher
einige Nachteile, kann aber von einem Controller mit AD
selbst nachkalibriert werden.
#6959102
Lesenswert?

c-hater schrieb:
> Mark S. schrieb:
>> Aus den "good old days" habe ich noch etliche fertige 10kOhm R-2-R
>> netzwerke von ROHM. Besteht daran Interesse?
>
> Eher nicht. Wie peda bereits treffend angemerkt hat, ist PWM der
> einfachere und bessere Weg.
Einfacher: ja, besser: nein. Ein aus 30kHz PWM erzeugtes Audiosignal ist 
um Klassen schlechter als ein 30kHz-8bit-DAC Ausgang.
#6959113
Lesenswert?

Max M. schrieb:
> Mark S. schrieb:
>> Ein aus 30kHz PWM erzeugtes Audiosignal ist
>> um Klassen schlechter als ein 30kHz-8bit-DAC Ausgang.
>
> Äpfel und Birnen?
Sicher. Aber diese beiden wurden nun mal miteinander verglichen. Ich 
habe mir selbst so einen supersimplen PWM-Generator mit einem Attiny25 
als Testgeber bis 16kHz aufgebaut und weiß von daher wie mies dessen 
Ausgangssignal ist im Vergleich zum 8-bit-DAC - der natürlich mit diesem 
8-Beiner nicht realisierbar wäre.
Gast #6959157
Lesenswert?

Als Schalter für die Beine des 500-Ohm-R2R die Ausgänge eines 
Kontrollers zu verwenden? Schließlich wird von den Ausgängen nur 
gefordert, Digitalnullen zu
erzeugen, die hunderte millivolt haben dürfen.

Meist sind die die Ausgänge mit Mosfets besser als das Datenblatt. Und 
bei 8 bit darf ein Bastler so etwas schon ausprobieren.

Wenn er zwei ports nimmt und immer zwei Ausgänge parallel schaltet? 
Vielleicht klappt das gerade so.

Besser wären da die Werte von 10kOhm und 20k Ohm aus der E24-Reihe

Sonst sollte man mit den Ausgängen "stärkere" Fets schalten, wie etwa 
SMD-Mosfets in SOT und dgl. Die haben dann ausreichend niedriges Rds für 
das R2R-array und bleiben auch bei 500-Ohm Nennwiderstand mit Uds im 
millivolt-Bereich.

ob da aber ein ausreichend schneller DA-Wandler entsteht? Wer weiß?
Die Eingangskapazitäten der Einzelfets sind halt relativ groß.

Nicht umsonst haben/hatten die DA-ICs mit 8 bit Eingänge für digitale 
Pegel, die interne Schalter am R2R ansteuern.
Gast #6959271
Lesenswert?

Vielen Dank für die vielen Antworten, sehr aufschlussreich!

Derzeit werden Audiosamples mit ca. 20kHz über PWM ausgegeben und es 
wird mit einem TP-Filter 10kHz gefiltert, der besteht aus drei relativ 
großen Induktivitäten. Der Sound ist so weit ok.
Jetzt wollte ich mal die Gegenprobe mit dem R2R-Netzwerk machen.
Ok, also 10k und 20k und dann ein Impedanzwandler. Und dann wie filtern? 
Mit einem OP-Amp-TP?
Gast #6959311
Lesenswert?

tim schrieb:

> Ok, also 10k und 20k

Unclever.
Ich würde IRGENDEINEN passenden Wert nehmen, beispielsweise
22k; für "R" werden zwei Widerstände parallelgeschaltet,
für "2R" wird nur einer eingelötet.

Vorteil: Du brauchst nur GLEICHE Widerstände; der Absolutwert
ist ziemlich wurscht. Möglichst geringer Tk ist hilfreich,
enge Toleranz (0.1%) schadet nicht.


> und dann ein Impedanzwandler.

Richtig.


> Und dann wie filtern? Mit einem OP-Amp-TP?

Ja. Ist am einfachsten. Sallen/Key bietet sich an; das kann
man in 3. Ordnung mit einem OPV ausführen. Davor noch der
Impedanzwandler, also ist ein Doppel-OPV notwendig.
#6959334
Lesenswert?

Moin,

Mal mein Senf dazu: Vor zig Jahren habe ich mal ein bisschen mit R2R 
Netzwerken als "Billig-DAC" experimentiert. Das waren lauter 
gleichgrosse SMD Widerstaende, wo dann fuer den kleineren R immer 2 
parallel geschaltet waren. IO-Ports kamen aus einem Spartan3 FPGA was 
ein DDS Signal generierte. Quintessenz war damals irrc: Mehr als 5 bit 
hat kaum mehr was gebracht. Drueber ist alles in Dreckeffekten 
verpufft...

Gruss
WK
Persönliche Seite #7240183
Lesenswert?

tim schrieb:
> Es soll ein R2R-Netzwerk an einen 8-Bit-Port von einem Atmega328P-PU
> angeschlossen werden.
Als fertiger Chip wohl eher nicht, weil du die Widerstände anpassen 
musst. Das gleiche Problem haben wir bei den manuellen Video-DACs auf 
den FPGA-Eval-PCBs.

So oder so, kann man das aber kompensieren:

Dergute W. schrieb:
> Quintessenz war damals irrc: Mehr als 5 bit
> hat kaum mehr was gebracht.
Wenn man die Ausgänge des FPGAs latched / gut timed, gibt es nur 
"Nadeln" mit der 2hN-fachen Frequenz, bei 5 Bits also 32. Das sollte 
sich einfach filtern lassen. Es kommt dann nur auf die Präzision der 
Widerstände an.

Mit 1%-Widerständen bekommt man sicher eine Güte von 2% hin, was die 
Nutzung von 6-7 Stufen rechtfertigt. Wenn man eine Kompensation einbaut, 
also z.B. ein additiv hinzugeschalteter 2. R2R-DAC, der von den Bits so 
versetzt ist, dass man die Abweichungen korrigieren kann, geht da auch 
genauer.

Im Bild werden 2 Bits genutzt (DAC "B") - und hier ist ein Beispiel 
eines 32-stufigen DACs aus 5%-Widerständen, das auch unter 1% genau 
getuned werden kann: http://96khz.org/htm/r2rdac10bit.htm
Angehängte Dateien:
#7245035
Lesenswert?

habe derzeit mit fertigen R2R-Netzwerken von ROHM meinen DDS-basierten 
Tongenerator aufgebaut, wobei ich sogar auf 16bit kaskadiert hatte. Der 
Klirrfaktor bei 1kHz Sinus lag unter 0,1%, so dass ich 10-12bit 
Genauigkeit für plausibel halte. Wen das weiter interessiert, ich habe 
noch einen guten Vorrat dieser R2R-Netzwerke (Nennwert 10kOhm).
#7245186
Lesenswert?

Willi schrieb:
> Das interessiert mich auch.
> Wie geht das ?

Anbei mal die Prinzipschaltung.
Zu Beginn sind N2, N3 geschlossen, d.h. C1, C2 werden entladen.
Dann öffnen N2, N3.
Ein 1-Bit schließt nun N1, ein 0-Bit N2, d.h. C1 wird auf oder entladen.
Dann öffnen N1, N2.
Dann schließt N3 und die Ladung teilt sich zwischen C1, C2 auf, d.h. C1, 
C2 müssen gleich groß sein.
Dann öffnet N3.
Dann geht das Spiel für alle Bits weiter.
Zum Schluß schließt N4 und lädt den Haltekondensator C3 auf den Endwert 
auf.
Dann öffnet N4 und alles geht wieder los.
Die Taktzeiten sind so zu wählen, daß die Kondensatoren genügend 
umgeladen werden.
Die Kondensatoren müssen natürlich NP0 sein, z.B. 10nF.
Angehängte Dateien:
Persönliche Seite #7251155
Lesenswert?

Kai D. schrieb:
> Hier präsentieren zwei Wissenschaftler von der IOWA State, wie man so
> einen DAC richtig genau bekommt:

Nee, sie demonstrieren, wie man ihn genauer bekommen KANN und zwar 
unter zwei Randbedingungen:

a) wenn die Widerstandswerte das hergeben - siehe das statistical 
achievement diagram, das angibt, mit welchen Verbesserungen man rechnen 
kann

b) wenn streng lineare DACs mit der konventionellen Binärteilung 
verwendet werden, denn diese werfen ja das unvorhersehbare Streuproblem 
ja überhaupt erst auf.

Beides machen wir ja nicht, sondern orientieren uns an dem worst case 
der maximalen Abweichung, weil wir wollen den DAC nicht nur statistisch 
besser machen, sondern ihn für ALLE Anwender ausregeln, auch wenn die 
ungünstige R-Werte verbaut haben.

In der Konsequenz heißt das, dass der Pechpilz, der ungünstige R-Werte 
hat, auch mit dieser Optimierung auf keinen grünen Zweig kommt, während 
bei der Kalibierung mit Kompensation alle Nutzer fast dieselbe Qualität 
erhalten.

Was die beiden Herren auch unterschlagen:

Reale DACs laborieren an Drifteffekten durch die Widerstandserwärmung 
unter Belastung und die Geräteerwärmung an sich. Das erfordert ein 
permanentes Auskalibrieren des DACs im Betrieb. Tut man das aber und hat 
genug Regelreserve, kriegt man alle DACs genau - im Rahmen der 
Regelmöglichkeiten.

Möglicherweise ist den Herren das nicht aufgefallen, weil sie alles nur 
theoretisch mit MATLAB untersucht haben.

Das kann man natürlich machen, um alle erdenklichen Kombinationen der 
Realität und der sich ergebenden Verbesserungen einzufangen, aber es 
gibt in der realen Welt eben noch mehr Effekte.

Der Trick, der im paper beschrieben ist, taugt also nur für die, die 
nicht kalibrieren -  und mit standardisierten R2R-Netzwerken arbeiten 
wollen oder müssen. Da aber dennoch eine Kalibrationsmessung erfolgen 
muss, kann ich das auch gleich richtig zu Ende denken und bauen und ein 
paar weitere LSBs reinwerfen.

Soweit ich das beurteilen kann, wird das von den Herstellern der 
R2R-DACs auch nicht verwendet. Alle Systeme die ich kenne, kalibieren in 
der einen oder anderen Weise das Gesamtsystem.

In einem technischen Fall werden solche Flash-DACs z.B. so verwendet, 
dass alles doppelt vorhanden ist und einer von zweien analog auf den 
Ausgang geschaltet wird, während der andere nachkalibiert wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren