wie genau ist der adc eigentlich?

Gast #1668735
Lesenswert?

Hallo Community,

Ich versuche jetzt schon länger eine Regressionskurve für meinen 
Temp-Sensor zu erstellen. Die dazugehörige Funktion möchte ich dann dazu 
verwenden um die Temperatur möglichst genau auszugeben. Allerdings habe 
ich ein kleines Problem mit der Genauigkeit des ADC.

Wenn man die Formel ADC = (Vin x 1024) /2.56V nach Vin umstellt
sprich die Spannung die am Sensor anliegt dann habe ich bei manueller 
Rechnung mit dem eigenen Taschenrechner immer leicht andere Werte als 
der ADC mir Werte auf den LCD bringt.

Berechne ich manuell die Spannung am Sensor komme ich bis auf die 2 
Stelle nach dem Komma auf den gleichen Wert den mir mein Multimeter 
ausspuckt.

Wie bekomme ich den ADC noch genauer? Ich benutze in meinem Source 
double Werte mit 2Stellen nach dem Komma. Ich gehe davon aus das es 
nicht an den Variablen und der Ausgabe am LCD liegt.

btw. µc = Atmega8, ADC mit interner Referenzspannung von 2,56V

Wär für einen Tipp sehr dankbar!


Gruß R.
Gast #1668749
Lesenswert?

Hallo,

Heißt das ich müsste noch mehr Nachkommastellen nehmen?

Es ist schon merkwürdig. Ich berechne und bekomme auch mit dem 
Multimeter beispielsweise 1,33Volt für den Sensor, der ADC aber zeigt 
mir am LCD 1,21 an.  Vielleicht würde man sagen das ist nicht wirklich 
ungenau aber später bei der Umrechnung un in der Anzeige der Temperatur 
schlägt sich das locker mit +- 1,2°C etwa nieder...


Gruß

R.
#1668751
Lesenswert?

Schau mal ins Datenblatt, die interne Referenz ist zwar recht stabil, 
unterliegt aber nicht zu vernachlässigenden Fertigungstoleranzen. 
Desweiteren gibt es im Datenblatt Hinweise auf die ADC-Fehler. Bei Atmel 
gibt es glaube auch eine Appnote zur ADC-Fehlerkorrektur 
(ADC-Calibration).

Mit Fließkommazahlen (Double) würde ich da nicht herangehen. Der ADC 
liefert nur 10-Bit-Ganzzahlen. Zum Skalieren halte ich 
Festkomma-Arithmetik für besser geeignet. Das kann aber auch daran 
liegen, dass ich in ASM werkele und immer bestrebt bin, unnötigen 
Aufwand zu vermeiden. Mein kleines Voltmeterchen mit Tiny24 geht z.B. 
erfreulich genau:
Beitrag "Re: 13 Bit Genauigkeit mit Atmega messen ?"

...
Gast #1668769
Lesenswert?

Vielen Dank an alle Antwortenden!!!

Werde mir jetzt mal die PDF und google Links zu den Atmel ADC 
Calibration zu Gemüte führen.

Melde mich dann wieder wenn ich ne Temp. bis auf die 90zigste Stelle 
genau hinter dem Komma anzeigen kann (kleiner Spaß :O)... )


Gruß

R.
Persönliche Seite #1668786
Lesenswert?

Ich hatte mal ein ähnlich gelagertes Problem.
Bei mir ging es um eine Wochenend-Selbstbau-Kühlschranksteuerung.
Ich habe mir einen Temperatur-Sensor herausgesucht, der im gewollten 
Bereich einigermaßen linear verläuft.
Im Programm habe ich den ADC min-Wert und max-Wert vorgegeben und durch 
die beiden Punkte eine "virtuelle" Gerade gelegt.
Mein ADC berechnete in 10 Dürchläufen mit anschließender 
Mittelwertbildung einen Wert, der irgendwo auf der Geraden liegen musste 
-> das war dann umgerechnet mein Temperaturwert.
Als Referenz habe ich ein Digitalthermometer verwendet.
Mit Veränderung von min- und max-Wert konnte ich die Gerade entsprechend 
verschieben, bis alles soweit passte.
Ist zwar alles recht grob (ca. +- 0,5 °C) aber für meinen Anwendungsfall 
ausreichend (Nichtlinearität des analogen Temperatursensors).

Meine Erfahrung mit dem ADC generell ist, dass ein aufgenommener Wert 
alleine absolut nicht taugt. (1.Messung sollte eh verworfen werden -> 
Datenblatt)
Also min. 10 Werte aufnehmen und den Mittelwert bilden + eine 
Möglichkeit einbauen, etwas offset einzustellen.
Gast #1668793
Lesenswert?

@ Marc Meise,

ich verwende 4 Messungen und bilde den Mittelwert. Der erste VOR der 
eigentlichen Messung wird natürlich verworfen. da mein Temp-Sensor auch 
nicht linear ist habe ich eine Wertetabelle gefüllt von 0 - 80°C.

Aus den gemessenen Spannungen bilde ich dann eine Regressionskurve 
mittels Office. Die dazugehörige Funktion (annährend Mittelwert) nehme 
ich dann zur Berechnung. Funktioniert wie Dein Verfahren und ist recht 
genau.

gruß R.
Gast #1668807
Lesenswert?

@ Zimmerer,

Dein Tipp war Gold Wert!!!!

Statt 2,56 liegen 2,72 Volt an. Eingebaut in die Formel ergibt das EXAKT 
bis auf eine Nachkommastelle den Wert am Sensor an den auch das 
Multimeter misst.

Wow darauf wär ich so schnell nicht gekommen.

VIELEN DANK!!!


Gruß an Alle!

R.
#1668833
Lesenswert?

Na prima.  Der eingebaute ADC ist schon nicht schlecht, nur die Referenz 
taugt wenig.  Man sollte schon auf den tatsächlichen Wert kalibrieren 
oder eine externe Referenz verwenden.

Eins noch:  Der erste eingelesene Wert nach Umschalten der Referenz 
(also auch der allererste nach Reset) sollte verworfen werden, ansonsten 
kann ich die Ratschläge, vielfach zu messen, nicht ganz nachvollziehen 
-- es sei denn, das Signal ist von Störungen überlagert.
Gast #1668930
Lesenswert?

Ja das erste Signal wird jedesmal verworfen bevor es richtig los geht.

Ich habe den ADC sowie die gemessene Spannung gleichzeitig auf dem 
Display stehen um das "Springen" zu beobachten. Dein Einwand / Frage mit 
den Mehrfachmessungen ist berechtigt. Habe das so aus dem GCC-Tutorial 
hier entnommen. Ich nehme auch an das man mit dem Mittelwert 
irgendwelche Spannungsspitzen, Schwankungen etc. aus dem Weg räumen 
möchte.

Gruß

R.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren