Forum: Analoge Elektronik und Schaltungstechnik Zwei DACs für größere Auflösung (Rechnung)


von Elch (Gast)


Lesenswert?

Hallo zusammen,

ich bräuchte Eure Hilfe, mir fehlt der Ansatz.

Es geht um folgendes:

Ich habe ein DAC mit 16bit Auflösung. Nun möchte ich eine Spannung 
erzeugen diese aber kleiner als eben 2.5V / 2^16 auflösen.

Hab folgendes vor:

zwei DACs mit zwei Widerstände miteinander verbinden.

DACA –R1 – Spannungsabgriff – R2 – DACB

R1 hat den Wert 100Ohm R2 100kOhm.

Frage:
Wie komm ich jetzt von meiner Wunsch Spannung am Spannungsabgriff auf 
meine jeweilige Spannungen an den DACs.
Hätte jemand einen Lösungsansatz?

(Und ja mir ist das mit Genauigkeit ect. durchaus bewusst, es geht hier 
nur um die Mathematische Umsetzung).

Besten Dank vorab.

von 123 (Gast)


Lesenswert?

Ich würde einen 24 Bit DAC nehmen. Der zweite DAC bringt dir nur 1 Bit 
mehr Auflösung!

Elch schrieb:
> zwei DACs mit zwei Widerstände miteinander verbinden.

Der zweite DAC braucht eine galvanisch getrennten Stromversorgung und 
die Ansteuerung muss dementsprechend auch galvanisch getrennt sein.

Dann addieren sich die Spannungen der beiden DACs einfach.

Wie gesagt, nimm einen 24 Bit DAC. Aber denk daran - schon 16 bit bei 5V 
sind 70µV pro Schritt. Der Output-Ripple eines typischen Spannungsregler 
(auch Linearregler) liegt bei 10mV (!!!). Überleg dir deine 
Spannungsversorgung gut.

von Erich (Gast)


Lesenswert?

Theoretisch kannst du mit 2 Stück 16-Bit-DACs einen 17-Bit-DAC machen, 
indem du gleichgrosse Widerstände verwendest, z.B. je 1000 Ohm .
Ausgabe am 1. DAC z.B. Wert 1234 , am zweiten 1235 , dann ergibt sich 
der Zwischenwert.
Die beiden Widerstände sollten deutlich grösser als der 
Ausgangswiderstand des DAC sein.
Praktisch geht das kaum, da die Widerstände 0,001% Genauigkeit 
bräuchten.

Wirtschaftlich mach es auch keinen Sinn, da es DACs mit höherer 
Auflösung bereits gibt.

(ok, bereite beantwortet, aber meine Antwort ausführlicher).

Gruss

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


Lesenswert?

Elch schrieb:
> Ich habe ein DAC mit 16bit Auflösung. Nun möchte ich eine Spannung
> erzeugen diese aber kleiner als eben 2.5V / 2^16 auflösen.

Das ist keine irgendwie sinnvolle Aufgabenbeschreibung. Denn natürlich 
kann ein 16-Bit DAC zumindest im Prinzip eine Spannung besser als 
2.5V/2^16 auflösen. Wenn man ihn mit 1V Referenzspannung betreibt, z.B. 
1V/2^16. Oder man vermindert das Ausgangssignal eines DAC mit 2.5V 
Referenz mit einem Spannungsteiler auf 1/1000, dann kriegt man 
2.5mV/2^16.

Also nochmal: welchen Spannungsbereich willst du ausgeben können mit 
welcher Auflösung? Bedenke, daß es außer der Quantelung durch den DAC 
auch Fehler wie Offset(drift) und Rauschen gibt.

von Patrick C. (pcrom)


Lesenswert?

Kannst du dein DAC vielleicht als IDAC schalten ? Das koennte dich 
vielleicht andere moeglichkeiten geben...
Vielleicht off-topic weil es fuer PSOC geschrieben ist aber diese 
tutorial  koennte dich mehr ideeen geben :

"This tutorial demonstrates how to increase the standard internal 8-bit 
DAC to as much as 12-bits of resolution."

http://www.cypress.com/video-library/PSoC/how-increase-dac-resolution-psoc-3-and-psoc-5/106711

von Peter D. (peda)


Lesenswert?

Elch schrieb:
> Wie komm ich jetzt von meiner Wunsch Spannung am Spannungsabgriff auf
> meine jeweilige Spannungen an den DACs.

Ganz einfach per Superposition.
Denk Dir hinter jedem DAC einen Spannungsteiler, einmal 100k/100,1k und 
einmal 0,1k/100,1k.
Und dann addiere beide Spannungen.

von Arc N. (arc)


Lesenswert?

Klassiker:
AN86 von Linear "A Standards Lab Grade 20-Bit DAC with 0.1ppm/°C Drift"
Zwei 16-Bit DACs und ein LTC2400, dessen Linearitätsfehler korrigiert 
werden, in einer Regelschleife
http://www.analog.com/media/en/technical-documentation/application-notes/an86f.pdf

von lalala (Gast)


Lesenswert?

Arc N. schrieb:
> AN86 von Linear "A Standards Lab Grade 20-Bit DAC with 0.1ppm/°C Drift"
> Zwei 16-Bit DACs und ein LTC2400, dessen Linearitätsfehler korrigiert
> werden, in einer Regelschleife
> 
http://www.analog.com/media/en/technical-documentation/application-notes/an86f.pdf

Danke. Pures Gold.

von bla (Gast)


Lesenswert?

Elch schrieb:
> Ich habe ein DAC mit 16bit Auflösung. Nun möchte ich eine Spannung
> erzeugen diese aber kleiner als eben 2.5V / 2^16 auflösen.

Brauchst du wirklich alle 2^16+ Schritte, in Abständen von 1/(2^16), die 
du "aus dem Stand" anspringen willst? Bekommst du Feedback und brauchst 
nur eine beliebig hohe Auflösung? Oder brauchst du nur ein paar sehr 
genaue Werte?

Wenn du Feedback hast kannst du die zwei DACs einfach "parallel" 
schalten (entweder mit einem ordentlichen Summierer, oder halt über 1k 
und 100k) und beim niedrigeren DAC nur die obersten n Bits ansteuern. 
Durch trimmen könntest du die Ausgänge so hindrehen, dass der 
Ausgangsbereich des zweiten DAC genau in ein (oder sontiges ganzzahliges 
Vielfaches) LSB passt.

Das funktioniert dann, je nach Schaltung, zumindest bei genau der 
Spannungsversorgung und Raumtemperatur.

Alternativ, wenn du nur bestimmte fein aufgelöste Spannungen ausgeben 
willst, kannst du auch mit einem 24-Bit ADC die kombinierte 
Ausgangsspannung messen und über eine Art skuzessiver Approximation die 
beiden DACs nacheinander einstellen bis du nah genug an deinem 
Wunschwert bist.

Aber auch ich sage dir - 20 Bit bei 2.5V sind 2.4µV LSB. Da nicht im 
Rauschteppich (Spannungsversorgung, Widerstandsrauschen, 
Thermospannungen, Temperaturdrifts) unterzugehen erfordert viel Knowhow 
im Schaltungsdesign. Linear (jetzt Analog) hat da sehr spannende 
Appnotes, z.B. die schon genannte AN86 oder auch AN74, oder 
https://m.eet.com/media/1146038/21715-74453.pdf,

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Die größten Probleme dürften wohl INL und auch DNL der DACs bereiten.
In einer Schleife (wie schon angesprochen) lässt sich das aber machen.
Ansonsten habe ich sehr gute Erfahrungen mit dem AD5791 gemacht.

von Alexxx (Gast)


Lesenswert?

Dir fehlt noch viel praktische Erfahrung in diesem Gebiet, denn nicht 
alles was theoretisch geht, ist in der Praxis machbar.
Du hast noch ganz andere Probleme - außer den schon angesprochenen:
Die Referenz-Spannung!
Die wird nämlich auch nicht so stabil/genau sein, falls du wirklich 
absolute Genauigkeit möchtest. Eine extrem hohe absolute Genauigkeit 
(+Langzeitdrift!) ist nur mit komplexen, unter temperaturgeregelten 
Bedingungen erreichbar, da jede Referenz einen Temperaturkoeffizienten 
hat.

Selbst wenn du nur relative Auflösung bräuchtest:
- Im µV-Bereich hast du es überall auf der Platine mit 
Thermoelementspannungen zu tun - selbst bei einem 
Kupfer-Lötzinn-Kupfer-Übergang kann man mit etlichen µV/°C rechnen.
- Und schau' dir mal das Peak-Peak-Rauschen (0,1...10Hz) von guten OPAs 
an!
  Dieses Rauschen lässt sich prinzipiell nicht wegsieben!
- OPAs haben einen Bias- und Offsetstrom, der sich mit Temperatur und 
Common-Mode-Spannung ändert. Mit einigen nA an 1K bist du wieder bei 
etlichen µV. (CMOS-OPAs haben pA-Eingangsstrom, dafür PP-Rauschen, dass 
dir schlecht wird)

Ich versuche mit einem 18Bit-DAC stabile µV hinzubekommen, trotz 
geheiztem Gehäuse für die ganze Schaltung und mit den besten ferfügbaren 
ICs komme ich kaum unter 10µV Stabilität herunter.

PS:
Auch mit der DAC-Messung hast du die Fehler der Referenz, die 
Thermospannungen und das Peak-Peak-Rauschen (auch der Referenz!).
Mein 6-1/2-stelliges Messgerät zeigt nie Null an und nie den gleichen 
Wert, wenn man die kurzgeschlossenen Kabel ein- und aussteckt oder 
umtauscht!
Audio-DACs gibts mit 24Bit (LOL), dafür aber nur für den 
Audio-Frequenzbereich und kaum absolute Genauigkeit...

Fazit:
=> ~100µV sind mit besten Bauteilen noch einfach machbar
=> ~10µV mit höchstem Aufwand und Wissen
=>  < / = 1µV schaffen nur die Cracks der großen Firmen wie Keithley, 
Agilent & Co.

==> sei zufrieden mit deinen 16Bit! Alles andere ist Selbstver****ung!!!

von bla (Gast)


Lesenswert?

Alexxx schrieb:
> =>  < / = 1µV schaffen nur die Cracks der großen Firmen wie Keithley,
> Agilent & Co.

Jo, aber deren Veröffentlichungen sind echt faszinierend! Was es da 
alles für Tricks gibt...


Alexxx schrieb:
> Du hast noch ganz andere Probleme - außer den schon angesprochenen:
> Die Referenz-Spannung!

Auch ne gute App note: 
http://www.analog.com/media/en/technical-documentation/application-notes/an82f.pdf

Absurd was sich da alles bemerkbar macht. (Mechanische) Spannungen auf 
der Platine oder wortwörtlich der sanfteste Lufthauch über der Platine 
bringen schon Spannungsrauschen oder -sprünge im µV-Bereich.

von Alexxx (Gast)


Lesenswert?

@bla
>> Jo, aber deren Veröffentlichungen sind echt faszinierend! Was es da
alles für Tricks gibt...

Kannst du da Links posten? Würde mich sehr interessieren.

von Voltnut (Gast)


Lesenswert?

Mit einem 6.5 Digit DMM kann man nicht vernünftig hochgenaue Schaltungen 
im µV-Bereich entwickeln, da die DMMs selbst zu wenig Auflösung haben 
bzw zuviel Thermodrift aufweisen.

IBias/IOffset ändert sich mit der Common-Mode-Spannung -> 
Spannungsversorgung der OPs dem Eingangssignal nachführen wie es in den 
alten Datron 1271/1281-DMMs gemacht wurde um die Common-Mode-Spannung 
konstant zu halten (siehe hier: 
http://www.proaudiodesignforum.com/images/pdf/Bootstrapping_Your_Op_Amp_Yields_Wide_Voltage_Swings_King_Watkins_EDN_May_13_1999.pdf 
oder hier: 
http://www.ko4bb.com/manuals/10.0.5.203/Datron%201281%20Service%20Manual%20(1989-01)%20drawings.pdf 
Seite 24)

Wo möglich Auto-Zero-OPs verwenden (wenn man sich des starken 
I-Bias-Rauschen bewusst ist und möglichweise filtern kann, siehe auch 
Art of Electronics Edition 3) um 1/f-Rauschen und Offsetdrift zu 
vermeiden.

Langzeitstabilität gefordert -> LM399 oder LTZ1000 verwenden mit 
passender Buffer-Beschaltung für DACs die kurzzeitig hohe Stromspitzen 
ziehen

Thermodrift -> Das ganze Gerät thermisch mit ner Heizung stabilieren, 
Kupfer-Tellur-Bananenbuchsen verwenden (Pomona 3770) wenn das Signal aus 
dem Gehäuse geführt wird

Wenn man sichs einfach machen will -> AD5791 auf EvalBoard fertig kaufen 
inclusive LTZ1000-Board.

von georg (Gast)


Lesenswert?

Elch schrieb:
> es geht hier
> nur um die Mathematische Umsetzung

Rechnerisch kannst du schon die 1LSB-Stufe eines 16bit DAC mit einem 
zweiten weiter unterteilen - aber wenn du z.B. 20 Bit erreichen willst, 
müsste der "Hi"-DAC selbst schon auf 20 bit genau sein. Das ist er ganz 
sicher nicht, warum sollte man ein so überspezifiziertes Teil 
entwickeln? Wenn man 20 Bit Genauigkeit kann, verkauft man eben einen 20 
Bit DAC.

In der Praxis muss man froh sein, wenn die Ausgangsspnnung monoton 
verläuft, m.a.W. der Abstand von einer Stufe zur nächsten kann zwischen 
0 und 2 LSB schwanken. Das weiter zu unterteilen ist ziemlich sinnlos.

Georg

von Peter D. (peda)


Lesenswert?

georg schrieb:
> Wenn man 20 Bit Genauigkeit kann, verkauft man eben einen 20
> Bit DAC.

Nur sind die erheblich teurer als 2 gute 16Bit-DACs und ein 24Bit-ADC 
nach dem Summationspunkt mit dem man die Kalibrationstabelle im EEPROM 
erstellt.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Alexxx schrieb:
> Du hast noch ganz andere Probleme - außer den schon angesprochenen:
> Die Referenz-Spannung!

Die Referenz ist aber in erster Näherung nur relativ dabei. Wenn die bei 
FS stabil genug ist, dann ist sie das auch nach dem DAC. Der ändert 
daran nichts.


Alexxx schrieb:
> trotz
> geheiztem Gehäuse für die ganze Schaltung und mit den besten ferfügbaren
> ICs komme ich kaum unter 10µV Stabilität herunter.

Das ist aber wirklich machbar.


Voltnut schrieb:
> Mit einem 6.5 Digit DMM kann man nicht vernünftig hochgenaue Schaltungen
> im µV-Bereich entwickeln, da die DMMs selbst zu wenig Auflösung haben
> bzw zuviel Thermodrift aufweisen.

Das sehe ich anders. Natürlich ist ein 8,5 stelliges DMM bei vielen 
Dingen komfortabler, aber das DMM selbst ist oft weniger kritisch als 
die Wahl der Messverbindung usw.

Das wichtigste Handwerkszeug zum Entwickeln solcher Schaltungen sind: 
Bleistift, Papier und Taschenrechner. Viele der Größen, die sich am Ende 
zu echten Problemen summieren sind ohnehin nicht direkt messbar.
Da muss man dann rechnen und sich Methoden überlegen seine Überlegungen 
zu verifizieren. Mit etwas Verstand kommt man dann auch ohne 8,5 
stellige Multimeter aus (oft auch ohne 6,5 Stellen).

Wenn es an Langzeitstabilität geht, dann braucht es hingegen meist schon 
ein 8,5 stelliges Gerät oder aber eine andere Art von stabiler Referenz 
gegen die man messen kann.


Voltnut schrieb:
> Wo möglich Auto-Zero-OPs verwenden

Es gab hier irgendwo im Forum erst kürzlich einen Beitrag bei dem es um 
Präzisionsgeschichten ging. Nach kurzer Rechnung war klar, das hierbei 
als OP ein LM358 völlig ausreichend ist. Fazit: Man muss rechnen. Erst 
dann sieht man wo das Problem liegt und ob es eine Lösung gibt. Einen OP 
der alles sehr gut kann gibt es nicht.


Voltnut schrieb:
> Wenn man sichs einfach machen will -> AD5791 auf EvalBoard fertig kaufen
> inclusive LTZ1000-Board.

Auf das EvalBoard kann man direkt eine LTZ1000 einbauen (oder war das so 
gemeint?).


georg schrieb:
> Rechnerisch kannst du schon die 1LSB-Stufe eines 16bit DAC mit einem
> zweiten weiter unterteilen - aber wenn du z.B. 20 Bit erreichen willst,
> müsste der "Hi"-DAC selbst schon auf 20 bit genau sein.

Das ist auch meine Erfahrung. Sowas funktioniert nur mit einer 
Rückkopplung. Sei es durch etwas in Deiner Applikation oder so wie in 
dem Paper von Jim Williams beschrieben. Je nachdem was Du vor hast ist 
es sinnvoll die DACs mit etwas überlapp auszulegen, damit die Schaltung 
zumindest Abschnittsweise monoton bleibt.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Nur sind die erheblich teurer als 2 gute 16Bit-DACs und ein 24Bit-ADC
> nach dem Summationspunkt mit dem man die Kalibrationstabelle im EEPROM
> erstellt.

Das würde ich bezweifeln. Wenn es so einfach wäre, warum packt z.B. LT 
nicht einfach zwei solcher DACs zusammen mit einem ihrer ADCs und etwas 
Speicher in ein Gehäuse?

von Voltnut (Gast)


Lesenswert?

Die Chiphersteller werden dafür sorgen dass sie ein möglich breites 
Produktportfolio haben und keine Chips herstellen die auf einen Schlag 
durch einen enormen Vorteil und niedrige Preise den Großteil ihrer 
sonstigen ICs obsolet machen bzw. werden sie keine hochspezialisierten 
Chips herstellen wie beim AN86-Beispiel, die sie nur in sehr kleinen 
Stückzahlen los werden. Siehe Maxim: viele spezielle ICs, die nicht 
langfristig verfügbar sind und die deshalb von nur wenigen Entwícklern 
berücksichtigt werden.

Richtig gute Analogentwickler würden einfach für sie passsende ICs 
wählen, diese koppeln und von neueren, besseren, ICs profitieren.

Ich beziehe mich beim AD5791-Board auf die aktuelle Version, wo die 
Referenzen separat als Tochterplatine auf das AD5791-Grundboard 
aufsteckbar sind.

von Peter D. (peda)


Lesenswert?

Philipp C. schrieb:
> Wenn es so einfach wäre, warum packt z.B. LT
> nicht einfach zwei solcher DACs zusammen mit einem ihrer ADCs und etwas
> Speicher in ein Gehäuse?

Vermutlich hat LT keine geeigneten Bauteile.
Ich verwende DACs von TI und nen ADC von AD.
Davor hatte wir einige Zeit den DAC1220 im Einsatz, der sieht aber auch 
nur auf dem Papier gut aus. Die 2*16Bit Lösung ist in allen Parametern 
deutlich besser.
Den AD5791 gab es erst viel später. Ich kann daher nicht mehr eine gut 
funktionierende Lösung durch eine teuere ersetzen.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Voltnut schrieb:
> Die Chiphersteller werden dafür sorgen dass sie ein möglich breites
> Produktportfolio haben und keine Chips herstellen die auf einen Schlag
> durch einen enormen Vorteil und niedrige Preise den Großteil ihrer
> sonstigen ICs obsolet machen bzw. werden sie keine hochspezialisierten
> Chips herstellen wie beim AN86-Beispiel, die sie nur in sehr kleinen
> Stückzahlen los werden. Siehe Maxim: viele spezielle ICs, die nicht
> langfristig verfügbar sind und die deshalb von nur wenigen Entwícklern
> berücksichtigt werden.

Naja, ein AD5791BRUZ kostet einzeln bei Digikey 87€ netto. Das ist ja 
nun nichts für billige Elektronik. Und sie werden sicherlich in diesem 
Segment versuchen das bestmögliche liefern zu können.


Voltnut schrieb:
> Richtig gute Analogentwickler würden einfach für sie passsende ICs
> wählen, diese koppeln und von neueren, besseren, ICs profitieren.

Das Problem einer solchen Kopplung ist, dass man jede Schaltung einzeln 
vermessen muss und der EEPROM Inhalt nur exakt für diese eine Schaltung 
passt. Dafür ist teures Equipment für sehr lange Testzeiten notwendig. 
Der vermeintlich günstige Preis der Komponenten wird dabei von den 
Testkosten aufgefressen. Somit ist das eher etwas für extrem kleine 
Stückzahlen oder Bastler.


Übrigens gibt es sehr wohl solche fertigen Schaltungen von den 
Herstellern. Z.B. den AD1139. Das ist eine Hybdridschaltung. Das Teil 
kostet bei Mouser aktuell 920€ (natürlich auch weil es alt ist).



Voltnut schrieb:
> Ich beziehe mich beim AD5791-Board auf die aktuelle Version, wo die
> Referenzen separat als Tochterplatine auf das AD5791-Grundboard
> aufsteckbar sind.

Ah, dann habe ich wohl ein älteres. Da kommt die LTZ1000 
(undokumentiert) direkt rauf.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Vermutlich hat LT keine geeigneten Bauteile.

Das halte ich mal für sehr gewagt. LT hat seit Jahren den LTC2400 als 
sehr guten ADC. Die haben mit LT5400 die Möglichkeit sehr gut gematchte 
Widerstände zu machen und ohne jetzt nachgesehen zu haben behaupte ich 
auch mal, dass die brauchbare 16bit DACs haben. Ähnliches gilt für AD. 
Mittlerweile ist es ja auch noch nur eine Firma.

von Peter D. (peda)


Lesenswert?

Philipp C. schrieb:
> LT hat seit Jahren den LTC2400 als
> sehr guten ADC.

Der LTC2400 ist zwar alt und günstig, aber nicht gerade einfach zu 
benutzen.
Unterhalb 2,5V liefert er Strom, darüber zieht er Strom. Wenn man mal 
mit dem Oszi den Eingangsstrom anschaut, gibt das in jedem Wandlertakt 
ein lustiges auf und ab. Er braucht am Eingang einen Impedanzwandler, 
der quasi nahe 0Ω hat, sonst gibt es Lottozahlen.
Heutzutage gibt es bessere 24Bitter mit integriertem Eingangsverstärker, 
die auch nicht so sehr rumpeln. Vorzugsweise haben die auch getrennte 
GND für Signal, Versorgung und Daten. Das macht das Layout erheblich 
einfacher.

: Bearbeitet durch User
von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Das war ja nur ein Beispiel für einen ADC der so etwas leisten könnte 
und seit Jahren im Programm ist.

Hast Du da einen netten ADC parat der am besten auch gleich noch 
linearer ist als der LTC2400?

von Peter D. (peda)


Lesenswert?

Der AD7194 funktioniert ganz gut.
Mit 8/16 Eingängen und PGA.
Nur selber löten kann ich sowas kleines nicht mehr.

von Philipp C. (e61_phil) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Der AD7194 funktioniert ganz gut.

Danke!

Aber wenn es um Präzision geht sieht der auf den ersten Blick nicht 
besser aus als der LTC200. Vom INL sind die gleich spezifiziert (was ja 
noch nichts heißen muss), aber vom TK ist der LTC2400 mit 0,01ppm/K auf 
FS spezifiziert und der AD7194 100x schlechter.

Was das Löten angeht so ist der LTC2400 im SO-8 wirklich nett :).

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.