mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega16, ADC-Problem


Autor: Karlheinz Druschel (kdruschel)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Karlheinz Druschel (kdruschel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Achso, habe den Quellcode vergssen. Sorry

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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
ADCSRA |= (1<<ADSC);

Autor: Karlheinz Druschel (kdruschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, da hast Du natürlich zuerstmal recht.
Leider bringt es nichts

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Hc Zimmerer (mizch)
Datum:

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

Autor: Karlheinz Druschel (kdruschel)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Karlheinz Druschel (kdruschel)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.