LED als Sensor

Gast #2093575
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
Persönliche Seite #2093583
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren