Forum: Mikrocontroller und Digitale Elektronik ADC gibt höhere Werte als 1023 aus


von Holger B. (Gast)


Lesenswert?

Hallo Community,

Für eine Schularbeit möchte ich einen Mikrocontroller (Atmega32) nutzen 
um eine Spannung zu messen. Um zu üben hab ich nun ein Drehpotentiometer 
wie in den Tutorials beschrieben an einen Adc-Pin angeschlossen. Den 
Code aus den Tutorials habe ich so angepasst, dass Avcc als 
Referenzspannung genommen wird! Aref habe ich über einen Kondensator an 
GND angeschlossen! Um den Messwert des ADC auszulesen habe ich noch ein 
LCD angeschlossen welches mir über die itoa() Funktion den Wert des 
Registers als String anzeigt!

Soweit so gut. Wenn ich nun den Aufbau anschalte, und das Poti zugedreht 
habe wird korrekt der Wert 0 angezeigt. Ich drehe dann langsam auf Den 
andren Anschlag und der angezeigte Wert wandert auf 1023. Sobald ich nun 
aber zurückdrehe springt der Wert auf etwa 9200 und wird von diesem 
hohen Wert aus zurückgezählt. Auf 0 landet er aber nicht wieder, sonder 
eher zwischen 23 und 600. Interessanterweise wird die 1023 am rechten 
Anschlag weiterhin angezeigt, wenn ich ganz aufdrehe.

Meine Frage ist nun ob jemand dieses Problem kennt, oder eine Idee hat 
welchen Fehler ich gemacht haben könnte, dass der ADC Werte größer 1023 
anzeigt? Ich hoffe ich konnte einigermaßen Beschreiben was mein Problem 
ist.

Vielen Dank für alle Hilfe

Holger

von hans (Gast)


Lesenswert?

Bleiben wohl noch alte Ziffern auf dem Display stehen ;)

hans

von Josef D. (jogedua)


Lesenswert?

Vermutlich werden die hinteren Stellen nicht wieder überschrieben, wenn 
danach eine Zahl mit weniger Stellen geschrieben wird.
Wenn z.B. nach 1023 99 geschrieben wird, erscheint 9923.
Schreib' mal nach der Zahl noch 3 Leerzeichen.

von Holger B. (Gast)


Lesenswert?

Oh man, dass kann ja garnicht wahr sein!  Da hätte ich noch Tage damit 
verbracht!  Vielen Dank euch beiden!

von Peter D. (peda)


Lesenswert?

1
sprintf( buff, "%4d", ADC );
Zeigt immer 4 Stellen an, oder mit Vornullen:
1
sprintf( buff, "%04d", ADC );

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.