www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED als Sensor


Autor: Eumel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

.include "tn13Adef.inc"
ldi r16, (1<<REFS0) | (1<<MUX0) | (1<<ADLAR)
out ADMUX, r16
ldi r16, (1<<ADPS2) | (1<<ADPS1) | (1<<ADEN)
out ADCSRA, r16
ldi r16, (1<<ADSC)
ldi r18, 0b00000001
ldi r19, 0
out DDRB, r18


loop0:
out PORTB r19
out ADCSRA, r16

loop1:
SBIC  ADCSRA, ADSC
rjmp loop1
in r17, ADCH
cpi r17, 25    <---- Schwellenwert
brlo led
rjmp loop0

led:
out PORTB, r18
rjmp loop0


Autor: Michael G. (linuxgeek) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

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.