Forum: Mikrocontroller und Digitale Elektronik Unlinearitäten im AD Wandler


von soundmachine (Gast)


Angehängte Dateien:

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Hardwaremäßig ist das Ganze so aufgebaut...
Die Beschreibung macht mir einen Knoten ins Hirn...
Kannst du bitte ein Skizze/Schaltplan posten?

von micha (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> einen Spannungsteiler (5k Ohm - 5k Ohm) .... Referenzspannung
Ist der Spannungsteiler nicht ein wenig hochohmig für den 
Eingangswiderstand am Vref-Pin? Laut DB:
1
RREF Reference Input Resistance  32 kΩ

von X- R. (x-rocka)


Lesenswert?

Referenzspannung überprüfen, sieht ja nach nem linearen Fehler aus.

edit: ninja'd! jau, 32k || 5k = 4.32k => Fehler ~15%
entweder Referenzspannung mit OPV puffern oder eben den neuen 
Referenzwert in die Berechnung nehmen.

von soundmachine (Gast)


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.

von Bernd N (Gast)


Lesenswert?

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

>> und siehe da es passt fast. wenn ich 28kOhm ansetze sogar genau.

Die ADC Routine vielleicht noch optimieren, kann ja nicht schaden :-)

Beitrag "ADC und Fixed-Point Arithmetik"

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.