Forum: Mikrocontroller und Digitale Elektronik LED als Sensor


von Eumel (Gast)


Lesenswert?

Hallo alle miteinander. Ich benutze eine LED, also Sensor für eine 
kleine Lichtschranke. Das Licht stammt von einer LED gleicher Bauart.
Dieses Programm wertet das ganze aus.
Es soll einfach eine weitere LED an PB0 eingeschaltet werden, wenn die 
Lichtschranke unterbrochen ist. Auf den Schwellenwert komm ich 
folgendermaßen. Am ADC Pin liegt eine Spannung von ca 0.25V an. Daraus 
ergibt sich bei einem 8bit ADC mit einer Referenz von 1.1V ca ein Wert 
von 50. Wird die Lichtschranke unterbrochen, messe ich 0.05V. 25 Müsste 
als Werte also locker ausreichen.
Problem ist: Das ganze funktioniert nicht. Ich weiß nun nicht ob ich 
beim Aufbau oder im Programm einen Fehler gemacht habe.
Vielen Dank für eure Hilfe.

ps: Controller ist ein Attiny13A

1
.include "tn13Adef.inc"
2
ldi r16, (1<<REFS0) | (1<<MUX0) | (1<<ADLAR)
3
out ADMUX, r16
4
ldi r16, (1<<ADPS2) | (1<<ADPS1) | (1<<ADEN)
5
out ADCSRA, r16
6
ldi r16, (1<<ADSC)
7
ldi r18, 0b00000001
8
ldi r19, 0
9
out DDRB, r18
10
11
12
loop0:
13
out PORTB r19
14
out ADCSRA, r16
15
16
loop1:
17
SBIC  ADCSRA, ADSC
18
rjmp loop1
19
in r17, ADCH
20
cpi r17, 25    <---- Schwellenwert
21
brlo led
22
rjmp loop0
23
24
led:
25
out PORTB, r18
26
rjmp loop0

von Michael G. (linuxgeek) Benutzerseite


Angehängte Dateien:

Lesenswert?

Rauscht wahrscheinlich zu stark oder Du sampelst zu langsam. Schonmal 
mit dem Oskar angeschaut? Und wieso verwendest Du keinen Fototransistor? 
Und das schalten zu wollen mit nur einer einizgen Messung (>= Schwelle) 
funktioniert sowieso nicht gescheit, vor allem nicht wenn Du den 
Messzeitpunkt verpasst. Will damit sagen den ADC in den "free running" 
mode und das ganze dann interrupt-basiert machen.

Kannst Dir ja mal ansehen wie ich es gemacht hab (Wassertropfen 
unterbricht die Lichtschranke). Als Lichtquelle habe ich einen Laser 
verwendet. Hat recht gut funktioniert, haette man aber wohl noch etwas 
tunen muessen.

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.