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!
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.
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).
> 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.
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.
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.
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
dann noch die Belastung des Netzwerks gering halten, ggf mit nem OpAmp als Impedanzwandler dahinter arbeiten
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.
> 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".
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?
Jan R. schrieb: > Was ist denn nun mit Leerlaufspannung, Crosstalk etc. an den IO-Pins? Bist du zu faul Datenblätter zu lesen?
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.
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.
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
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.
> 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.
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.
>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...
>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.
>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.
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.
>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...
>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.
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
>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 .
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?
>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
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
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.
@ 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
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
@voreilender Gehorsam
du kapierst das nicht
>sind mit einem "normalen" µC ..
Blödsinn
>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".
@ hcmos (Gast) >keinen Strom fließen läßt. Die 0,1V wären dann also eine Art "DC Ground >Bounce". Kann passieren.
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.
>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
Der "MCP 4726A0T-E/CH" ist dank I2C ziemlich langsam. Gibt es einen ähnlichen Typ der schneller ist (min. 100K Werte/s)?
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.
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.
> Kann passieren.
Aber nur sehr sehr wenig bei 20k Lastwiderstand.
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
>> 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...
>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.
> 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!
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.
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.
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
:-) 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?
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.
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.
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
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
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.
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
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
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.
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
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.")
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.
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?
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?
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 |
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
>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.
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
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
>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
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.
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.
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
> 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.
MaWin schrieb: > Du hast einen Filter, der bei 20kHz die 62.5kHz schon um 96dB gedämpft > hat ? Ja natürlich, das Ohr. Peter
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).
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..
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!
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.
> 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.
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.
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?
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
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.
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.
> Ich glaube, da steckt noch etwas Denkbedarf drin:
Eher eine Brille für dich: Da steht 0.1% und nicht 1%.
Es gibt Leute, die könnte man den ganzen Tag triggern, wobbeln und durch steile Filter jagen..... gez. Buna-Pelzer
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.