ADC Problem mit U_ref

OP #867383
Lesenswert?

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 :(
OP #867461
Lesenswert?

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??
OP #871073
Lesenswert?

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?!
#871110
Lesenswert?

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.
#871135
Lesenswert?

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.

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