mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik gepulste Lichtschranke will nicht.


Autor: Ralf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich  möchte mit einem CNY70 Reflexkoppler eine Zeitmessung für
eine H0 Autorennbahn realisieren.

Um Fremdlicht auszuschliessen Pulse ich die IR LED mit einer
Frequenz von 31kHz. Diese erzeuge ich, in dem ich mit einem AVR
Mega88 den Timer0 nutze. Getaktet wird der Timer durch den I/O Clock.
compare match Interrupt bei 124 schalted die IR LED ein, ein Overflow
Interrupt des Timer0 schaltet die LED aus. In diesen Interrupts
schaue ich jeweils vor dem Umschalten der LED, wie der Status der
Photodiode ist. Wurden 10 gültige Impulse registriert, soll eine
Statusled angehen.

ich kann den Takt der IR-LED und der Photodiode mit dem Frequenzmesser
meines Multimeters messen, die Interrupts funktionieren also.
Leider wird die Statusled nicht eingeschaltet.

Ich habe auch schon eine direkte Drahtverbindung probiert, auch ohne
Erfolg. (hier habe ich die IR LED funktion invertiert, da die "echte"
IR Led ueber einen NPN getrieben wird, der empfänger aber ja open 
collector ist ...).

Ungetaktet funktionert das ganze (simples IN temp, PHOTODIODE OUT PORTB, 
temp). Also der CNY70 ist auch in Ordnung.

Eventuell hat hier jemand ja einen Tipp für mich?

Der Programmcode ist im Anhang.

Viele Grüße
Ralf

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Also ich habe mir dein Programm jetzt nicht angesehen, aber ich habe den 
CNY70 erst vor kurzem in den Fingern gehabt. Das Teil funktioniert nur 
bei sehr kleinen Entfernungen (2-3mm). Und auch dann nur bei gut 
reflektierenden Flächen. Versuch mal als Reflektor ein Stück einer alten 
CD. Damit hatte ich die besten Ergebnisse.

MfG Spess

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Spess,

ohne das "komplizierte" Programm funktioniert das ganze ja.
Ich habe einfach die IR Led eingeschaltet, den Photodiodenport
eingelesen und auf dem Portb, wo ich LEDs dran habe
ausgegeben ...

Trotzdem danke für deine Mühe.

Viele Grüße
Ralf

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich habe nochmal dein Programm überflogen. Du benutzt einen 8Bit-Timer 
ohne Vorteiler. Andrerseits hast du eine Reihe von Software-Delays (das 
würden hier schon einige als oberste Stufe des Frevels bezeichnen) in 
den Interruptroutinen. Pauschal würde ich sagen: Deine Interruptroutinen 
sind ganz einfach zu lang. Hast du das Ganze schon mal mit dem Simulator 
getestet?

MfG Spess

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.