Forum: Mikrocontroller und Digitale Elektronik Genauigkeitsbetrachtungen externer ADC und ADC im µC


von Michael T. (michelback)


Lesenswert?

Hallo zusammen,

im Bezug auf die Genauigkeit gibt es bei ADCs ja verschiedene Angaben 
wie INL oder DNL, etc.
mein Problem ist jetzt abzuschätzen, was genauer ist, bzw weniger 
Fehlerbehaftet. Konkret geht es darum, ob ich meine ADCs des µCs 
verwenden soll, oder externe ADCs.
Bei meinem µC (R5F2122CKFP) werden DNL und INL der ADCs gar nicht 
angegeben, es steht lediglich eine "Absolute Accuracy" mit +-5LSB im 
Datenblatt.
In einem Datenblatt eines externen ADCs stehen zB folgende Werte:
DNL: +-1LSB
INL+-1LSB
Offset Error: +-3LSB
Gain Error:+-3LSB
Wie kann man daraus die "Absolute Accuracy" berechnen?
Einfach zusammenzählen, dann hätte man ja den worst-case. Oder alle 
fehler erst einzeln quadrieren, dann addieren und die wurzel daraus 
ziehen?
letzteres entspräche dann 4,5LSB

Generell ist es ja so, dass ein µC-interner ADC schon durch die 
unmittelbare Nähe zum digitalen Teil eher ungenauer ist, als ein 
externer ADC, der die EMV-Einflüsse des µC nicht so stark zu spüren 
bekommt.
Meine Messwerte die ich erfassen würde beginnen bei Spannungen ab 20mV. 
Daher sehe ich einen µC-internen ADC kritisch an, da der digitalteil in 
unmittelbarer Nähe ist. Falls das aber doch ginge wäre es super, dann 
würde ich mir kosten und platz sparen. Meine Vref wären 3,0V und der µC 
hat einen ADC mit 10bit und +-5LSB absolute accuracy.

Ein LSB wären dann bei mir 0,002929V. Wenn die Genauigkeit bei +- 5LSB 
liegt, dann wäre die Abweichung ja bei 0,0146V.
Das heißt doch, dass die Eingangsspannung des ADC um +-0,0146V falsch 
eingelesen werden kann. Sprich: obwohl 0,02V anliegen kann es sein dass 
der Ausgegebene ADC-Wert einer Spannung von 0,02V+-0,0164V entspricht. 
Oder täusche ich mich da?
Fazit wäre, dass der µC-interne ADC für 20mV Eingangsspannung ungeeignet 
ist. Stimmt doch?
Ist eine absolute Genauigkeit von +-5LSB eher schlecht oder gut im 
Vergleich? einen Quantisierungsfehler von 0,5LSB hat ja eh jeder ADC. 
Kann man bei der Absoluten Genauigkeit von +-5LSB nicht noch durch 
kalibrierung etwas rausholen?
Grüße,
Michael

von Bernd (Gast)


Lesenswert?

Bei dem was Du da an Daten angibst kann man nur sagen nehm nen externen 
ADC.

Gain und Offset Fehler kann man gut kompensieren aber die nichtlinearen 
Fehler bedeuten Aufwand.

Was genau... mit welcher Genauigkeit willst Du messen ?

von Hans M. (hansilein)


Lesenswert?

durch eine deutlich geringere Vref kannst Du die Auflöung um 20mV herum 
deutlich verbessern.

von Ulrich (Gast)


Lesenswert?

Es gibt µCs mit guten ADCs drin, AD hat einen wo sogar ein 24 BIT AD 
drin sein soll. So EMI verseucht sollte die Umgebung im µC nicht sein, 
dass man nicht wenigstens eine brauchbaren 10 Bit AD hinkriegt. Eine 
Schwierigkeit ist da eher schon die Masse, wenn man keinen 
Differenzeingang hat.

Die Fehler des Internen ADs werden vermutlich so ähnlich aufgeteilt 
sein, wie beim externen AD. Der Gain und Offest Anteil ist relativ 
leicht zu korriegieren. So viel besser sieht der externe AD nicht aus.

Für eine sehr kleine Spannung sollte der Gain Fehler des ADs ziehmlich 
zu vernachläsigen sein. Das wären ja nicht konstant z.B. 3 LSB (Daten 
für den externen AD), sondern eher 0,3% vom Messwert.
Die Werte von INL und DNL kann man auch nicht so ohne weiters 
zusammenzählen, denn besser als die Hälfte der DNL sollte die INL nie 
werden.

von Bernd (Gast)


Lesenswert?

>> Es gibt µCs mit guten ADCs drin

So ist es. Ich habe mir mal das Datenblatt angesehen und der hier 
gennante MC hat einfach einen sehr schlechten Wandler. Mir fehlt immer 
noch eine Antwort... welcher Bereich soll gemessen werden. In Bezug auf 
die gemachten Angaben läßt sich nicht viel sagen.

Also mal angenommen du hast ne UREF von 1V dann kannst Du locker bis auf 
1mV auflösen... 20 mV bezogen auf was.

Wie gesagt, Offset, Gain läßt sich korrigieren und bei entsprechender 
Kenntnis der anderen Parameter kann man eine ganze Menge herausholen... 
ABER wieviele Meßwerte brauchst Du pro Sekunde ? welcher 
Eingangsspannungsbereich etc... etc... und was wird ausgewertet ?

von Michael T. (michelback)


Lesenswert?

hallo zusammen,
vielen Dank für die schnellen Antworten.
Mein Vref ist 3V, damit werden unterschiedliche Sensoren erfasst. Unter 
anderem Gassensoren und auch ein Pt100. beim Pt100 wären 5mV 1°C und das 
sollte noch zu detektieren sein. mit dem 10bit ADC des µCs kann man das 
ja vergessen., da liege ich mit der Accuracy ja schon bei 2,7°C 
abweichung vom Messwert. habe mir schon gedacht, dass der Wandler 
schlecht ist, aber danke nochmal für die Bestätigung.

Also Übersichtlich:
- Bereich: 0v bis 3V(=Vref)
- Schritte des Pt100: 5mV/°C
- Schritte der restlichen Sensoren: 20mV
- Zeitunkritische Messungen (maximal 1 Messwert/Sekunde)

Dabei muss es sich aber nicht um einen einzigen ADC handeln. Ich bin 
noch auf der Suche nach einem 14bit oder 16bit ADC, der einen 
Temperaturbereich von -40°C bis 125°C aushält. Grundgedanke war, dass 
insbesondere bei der Messung mit dem Pt100 mit steigender Bit-Zahl, das 
LSB kleiner wird. Ab einem 14Bit-Wandler (LSB=0,000183V @ Vref=3V) 
dürften auch bei einer Accuracy von +-5LSB keine Probleme mehr 
auftauchen.
Dass Vref auf 3V festgelegt ist, ist schon relativ fix, da ich auf 
meiner Platine eine maximale Spannung von 3,3V zur Verfügung habe. 
Weiter runter will ich auch nicht gehen, auch wenn dadurch die Auflösung 
steigt. Bestimmte maximalwerte der Sensoren gehen bei derzeitiger 
einstellung eben bis knapp 3V und sollen detektiert werden können.

Schönen abend noch und Grüße,
Michael

von Dr.Seltsam (Gast)


Lesenswert?

Wäre es denn eine Option, den PT100 einfach mit dem vierfachen Strom zu 
betreiben? - dann hätte er auch 20mV/K.

von Michael T. (michelback)


Lesenswert?

Das ginge schon, allerdings müüsste man dann Pulsen, damit die 
eigenerwärung durch den Strom nicht zu hoch wird. Problem wäre dabei, 
dass ich die gewünschte maximaltemperatur nicht mehr messen kann. mit 
den bisherigen Daten kann ich bis 300°C messen (bei Vref=3V). Mit dem 
vierfachen Strom könnte ich nicht mehr bis 300°C messen. ICh werde auf 
jeden Fall für die Temperaturmessung einen externen ADC verwenden. Zum 
einen bin ich damit weg von digitalen Störern (µC)und zum Anderen ist 
das LSB kleiner (bei 12bit oder 14bit), so dass INL und DNL Fehler nicht 
mehr so ins Gewicht fallen. Die Auflösung wird auch noch verbessert.
Grüße

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.