AD Wandler beim AVR

Gast #431591
Lesenswert?
• ▲
▼
Hi,
möchte gerne ein analoges Signal mit einem AVR digitalisieren. Nur weiß 
ich leider nicht wie ich das genau machen muß? Soweit ich das verstanden 
habe, schließe ich das Signal an den Port PA0 (ADC0) meines ATmega8535, 
AVCC auf VCC und AREF auf eine Referenzspannung. Wie hoch sollte diese 
den sein? Sollte doch so groß sein, wie die größte zu messende Spannung 
oder größer.
Wie kann ich jetzt in Asembler meine digitalisierten Werte verwenden? 
Wie heißen die Register wo der Wert gespeichert ist. Mit welchen 
Registern steuer ich den AD Wandler? Z.B. wie stelle ich den ein das er 
die interne AREF oder eine externe verwendet? Kennt jemand vielleicht 
ein paar Codebeispiele? Am liebsten wäre mir in Asembler. Habe schon im 
Datenblatt nachgelesen aber werde da irgendie nicht schlau draus. Vielen 
Dank
Gruß Bernd
Gast #431600
Lesenswert?
• ▲
▼
Einen Codeschnipsel habe ich gerade nicht zur Hand, aber der A/D-Wandler 
muß über das entsprechende Konfigurationsregister zunächst eingeschaltet 
werden, und dann kann man eine einzelne oder kontinuierliche Umsetzung 
starten. Die Ergebnnisse werden aus zwei zusammengehörigen 8-bit 
Registern (Low und High-Byte) ausgelesen. Es gibt natürlich auch ein 
Statusbit, bzw. einen Interrupt, wenn der A/D-Wandler mit einer 
Umsetzung fertig ist.

Signal an PA0 ist richtig. VCC an AVCC ist richtig, wenn die 
Digtal-Versorgung sauber ist. Ansonsten LC-Filter dazwischen. ARef kann 
5V (Betriebsspannung), 2.55V (interne Referenz, dann Pin unbeschaltet 
lassen, muß in entsprechendem Register konfiguriert werden) oder eine 
externe Spannung nach Wahl sein, die dem obersten möglichen Meßwert des 
ADC entspricht.

Ich könnte vielleicht noch ein Codebeispiel in C auftreiben... falls ich 
es noch finde. Ist aber für einen mega32. Der mega8535 sollte aber 
ähnlich sein.
Gast #431615
Lesenswert?
• ▲
▼
Vielen Dank erstmal.

Habe mittlerweile folgende Register aus dem Datenblatt lesen können:

ADSCRA was aus folgenden Bits besteht:
7    6    5     4    3    2     1     0
ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

ADEN 1 -> AD Wandler ist an 0 -> AD Wandler ist aus
ADSC 1 -> Startet die AD Wandlung und setzt danach auf 0
ADATE ???
ADIF 1 -> AD Wandlung ist fertig
ADIE 1 -> ADC Interrupt ist aktiv
ADPS2-0 - Teilungsfatkor einstellen für ???

SFIOR besteht aus:
8     7     6     5 4    3   2    1
ADTS2 ADTS1 ADTS0 - ACME PUD PSR2 PSR10

ADTS0-2 - Einstellen von Free Runing mode, ???, ???, ...
ACME ???
PUD ???
PSR2 ???
PSR10 ???


ADCL und ADCH speichert den Digitalen Wert des Signals
#433370
Lesenswert?
• ▲
▼
Hi,

so jetzt hab ich noch ein Problem. Habe jetzt den Wert im Register 
stehen. Nur wie kann ich mit diesem Rechnen. Der Wert im Register soll 
eine Dezimalzahl darstellen die dann mit einer Konstanten (mit 4 
Nachkommastellen) multipliziert wird und dann noch eine 2 Konstante 
abgezogen wird. Anschließend  möchte ich den so erhaltenen Wert so 
umwandeln das ich ihn über ein lcd ausgeben kann. Also in Ascii 
codierung. Wie mach ich das? Hat da vielleicht schon jemand bischen Code 
wo man sich das anschauen kann. Bitte in Assembler.

Gruß Bernd
Gast #433418
Lesenswert?
• ▲
▼
zuerst befindet sich in den Regitsern nur der Zählerwert den der A/D 
brauchte um die angelegt Spannung mit der Referenzspannung zu 
vergleichen.
Also nimm den Wert un errechne daraus die Spannung.
Zählerwert * ( Ref. Spannung / Auflösung )
Dann kannst du Deine Konstanten ins Spiel bringen.
Ich würde ganzzahlig arbeiten weil einfacher und schneller.
Dann muß alles in ASCI gewandelt werden. Und schon ist es geschafft.

Beispiele dafür gibts hier wohl reichlich. ( Suchfunktion )
Gast #433697
Lesenswert?
• ▲
▼
> ARef kann 5V (Betriebsspannung)...

Bitte nicht! Das ist ein Fehler, der bei vielen Leuten, die noch mit den 
alten AVRs (AT90S-Serie) gearbeitet haben, immer noch in den Köpfen 
feststeckt. Die aktuellen AVRs (Mega, Tiny usw.) besitzen allesamt 
intern die Möglichkeit, die Betriebsspannung AVCC als Referenz 
einzustellen. An den AREF-Pin gehört in den meisten Fällen lediglich ein 
kleiner Kondensator (s. Datenblatt) und sonst nix. Einzige Ausnahme: 
Wenn eine Referenzspannung verwendet werden soll, die nicht intern vom 
µC zur Verfügung gestellt werden kann, dann ist diese an AREF 
anzuschließen.
#434347
Lesenswert?
• ▲
▼
@johnny.m
Jein! Ich weiss zwar was du meinst, aber AREF kann 5 Volt 
(spitzfindigkeit). Du meinst, das bei den aktuellen AVR´s AVCC oder die 
internen 2,56 Volt an den A/D-Wandler gelegt werden können, die damit 
auch an AREF liegen. In diesem Fall liegt am AREF-Pin halt nur ein 
Kondensator.Aber, wenn man die internen Referenzen abschaltet, kann man 
auch eine externe (präzisions-) Referenz von 5 Volt anlegen.Ich find es 
aber sehr gut, dass du darauf aufmerksam gemacht hast. Die Leute sollten 
erst mal ins Datenblatt sehen.
Gast #434377
Lesenswert?
• ▲
▼
@Jörn:
Es geht mir um die Aussage 5V *(Betriebsspannung)*! Und die (AVCC) kann 
intern als Referenz ausgewählt werden und sollte deshalb nicht extern an 
AREF angelegt werden. Eine 5V-Präzisionsreferenz ist etwas völlig 
anderes, da diese nunmal nicht der Versorgungsspannung entspricht. 
Deshalb kein "Jein", sondern ein klares "Nein"! Die Präzisionsreferenz 
fällt unter "Ausnahmen" (siehe letzten Satz in meinem ersten Posting).

Eine Sache habe ich allerdings vergessen, zu erwähnen: Wenn man die 
interne Referenzspannung auch extern benötigt, dann kann man sie am 
AREF-Pin abgreifen.

Gruß

Johnny

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.