Forum: Mikrocontroller und Digitale Elektronik ATMega16, ADC-Problem


von Karlheinz D. (kdruschel)


Lesenswert?

Hallo zusammen,
nachdem ich nun meine Timer und LCD's am laufen habe, versuche ich mich 
mit AD-Wandlung.
Ich habe hier einen Mega16 mit 8 MHz (interner RC). Nun habe ich mir 
eine externe Referenzspannung von 4 Volt eingestellt und an Aref 
angelegt und lasse mir den gewandelten Wert am LCD ausgeben.
Wenn ich nun ADC0 mit Aref verbinde, erscheinen Werte die zwischen 1020 
und 1024 schwanken. Vollkommen ok, so soll es ja auch sein.
Wenn ich nun aber ADC0 mit einer Spannung von 2.8 V beaufschlage, dann 
erscheinen Werte um die 7000.
Habe ich nun einen Fehler in der Wandlung oder bei der Ausgabe gemacht ?

von Karlheinz D. (kdruschel)


Angehängte Dateien:

Lesenswert?

Achso, habe den Quellcode vergssen. Sorry

von Hc Z. (mizch)


Lesenswert?

Du liest 4x aus, ohne ADSC zu setzen (das wird nur beim Dummy Read 
einmal beschrieben).  Damit liest Du aus, ohne eine Konversion gestartet 
zu haben (wenn ich nichts übersehen habe).

Als erste Anweisung in die for-Schleife gehört
1
ADCSRA |= (1<<ADSC);

von Karlheinz D. (kdruschel)


Lesenswert?

Hm, da hast Du natürlich zuerstmal recht.
Leider bringt es nichts

von Hc Z. (mizch)


Lesenswert?

Wie stellst Du fest, was ausgelesen wurde?  Ich kann im Programm nichts 
entdecken, was einer Ausgabe ähnelt.

Wenn mit Debugger, bist Du vermutlich ein Opfer des Optimizers geworden, 
denn es gibt für den Compiler keinen Grund, z.B. result /= 4 zu 
berechnen.

von Karl H. (kbuchegg)


Lesenswert?

Du überschreibst nur das LCD.

Wenn da vorher der Text steht
1000

und du schreibst dann den Zahlenwert 700 drüber, dann steht da:

7000
   ^
   |
   +----- Diese 0 steht noch von den 1000 da und ist durch 700 nicht
          überschrieben worden. Der Text "700" ist schlicht und
          ergreifend zu kurz um diese 0 auch noch zu überschreiben.

Mach mal das hier

      sprintf(buffer,"%04d",result);

von Hc Z. (mizch)


Lesenswert?

Och nö, ich hab Tomaten auf den Augen ... natürlich gibst Du aus. 
Vergiss, was ich geschrieben habe.

von Karlheinz D. (kdruschel)


Lesenswert?

Hm, wenn ich mir die Werte so anschaue, dann ist das Ergebnis 
anscheinend um den Faktor 10 zu gross. Kann das sein ?
4V Referenz : 1024
==> 1V : 256
==> 2.8V : 716.
Das Verhältnis von 716 zu dem angezeigten Wert ist ungefährt 10!

von Karl H. (kbuchegg)


Lesenswert?

Welchen Teil davon
Beitrag "Re: ATMega16, ADC-Problem"
verstehst du nicht?

von Karlheinz D. (kdruschel)


Lesenswert?

Sorry, aber als ich meinen Beitrag geschrieben habe war das noch nicht 
zu lesen!

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.