Forum: Mikrocontroller und Digitale Elektronik R2R-Genauigkeit in der Praxis


von Jan R. (rellachs) Benutzerseite


Lesenswert?

Hallo,

hab mir letztens mal ein paar Gedanken zum Thema DAC mittels 
R2R-Netzwerk gemacht, und würde behaupten, Theorie bis ins letzte Detail 
verstanden zu haben.

Angenommen, mein Ziel ist, eine möglichst hohe Präzision in die Praxis 
umzusetzen; ich bin bereits an dem Punkt, an dem die Selektion der 
Widerstände abgeschlossen ist, z.B. 10k/20k mit ausreichend kleiner 
Toleranz.

Nun zieht das R2R-Netz am MSB-Pin bei Vcc=5V bis zu 250µA (wurst-käse). 
Man greife sich ein beliebiges µC-Datenblatt, z.B. das hier
http://www.atmel.com/Images/doc2486.pdf#page=257
und findet dann die sogenannte "Pin Driver Strength" auf Seite 257. Pi 
mal Daumen liest man einen Innenwiderstand Ri von 25 Ohm bei 
Zimmertemperatur ab. Das macht dann bis zu 6.25mV weniger, spätestens 
bei 10 oder 12Bit fällt einem das auf die Füße. Also klemmen wir zu 
jedem 10k noch 4Meg parallel, ergibt ~9975 Ohm; zusammen mit Ri wieder 
10k. Prima.

Bleibt die alles entscheidende Frage: wie präzise ist die 
Ausgangsspannung an den unterschiedlichen IO-Pins eigentlich? Das 
Datenblatt schweigt hierzu.

Welche Erfahrungswerte gibts dazu? Welche DAC-Genauigkeiten sind mit 
einem "normalen" µC und R2R möglich?

Danke im Voraus!

von Wolfgang (Gast)


Lesenswert?

Jan R. schrieb:
> ich bin bereits an dem Punkt, an dem die Selektion der
> Widerstände abgeschlossen ist, z.B. 10k/20k mit ausreichend kleiner
> Toleranz.

Besser wird es noch, wenn man nicht zwei verschiedene Werte verwendet, 
sondern nur einen Wert aus einer Charge und den zweiten Wert daraus 
durch eine Parallel- oder Serienschaltung zusammensetzt.

von Artjomka (Gast)


Lesenswert?

Da die Spannung nur durchgeschaltet wird, wird an jeden µC Pin schon die 
gleiche Spannung ankommen - also die IO-Spannung. Nur mit jeweils leicht 
unterschiedlichen Innenwiderstand würde ich sagen.

Der Trick ist wohl die Belastung gering zu halten (hochohmig werden)...

Für die Auflösung ist es nicht entscheidend welche Spannung am Pin raus 
kommt. Für die Genauigkeit ist die IO-Spannung natürlich ungünstig (da 
man ja keinen hoch präzisen Regler für die µC-Versorgung nimmt und es 
viele Lastsprünge gibt).

von MaWin (Gast)


Lesenswert?

> Welche DAC-Genauigkeiten sind mit einem "normalen" µC und R2R möglich?

6 bit.

Für 7 bit wären normale 1% Widerstände sowieso zu ungenau.

Mit 0.1% Widerständen kommt man auf nicht ganz 10 bit.

25 Ohm an 10k sind 0.25%.

Die TOLERANZ dieser 25 Ohm liegt bei 50%.

Man kann also auch mit Ausgleichen nicht ganz diese 0.1%
erreichen, nicht ganz die 10 bit erreichen, bei 9 bit ist
im Endeffekt Schluss.

Mit 100k Widerständen kommt man höher, allerdings wird
der Input Bias Leckstrom des verstärkenden OpAmps beliebig
hohen Widerstandswerten einen Strich durch die Rechnung
machen.

Über 1MOhm halte ich für unrealistisch, da leitet ja
schon die Platine mehr Leckstrom ab.

von chick (Gast)


Lesenswert?

Präzision verlangt eine Referenzspannung. Alles andere ist Murks.

von Bernd N. (Gast)


Lesenswert?

Und es gibt "Laser trimmed" R2R Netzwerke welche du nicht aus einzelnen 
Widerständen zusammenbauen mußt. Diese sind allerdings recht teuer und 
werden heutzutage kaum mehr genutzt.

von Willi (Gast)


Lesenswert?

Jan R. schrieb:
> hab mir letztens mal ein paar Gedanken zum Thema DAC mittels
> R2R-Netzwerk gemacht

Wenn Du keine schnelle Änderungen ausgeben mußt, solltest Du Dir auch 
einmal Gedanken über DA-Wandlung per PWM machen. Da sind dann 12 Bit 
Auflösung und Genauigkeit kein Problem.

von Peter D. (peda)


Lesenswert?

Diskret aufgebaute R2R über 6 Bit dürften schon seit Jahren keinen 
praktischen Einsatz mehr finden. Nur Bastler probieren noch R2R aus.
Ein 8Bit-DAC ist einfach zu billig, als sich mit R2R abzuquälen.

Oftmals muß ein DAC auch nicht schnell sein und dann ist eine PWM die 
billigste Lösung.

DACs für höhere Genauigkeit arbeiten intern nicht mit R2R, sondern mit 
geschalteten Kondensatoren. Man muß dann nur die beiden Kondensatoren 
auf Gleichheit trimmen.
Das kann man auch diskret aufbauen (2 Kondensatoren + 74HC4066) und 
erreicht dann deutlich bessere Werte als mit R2R.


Peter

von Weingut P. (weinbauer)


Lesenswert?

dann noch die Belastung des Netzwerks gering halten, ggf mit nem OpAmp 
als Impedanzwandler dahinter arbeiten

von Jan R. (rellachs) Benutzerseite


Lesenswert?

Jan R. schrieb:
> z.B. 10k/20k mit ausreichend kleiner Toleranz.
> Nun zieht das R2R-Netz am MSB-Pin bei Vcc=5V bis zu 250µA (wurst-käse).
Peinlich. Ich meinte 5k/10k wobei die 5k aus 10k||10k bestehen; 20k ist 
nur der Gesamtwiderstand.  -.-

Wolfgang schrieb:
> Besser wird es noch, wenn man nicht zwei verschiedene Werte verwendet,
> sondern nur einen Wert aus einer Charge und den zweiten Wert daraus
> durch eine Parallel- oder Serienschaltung zusammensetzt.
Ja, das habe ich schon beachtet.

Artjomka schrieb:
> Der Trick ist wohl die Belastung gering zu halten (hochohmig werden)...
Das hängt wieder mit dem Innenwiderstand der Quelle zusammen und wird 
schon bestmöglich durch die parallelen 4Meg in der Beispielrechnung 
kompensiert. Oder hab ich das falsch verstanden?

Artjomka schrieb:
> Für die Auflösung ist es nicht entscheidend welche Spannung am Pin raus
> kommt. Für die Genauigkeit ist die IO-Spannung natürlich ungünstig (da
> man ja keinen hoch präzisen Regler für die µC-Versorgung nimmt und es
> viele Lastsprünge gibt).
Auflösung ungleich Genauigkeit. Reden wir mal Tacheles: es geht um die 
Genauigkeit, und zwar die "integrale Nichtlinearität" - also DAC-Treppe 
minus ideale Gerade. Diese sollte <1LSB sein. Der Absolutwert der 
Versorgungsspannung skaliert das ganze nur, ist also nicht relevant.

MaWin schrieb:
> 6 bit.
> Für 7 bit wären normale 1% Widerstände sowieso zu ungenau.
> Mit 0.1% Widerständen kommt man auf nicht ganz 10 bit.
Das mag für industrielle Fertigung zutreffen, ist aber aus Sicht eines 
Bastlers Unfug. Die nominale Widerstandstoleranz entspricht einem großen 
Konfidenzintervall zzgl. Fehler des Mittelwertes. Mit ein bisschen 
Messen und Sortieren kann man ohne viel Ausschuss mit 5%-Widerständen 
einer Charge ein 8Bit-R2R aufbauen, mit INL < 1LSB.

MaWin schrieb:
> 25 Ohm an 10k sind 0.25%.
> Die TOLERANZ dieser 25 Ohm liegt bei 50%.
Woher kommen die 50%? An der Kurve in o.g. Datenblatt lese ich im 
Temperaturbereich -40...+85°C Werte zwischen 21 und 29 Ohm ab, das sind 
eher 15% als 50%.

Bernd N. schrieb:
> Und es gibt "Laser trimmed" R2R Netzwerke welche du nicht aus einzelnen
> Widerständen zusammenbauen mußt.
Kaufen kann man fast alles, das nötige Kleingeld vorausgesetzt.

Willi schrieb:
> Wenn Du keine schnelle Änderungen ausgeben mußt, solltest Du Dir auch
> einmal Gedanken über DA-Wandlung per PWM machen. Da sind dann 12 Bit
> Auflösung und Genauigkeit kein Problem.
Gutes Argument, ist mir durchaus bewusst. Ich möchte aber wissen, wie 
weit man R2R prügeln kann.

Es bleibt die Frage nach der Toleranz der Leerlaufspannung (low und 
high), wenn man mehrere IO-Pins vergleicht.

von digitaler fritz (Gast)


Lesenswert?

in der Praxis  ... nicht empfehlenswert

von MaWin (Gast)


Lesenswert?

> Das mag für industrielle Fertigung zutreffen, ist aber aus Sicht eines
> Bastlers Unfug. Die nominale Widerstandstoleranz entspricht einem großen
> Konfidenzintervall zzgl. Fehler des Mittelwertes. Mit ein bisschen
> Messen und Sortieren kann man ohne viel Ausschuss mit 5%-Widerständen
> einer Charge ein 8Bit-R2R aufbauen, mit INL < 1LSB.

Unfug.
Ein 5% Widerstand bleibt nicht 0.5% genau, dazu sind ganze andere 
Materialen nötig. Ebenso ein 1% nicht 0.1%. Du erzählst Hobbybastlers 
Ammenmärchen.

> Woher kommen die 50%? An der Kurve in o.g. Datenblatt lese ich im
> Temperaturbereich -40...+85°C Werte zwischen 21 und 29 Ohm ab, das sind
> eher 15% als 50%.

Allgemeine Toleranz Halbleiterfertigung. Die Kurve ist "typisch".

von Jan R. (rellachs) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> DACs für höhere Genauigkeit arbeiten intern nicht mit R2R, sondern mit
> geschalteten Kondensatoren. Man muß dann nur die beiden Kondensatoren
> auf Gleichheit trimmen.
> Das kann man auch diskret aufbauen (2 Kondensatoren + 74HC4066) und
> erreicht dann deutlich bessere Werte als mit R2R.
Wie funktioniert das genau bzw. was ist der Unterschied zu PWM? Welche 
Geschwindigkeit ist damit möglich?

MaWin schrieb:
> Unfug.
> Ein 5% Widerstand bleibt nicht 0.5% genau, dazu sind ganze andere
> Materialen nötig. Ebenso ein 1% nicht 0.1%. Du erzählst Hobbybastlers
> Ammenmärchen.
OK, bei Kohleschichtwiderständen wäre ich auch vorsichtig. Aber was 
außer der Temperatur sollte denn die einzelnen Widerstände so 
unterschiedlich beeinflussen, dass sie ihre Werte spontan ändern? Wenn 
die Schaltung überall ungefähr gleichwarm im Bereich der Zimmertemp. 
bleibt, seh ich da keine Probleme, weil nur das Verhältnis der 
Widerstände zueinander interessiert und nicht ihre Absolutwerte.

Was ist denn nun mit Leerlaufspannung, Crosstalk etc. an den IO-Pins?

von Heinz (Gast)


Lesenswert?

Jan R. schrieb:
> Was ist denn nun mit Leerlaufspannung, Crosstalk etc. an den IO-Pins?

Bist du zu faul Datenblätter zu lesen?

von Jan R. (rellachs) Benutzerseite


Lesenswert?

Heinz schrieb:
> Jan R. schrieb:
>> Was ist denn nun mit Leerlaufspannung, Crosstalk etc. an den IO-Pins?
>
> Bist du zu faul Datenblätter zu lesen?

Ich habe bereits im ersten Beitrag geschrieben, dass man im Datenblatt 
dazu nichts findet. Man findet o.g. Diagramm zur "Pin Driver Strength" 
und Grenzwerte für Low- und High-Pegel, aber eben keine detailierten 
Eigenschaften wie die Toleranz der IO-Pin-Leerlaufspannungen zueinander 
oder ein eventuelles Übersprechen, wenn andere Pins geschaltet werden. 
Deswegen frage ich nach Erfahrungswerten / Insiderwissen.

von Falk B. (falk)


Lesenswert?


von chick (Gast)


Lesenswert?

Du scheinst was zu verwechseln. IO-Pins werden üblicherweise dazu 
benutzt ein digitales Signal auszugeben. Warum sollte da jemand all das 
spezifizieren, was Du gerne hättest? Die Specs reichen für die digitalen 
Signale allemal aus.

> die Toleranz der IO-Pin-Leerlaufspannungen

Ist bei digitale Signale doch sinnlos. Innerhalb der Specs bleiben die 
Spannungen und damit gut.

Willst Du vernünftig eine Schaltung aufbauen, so brauchst Du einen ganz 
anderen Ansatz. Schau Dir mal die Innenschaltung eines DAC08 an, so 
macht man das.

von Peter D. (peda)


Lesenswert?

Jan R. schrieb:
> Wie funktioniert das genau bzw. was ist der Unterschied zu PWM? Welche
> Geschwindigkeit ist damit möglich?

http://lib.tkk.fi/Books/2001/isbn9512263378/papers/1207.pdf

Figure 1: Basic schematic of the two-capacitor DAC

Dahinter kommt noch ne S&H-Stufe, um die Spannung zwischen 2 Wandlungen 
stabil zu halten.


Peter

von Jan R. (rellachs) Benutzerseite


Lesenswert?

chick schrieb:
>> die Toleranz der IO-Pin-Leerlaufspannungen
>
> Ist bei digitale Signale doch sinnlos. Innerhalb der Specs bleiben die
> Spannungen und damit gut.

Stimmt schon. Wahrscheinlich muss ich das bie Gelegenheit mal 
nachmessen, um einen ungefähren Wert zu ermitteln.

von MCUA (Gast)


Lesenswert?

> Was ist denn nun mit Leerlaufspannung, Crosstalk etc. an den IO-Pins?
Du bist im falschen Film.

>Die Specs reichen für die digitalen Signale allemal aus.
Ja. Und für die, welche DACs (mit fast jeder beliebiger Auflösung) dran 
haben, auch.

Kein Mensch macht heute nen DAC (der auch in einigen uCs, oder nat. 
CODECs integriert ist) mit diskret aufgebauten Bauteilen.

von W.S. (Gast)


Lesenswert?

MCUA schrieb:
> Kein Mensch macht heute nen DAC..

Was bist du doch für ein schlauer Mensch...

Aber mal im Ernst:
Diskrete DAC's aus ein paar Pins mit R2R-Netzwerk gibt es nach wie vor, 
aber das Einsatzgebiet ist etwas anders als hier angedacht: 
hauptsächlich dort, wo man auf billige Weise 5..6 Bit mit Taktfrequenzen 
um und bei 5..20 MHz umsetzen will, einen 'richtigen' Strom-DAC nicht 
bezahlen will und wenig Wert auf die Absolutwerte legt, z.B. weil man 
eigentlich ne Frequenz ausgeben will und hinter dem DAC noch ein Filter 
liegt.

Bei DAC-IC's muß man die Daten meist seriell hineinlöffeln. Wenn dazu 
die Zeit ausreicht, dann isses OK.

Was die üblichen AVR-Bastler hier eher haben wollen, geht meist per PWM 
viel besser, weil selbst bei 12 Bit oder gar noch mehr die Monotonie 
gewahrt bleibt.

Natürlich ist sowas relativ langsam, man muß ja einen saftigen Tiefpaß 
gegen das Ripple vorsehen - und wenn man es genau haben will, dann 
braucht man eben einen genauen Regler für die Versorgung des uC. Dafür 
ist das PWM-Prinzip geradezu genial bauteilesparsam.

W.S.

von hcmos (Gast)


Lesenswert?

>Bleibt die alles entscheidende Frage: wie präzise ist die
>Ausgangsspannung an den unterschiedlichen IO-Pins eigentlich? Das
>Datenblatt schweigt hierzu.

Sogar bei 74HCMOS kommst du nicht bis ganz an die Rails. Laut 
Datenblätter (garantiert) nur bis 0,1V. Bezogen auf 5V Vcc sind das 
schon 2%. Engselektierte 100k/200k-Widerstände helfen dir da auch nicht 
weiter...

von Purzel H. (hacky)


Lesenswert?

>Kein Mensch macht heute nen DAC (der auch in einigen uCs, oder nat.
CODECs integriert ist) mit diskret aufgebauten Bauteilen.

Doch sicher. Ein Stellglied gebildet aus einem 16Bit PWM ist eine tolle 
Sache. Und wenn dann noch satt Power dahinter ist ist sowas hoechst 
braucbar und auch guenstig.

von Purzel H. (hacky)


Lesenswert?

>Sogar bei 74HCMOS kommst du nicht bis ganz an die Rails. Laut
Datenblätter (garantiert) nur bis 0,1V. Bezogen auf 5V Vcc sind das
schon 2%. Engselektierte 100k/200k-Widerstände helfen dir da auch nicht
weiter...

Meist braucht man nur die Aufloesung aber nicht unbedingt die 
Genauigkeit. Solange der Ausgang monoton ist, passt das schon.

von Horst (Gast)


Lesenswert?

Wenn es genau werden soll, dann sind sämtliche Widerstände des R2R 
Netzwerkes durch 10-Gang Trimmer(Bourns etc.) zu ersetzen und bitweise 
abzugleichen. Nur so kann man auf die Toleranzen des jeweiligen µC 
Einfluss nehmen.

von hcmos (Gast)


Lesenswert?

>Meist braucht man nur die Aufloesung aber nicht unbedingt die
>Genauigkeit. Solange der Ausgang monoton ist, passt das schon.

Jan geht es aber hier gerade um die Genauigkeit...

von hcmos (Gast)


Lesenswert?

>Wenn es genau werden soll, dann sind sämtliche Widerstände des R2R
>Netzwerkes durch 10-Gang Trimmer(Bourns etc.) zu ersetzen und bitweise
>abzugleichen. Nur so kann man auf die Toleranzen des jeweiligen µC
>Einfluss nehmen.

Na dann mal los...

Ein selbstgebauter R2R-DAC macht nur Sinn, wenn überhaupt, wenn es nicht 
auf Genaugkeit ankommt. Früher (vor ein paar Jahrzehnen) konnte man 
damit noch Geld sparen oder ein Baueilebeschaffungsproblem "lösen". 
Heute sind DACs so billig, daß es wirklich keinen echten Grund mehr für 
den Selbstbau gibt.

von Axel S. (a-za-z0-9)


Lesenswert?

Moin,

erstmal: Meine Güte was hier wieder für KlugscheiXXer mitschreiben.

Z.B. sind aktuelle µC HCMOS, weswegen ihre Ausgänge auch 
HCMOS-Characteristik haben (na, wer hätte das wohl gedacht). Eine 
Referenzspannung hat man auch: es ist die Logik-Versorgungsspannung.

Selbstverständlich sind 2R2 DAC auch heute noch sinnvoll. Eine 
klassische Anwendung wäre ein simpel-DDS a'la Jesper. Oder 
DTMF-Erzeugung. Oder Audio-Playback auf niedrigem Niveau (Puppen, 
Modellfahrzeuge, Türklingeln)

Aber mehr als 8 Bit holt man nicht sinnvoll raus (mit selektierten 1% 
Metallschicht-Widerständen). Für höhere Auflösung bräuchte man genauere 
und vor allem auch temperaturstabilere Widerstände, da kann man auch 
gleich einen DAC-Chip kaufen. Außerdem gibts dann noch das Problem, daß 
man ein 8-Bit Port praktisch immer atomar beschreiben kann, mit mehr 
Bits wirds Brühe (und ein externes Latch treibt Aufwand und Kosten 
hoch). Schließlich kann man mit einem DAC prima Pins sparen, z.B. mit 
SPI.

Für langsame Signale ist PWM das Mittel der Wahl. Insbesondere wenn der 
µC eine Hardware-PWM hat.


XL

von MCUA (Gast)


Lesenswert?

>Diskrete DAC's aus ein paar Pins mit R2R-Netzwerk gibt es nach wie vor,
Diskrete DAC's ja, DAC's diskret aufgebaut nein.

>Doch sicher. Ein Stellglied gebildet aus einem 16Bit PWM
..gilt aber (obwohl es analoges rausschmeisst) nicht als DAC .

von voreilender Gehorsam (Gast)


Lesenswert?

Bleibt die alles entscheidende Frage: wie präzise ist die
Ausgangsspannung an den unterschiedlichen IO-Pins eigentlich? Das
Datenblatt schweigt hierzu.

Welche Erfahrungswerte gibts dazu? Welche DAC-Genauigkeiten sind mit
einem "normalen" µC und R2R möglich?

Axel Schwenke und MCUA, lest ihr auch das Eingangsposting?

von hcmos (Gast)


Lesenswert?

>Bleibt die alles entscheidende Frage: wie präzise ist die
>Ausgangsspannung an den unterschiedlichen IO-Pins eigentlich? Das
>Datenblatt schweigt hierzu.

Ich habe doch schon geschrieben, daß die Ausgänge HCMOS sind und, 
vergleichsweise wie 74HCMOS, wohl nicht bis ganz an die Rails 
herankommen dürften, nicht einmal dann, wenn die Ströme sehr klein sind.

Schau doch selbst, beispielsweise auf Seite 6 von

http://www.ece.vt.edu/cel/datasheets/74HC04.pdf

von sum (Gast)


Lesenswert?

Vorschlag:

5 Bit R2R-Dac + 8Bit PWM (6. Widerstand vom R2R dac) und du hast 13 Bit. 
die 5Bit vom R2R lassen sich wohl noch bearbeiten und mit etwas 
ADC-Rückkopplung könnte man auch die PWM Werte so berechnen und 
sortieren, dass hinerher eine brauchbare INL rauskommt.
Da nur 8 Bit PWM kann man es auch flott machen und braucht keinen so 
langsamen Filter.

Schöne Grüße,
 Clemens

von Willi (Gast)


Lesenswert?

sum schrieb:
> 5 Bit R2R-Dac + 8Bit PWM (6. Widerstand vom R2R dac) und du hast 13 Bit.
> .....

Falsche Annahme, flasche Rechnung, falsches Ergebnis!

Besser so: 5 Äpfel + 8 Birnen = 13 Stück.

von Falk B. (falk)


Lesenswert?

@  hcmos (Gast)

>Ich habe doch schon geschrieben, daß die Ausgänge HCMOS sind und,
>vergleichsweise wie 74HCMOS, wohl nicht bis ganz an die Rails
>herankommen dürften, nicht einmal dann, wenn die Ströme sehr klein sind.

Wie kommst du darauf? CMOS ist rein ohmsch in Kanal im ungesättigten 
Bereich, nix Schwellspannung, Offset etc. Damit passt die normale 
Rechnung des Spannungsteilers.

>Schau doch selbst, beispielsweise auf Seite 6 von

>http://www.ece.vt.edu/cel/datasheets/74HC04.pdf

;-)
Nicht alles was rund ist, ist auch ein Rad. Die Zahlen sind garantierte 
Minima, typisch kommt man logischerweise problemlos an die Rails ran, 
1mV wenn es sein muss. Die Minima sind eher politsch/logistischer Natur. 
Man kann, will und muss nicht so extreme Werte messen oder garantieren, 
weil es zuviel kostet und für die Funktion als Digital-IC irrelevant 
ist. Darum sind in vielen Datenblättern die GARANTIERTEN Minima und 
MAXIMA bisweilen meilenweit von typischen Werten weg.

Dashalb kann man mit einem einfachen CMOS-Gatter, gespeist von einer 
präzisen Referenz, einen schon recht guten DAC bauen, vor allem bei 
PWM.

Geschätzt würde ich von einer Toleranz von vielleicht 2:1 des typischen 
Kanalwiderstands ausgegen.

MFG
Falk

von Axel S. (a-za-z0-9)


Lesenswert?

voreilender Gehorsam schrieb:

> Bleibt die alles entscheidende Frage: wie präzise ist die
> Ausgangsspannung an den unterschiedlichen IO-Pins eigentlich?

Vollkommen irrelevant, solange man in den Grenzen des sinnvollen (8-9 
Bit, wie bereits mehrfach gesagt) bleibt.

> Das Datenblatt schweigt hierzu.

(H)CMOS-Ausgänge bestehen im wesentlichen aus einem n- und p-MOSFET. Ein 
durchgeschalteter FET verhält sich bei kleinen Strömen näherungsweise 
wie ein Widerstand. Diesen Widerstand kann man aus den Angaben im 
Datenblatt abschätzen (Sättigungsspannung vs. Ausgangsstrom). Typische 
Werte von einigen 10R sind gegen die typische 10k Last des R2R-Netzwerks 
zu vernachlässigen. Temperaturgang und Exemplarstreuung erst recht.

> Welche Erfahrungswerte gibts dazu? Welche DAC-Genauigkeiten sind mit
> einem "normalen" µC und R2R möglich?

Liest du die Antworten?


XL

von MCUA (Gast)


Lesenswert?

@voreilender Gehorsam
du kapierst das nicht

>sind mit einem "normalen" µC ..
Blödsinn

von hcmos (Gast)


Lesenswert?

>Nicht alles was rund ist, ist auch ein Rad. Die Zahlen sind garantierte
>Minima, typisch kommt man logischerweise problemlos an die Rails ran,
>1mV wenn es sein muss. Die Minima sind eher politsch/logistischer Natur.
>Man kann, will und muss nicht so extreme Werte messen oder garantieren,
>weil es zuviel kostet und für die Funktion als Digital-IC irrelevant
>ist. Darum sind in vielen Datenblättern die GARANTIERTEN Minima und
>MAXIMA bisweilen meilenweit von typischen Werten weg.

Ja, das ist ein guter Einwand. Ich vermute aber etwas anderes: Die 
Sourcen der MOSFETS am Ausgang teilen sich unter Umständen gemeinsame 
Wege zu den Railanschlüssen auf dem Chip. Was, wenn einige Gatter gerade 
maximale Ströme fließen lassen? Dann wird doch der Sourceanschluß des 
MOSFETs, der gerade untersucht wird, durch die entsprechenden 
Spannungsabfälle der anderen hochgezogen, selbst dann, wenn dieser gar 
keinen Strom fließen läßt. Die 0,1V wären dann also eine Art "DC Ground 
Bounce".

von Falk B. (falk)


Lesenswert?

@  hcmos (Gast)

>keinen Strom fließen läßt. Die 0,1V wären dann also eine Art "DC Ground
>Bounce".

Kann passieren.

von bitte löschen (Gast)


Lesenswert?

MCUA schrieb:
> Kein Mensch macht heute nen DAC (der auch in einigen uCs, oder nat.
> CODECs integriert ist) mit diskret aufgebauten Bauteilen.

Interessant, dass Elektronik-Anfänger, die gelesenes gerne mal 
ausprobieren, für Dich nicht menschlich sind.
OK, Deiner Meinung nach bin ich also kein Mensch.
Frage: Was bin ich Deiner Meinung nach dann?

Alternativ scheinst Du einfach zu dumm zu sein, zu begreifen, welchen 
Schaden die Unsitte, Andersartigen oder Andersdenkenden (auch im Scherz) 
den Status der Menschlichkeit abzuerkennen in den letzten paar Tausend 
Jahren angerichtet hat.

von hcmos (Gast)


Lesenswert?

>Interessant, dass Elektronik-Anfänger, die gelesenes gerne mal
>ausprobieren, für Dich nicht menschlich sind.

Entspanne dich Philipp. Was wir sagen wollen, ist einfach nur, daß es 
schon fertige 12bit-DACs im SOT23-6 Gehäuse gibt und das für nicht 
einmal 90 Cents:

http://www.reichelt.de/ICs-M-MN-/MCP-4726A0T-E-CH/index.html?;ACTION=3;LA=2;ARTICLE=109763;GROUPID=2914;artnr=MCP+4726A0T-E%2FCH;SID=12T1y5n38AAAIAAHAJ-3s42653fe6a70a92cf7c01c21d8a60aaff#av_tabdata

von Heinz (Gast)


Lesenswert?

Der "MCP 4726A0T-E/CH" ist dank I2C ziemlich langsam. Gibt es einen 
ähnlichen Typ der schneller ist (min. 100K Werte/s)?

von Jan R. (rellachs) Benutzerseite


Lesenswert?

Oioioi, hier gehts ja ganz schön zur Sache, wenn man mal eine etwas 
ungewöhnliche Frage stellt. Auf jeden Fall schon mal danke für alle 
konstruktiven und kritischen Beiträge - auch wenn der eine oder andere 
noch an seinem Umgang mit Mitmenschen feilen muss.

Ich für meinen Teil hab wieder was gelernt, und werde demnächst einfach 
mal an einem Atmega ein paar Spannungen und Schaltvorgänge durchmessen. 
Bis dahin können wir das Thema erstmal ruhen lassen.

von bitte löschen (Gast)


Angehängte Dateien:

Lesenswert?

Zum Thema:
Ich habe vor längerem mal ein 8 Bit R2R Steckboard-Modul aus 0805er 
Widerständen 11K und 22K von sample-kits.de (YAGEO 1%) gebaut, wobei ich 
auf Selektion und Reihenschaltung verzichtet habe, und es gerade mal aus 
einem ATmega8 mit einer sich wiederholenden Schleife von 0..255 
gefüttert und 2 Fotos von der Ausgabe gemacht. Einmal mit der X- und 
Y-Ablenkung so eingestellt, dass die Linie von links unten nach rechts 
oben geht, und einmal mit der "X-MAGN."-Taste für eine 5 mal höhere 
X-Auflösung und mit höherer Y-Auflösung und Verschiebung dergestalt, 
dass die Ausgabe im sichtbaren Bereich liegt.

Unabhängig von der absoluten Genauigkeit stelle ich eine recht gerade 
Linie fest, die auch bei kritischen Übergängen (z.B. von 127 nach 128 in 
der Bildmitte) keine großen Sprünge macht. In der Abbildung mit dem 
Ausschnitt sieht man Abweichungen von maximal 1 LSB.
Damit ist dieser DAC schlechter als die vom TE geforderten 0,5 LSB.

Zum Nebenthema:
hcmos schrieb:
> Entspanne dich Philipp. Was wir sagen wollen, ist einfach nur, daß es
> schon fertige 12bit-DACs im SOT23-6 Gehäuse gibt und das für nicht
> einmal 90 Cents:
>
> 
http://www.reichelt.de/ICs-M-MN-/MCP-4726A0T-E-CH/index.html?;ACTION=3;LA=2;ARTICLE=109763;GROUPID=2914;artnr=MCP+4726A0T-E%2FCH;SID=12T1y5n38AAAIAAHAJ-3s42653fe6a70a92cf7c01c21d8a60aaff#av_tabdata

Ich denke, es ist hinreichend bekannt, dass es DACs für wenig Geld zu 
kaufen gibt. Die Frage des TE lautete nicht nach einer Empfehlung für 
DAC-ICs sondern nach Erfahrungen bezüglich der Genauigkeit von diskret 
aufgebauten R2R-DACs.

88 Cent ist natürlich traumhaft billig, wenn man die Genauigkeit in 
Betracht zieht. Wenn man die Widerstände für 10 Cent bei Reichelt kauft, 
ist man mit 15 Widerständen tatsächlich deutlich teurer, was den 
diskreten R2R-DAC auch bei nur 8 Bit Auflösung ad absurdum führt, aber 
die meisten Hobbyisten dürften sich günstigere Sortimente (s.o.) gekauft 
haben und  mit etwa 1 Cent/Widerstand rechnen. Und 15 Cent sind fast 6 
mal billiger als 88 Cent besonders wenn man nur 8 Bit braucht und einem 
1 LSB Genauigkeit reicht.

von MaWin (Gast)


Lesenswert?

> Kann passieren.

Aber nur sehr sehr wenig bei 20k Lastwiderstand.

von Arc N. (arc)


Lesenswert?

Peter Dannegger schrieb:
> DACs für höhere Genauigkeit arbeiten intern nicht mit R2R, sondern mit
> geschalteten Kondensatoren. Man muß dann nur die beiden Kondensatoren
> auf Gleichheit trimmen.
> Das kann man auch diskret aufbauen (2 Kondensatoren + 74HC4066) und
> erreicht dann deutlich bessere Werte als mit R2R.

Relativ neu (afair 2010) und R2R
20-Bit, INL  1ppm, AD5791
http://www.analog.com/static/imported-files/data_sheets/AD5791.pdf
20-Bit halbdiskret mit LTC1599
http://cds.linear.com/docs/Application%20Note/an86f.pdf
http://cds.linear.com/docs/Datasheet/1599fs.pdf

>
> Peter

von hcmos (Gast)


Lesenswert?

>> Kann passieren.
>
>Aber nur sehr sehr wenig bei 20k Lastwiderstand.

Ja klar, aber hier sollen die Gatter ja auf einem µC-Die sitzen. Und wer 
weiß, was da noch für andere Ströme fließen...

von hcmos (Gast)


Lesenswert?

>Unabhängig von der absoluten Genauigkeit stelle ich eine recht gerade
>Linie fest, die auch bei kritischen Übergängen (z.B. von 127 nach 128 in
>der Bildmitte) keine großen Sprünge macht. In der Abbildung mit dem
>Ausschnitt sieht man Abweichungen von maximal 1 LSB.

Danke für die aufschlußreiche Messung!

Ein anderes Problem bei DACs ist oft die Monotonie. Und deine Messung 
zeigt sehr eindrucksvoll, daß die Monotonie an einigen Stellen hier 
verletzt ist.

von MCUA (Gast)


Lesenswert?

> Kein Mensch macht heute nen DAC...
OK. Meinte "Kein Mensch (der (für) eine GeräteSerie entwickelt) macht 
heute nen DAC...."

>Frage: Was bin ich Deiner Meinung nach dann?
Ein Mensch, der "Gelesenes" nicht schreiben kann.
(und der zu d?mm ist, zu merken, dass man "Erfahrungen" von irgent ner 
Hobbyschaltung nicht einfach 1:1 auf die Serie reproduzieren kann 
(achso, du willst ja nur spielen))


>88 Cent ist natürlich traumhaft billig...
und fast umsonst im uC

>ist man mit 15 Widerständen tatsächlich deutlich teurer...
15 Widerstände??? Je Widerstand (wann man für eine GeräteSerie 
entwickelt) muss man u.a. mit ca 5-10ct f. Bestückung rechnen, 
Platinenplatz kommt auch noch dazu!

von bitte löschen (Gast)


Lesenswert?

MCUA schrieb:
> GeräteSerie

MCUA schrieb:
> Serie

MCUA schrieb:
> GeräteSerie

OK, ich wusste nicht, dass es in diesem Thread um die Entwicklung von 
Geräteserien ging. Vielen Dank für den freundlichen Hinweis.
Da das in diesem Thread auch nicht erwähnt wurde, Du aber voraussetzt, 
dass ich das weiß, muss ich davon ausgehen, dass es bei 
mikrocontroller.net ausschließlich um die Serienfertigung von Geräten 
geht.
Da ich außerdem nur ein kleiner "dummer" Hobbyist bin, habe ich dann 
wohl hier nichts zu suchen.

Da Du anscheinend hier mehr Überblick hast als ich, kannst Du mir 
bestimmt auch ein Forum nennen, das auch für meinesgleichen geeignet 
ist.

von Heinz (Gast)


Lesenswert?

Philipp Klostermann schrieb:
> Da ich außerdem nur ein kleiner "dummer" Hobbyist bin, habe ich dann
> wohl hier nichts zu suchen.

Doch, doch, du bist hier zu Hause.

von Harald W. (wilhelms)


Lesenswert?

Jan R. schrieb:
> Oioioi, hier gehts ja ganz schön zur Sache, wenn man mal eine etwas
> ungewöhnliche Frage stellt. Auf jeden Fall schon mal danke für alle
> konstruktiven und kritischen Beiträge - auch wenn der eine oder andere
> noch an seinem Umgang mit Mitmenschen feilen muss.
>
> Ich für meinen Teil hab wieder was gelernt, und werde demnächst einfach
> mal an einem Atmega ein paar Spannungen und Schaltvorgänge durchmessen.
> Bis dahin können wir das Thema erstmal ruhen lassen.

Nun, im Endeffekt ging es darum, das man solch einen R2R-Wandler
aus Einzelwiderständen zwar bauen kann, um zu Ausbildungszwecken
seine Funktion zu verstehen; in eine Anwendungsschaltung sollte man
ihn aber nicht einbauen, auch wenn es sich nur um eine Hobbyschaltung
handelt.
Gruss
Harald

von bitte löschen (Gast)


Lesenswert?

:-) Danke, das ist nett. Ich hätte mich auch nicht wirklich verjagen 
lassen, vor allen Dingen nicht von so einem Angeber. :-D Mein Posting 
war ein wenig ironisch gemeint.

Noch eine Frage zum Thema:
Ich bin neugierig geworden und würde es gerne mal mit der 
Reihenschaltung für 2R probieren.
Da das Layout von meinem Steckboardmodul das nicht vorsieht, und ich 
(erst mal) nicht extra eine weitere Platine ätzen möchte, bin ich etwas 
freier in der Bauteilauswahl.

Ich habe hier noch 100 Stück hiervon
http://www.reichelt.de/?ACTION=3&ARTICLE=11458 (METALL 100K)
herumliegen. Die sind mit 1% angegeben.

Alternativ hätte ich die bereits erwähnten
http://www.sample-kits.de/onlineshop/smdwiderstaende/0805sortiment/0805smdwiderstandsortiment100.php 
(YAEGO 0805)
zur Verfügung. Die sind auch mit 1% angegeben.

Was denkt ihr, welche genauer sind?

von Heinz (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> ... in eine Anwendungsschaltung sollte man ihn aber nicht einbauen, auch
> wenn es sich nur um eine Hobbyschaltung handelt.

Das unterschreibe ich nicht.

von bitte löschen (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> in eine Anwendungsschaltung sollte man
> ihn aber nicht einbauen, auch wenn es sich nur um eine Hobbyschaltung
> handelt.

Als Anfänger kann ich das nicht beurteilen. Doch mir fehlt da eine 
Begründung.

von Axel S. (a-za-z0-9)


Lesenswert?

Philipp Klostermann schrieb:

> Ich bin neugierig geworden und würde es gerne mal mit der
> Reihenschaltung für 2R probieren.
> Da das Layout von meinem Steckboardmodul das nicht vorsieht, und ich
> (erst mal) nicht extra eine weitere Platine ätzen möchte, bin ich etwas
> freier in der Bauteilauswahl.
>
> Ich habe hier noch 100 Stück hiervon
> http://www.reichelt.de/?ACTION=3&ARTICLE=11458 (METALL 100K)
> herumliegen. Die sind mit 1% angegeben.
>
> Alternativ hätte ich die bereits erwähnten
> 
http://www.sample-kits.de/onlineshop/smdwiderstaende/0805sortiment/0805smdwiderstandsortiment100.php
> (YAEGO 0805)
> zur Verfügung. Die sind auch mit 1% angegeben.
>
> Was denkt ihr, welche genauer sind?

Wenn das Gurte sind, dann sind die aus einer Charge und die Toleranz 
untereinander dürfte eher besser sein als die angegebenen 1%. 
Einzelwiderstände mit "passenden" Werten sind fast sicher deutlich 
schlechter, als wenn du einen Wert mit Reihenschaltung oder 
Parallelschaltung verwendest. Bei 100K Widerlingen würde ich sagen 
R=100K||100K und 2R=100K.

Wenn du ausmessen willst: die Reihenwiderstände an den höherwertigen 
Bits sind am kritischsten.


XL

von Harald W. (wilhelms)


Lesenswert?

Philipp Klostermann schrieb:
> Harald Wilhelms schrieb:
>> in eine Anwendungsschaltung sollte man
>> ihn aber nicht einbauen, auch wenn es sich nur um eine Hobbyschaltung
>> handelt.
>
> Als Anfänger kann ich das nicht beurteilen. Doch mir fehlt da eine
> Begründung.

Die Begründung steht mehrfach im Thread: Sie ist ungenau und teuer.
Gruss
Harald

von Heinz (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Die Begründung steht mehrfach im Thread: Sie ist ungenau und teuer.

Wenn es mehrfach im Thread steht, dann muss es einfach stimmen. Sehr 
gutes Argument, Harald.

von Axel S. (a-za-z0-9)


Lesenswert?

Harald Wilhelms schrieb:
> Philipp Klostermann schrieb:
>> Harald Wilhelms schrieb:

>>> in eine Anwendungsschaltung sollte man
>>> ihn aber nicht einbauen, auch wenn es sich nur um eine Hobbyschaltung
>>> handelt.
>>
>> ... mir fehlt da eine Begründung.
>
> Die Begründung steht mehrfach im Thread: Sie ist ungenau und teuer.

Komisch. Welchen Thread hast du gelesen?

Ich lese in diesem Thread das Gegenteil, zumindest solange man nicht 
mehr als 8 Bit braucht. 23 gleiche Widerstände kosten weniger [1] als 
selbst der billigste DAC und verbrauchen kaum mehr Platinenfläche. 
Bestückungskosten zählen bei "Hobbyschaltung" ja nicht.


[1] SMD 0805 kosten bei Reichelt €2.60/100St. Macht 60ct. Und da ist 
Reichelt schon eine Apotheke. Restposten oder wenig gebrauchte Werte aus 
einem Sortiment lassen sich genauso verwenden und sind viel billiger.


XL

von Harald W. (wilhelms)


Lesenswert?

Heinz schrieb:
> Harald Wilhelms schrieb:
>> Die Begründung steht mehrfach im Thread: Sie ist ungenau und teuer.
>
> Wenn es mehrfach im Thread steht, dann muss es einfach stimmen. Sehr
> gutes Argument, Harald.

Wenn mehrere Leute zu der gleichen Erkenntnis kommen, ist das
zumindest ein gutes Indiz. Zumal die möglichen Probleme auch
erklärt wurden.
Gruss
Harald

von bitte löschen (Gast)


Lesenswert?

Durch das Wiederholen von bereits genannten Argumenten widerlegt man 
aber nicht die Gegenargumente, die zu diesen Argumenten genannt wurden.

Hans: Ich kaufe Äpfel lieber beim Lidl, da sind sie billiger als beim 
REWE.
Karl: Kaufe sie doch beim Aldi, da sind sie noch billiger.
Hans: Nee, ich kaufe sie lieber beim Lidl, da sind sie billiger als beim 
REWE.

von Harald W. (wilhelms)


Lesenswert?

Philipp Klostermann schrieb:
> Durch das Wiederholen von bereits genannten Argumenten widerlegt man
> aber nicht die Gegenargumente, die zu diesen Argumenten genannt wurden.
>
> Hans: Ich kaufe Äpfel lieber beim Lidl, da sind sie billiger als beim
> REWE.
> Karl: Kaufe sie doch beim Aldi, da sind sie noch billiger.
> Hans: Nee, ich kaufe sie lieber beim Lidl, da sind sie billiger als beim
> REWE.

Der Thread wird immer unübersichtlicher. Willst Du jetzt
einen R2R-Wandler bauen oder der Jan? Oder seid Ihr beide
nur eine Person?
Gruss
Harald

von bitte löschen (Gast)


Lesenswert?

Ich will akut keinen bauen, aber ich finde das Thema auch interessant, 
so dass ich diesen Thread als Anlass nehme, mal wieder damit zu spielen 
und demnächst doch wieder einen zu bauen. Wenn der Thread 
unübersichtlich wird, beschwere Dich bei denen, die das durch unlogische 
Argumentation verursachen, und nicht bei dem, der auf diesen Umstand 
aufmerksam macht.
Das Schlechtreden in diesem Thread ist unnötig, nicht die Reaktion 
darauf!

Nachtrag: Hast DU eigentlich schon etwas zum Thema beigetragen, außer 
Argumente zu wiederholen, deren Replik noch offen ist? ("Sie ist ungenau 
und teuer.")

von W.S. (Gast)


Lesenswert?

Axel Schwenke schrieb:
> SMD 0805 kosten bei Reichelt €2.60/100St. M

Ach laß doch diese Preisrechnereien. Die Jungs hier wollen sich bloß ein 
bissel herumstreiten.

Für den Hobbybastler ist es viel wichtiger, ob er irgendein tolles IC 
überhaupt zu kaufen bekommt und für den Gewerblichen kosten 1000 
Widerstände in 0603 netto 1.30 Euro (siehe Schukat), wenn man ne Rolle 
zu 5000 abnimmt. Im Klartext: Widerstände kosten eigentlich nur noch die 
Zehntelsekunde für den Bestückautomaten.

Viel wichtiger ist der Umstand, daß man dann, wenn man sich auf 8 Bit 
oder weniger beschränkt, mit einem Wutsch den Wert ändern kann, also 
einfach den Port des uC mit nem anderen Byte beschreiben und ferticht.. 
Bei all den tollen I2C- und SPI-DAC's geht das alles viel gemächlicher. 
So kommt es auf den konkreten Anwendungsfall an, was man am besten 
nimmt.

W.S.

von Heinz (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Wenn mehrere Leute zu der gleichen Erkenntnis kommen, ist das
> zumindest ein gutes Indiz. Zumal die möglichen Probleme auch
> erklärt wurden.

Deshalb stimmt! Nur wofür?

von Heinz (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Wenn mehrere Leute zu der gleichen Erkenntnis kommen, ist das
> zumindest ein gutes Indiz. Zumal die möglichen Probleme auch
> erklärt wurden.

Das stimmt! Nur wofür?

von bitte löschen (Gast)



Lesenswert?

Vorweg:
Meine Messung vom letzten mal war Bollocks. Wenn man mal die Stufen 
zählt, kommt man nicht auf 256. Da war wohl ein Wackler in Bit 0. 
Außerdem war wahrscheinlich GND nicht richtig angeschlossen, was ein 
Grund für die etwas sehr unregelmäßigen Stufen sein könnte.

Die Ausschnitte der beigefügten Bilder sind mit der X5-Taste gemacht. 
Dort gelten dann 100 respektive 10 µs/cm.

Ich habe jetzt mal Widerstände selektiert. Ich habe hier ein Pollin-Reel 
mit 8K2 Widerständen, und da habe ich einfach mal 132 raus purzeln 
lassen und nach dem Sortiert, was mein UT70A von Pollin (ein billiges 
Multimeter) anzeigt. Es ergab sich folgende Werteverteilung:

8K16  3 ###
8K17  0
8K18  1 #
8K19  2 ##
8K20 44 ############################################
8K21 32 ################################
8K22 30 ##############################
8K23 16 ################
8K24  4 ####

Von den 44 8K20 habe ich dann die 25 herausgesucht, bei denen die 
Anzeige am schnellsten den Wert erreichte. (Bei den anderen dauerte es 
länger als 1 s, bis die Anzeige von 8,21 auf 8,20 wechselte.)
Ein paar Messungen haben ergeben, dass die METALL 100K von Reichelt 
etwas weiter gestreut waren. Danke trotzdem für den Tip von Axel!
Ich habe die dann auf einer Punktrasterplatine zusammengebraten und die 
Messung von vorgestern wiederholt.

Hier der Code:
1
.include "m8def.inc"
2
.equ F_CPU = 8000000 ; Systemtakt in Hz
3
.cseg
4
  rjmp RESET ; Reset Handler
5
  Blahblahinterrupttabelle
6
        ...
7
#define USE_DELAY_US
8
.include "delay.inc.asm"
9
10
RESET:
11
  Blahblahstackpointer
12
  ...
13
14
  ldi   r16, 0b11111111
15
  out   DDRD, r16
16
  out   DDRC, r16
17
Schleife:
18
  inc r16
19
  brne NoTrigger
20
  sbi PORTC,0 ; Oszi triggern
21
NoTrigger:
22
  out PORTD,r16
23
  ;push r16
24
  ;ldi r16, 10
25
  ;rcall Delay_us
26
  ;pop r16
27
  cbi PORTC,0
28
  rjmp  Schleife

Ich habe mit 2 Geschwindigkeiten gemessen, nämlich mit und ohne 
Delay_us.
Was ich interessant finde sind die im Ausschnitt erkennbaren Nadeln bei 
einigen Schaltvorgängen. So ganz 100% gleichzeitig scheinen die Ausgänge 
nicht geschaltet zu werden. Oder die 100 nF hinter den 10µH zum AVCC 
sind zu wenig. So weit bin ich noch nicht, das korrekt einschätzen zu 
können.

Ich bin erst mal recht zufrieden. Ich würde es glatt mal mit 9 oder 10 
Bits probieren. Und die Nadeln bekommt man vielleicht mit ein paar pF an 
der richtigen Stelle weggebügelt. Hat da jemand Vorschläge?

Der ultimative Geschwindigkeitstest steht auch noch aus. Mein Vorschlag 
wäre das:
1
.equ F_CPU = 8000000 ; Systemtakt in Hz
2
...
3
Schleife:
4
  sbi PORTC,0  ; Oszi triggern
5
  ldi r16,0
6
  cbi PORTC,0
7
  out PORTD,r16
8
  inc r16
9
  out PORTD,r16
10
  inc r16
11
  ...
12
  (insgesamt 256 mal!)
13
  ...
14
  inc r16
15
  out PORTD,r16
16
  rjmp Schleife

von Axel S. (a-za-z0-9)


Lesenswert?

Philipp Klostermann schrieb:

> mit 8K2 Widerständen, und da habe ich einfach mal 132 raus purzeln
> lassen und nach dem Sortiert, was mein UT70A von Pollin (ein billiges
> Multimeter) anzeigt. Es ergab sich folgende Werteverteilung:
>
> 8K16  3 ###
> 8K17  0
> 8K18  1 #
> 8K19  2 ##
> 8K20 44 ############################################
> 8K21 32 ################################
> 8K22 30 ##############################
> 8K23 16 ################
> 8K24  4 ####

nicht übel. Zumal man für die Parallel- oder Reihenschaltung (je 
nachdem) ja auch Werte abseits des Zentrums verwenden kann.

> Was ich interessant finde sind die im Ausschnitt erkennbaren Nadeln bei
> einigen Schaltvorgängen. So ganz 100% gleichzeitig scheinen die Ausgänge
> nicht geschaltet zu werden.

Das zum einen. Und dann hast du ja auch parasitäre Kapazitäten, die 
effektiv parallel zu den Widerständen liegen.

Früher(tm) als wir R2R-DACs reihenweise für den Anschluß an den 
PC-Parallelport gebaut haben (sogar in Stereo) damit die Nerds sich 
AXEL_F.MOD in bester Qualität reinziehen konnten; da haben wir ein Latch 
zwischengeschaltet gegen die Nadeln.

> Ich bin erst mal recht zufrieden. Ich würde es glatt mal mit 9 oder 10
> Bits probieren. Und die Nadeln bekommt man vielleicht mit ein paar pF an
> der richtigen Stelle weggebügelt. Hat da jemand Vorschläge?

An den Ausgang des Netzwerks gehört ein kleiner C gegen GND. Wenn man da 
Signale ausgeben will, auch als Rekonstruktionstiefpaß bekannt. Auch 
wenn das R2R-Netzwerk auf Belastung recht gutmütig reagiert (durch den 
konstanten Innenwiderstand ergibt sich lediglich eine Pegelabsenkung) 
ist es empfehlenswert, da einen OPV zur Entkopplung nachzuschalten. 
Optional dann auch gleich einen Tiefpaß höherer Ordnung.

> Der ultimative Geschwindigkeitstest steht auch noch aus.

Praxisnah wäre eine DDS-Anwendung. Z.B. a'la Jesper:

http://www.myplace.nu/avr/minidds/index.htm


XL

von hcmos (Gast)


Lesenswert?

>Meine Messung vom letzten mal war Bollocks. Wenn man mal die Stufen
>zählt, kommt man nicht auf 256.

Bist du sicher?

>Außerdem war wahrscheinlich GND nicht richtig angeschlossen, was ein
>Grund für die etwas sehr unregelmäßigen Stufen sein könnte.

Hhm, eigentlich ein typisches Bild, wenn die Widerstände realistische 
Toleranzen haben.

Eine einfache Simulation zeigt, daß bei einem 8bit-2R2-Wandler bereits 
zwei Widerstände ausreichen können, die um gerade etwas mehr als 0,5% 
vom Soll abweichen, um einen Monotoniefehler zu erzeugen.

Wenn es wirklich genau sein soll (Temperaturgang, Langzeitdrift, etc.), 
würde ich daher 100k/200k-Widerstände in 0,1% Ausführung wählen. Und 
wenn DC-Ground Bounce ein Thema ist, könnte man einen externen Treiber 
verwenden, wie den 74HC4094 oder 74HC574.

Dem 2R2-Wandler sollte man als Puffer einen FET- oder CMOS-OPamp 
nachschalten. Hier könnte man auch auf einfache Weise ein 
Rekonstruktionsfilter integrieren.

von bitte löschen (Gast)


Lesenswert?

Axel Schwenke schrieb:
> .. damit die Nerds sich
> AXEL_F.MOD in bester Qualität reinziehen konnten; da haben wir ein Latch
> zwischengeschaltet gegen die Nadeln.
:-D
Ich habe erst später .MOD-Files gehört, als es schon den Soundblaster 
gab. (sbtrak.exe oder so.)

Axel Schwenke schrieb:
> An den Ausgang des Netzwerks gehört ein kleiner C gegen GND. Wenn man da
> Signale ausgeben will, auch als Rekonstruktionstiefpaß bekannt.

Dann aber nach dem Impedanzwandler, ich habe das gerade ausprobiert, und 
10 pF am Ausgang erzeugen breitere und höhere Nadeln. (Siehe Bilder)
Ich denke mal, das ist dann sozusagen nur eine weitere parasitäre 
Kapazität.

hcmos schrieb:
>>Meine Messung vom letzten mal war Bollocks. Wenn man mal die Stufen
>>zählt, kommt man nicht auf 256.
>
> Bist du sicher?
Zähl' mal nach. Ich habe im ersten Viertel 32 Stufen gezählt. Das macht 
128 über die Breite, also exakt die Hälfte von 256. Anders als durch ein 
fehlendes LSB kann ich mir das jedenfalls nicht erklären.

hcmos schrieb:
> Wenn es wirklich genau sein soll (Temperaturgang, Langzeitdrift, etc.),
> würde ich daher 100k/200k-Widerstände in 0,1% Ausführung wählen. Und
> wenn DC-Ground Bounce ein Thema ist, könnte man einen externen Treiber
> verwenden, wie den 74HC4094 oder 74HC574.

Der 74HC4094 ist ein Schieberegister. Damit wäre der 
Geschwindigkeitsvorteil gegenüber integrierten Komplettlösungen mit 
einem seriellen Protokoll futsch. Ich habe noch jede Menge 74HC244 hier, 
das dürfte auch gehen.
Widerstände in 0,1% habe ich nicht hier. Das würde mir auch nichts 
bringen, da ich keine ausreichend hoch auflösende Messelektronik zur 
Verfügung habe, diese zu selektieren. Mit meiner Methode erreiche ich 
zumindest theoretisch fast die 0,1%: 0,01/8,2 = 0,0012..
In der Praxis werde ich natürlich nicht die Genauigkeit von 
0,1%-Widerständen erreichen, da 0,1% ja die maximale Toleranz ist.
Trotzdem werde ich den Aufwand nicht betrieben. Ich schaue wie weit ich 
mit gegebenen Mitteln komme, und werde mir dafür Zeit lassen müssen, 
denn ich habe noch eine kleine Tochter und eine komplette 
Energiesanierung am Hals.

hcmos schrieb:
> Dem 2R2-Wandler sollte man als Puffer einen FET- oder CMOS-OPamp
> nachschalten. Hier könnte man auch auf einfache Weise ein
> Rekonstruktionsfilter integrieren.

Ich werde mal einen LF353 dahinter schalten. Heute aber nicht mehr. :-D

von Axel S. (a-za-z0-9)


Lesenswert?

Philipp Klostermann schrieb:

> Axel Schwenke schrieb:
>> An den Ausgang des Netzwerks gehört ein kleiner C gegen GND. Wenn man da
>> Signale ausgeben will, auch als Rekonstruktionstiefpaß bekannt.
>
> Dann aber nach dem Impedanzwandler, ich habe das gerade ausprobiert, und
> 10 pF am Ausgang erzeugen breitere und höhere Nadeln. (Siehe Bilder)

Dann mißt du Ground Bounce. Klemm mal die Oszi-Masse direkt an das kalte 
Ende des Kondensators. 8.2K und 10pf ergeben ca. 2MHz Bandbreite. Da 
sollten keine Nadeln mehr zu sehen sein.

> hcmos schrieb:
>> Wenn es wirklich genau sein soll (Temperaturgang, Langzeitdrift, etc.),
>> würde ich daher 100k/200k-Widerstände in 0,1% Ausführung wählen.

> Widerstände in 0,1% habe ich nicht hier. Das würde mir auch nichts
> bringen, da ich keine ausreichend hoch auflösende Messelektronik zur
> Verfügung habe, diese zu selektieren.

Ich denke mal die Idee war, ohne extra Selektierung auszukommen. Aber 
mit 0.1% Widerständen ist man auch kostenmäßig auf der schlechteren 
Seite. Da kann man dann auch einen parallelen DAC kaufen für das Geld.


XL

von hcmos (Gast)


Lesenswert?

>Zähl' mal nach. Ich habe im ersten Viertel 32 Stufen gezählt. Das macht
>128 über die Breite, also exakt die Hälfte von 256. Anders als durch ein
>fehlendes LSB kann ich mir das jedenfalls nicht erklären.

An vielen Stellen verschmelzen zwei benachbarte Stufen optisch zu einer, 
eben wegen der Toleranzen.

>Ich denke mal die Idee war, ohne extra Selektierung auszukommen.

Genau. Ich hatte solche hier gemeint:

http://www.reichelt.de/Metall-0-1-100-k-Ohm-1-00-M-Ohm/MPR-100K/index.html?;ACTION=3;LA=2;ARTICLE=12774;GROUPID=3105;artnr=MPR+100K;SID=13T2DXbX8AAAIAADZigbY955319fce94a54119718dbfc2d38bfa7

von W.S. (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Ich denke mal die Idee war, ohne extra Selektierung auszukommen.

Bitte nachdenken!

So richtig genau muß nur die allererste Stufe sein, die nächste kann 
schon doppelt so ungenau sein und so weiter. Für die allerletzte Stufe 
kann man fast alles nehmen, ein Fehler von 50% macht da nur ein halbes 
Bit aus.

Also: Feld-Wald-Wiese nehmen und sich nur um den Übergang 127-->128 
kümmern. Das sollte ausreichen.

W.S.

von bitte löschen (Gast)


Lesenswert?

hcmos schrieb:
> An vielen Stellen verschmelzen zwei benachbarte Stufen optisch zu einer,
> eben wegen der Toleranzen.

Möglich, dass Du Recht hast. Ich werde das Bild nochmal im Original 
überprüfen (ist gerade auf der SD-Karte in der Kamera) und das alte 
R2R-Modul nochmal korrekt anschließen, wenn ich etwas Ruhe finde.

W.S. schrieb:
> Also: Feld-Wald-Wiese nehmen und sich nur um den Übergang 127-->128
> kümmern. Das sollte ausreichen.

Wie soll dieses "Kümmern" aussehen? Und außerdem müsse man sich noch 
halb so gut um die Übergänge 63->64 und 193->192 kümmern und noch mal 
etwas weniger um die Übergänge 31->32, 95->96, 159->160 und 223->224, 
usw..
Eine wirksame Strategie vorausgesetzt landet man dann da, wo man 
gelandet wäre, wenn man sich die Bauteile direkt selektiert hätte. 
Übrigens würde ich gerne auf Trimmpotis verzichten.

Zum Stand meiner Bemühungen:
Ich hatte heute wenig Zeit, aber ein paar Minuten habe ich mir gegönnt, 
die 20cm-Käbelchen zum Modul durch 6cm zu ersetzen deutlich kleinere 
Nadeln vorzufinden, und die Ausgabe wie beschrieben noch zu 
beschleunigen. D.h. 16MHz-Quarz genommen und den betreffenden Code durch 
die Ausgabe folgenden perl-Scripts ersetzt:
1
#!/bin/perl
2
for ($i=1; $i<256; $i++)
3
{
4
        print "\tinc r16 ; $i\n\tout PORTD,r16\n"
5
}
Das resultierende Sägezahn-Signal hatte eine Frequenz von 10KHz mit 
deutlich sichtbaren Nadeln an den oben genannten Übergängen.
Bilder folgen.

Meine Konsequenz für die nächste Stufe wird sein, doch eine Platine 
dafür zu fertigen, da möglichst kurze Pfade zu nehmen und den GND-Layer 
unter diesen nicht unterbrechen. Ich werde mal 12 Bits vorsehen. Wie 
viele man davon nutzen kann, gilt es herauszufinden. Die Platine bekommt 
dann einen eigenen TQFP-Mega88 (wegen der 20 MHz) mit Keramik an allen 
Versorgungspins spendiert, so dass sich relevante Strecken auf wenige mm 
kürzen lassen.
Vorher sollte ich natürlich noch auf Steckboard oder Lochraster-Platine 
die Sinnhaftigkeit eines Treiber-Bausteins ausprobieren. Eigentlich 
sollte der AVR genügend schnell liefern. Ich denke, ich hatte einfach 
nur zu viel Induktivität durch frei schwebende lange Leitungen.

Außerdem muss ich eine Beschaltung des folgenden Impedanz-Wandlers 
konzipieren. Im Datenblatt des LF353 habe ich nichts darüber gefunden, 
wie weit die Ausgangsspannung an Vcc bzw. GND rankommt. Muss ich den mit 
mehr Spannung als den AVR versorgen, damit der 5V resp. 0V ausgeben 
kann, wenn nahe 0xff bzw. nahe 0 konvertiert wird?
Gleich verhält es sich mit dem Eingangsspannungsbereich. Der ist unter 
Maximum Ratings mit 0 - min(Vcc,15) angegeben, aber funktioniert er nahe 
Vcc noch korrekt? Nichtlinearitäten wären kontraproduktiv, wenn man um 
LSBs kämpft. :-D
Nicht, dass ich das nicht durch probieren herausfinden könnte, aber wenn 
jemand diesbezüglich eine Info aus dem Ärmel schütteln kann, würde das 
die Sache beschleunigen..

Was das Messen beim Selektieren angeht, habe ich schon eine Idee, wie 
ich mit einem OP die Messgenauigkeit meines Multimeters überlisten 
kann...
Ich schließe hiermit, ich muss pieseln und ins Bett.

von Peter D. (peda)


Lesenswert?

Wenns einfach und billig sein soll, nehme ich einen PWM-Ausgang des MC.

Z.B. der ATtiny261 kann eine 10Bit-PWM mit 64MHz PLL-Takt laufen lassen. 
Das ergibt dann 62,5kHz Wandlungsrate, also bequem für Audioausgabe 
geeignet.


Peter

von MaWin (Gast)


Lesenswert?

> Z.B. der ATtiny261 kann eine 10Bit-PWM mit 64MHz PLL-Takt laufen lassen.
> Das ergibt dann 62,5kHz Wandlungsrate, also bequem für Audioausgabe
> geeignet.

Du hast einen Filter, der bei 20kHz die 62.5kHz schon um 96dB gedämpft 
hat ?

Ich glaube eher, du spinnst dir aus Unkenntnis was zusammen.

von Peter D. (peda)


Lesenswert?

MaWin schrieb:
> Du hast einen Filter, der bei 20kHz die 62.5kHz schon um 96dB gedämpft
> hat ?

Ja natürlich, das Ohr.


Peter

von Willi (Gast)


Lesenswert?

Peter Dannegger schrieb:
> eine 10Bit-PWM , also bequem für Audioausgabe
> geeignet.

Testweise kannst Du Dir einen aktiven Ultraschallreiniger zur Nachtruhe 
neben das Bett stellen. Wenn Du morgens völlig entspannt aufwachst, dann 
reichen 10 Bit.

Einen richtigen Sinn ergeben 10Bit erst bei Stereo, da kommt man dann 
auf 20 Bit (2*10).

von Simon K. (simon) Benutzerseite


Lesenswert?

Willi schrieb:
> Einen richtigen Sinn ergeben 10Bit erst bei Stereo, da kommt man dann
> auf 20 Bit (2*10).

Ja genau und bei einem 5.1 System hat man sogar 50.10 Bit, obwohl man 
nur zwei Ohren hat.

Räusper..

von Willi (Gast)


Lesenswert?

Simon K. schrieb:
> Ja genau und bei einem 5.1 System hat man sogar 50.10 Bit

Nimmt man den Punkt als Komma, kommt man auf 51 Bit. Wenn nicht, dann 
sind es sogar 60 Bit :-)
Wahnsinn!

von bitte löschen (Gast)


Lesenswert?

Also ich trinke, wenn überhaupt mal Alkohol, eher Kölsch. 60 Bit wären 
für mich tödlich.

Hmm, irgendwie gleitet das hier ab. Ich erinnere daran, dass die Frage 
dieses Threads wie folgt lautet:

Jan R. schrieb:
> Welche DAC-Genauigkeiten sind mit
> einem "normalen" µC und R2R möglich?

Und nicht:
"Welche Alternativen gibt es bei der Massenfertigung von Audio-Geräten 
zum R2R-DAC?"

- Obwohl ich mittlerweile glaube, nachdem ich einige Threads hier 
beobachtet habe, dass den Betreffenden durchaus klar ist, dass ihre 
Beiträge am Thema vorbei sind, und sie einfach nur Anfänger-Threads wie 
diesen kaputt machen wollen.

Die Frage "Ich würde gerne im Urlaub nach Südtirol fahren und mir bei 
der Fahrt Zeit lassen, weiß jemand in welchem Zustand die alte 
Brennerstraße ist?" würde in diesem Forum von einem Profi mit "Fahr doch 
nach Rügen, da ist es schöner!" beantwortet werden. - Nicht etwa, weil 
der wirklich Rügen schöner findet oder die alte Brennnerstraße nicht 
mag, sondern einfach nur, um den Fragenden zu ärgern.

von MaWin (Gast)


Lesenswert?

> Ja natürlich, das Ohr.

Dazu müsste man das Signal erst mal für einen Lautsprecher verstärken.

Blöderweise sind Verstärker langsam und übertragen das 62kHz Rechteck 
nicht nanosekundegenau damit der Lautsprecher oder eben das Ohr als 
Filter arbeiten könnte, und so gut wie kein Verstärker ist symmetrisch 
was steigende Flanken gegenüber fallenden Flanken angeht, er bildet also 
nicht den sinnvollen Mittelwert, sondern verfälscht das Signal um mehr 
als 1 bit.

Auf die Weise kann PWM nicht mit einem echten 16 bit Wandler mithalten.

Es hat schon seinen Grund, warum man entweder 2.54GHz braucht oder noise 
shaping damit 1 bit D/A-Wandler einsetzbar sind.

von Willi (Gast)


Lesenswert?

Philipp Klostermann schrieb:
> dass den Betreffenden durchaus klar ist, dass ihre
> Beiträge am Thema vorbei sind, und sie einfach nur Anfänger-Threads wie
> diesen kaputt machen wollen.

Es ist doch schon alles gesagt!
Und es sollte längst klar sein, dass "eine möglichst hohe Präzision in 
die Praxis umzusetzen" mit diesem Verfahren einfach Unfug ist.
Ich bastel mir teilweise auch R2R-DACs zusammen, um von LCDs die 
Beleuchtung zu regeln; aber bei spätestens 4-6 Bit ist ein sinnvolles 
Ende erreicht.

von bitte löschen (Gast)


Lesenswert?

Und es geht weiter... :-D
Die Frage lautete nicht:
"Wie sinnvoll ist die Verwendung von R2R-DACs?"
Auf Berge zu klettern ist auch Unfug. - Trotzdem machen das Leute. Warum 
wohl?

von Peter D. (peda)


Lesenswert?

MaWin schrieb:
> Es hat schon seinen Grund, warum man entweder 2.54GHz braucht oder noise
> shaping damit 1 bit D/A-Wandler einsetzbar sind.

Was soll denn das?
Schreibe ich etwa Chinesisch oder was?

Hat irgend jemand behauptet, eine 10Bit-PWM wäre das absolute 
HiFi-Wunder?
Ich jedenfalls nicht!

Low-cost Audioausgabe z.b. für Textansagen oder Klingeltöne ist damit 
aber prima möglich.


MaWin schrieb:
> Du hast einen Filter, der bei 20kHz die 62.5kHz schon um 96dB gedämpft
> hat ?

10 Bit sind max 60dB, wozu braucht man denn da einen 96dB Filter?
Es reicht ein einfacher Filter völlig aus, damit der Verstärker nicht 
übersteuert.

Bitte nicht immer gleich irgendwas reininterpretieren, was nirgends 
dasteht.


Peter

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

W.S. schrieb:
> Axel Schwenke schrieb:
>> Ich denke mal die Idee war, ohne extra Selektierung auszukommen.
>
> Bitte nachdenken!
>
> So richtig genau muß nur die allererste Stufe sein, die nächste kann
> schon doppelt so ungenau sein und so weiter. Für die allerletzte Stufe
> kann man fast alles nehmen, ein Fehler von 50% macht da nur ein halbes
> Bit aus.
>
> Also: Feld-Wald-Wiese nehmen und sich nur um den Übergang 127-->128
> kümmern. Das sollte ausreichen.
>

Das ist falsch. Wenn es so wäre, bräuchte man keine DACs mehr. Also 
nochmals nachdenken.

Man muß hier verschiedene Metriken einführen:
- relative Genauigkeit
- Linearität/Monotonie

Das ist ja gerade der Vorteil der 1-Bit Technik.

von Bosi (Gast)


Lesenswert?

MaWin schrieb:
> Mit 0.1% Widerständen kommt man auf nicht ganz 10 bit.

Ich glaube, da steckt noch etwas Denkbedarf drin:

Für eine 10 bit Stufung benötigt man wegen der Rundungsproblematk 10.5 
it aus Ausgang und die Summation der Widerstandfehler ist im Extremfall 
gemäss Taylor zu bestimmen, läuft also auf Faktor 2 hinaus.

Für ein R2R mit 1%-Rs kämen also bis zu 2% zusammen für den Lage und 
Dynamikfehler. Ohne eine Kalibrierung sind das Faktor 50 und damit 5.5 
Bit.

Mit Offsetkalibrierung halbiert sich der Fehler und man bekommt 6.5 Bit.

Das Limit, das mit Kalibrierung zu erzielen ist, ist das letzte Bit, das 
man ja schalten kann oder nicht und dessen Beitrag 1/n ist. Der 
verbleibende Fehler entspicht dem aufummierten Widerstand - im 
Extremfall eben die 6.5 Bit von oben.

Genauer wird es nur, wenn man das R2R kalibiert, überabtastet und 
filtert. Dann kann man die Nichlinearität des "Wandlers" in die PCM 
einfliessen lassen und für geringe Frequenzen genauer werden.

von MaWin (Gast)


Lesenswert?

> Ich glaube, da steckt noch etwas Denkbedarf drin:

Eher eine Brille für dich: Da steht 0.1% und nicht 1%.

von Buna-Pelzer (Gast)


Lesenswert?

Es gibt Leute, die könnte man den ganzen Tag triggern, wobbeln und durch
steile Filter jagen.....

gez. Buna-Pelzer

von J. S. (engineer) Benutzerseite


Lesenswert?

Axel Schwenke schrieb:
> Aber mehr als 8 Bit holt man nicht sinnvoll raus (mit selektierten 1%
> Metallschicht-Widerständen).
Man könnte das Signal je nach Bedarf noch Vorverzerren, um es nach dem 
R2R zu linearisieren.

Umgekehrt kann man mit einem R-basierten Filter auch eine Nichtlineare 
Kennlinie einbauen, was mit einem DAC nicht so einfach geht.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Jürgen S. schrieb:
> Umgekehrt kann man mit einem R-basierten Filter auch eine Nichtlineare
> Kennlinie einbauen, was mit einem DAC nicht so einfach geht.

Es gibt aber nicht grade wenige DACs die intern auch nur ne 
Widerstandsleiter odern R2R Netzwerk haben ;)

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.