Forum: Mikrocontroller und Digitale Elektronik DA-Wandler aussuchen/berechnen? Fragen!


von Steffen Hausinger (Gast)


Lesenswert?

Hallo allerseits,

in einer Schaltung benötige ich eine Ausgangsspannung von 0,00 bis 6,50 
V, regelbar durch einen Mikrocontroller. Die Genauigkeit soll 10mV (+/- 
5mV) betragen, die Strombelastbarkeit 100 mA. Frequenz ist unkritisch (1 
Hz), Anstiegszeit ebenfalls (FullScale 500ms). Negative 
Versorgungsspannung wäre vorhanden.

Ich hab mir die Lösung bisher so vorgestellt:

Controller -> DA-Wandler -> OPV

Der OPV dient als Ausgangstreiber und ggf. Verstärker.

Als DA-Wandler hab ich mir den LTC1257 angeschaut. Hat im ersten Moment 
völlig ausreichende 12 Bit Auflösung und mit der internen V_Ref (2,048V) 
gute 500µV Genauigkeit (die natürlich durch den OPV, der dann mit 
Verstärkung=4 arbeiten muss, wieder verschlechtert wird). Das Problem 
bei dem IC ist aber, dass die interne V_Ref schon um 40mV schwanken 
kann! Damit liege ich ja jenseits von Gut und Böse, erst Recht nach der 
Verstärkung durch den OPV (-> 160mV)!

Außerdem kann der Offsetfehler des DA-Wandlers bis zu 8 LSB (also 4mV) 
betragen. Das ist leider ebenfalls zu ungenau (4 x 4mV = 16mV). Gehe ich 
aber recht in der Annahme, dass ich diesen Fehler durch meinen OPV 
wieder ausbügeln kann? Indem ich eine Offset-Korrektur einbaue?

Könnt ihr mir kurz Rückmeldung geben, ob meine Überlegungen soweit 
richtig sind? Oder gibt es einen anderen Ansatz, meine Vorgaben zu 
erfüllen? Wie würdet ihr an das Thema herangehen?

Falls Ansatz und Überlegungen ok sind, würde ich mich freuen, wenn mir 
jemand einen passenden DA-Wandler nennen könnte! Er muss aber unbedingt 
bei Reichelt o.ä. beziehbar sein.

Grüße
Steffen

von Adam (Gast)


Lesenswert?

Karl,

bin kein D/A-Wandler Spezialist aber eine Referenzspannungschwankung von 
von 40mV kliengt erstmal nicht viel. Das wären, wenn ich richtig rechne 
2%.
Vielleicht solltest Du eine externe Referenzspannung verwenden mit einer 
grösseren Genauigkeit. Es gibt dafür spezielle ICs. Zum Beispiel der
TL431BID.

Gruß,
Karl

von Falk B. (falk)


Lesenswert?

@  Steffen Hausinger (Gast)

>in einer Schaltung benötige ich eine Ausgangsspannung von 0,00 bis 6,50
>V, regelbar durch einen Mikrocontroller. Die Genauigkeit soll 10mV (+/-
>5mV) betragen,

Hmm, das könnte ein 12 Bit DA-Wandler schaffen.

> die Strombelastbarkeit 100 mA.

Ist schon ganz ordentlich.

>Controller -> DA-Wandler -> OPV

>Der OPV dient als Ausgangstreiber und ggf. Verstärker.

Geht einfacher.

http://www.mikrocontroller.net/articles/Pulsweitenmodulation#DA-Wandlung_mit_PWM

>bei dem IC ist aber, dass die interne V_Ref schon um 40mV schwanken
>kann! Damit liege ich ja jenseits von Gut und Böse, erst Recht nach der
>Verstärkung durch den OPV (-> 160mV)!

Was meinst du mit schwanken?

Herstellertoleranz? Temperaturdrift?

>Außerdem kann der Offsetfehler des DA-Wandlers bis zu 8 LSB (also 4mV)
>betragen. Das ist leider ebenfalls zu ungenau (4 x 4mV = 16mV). Gehe ich
>aber recht in der Annahme, dass ich diesen Fehler durch meinen OPV
>wieder ausbügeln kann? Indem ich eine Offset-Korrektur einbaue?

Ja.

MfG
Falk

von Steffen Hausinger (Gast)


Lesenswert?

Hallo ihr beiden

@Adam:
40mV klingen für mich auch erstmal nicht viel. Aber ich benötige eine 
Genauigkeit von 10mV und dann ist so eine Abweichung natürlich 
inakzeptabel. Ich habe mich heute Nachmittag auch schon in 
Referenzspannungsquellen eingelesen. Der LT1021C-5 scheint interessant 
zu sein. Er geht, sogar unkalibriert, bei 5V auf +/- 2,5mV genau.

@Falk:
Falls die 12Bit nicht ausreichen, würde es vom LTC1257 zur Not sogar 
noch eine pinkompatible 16Bit Version geben. Mit PWM werde ich aber bei 
meinen Vorgaben nicht weiter kommen. Denn ein einfacher Tiefpaß zur 
Glättung genügt da nicht (selbst mit f_grenz = einige Hz). Aber es 
spricht ja auch nichts gegen einen eigenen A/D-Wandler.

Mit Schwanken meinte ich die Toleranz des LTC1257. Die Referenzspannung 
wird zwischen 2,028 und 2,068V angegeben. Oder ist das ein 
bauteilabhängiger Wert, der sich während des Betriebs nicht ändern wird? 
Wo Du jetzt nachfragst, scheint mir das fast so...

@All:
Wie ist das denn mit dem OPV - hat der keine Verzerrung? Oder kann ich 
die vernachlässigen? Also wenn ich meinen Spannungsteiler für v=4 
dimensioniere, behält er diesen Faktor dann bei U_e=0,12V genauso wie 
bei U_e=3,45V (Phantasiewerte, aber entsprechend hohe Versorgunsspannung 
+/- vorausgesetzt)? In den Datenblättern ist leider nur die Verzerrung 
für höhere Frequenzen angegeben, bei meiner Schaltung gilt aber f~1Hz.

Steffen

von Falk B. (falk)


Lesenswert?

@ Steffen Hausinger (Gast)

>noch eine pinkompatible 16Bit Version geben. Mit PWM werde ich aber bei
>meinen Vorgaben nicht weiter kommen. Denn ein einfacher Tiefpaß zur
>Glättung genügt da nicht (selbst mit f_grenz = einige Hz). Aber es

Dann nimm einen doppelten oder dreifachen Tiefpass.

>spricht ja auch nichts gegen einen eigenen A/D-Wandler.

Doch. Kosten, Platz und Aufwand.

>Mit Schwanken meinte ich die Toleranz des LTC1257. Die Referenzspannung
>wird zwischen 2,028 und 2,068V angegeben. Oder ist das ein
>bauteilabhängiger Wert, der sich während des Betriebs nicht ändern wird?
>Wo Du jetzt nachfragst, scheint mir das fast so...

Es ist so.

http://www.linear.com/pc/productDetail.jsp?navId=H0,C1,C1155,C1005,C1156,P1425

>Wie ist das denn mit dem OPV - hat der keine Verzerrung? Oder kann ich

;-)
Der OPV hat auch Fehler. Im wesentlichen Offset und Verstärkung, 
bestimmt durch die beiden Widerstände. Beides muss man letztendlich 
kalibrieren und kompensieren. Damit sind die Fehler des DAC auch 
kompensierbar. Bleibt nur naoch die Temperaturdrift. Für den DAc steht 
die im Datenblatt, bei den OPVs auch. Womit aber wider PWM sinnvoll ist, 
denn die muss auch kalibriert werden, kostet aber fast nix.

>die vernachlässigen? Also wenn ich meinen Spannungsteiler für v=4
>dimensioniere, behält er diesen Faktor dann bei U_e=0,12V genauso wie
>bei U_e=3,45V (Phantasiewerte, aber entsprechend hohe Versorgunsspannung

Ja.

>+/- vorausgesetzt)? In den Datenblättern ist leider nur die Verzerrung
>für höhere Frequenzen angegeben, bei meiner Schaltung gilt aber f~1Hz.

Das ist praktisch statischer Betrieb.

MfG
Falk

von Steffen Hausinger (Gast)


Lesenswert?

Hallo Falk,

ok, ich hab's mal ausgerechnet. Schätzungsweise ab der 3. Ordnung eines 
idealen TP wirds interessant. Aber - wie genau kann ich meine PWM denn 
machen? Die Spannungsversorgung ist ungenau (Referenz nötig!) und damit 
auch der Ausgangspegel. Und über einen Temperaturdrift kann ich beim 
Mega auch nichts finden. Im Prinzip also die gleichen Themen wie beim 
D/A-Wandler - nur ist der in dieser Hinsicht optimiert.

Also nochmal zum LTC1257. Ich habe mir folgenden maximalen Fehler 
ausgerechnet:

DNL - 0,5 LSB
INL - 3,5 LSB
Offset TC - 0,066 LSB/K
Gain TC - 0,02 LSB/K

Macht bei einem angenommen Temperaturbereich von 10..40°C einen Fehler 
von maximal 6,58 LSB = 3,29 mV (@V_Ref = 2,048 V) => 13,16 mV hinterm 
OPV (v=4).

Das ist leider ein bißchen viel. Gibt's da nicht einen genaueren ADC? 
Oder gibt's eine Möglichkeit, die INL auszugleichen? Wenn die DNL wie 
hier 0,5 LSB ist, dann müsste man sie doch über eine Tabelle im µC auch 
auf 0,5 LSB verringern können. Einzelne (Digital-)Werte werden dann eben 
doppelt verwendet/übersprungen. Oder?

Steffen

von Falk B. (falk)


Lesenswert?

@ Steffen Hausinger (Gast)

>ok, ich hab's mal ausgerechnet. Schätzungsweise ab der 3. Ordnung eines
>idealen TP wirds interessant.

Na also, wir bewegen uns in die richtige Richtung.

> Aber - wie genau kann ich meine PWM denn
>machen?

PWM ist prinzipiell sehr genau.

> Die Spannungsversorgung ist ungenau (Referenz nötig!) und damit
>auch der Ausgangspegel.

Richtig, wird aber soweiso kalibriert.

> Und über einen Temperaturdrift kann ich beim
>Mega auch nichts finden.

Hat der praktisch nicht. Der Ausgang ist digital, der schaltet immer die 
volle Spannung durch. Einzig die temperaturdrift der Spannungsversorgung 
speilt da eine Rolle.

> Im Prinzip also die gleichen Themen wie beim
>D/A-Wandler

Nö.

 - nur ist der in dieser Hinsicht optimiert.


Also nochmal zum LTC1257. Ich habe mir folgenden maximalen Fehler
ausgerechnet:

>DNL - 0,5 LSB
>INL - 3,5 LSB
>Offset TC - 0,066 LSB/K
>Gain TC - 0,02 LSB/K

>Macht bei einem angenommen Temperaturbereich von 10..40°C einen Fehler
>von maximal 6,58 LSB = 3,29 mV (@V_Ref = 2,048 V) => 13,16 mV hinterm
>OPV (v=4).

25C +/-15C
-> Offset 1 LSB
-> Gain  0,3LSB

Macht in Summe 1,3 LSB = 0,65mV = 2,6mV am Ausgang.Passt doch. DNL ist 
statisch und wird durch die Kalibrierung eliminiert.

>Das ist leider ein bißchen viel. Gibt's da nicht einen genaueren ADC?

Die gibt es immer. Die Frage ist wo, zu welchem Preis und ob sie für 
Bastler verfügbar sind.

>Oder gibt's eine Möglichkeit, die INL auszugleichen? Wenn die DNL wie

Neuen DAC bauen ;-)

>hier 0,5 LSB ist, dann müsste man sie doch über eine Tabelle im µC auch
>auf 0,5 LSB verringern können. Einzelne (Digital-)Werte werden dann eben
>doppelt verwendet/übersprungen. Oder?

Im Prinzip ja. Das wird bei der Kalibrierung aber sowieso eliminiert.

Mein Tip. Entweder PWM oder den LTC1257. Mit Kalibrierung erreichst du 
deine Werte sehr gut.

MFG
Falk

von Steffen Hausinger (Gast)


Lesenswert?

Hallo Falk,

Zur PWM:
Mein µC schafft eine 16Bit PWM, das ist wirklich mehr als ausreichend. 
Alternativ kann ich den Timer auch als 10Bit laufen, erhöhe dadurch die 
Frequenz und kann den nachgeschalteten Tiefpass besser aufbauen. Soweit 
ist noch alles in Butter.

Aber wie soll ich denn die Spannungsversorgung kalibrieren? Dafür bleibt 
mir ja nichts anderes übrig, als eine Referenzspannungsquelle zur 
Versorgung zu nehmen. Denn der Standard 7805, den ich bis jetzt 
eingeplant habe, hat laut Datenblatt eine Schwankung von 50mV (Line/Load 
Regulation), vom Temperaturdrift einmal ganz zu schweigen. Bliebe also 
nur ein Sonder-IC wie der bereits erwähnte LT1021 übrig. Der schafft 
aber wiederum nur 10mA Last. Davon mal ganz abgesehen - ich mache mit 
dem µC ja auch noch andere Schaltvorgänge, so ganz sauber wird die Sache 
nie. Und vom Aufwand bin ich da sowieso schon mit dem externen 
D/A-Wandler gleichgezogen.

Zum D/A-Wandler:
Hier wollte ich gerade etwas fragen, hab's aber nach scharfem Hinsehen 
dann doch selbst rausgefunden ;-)

Steffen

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.