Forum: Mikrocontroller und Digitale Elektronik Konzept 16-Bit DAC -5V/+5V


von Robert W. (johnnychuo)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe einen zu steuernden Controller, der 4 Kanäle mit einem 
Arbeitsbereich von -5...+5V hat. Es werden 45000 Zustände benötigt. 
Daher werden vier 16-Bit DACs nötig sein. Jeder Kanal zieht maximal 
100mA.

Ich habe nun eine Weile nach fertigen DAC Platinen recherchiert. Bin 
bisher aber auf keine Lösung gestoßen, die auch negative Spannungen 
bereitstellen würde. Also muss eine selbst gefertigt werden. Der 
Mikrocontroller wird der Raspberry PI 3 sein.

Nun zum eigentlichen Konzept:
So wie es für mich aussieht, scheint ein DAC mit einem Arbeitsbereich 
von 0...+10V die richtige Wahl zu sein. Dessen Ausgang müsste dann auf 
einen Differenzverstärker geführt werden, der das Ergebnis mit einer 
konstanten Spannung von -5V vergleicht.
Die -5V würde ich dann mit einem Spannungsregler so erzeugen, dass ich 
die 10V der DAC-Referenzspannung nutze und diese auf +5V regle. Aber 
dann quasi Spannungsausgang und Ground vom Regler vertausche und somit 
Ground am Spannungseingang des OPV anschließe? Ich habe mit LTSpice 
etwas simuliert, eine Abbildung dessen ist im Anhang.

Ein Problem das ich sehe ist, dass ich aber mit dem Differenzverstärker 
eventuell die Genauigkeit verlieren könnte, die ich eigentlich brauche. 
Gibt es eine alternative Lösung zum Differenzverstärker?

von Peter D. (peda)


Lesenswert?

Z.B. der DAC8831 enthält die nötigen Widerstände für bipolaren Betrieb.
Für 100mA muß man aber noch nen Leistungs-OPV dahinter schalten (z.B. 
OPA547).

von Amateur (Gast)


Lesenswert?

Beim Einschalten oder während einem Reset liegen (wahrscheinlich) -5V 
an. Stört das nicht?

Ein OP mit ausreichen hoher Schleifenverstärkung sollte eigentlich den 
Fehler gering halten. Vorausgesetzt, der Konstrukteur ist sich der 
allgemeinen Problematik von 16 Bit (Genauigkeit) bewusst. Übrigens setzt 
sich das beim Folgeverstärker (bei 100 mA hecheln die meisten OPs) fort.

von Falk B. (falk)


Lesenswert?

@Robert W. (johnnychuo)

>ich habe einen zu steuernden Controller, der 4 Kanäle mit einem
>Arbeitsbereich von -5...+5V hat. Es werden 45000 Zustände benötigt.

Was soll das denn werden? Mal wieder eine SuperDuperLED-Beleuchtung?
>Daher werden vier 16-Bit DACs nötig sein. Jeder Kanal zieht maximal
>100mA.

>Mikrocontroller wird der Raspberry PI 3 sein.

>So wie es für mich aussieht, scheint ein DAC mit einem Arbeitsbereich
>von 0...+10V die richtige Wahl zu sein.

Nicht zwangsweise. Da man so oder so einen OPV braucht, kann man fast 
jede bleibige Ausgangsspannung nutzen und entsprechend verstärken.

> Dessen Ausgang müsste dann auf
>einen Differenzverstärker geführt werden, der das Ergebnis mit einer
>konstanten Spannung von -5V vergleicht.

Nö, man nimmt einen einfachen Addierverstärker, wie er in jedem OPV-Buch 
drin ist. Und VERGLEICHEN tut ein OPV schon mal gar nicht, der verstärkt 
linear.

>Die -5V würde ich dann mit einem Spannungsregler so erzeugen, dass ich
>die 10V der DAC-Referenzspannung nutze und diese auf +5V regle.

Braucht man so nicht. Du brauchst so oder so einen Poti pro Kanal, um 
den addierten Offset zu kalibrieren. Dazu braucht man zwar eine STABILE 
Referenzspannungsquelle, aber die muss keine -5V haben. Eher +Irgendwas.

> Aber
>dann quasi Spannungsausgang und Ground vom Regler vertausche und somit
>Ground am Spannungseingang des OPV anschließe?

AUA! Mach das nicht!

> Ich habe mit LTSpice
>etwas simuliert, eine Abbildung dessen ist im Anhang.

LTSpice ersetzt kein Grundlagenwissen.

>Ein Problem das ich sehe ist, dass ich aber mit dem Differenzverstärker
>eventuell die Genauigkeit verlieren könnte, die ich eigentlich brauche.

Kann passieren, wenn der OPV zuviel Offsetspannung und Temperaturdrift 
reinbringt. Dagegen hilft nur eine Arbeitsteilung. Sprich, man nimmt 
einen schwachen, aber genauen OPV mit kleinem Offset und wenig Drift und 
macht damit die Spannungsanpassung und dahinter einen Leistungs-OPV mit 
viel Strom und Spannungsverstärkung 1. Der darf ungenau sein, denn man 
nutzt die echte Ausgangsspannung für die Rückkopplung des genauen OPVs.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Ok, hier mal als Bild.

Es ist eine PRINZIPSCHALTUNG, die ist nicht aufgebaut und getestet, 
ebensowenig hab ich im Detail über die Komponenten nachgedacht.

Als Spannungsversorgung braucht man +/-6V ggf. mehr, je nach OPV-Typ.

IC1 soll ein Präzisions-OPV mit wenigen uV Offsetspannung und 0,x uV/K 
Temperaturdrift sein. IC3 ein Leistungs-OPV, der beliebig viel 
Offsetspannung und Drift haben darf, denn das wird durch IC1 
kompensiert, denn der mißt die echte Ausgangsspannung NACH IC3 und 
regelt entsprechend nach. IC2 muss nicht sonderlich genau sein, aber 
sehr temperaturstabil, also wenige ppm/K Drift aufweisen. Siehe

https://www.mikrocontroller.net/articles/Standardbauelemente#Shuntregler.2FSpannungsreferenz

Wie werden die Widerstände berechnet? Nach dem Superpositionsprinzip.
DAC_IN ist eine Spannung von einem DAC, nehmen wir mal an, daß der 
0-3,3V liefert. Diese 3,3V Spannungsänderung sollen am Ausgang DAC_OUT 
in 10V Spannungsänderung umgesetzt werden. Also braucht man eine 
Verstärkung von min. 10/3,3V = 3. Die wird mit R2 und R1 eingestellt, 
das ist ein einfacher, invertierender Verstärker.

V = -R2/R1 = -33k/10k = -3,3

Also haben wir noch ein wenig Reserve.

Dann muss mit dem Trimmer (10 Gang Spindeltrimmer) ein Offset 
eingestellt werden, damit bei 0V an DAC_IN +5V an DAC_OUT rauskommen. 
Genauer, es sollte die Hälfte der maximalen Spannungsänderung 
rauskommen, damit wird es symmetrisch. Die maximale Spannungsänderung 
ist 3,3V * 3,3 = 10,9V. Aus Sicht vom positiven OPV-Eingang ist es ein 
nichtinvertierender Verstärker, wenn man DAC_IN auf 0V legt 
(Superpositionsprinzip).

V = 1+R2/R1 = 1 + 33k/10k = 4,3

Ue = Ua / V = 5,45V / 4,3 = 1,27V

Damit hat man dann folgende Kennlinie

DAC_IN  DAC_OUT
0        +5,45
0,14     +5
1,65      0
3,17     -5
3,3      -5,45

Die Kennlinie ist also invertiert, aber das kann man problemlos in der 
Software ausgleichen. Das Ganze kann man leicht kalibrieren, indem man 
abwechselnd einen einsprechenden DAC-Wert ausgibt, der +5V und -5V am 
Ausgang ergeben sollte. Dann stellt man den Offset so ein, daß beide 
Werte betragsgleich sind. Da die Spannungsverstärkung von R1 und R2 
abhängt, sollten die genau und temperaturstabil sein, 0,1% mit TK20 oder 
so. Wer es ganz exakt haben will, macht eine weitere 
Zweipunktkalibierung per Software. Dann ist die Toleranz der Widerstände 
egal, es bleibt aber die Temperaturdrift. Man kann aber auch einen 500 
Ohm Trimmer in Reihe zu R2 schalten, dann kann man auch die Verstärkung 
analog kalibrieren.

Alles in allem ist ein 16 Bit DAC, der auch WIRKLICH im Bereich von 16 
Bit STABIL ist, nicht ganz trivial.

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.