Forum: Mikrocontroller und Digitale Elektronik ADC Problem mit U_ref


von Hannes S. (hannestum)


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 :(

von Benedikt K. (benedikt)


Lesenswert?

Mess doch einfach mal nach was an AREF anliegt.

von Steilheckulli (Gast)


Lesenswert?

Hi,
und was liegt an AVCC an?

PS: Poste doch mal den Codeschnipsel bei dem du den AD Wandler 
initialisierst.

von Hannes S. (hannestum)


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??

von Lutz (Gast)


Lesenswert?

Benedikt schrieb: Mess doch einfach mal nach was an AREF anliegt.
Wie groß ist AREF jetzt? Dann rechne noch mal und berichte.

von Hannes S. (hannestum)


Lesenswert?

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??

von yalu (Gast)


Lesenswert?

> 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.

von Hannes S. (hannestum)


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?!

von Branko G. (branko)


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.

von Mikki M. (mmerten)


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.

von Hannes S. (hannestum)


Lesenswert?

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
Noch kein Account? Hier anmelden.