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.
> Hardwaremäßig ist das Ganze so aufgebaut...
Die Beschreibung macht mir einen Knoten ins Hirn...
Kannst du bitte ein Skizze/Schaltplan posten?
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
> 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Ω |
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.
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.
>> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.