Forum: Mikrocontroller und Digitale Elektronik R2R-Netzwerk an Atmega328 - wie klein darf R sein?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von tim (Gast)


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

von Stefan F. (Gast)


Lesenswert?

tim schrieb:
> ein R2R-Netzwerk an einen 8-Bit-Port
> Wäre ein Wert um 500 Ohm akzeptabel?

Auf keinen Fall. Die Ausgänge des IC haben ja schon etwa 50Ω. Du kannst 
dir ja mal ausrechnen, wie stark das dein Signal verzerrt.

Ich würde eher Widerstände mit mehr als 10kΩ verwenden.

von c-hater (Gast)


Lesenswert?

tim schrieb:

> 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?

Nein, viel zu klein. So etwas ab 10k aufwärts wird's brauchbar.

von Martin (Gast)


Lesenswert?

Natürlich sind die 50 Ohm von oben Quatsch. Der typische Wert bei 5 V 
ist kleiner 30 Ohm (siehe Datenblatt).

Zur Frage: Alles mal durchrechnen oder "Versuch macht kluch". Was willst 
Du genau machen?

von Peter D. (peda)


Lesenswert?

R2R reicht mit 1% Widerständen gerademal knapp für 7 Bit (0,1% für 10 
Bit). Einfacher und genauer ist daher PWM mit Tiefpaß.
Eine elegante Möglichkeit sind auch geschaltete Kondensatoren. Dazu 
braucht man nur 2 auf Gleichheit ausgesuchte Kondensatoren und einen 
74HC4066. Bis 16 Bit sind damit durchaus erreichbar.

von c-hater (Gast)


Lesenswert?

Martin schrieb:

> Natürlich sind die 50 Ohm von oben Quatsch. Der typische Wert bei 5 V
> ist kleiner 30 Ohm (siehe Datenblatt).

Das ist doch sowas von irrelevant, ob das nun 30 oder 50 Ohm sind. In 
beiden Fällen ist mit R2R mit einem R von 500Ohm nix Vernünftiges und 
Sinnvolles möglich.

von Cartman (Gast)


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.

von Mark S. (voltwide)


Lesenswert?

Aus den "good old days" habe ich noch etliche fertige 10kOhm R-2-R 
netzwerke von ROHM. Besteht daran Interesse?

von c-hater (Gast)


Lesenswert?

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.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

bitte nur mit Impedanzwandler nach dem Filter. Sonst verfälscht die Last 
das Analogsignal.

: Bearbeitet durch User
von Mark S. (voltwide)


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.

von Max M. (Gast)


Lesenswert?

Mark S. schrieb:
> Ein aus 30kHz PWM erzeugtes Audiosignal ist
> um Klassen schlechter als ein 30kHz-8bit-DAC Ausgang.

Äpfel und Birnen?

von Mark S. (voltwide)


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.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

Peter D. schrieb:
> Eine elegante Möglichkeit sind auch geschaltete Kondensatoren. Dazu
> braucht man nur 2 auf Gleichheit ausgesuchte Kondensatoren und einen
> 74HC4066. Bis 16 Bit sind damit durchaus erreichbar.

Interessant. Wie sieht die Schaltung aus?

von Peter R. (Gast)


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.

von Willi (Gast)


Lesenswert?

Peter D. schrieb:
> Eine elegante Möglichkeit sind auch geschaltete Kondensatoren. Dazu
> braucht man nur 2 auf Gleichheit ausgesuchte Kondensatoren und einen
> 74HC4066. Bis 16 Bit sind damit durchaus erreichbar.

Das interessiert mich auch.
Wie geht das ?

von tim (Gast)


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?

von Cartman (Gast)


Lesenswert?

> Und dann wie filtern?

Wenns bei den 20 khz bleibt, lohnt das nicht.

Der OPV soll nur den Impedanzwandler machen, damit der
DA nicht belastet wird.

von Egon D. (Gast)


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.

von Dergute W. (derguteweka)


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

von Jürgen S. (engineer) Benutzerseite


Angehängte Dateien:

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

: Bearbeitet durch User
von Kai D. (robokai)


Lesenswert?

Dergute W. schrieb:
> Mehr als 5 bit
> hat kaum mehr was gebracht.

Hier präsentieren zwei Wissenschaftler von der IOWA State, wie man so 
einen DAC richtig genau bekommt:
https://www.researchgate.net/publication/261332632
Das sollte sich einfach realisieren lassen, sage ich mal.

von Mark S. (voltwide)


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).

von Peter D. (peda)


Angehängte Dateien:

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.

von Kai D. (robokai)


Lesenswert?

Peter D. schrieb:
> Anbei mal die Prinzipschaltung.
Das ist aber eine völlig andere Topologie als ein R2R und auch viel 
langsamer.

von Jürgen S. (engineer) Benutzerseite


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.