Forum: Mikrocontroller und Digitale Elektronik Atmega32 AD-Wandlung Ref-Spannung


von Jürgen (Gast)


Lesenswert?

Hallo,

ich weis, das Thema wurde schon oft durchgekaut, aber ich werde aus dem 
Datenblatt einfach nicht schlau.

Zur Hardware:
Attmega32, versorgt über 7805.
Die Spannung von dem 7805 soll auch als Ref-Spannung für den AD sein.

Wie bewerkstelliege ich das am einfachsten? Im Datenblatt wir was von 
Spulle und Kondensator gezeichnet. Hier im Forum sind manchmal nur 
Kondensatoren.
Wie funktionierts?

Danke für die Hilfe?

von Rick M. (rick00)


Lesenswert?

Hallo!

Kommt darauf an, wie genau AREF sein soll.
Am einfachsten nimmst Du die interne AREF. (2,56V oder AVCC)
Die interne Referenzspg. ist aber sehr ungenau -> siehe Datenbaltt 
hinten unter electrical characteristics.

Muß AREF genau sein, dann nimm z.B. einen LM336.
Weiters sollte der ADC von der Versorgungsspg. entkoppelt werden.

Gruß Rick

von Jürgen (Gast)


Lesenswert?

Das heist ich schließe AVCC an VCC und das wars. Muss also nicht noch 
irgendwie AREFF mit Kondensator oder so verbinden?
Das hat mich verwirrt. Im Datenblatt steht: AVCC with external capacitor 
at AREF pin.
Das ADMUX-Register beschreibe ich dann so: REFS1 0 und REFS0 auch 0.
Richtig?

Folgeadermassen wollte ich ADC0 beschalten:
VCC verbunden mit NTC 10k. Anderes Ende an ADC0. ADC0 mit 10k nach GND.

von karadur (Gast)


Lesenswert?

Hallo

laut Datenblatt 10uH zwischen VCC und AVCC. Von AVCC nach GND 100nF.

NTC an AVCC nicht an VCC. AREF an AVCC  über MUX.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen schrieb:
> Das heist ich schließe AVCC an VCC und das wars. Muss also nicht noch
> irgendwie AREFF mit Kondensator oder so verbinden?

Ja solltest du.

> Das hat mich verwirrt. Im Datenblatt steht: AVCC with external capacitor
> at AREF pin.
> Das ADMUX-Register beschreibe ich dann so: REFS1 0 und REFS0 auch 0.
> Richtig?

AVR-Tutorial, Abschnitt ADC

von Jürgen (Gast)


Lesenswert?

karadur schrieb:
> AREF an AVCC  über MUX.

Was meinst Du mit MUX?

Na dann mus ich mal schauen wo ich 10mH herbekomme.

von karadur (Gast)


Lesenswert?

Hallo

uH nicht mH. Du kannst mit REFS1=0 und REFS0=1 AVCC als Referenz 
einstellen. An ARef muß dann 100nF nach GND.

von Jürgen (Gast)


Lesenswert?

karadur schrieb:
> uH nicht mH.

Entschuldigung, Tippfehler.

karadur schrieb:
> Du kannst mit REFS1=0 und REFS0=1 AVCC als Referenz
> einstellen. An ARef muß dann 100nF nach GND.

Die uH brauch ich denoch?

Sorry, für die nervigen Fagen.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen schrieb:

> karadur schrieb:
>> Du kannst mit REFS1=0 und REFS0=1 AVCC als Referenz
>> einstellen. An ARef muß dann 100nF nach GND.
>
> Die uH brauch ich denoch?

Wenn du es ganz sauber un dkorrekt machen willst, ja dann brauchst du 
sie.

Die Sache ist die.
An AREF stellt dir der µC die benutzte Referenzspannung zur Verfügung, 
mit der Bitte, diese so gut als möglich zu glätten und zu stabilisieren. 
Im einfachsten Fall klemmst du da 100nF drann und das reicht dann auch 
schon. Wenn du es ganz genau haben willst, dann machst du auch noch die 
Spule drann.

von Jürgen (Gast)


Angehängte Dateien:

Lesenswert?

Danke, diese Erklärung hat mir sehr weiter geholfen.
Jetzt verstehe ich besser wieso.

Hab etwas weiter gemacht und diese Schaltung zusammen gelötet.

Außerdem habe ich etwas Programm zusammen gedichtet.
Datei versuch1 funktioniert. Auf dem Display erscheint die Ausgabe der 
Variable adergebnis.

Datei versuch funktioniert nur bedingt.
Die Ausgabe ist 16 Nullen. Das sieht für mich so aus als würde der AD 
nicht laufen.

Kann bitte jemand drüber lesen.

Danke

von Jürgen (Gast)


Lesenswert?

Kann mann den Tittel dieses Threads ändern?
Passt Ihrgendwie nicht mehr. Oder muss ich ein neues aufmachen?

von spess53 (Gast)


Lesenswert?

Hi

>Datei versuch funktioniert nur bedingt.
>Die Ausgabe ist 16 Nullen. Das sieht für mich so aus als würde der AD
>nicht laufen.

Versuchst du etwa damit

>ADCSRA |= (1<<ADEN);

den ADC zu starten?

MfG Spess

von Jürgen (Gast)


Lesenswert?

Ja schon. Ist das falsch?

von spess53 (Gast)


Lesenswert?

Hi

>Ja schon. Ist das falsch?

Wie wäre es mit:

ADCSRA |= (1<<ADSC);

MfG Spess

von Jürgen (Gast)


Lesenswert?

Danke. Es funktioniert.
Damit aktiviere ich ihn nur. Starten tuh ich in so:    ADCSRA |= 
1<<ADSC);
DAAAANNNNKKKKEEEEE :-)

von Jürgen (Gast)


Lesenswert?

Ups, jetzt at sich was überschnitten.
Nochmals danke.
Thread kann geschlossen werden

von spess53 (Gast)


Lesenswert?

Hi

Nachtrag: Du solltest aber 'ADEN' trotzdem in deiner ADC-Init setzen. 
Sonst läuft nichts.

MfG Spess

von Jürgen (Gast)


Lesenswert?

Schon geschehen.
Läuft.

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.