Will mit einem ATMEGA8 Spannungen messen und am LCD ausgeben. Hab zum Testen mal eine einfache Batterie (1,612V laut Multimeter) zwischen ADC-Eingang und GND geklemmt. Als Ergebnis wird mir 332 angezeigt. Da REFS1 und REFS0 beide 1 sind, werden ja die internen 2,56V als Referenzspannung verwendet. 2,56V/1023 * 332 = 0,83V Das Ergenbis kann also irgendwie nicht stimmen. Auffällig ist nur, das wenn ich die Rechnung mit 5V statt 2,56V durchführe, würde das Ergebnis ziemlich genau stimmen...aber es kann doch nicht sein, dass 5V als U_ref verwendet werden :(
Hi, und was liegt an AVCC an? PS: Poste doch mal den Codeschnipsel bei dem du den AD Wandler initialisierst.
Mhmh, ja am AREF sinds auch 5 Volt - Jetz weiß ich auch warum. Hab in meiner Gedankenabwesenheit vergessen, den AREF Jumper beim STK500 rauszuziehen.... Mit der internen Referenzspannung von 2,56 Volt bekomme ich jetz einen Wert von 609 was einer Spannung von 1,523 entspricht. Dieser Wert is jedoch wesentlich ungenauer als der Wert den ich bei 5V Referenzspannung erhalte. Is das bei der internen Referenzspannung normal, oder läuft da immer noch was flasch??
Benedikt schrieb: Mess doch einfach mal nach was an AREF anliegt. Wie groß ist AREF jetzt? Dann rechne noch mal und berichte.
Ja, wenn ich 5V an AREF anlege, stimmt der gemessene Wert genau. Nur wenn ich die interne Referenzspannung verwende is das Ergebnis wesentlich ungenauer. Die interne sollte beim Atmega8 ja 2,56V betagen, aber wo sollte ich die messen können??
> aber wo sollte ich die messen können??
Wie Lutz schrieb: am AREF-Pin. Die Referenzspannung liegt dort immer
an, egal ob die Quelle außerhalb oder innerhalb des Controllers liegt.
Mhm, also wenn ich den AREF Jumper am STK500 abstecke, dann hab ich zwischen AREF und GND etwa 300mV. Was jedoch komisch ist, dass ich zwischen AREF und VCC so 120mV messe, was ja eigentlich nicht möglich sein kann.... ??? ODer is der Pin am STK 500 irgendwie anderwertig verbunden?!
Du hat vermutlich REFS0 und REFS1 überschrieben.
1 | ADMUX=adc_input; |
Dadurch ist interner AREF ausgeschaltet und Pin selbst hochohmig geworden(Data Sheet, Seite 206,Tabelle 74). Bei Umschaltung zwischen analoge Eingänge verwende besser folgendes:
1 | ADMUX&=0xF0; // ADMUX3..0 zuerst zurücksetzen, REFS0 und REFS1 bleibt behalten. |
2 | ADMUX|=adc_input; // ADCMUX3..0 wird aktualisiert, REFS0 und REFS1 bleibt noch immer unberührt. |
Die interne Referenz ist bei den ATmega zwar recht stabil, hat jedoch erhebliche Fertigungstoleranzen ja nach Typ 2,3 - 2,7 Volt. Falls man diese nutzen will, sollte man immer eine "Kalibrierroutine" vorsehen und einen entsprechenden Korrekturwert z.B. im EEPROM ablegen.
Naja, da ich jetz wirklich alles ausprobiert habe, glaub ich es liegt an den Toleranzen. Falls ich von meinem ADC-Wert auf die Referenzspannung zurückrechne bekomm ich 2.7V heraus. Komisch is nur, dass ich die interne Referenz nicht am AREF-Pin messen kann....
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.