Armins AVR-Buch - Analoge_Sensoren_auswerten

⇑Analoge_Sensoren_auswerten


(armin77, 14.02.2013, 14:13:45)

Möchte in diesem Beitrag zeigen, wie man analoge Sensoren auswertet.
Habe an mein Projektboard einen Spannungsteiler aus Festwiderstand und LDR angeschlossen.
Man kann diese Schaltung aber genauso mit einem temperaturabhängigen Widerstand aufbauen.
Ein LDR ist ein lichtabhängiger Widerstand. Der Widerstand wird immer geringer je mehr Licht drauf scheint.
Als Vorgabewert habe ich das interne Poti des Boards benutzt.
Es gibt eine Spannung zwischen 0 und 5V auf den Analogeingang des AVR. Also Werte zwischen 0 und 1023.
Wenn der Analogwert des LDR den Vorgabewert des Potis übersteigt wird eine LED eingeschaltet
die sich ebenfalls auf dem Projektboard befindet.

Hier die benutzte Versuchsschaltung:

Bild terminal2.JPG

Deckt man den LDR z.b. mit dem Finger ab, wird sein Widerstand größer.
Die Spannung am Analogeingang des Spannungsteilers wird bei dieser Schaltung geringer.
Fällt der Analogwert (Spannung) des Spannungsteilers unter den des Potis (Vorgabewert) geht die LED aus.
Ansonsten ist die LED an.

Habe den Versuchsaufbau auf meinem Projektboard mit einem ATmega 8 gemacht.
Auf dem Bild ist mit den Pfeilen das interne Poti als Vorgabewert und die LED als Ausgabe "Soll>Ist" makiert.
Links neben dem Board ist die 5V Spannungsversorgung zu sehen

Bild terminalplan_002.jpg

Hier ein Detailfoto des Spannungsteiler aus Festwiderstand und LDR.
Ebenfalls auf dem Bild ist der Entstörkondensator für die Referenzspannung des AVR zu sehen.

Bild terminalplan_003.jpg



Dieses Programm habe ich benutzt.

$regfile = "m8def.dat"
$Crystal=1000000
$hwstack=40
$swstack=16
$framesize=32
$baud = 2400 'Baudrate serielle Schnitstelle

Dim Vorgabewert As Word 'Vorgabewert mit Poti
Dim Ldr As Word 'Analogwert LDR
Config Portb.1 = Output 'LED

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Analog Digital Wandler konfigurieren

Do
Vorgabewert = Getadc(5) 'Analogwert Poti einlesen
Ldr = Getadc(1) 'Analogwert LDR einlesen
Print "Vorgabewert: " ; Vorgabewert 'Analogwert Poti über serielle Schnittstelle ausgeben
Print "LDR: " ; Ldr 'Analogwert LDR über serielle Schnittstelle ausgeben
If Ldr > Vorgabewert Then 'Wenn Analogwert LDR größer ist als Wert Poti
Portb.1 = 1 'LED einschalten
Else 'ansonsten
Portb.1 = 0 'LED ausschalten
End If
Wait 1

Loop
End




Hier die Ausgabe der Analogwerte über das Terminal Programm in Bascom

Bild terminal.jpg