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


von Christian Axtmann (Gast)


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

von harry (Gast)


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

von Axel Rühl (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Christian!

So mache ich das...

Viele Grüße
AxelR.

von A. Arndt (Gast)


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....

von Axel Rühl (Gast)


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.

von Christian Axtmann (Gast)


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.

von harry (Gast)


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

von A. Arndt (Gast)


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

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.