mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Wie kann ich mit dem ATMega8 analoge Spannungen messen?


Autor: Christian Axtmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo erstmal!

Ich bräuchte dringend mal Hilfe. Ich hab das hier beschriebene Tutorial
nachgebaut und kann jetzt nicht mehr länger warten:

Kann mir mal bitte jemand erklären, wie ich analoge Spannungen messen
kann? Ich hab schon das Datenblatt studiert aber daraus bin ich nicht
so richtig schlau geworden. Am besten mit Anschlussschema. Ich
programmier übrigens mit FastAVR, wär schön wenn mir jemand sagen
könnte, wie ich damit die Werte einlesen kann.

Gruß Christian

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ganz 'mundgerecht' wird's wohl nich laufen.

1. zu messende spannung an adc(x) legen (wo der is: datenblatt)
2. sicherstellen, dass der adc-input nur 0-5v abkriegt,
   evtl. spannungsteiler
3. adc konfigurieren, in bascom wäre das:
   "config adc = single , prescaler = auto , reference = internal"
4. adc auslesen, in bascom:
   "start adc : Y = getadc(x) : stop adc"
5. wenn du'n display dranhast: "lcd 'Wert ist: '+str(Y)"

das war's schon, in Y findest du eine zahl (0-1023) die dem
eingangswert in bezug auf die interne referenz (2,56v) entspricht.
der adc-eingang darf trotzdem bis 5v bekommen, er liefern oberhalb
2,56v halt immer den wert 1023 ab.

gruss und schönes proggen, harry

Autor: Axel Rühl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian!

So mache ich das...

Viele Grüße
AxelR.

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Axel,

ziemlich aufgebauscht ein Prog, programmiere auch in FASTAVR und evtl.
will Christian mal klein anfangen...

$Device= mega8      ' used device
$Stack = 28        ' stack depth
$Clock = 3.6864      ' adjust for used crystal
$Source= On        ' basic source in Asm
$baud = 19200
dim a as word
start adc

do

a = adc(2)
print "Wert : ";a

loop




....so sollte es erstmal für den Anfang gehen.

P.S.: Ich dachte schon, es gibt nahezu niemanden, der auch etwas mit
FASTAVR macht.

Evtl. kann man ja ein Forum nur für FASTAVR eröffnen....

Autor: Axel Rühl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genau, alle machen,wenn in BASIC, dann mit Bascom. Da hat man immer
Angst, die anderen zu langweilen...

Achso Christian,
der A. hat natürlich recht! Mein Prog ist 1zu1 rauskopiert aus meinem
Projekt, wenn du erst mal mit dem Beispiel vom A. spielen möchstest...
der wert a wird, wie gesagt, zwischen 0 und 1023 angezeigt. Später kann
mans dann auch nach Volt umrechnen.
Gruß
AxelR.

Autor: Christian Axtmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

anke erstmal für die Antworten! So langsam hab ichs raus. Ich hab auf
meinem Layout vergessen den Pin ARef anzuschließen. Hab auf irgendeiner
Site gelesen, dass man ihn auf +5V hängen soll. Und siehe da, schon
konnte ich den ADC auslesen. Wens interessiert, hier ist mein erstes
Prog:

$Device= m8
$Stack = 32
$Clock = 4
$Baud = 9600

Dim in As Integer

Start Adc

Do
in = Adc(0)
Print in
WaitMs 750
Loop

Was bedeutet eigentlich "Start Adc"? Heißt das nur, dass ich den
PortC auf ADC umschalte, oder dass er in dem Moment ne Messung
durführt? Bei mir funktioniert es auch, wenn ich "Start Adc"
außerhalb der Do ... Loop Schleife hinschreibe. Wenn ich aber mit der
Wartezeit mal runtergeh auf so ca. 500ms (= 1/2 s) dann krieg ich immer
nur noch ungefähr den selben Wert.

Gruß Christian


PS: Bin irre froh, dass es noch ein paar Leute gibt, die auch in
FastAVR programmieren. Kam mir bisher immer so einsam vor.

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohgottohgottohgott grusel grusel,

den aref kannste zwar auf +5v hängen, sollteste aber nich, wenn deine
messung was taugen soll.
aref ist die spannung, mit der die zu messende spannung verglichen
wird, sollte also im idealfall absolut sein.
der avr hat 'ne interne referenz, die ist ganz brauchbar, dann sollte
nur 'n 100nf an aref gegen gnd gehängt werden. oder du erzeugst die
'ne richtig suppistabile ref und gibst die auf aref.
geht natürlich auch mit 5v, aber wackelt die, wackelt auch dein
messwert.

fastavr find ich ja auch ganz cool, nur woher nehm ich denn die
$stack-angabe? wie wird die kalkuliert?

gruss, harry

p.s. bascom hat auch so seine ecken und kanten, soll kein
'statussymbol' sein

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Start ADC heisst nur, dass die ADC eingeschaltet sind und später mit x
= adc(Channel) angesprochen werden können.

Gruss
Alexander Arndt

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.