Unlinearitäten im AD Wandler

Gast #1685318
Lesenswert?

Hallo liebe Mikrocontroller Gemeinde.
Kurz zu meinem Status. Ich habe vor ca. 4 Wochen angefangen mich das 
erste mal mit einem Mikrocontroller zu beschäftigen, bin aber allgemein 
was Elektronik betrifft recht fit durch mein Studium.
Ich habe folgendes Problem mit meinem Atmega8:
Ich möchte gerne einen Widerstandswert einlesen um diesen in meinem 
Porgramm zu verarbeiten.

Hardwaremäßig ist das Ganze so aufgebaut, dass ich einen Spannungsteiler 
(5k Ohm - 5k Ohm) benutze um eine Referenzspannung von 2,5V zu erzielen. 
(AREF). Dann benutze ich einen Spannungsteiler (68 Ohm 
Präzissionswiderstand - Prüfling ) und habe die Zuleitung zum Prüfling 
auch zum Analogeingang 0 des Atmega geführt und messe so also meinen 
Spannungsfall über dem Prüfling.
Daraus kann ich mir ja folgendermaßen den Widerstand berechnen:

2,5V bedeuten 1024
-->5V bedeuten 2048, somit kann ich auf Grundlage eines Spannungsteilers 
die Formel für einen "BITTEILER" aufstellen.

X(bitwert) = 2048 * (Prüfling / 68+Prüfling)
umgekehrt bedeutet dies um vom eingelesenen Bitwert auf den Widerstand 
zu kommen


Prüfling = (68*X(bitwert)) / (2048 - X(bitwert))


Ist das soweit richtig oder bin ich da irgendwo falsch abgebogen?

Jetzt habe ich mal eine Messreihe erstellt mit sehr guten Multimetern 
(Fluke...)und bekomme, wie bei einem Spannungsteiler üblich eine Art 
e-Funktion für die verschiedenen Widerstände/Spannungsverhältnisse.
So weit so gut.
Allerdings gibt es bei mir sehr große Unterschied zwischen dem wie oben 
erwähnt errechneten und dem tatsächlich vom Atmega gemessenen.

Woher kann das kommen, gegen 1000 im AD Register sind dies schon 10 Ohm 
Unterschied!!!!
In der nähe von 512 passt es komischerweise wieder und es sieht 
ansatzweise so aus als ob die Unterscheide bei Werten <512 in genau die 
andere Richtung abhauen.

Hat jemand ähnliche Erfahrungen, oder was kann ich falsch gemacht 
haben???
Kondensator is drin, mache auch 300 Messungen und mittele diese wobei 
zwischen maxwert und minwert höchstens 4 im Register unterschied sind.
Bin echt mit meinem Latein am Ende.


(Ach ja, habe verschiedene Atmega8's ausprobiert-->gleiches Speil)


War jetzt viel Text aber ich wollte es so gut wie möglich beschreiben.

Bin für jede Hilfe dankbar.
Angehängte Dateien:
Gast #1685332
Lesenswert?

Gehst Du davon aus, dass jedes Bit des AD 100% stimmt? IMHO hat der 
Atmel8 zumindest 1,5 LSB, d.h. von den 10bit kannst Du im Prinzip nur 
den höchsten 8,5 vertrauen ;-)

Bei Atmel gibt es ein paar App-Notes:
AVR120: Characterization and Calibration of the ADC on an AVR
AVR121: Enhancing ADC resolution by oversampling
Gast #1690944
Lesenswert?

Hi Leutz, hab mal im Datenblatt nachgesehen, hab den Spannungsteiler mit 
470 Ohm aufgebaut und die 32kOhm mit verrechnet und siehe da es passt 
fast. wenn ich 28kOhm ansetze sogar genau.

Vielen Dank nochmal,

ihr seid echt Klasse.

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