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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.