Hallo an alle Praktiker und Theoretiker, es geht mir um meinen Optotransistor (Bestandteil eines Optokopplers mit AC-Eingang, der Nulldurchgänge der Netzspg. detektieren soll - Beschaltung s. Anhang). Der Optotransistor schaltet komischerweise nur im "Leerlauf" durch, also nur, wenn es NICHT an den INT0-Eingang meines ATmega16 angeschlossen ist. Ein normaler NPN-Transistor (sitzt daneben) funzt wie im Lehrbuch und erzeugt korrekt Interrupt's. Ist ein Optotransistor funktionsmäßig also etwas anderes, als ein normaler NPN-Transistor? Oder liege ich hier ganz falsch (und mein OK an falscher Stelle)? Ratlos, Richard
Kann es sein, dass PD2 als Ausgang geschaltet ist? Ein BC639 wird mit den 40-50mA, die so maximal aus dem Controllerpin herauskommen fertig. Der Transistor im Optokoppler jedoch nicht. Gruss Jadeclaw
Aber Danke! Danke Jadeclaw, deine Vermutung war ganz richtig - der PIN war auf Ausgang geschaltet! Jetzt funktioniert alles prima. Nochmals danke, Richard
Hmm... Es scheint jedoch so, dass bei der Verwendung des BC639 der INT-PIN, anders als bei dem Fototransistor, auf Ausgang geschaltet sein MUSS, denn sonst wird bei mir nicht jeder Interrupt erkannt! Initialisierung (OK an PD2, BC639 an PD3): ldi temp, 0b11111111 out DDRD, temp out PORTD, temp cbi DDRD, 2 Oder liege ich wieder falsch? Gruß Richard
Eher nicht, ich habe Deine Initialisierung jetzt nicht nachgesehen, MAch mal eingang und aktiven Pullup, das sollte funktionieren. Gruß, Holm
> Mach mal eingang und aktiven Pullup, das sollte funktionieren.
Habe ich mehrmals so probiert (mit und ohne Pullup) - aber dann kriege
ich nur flackernde Lichter (eins meiner Testobjekte ist eine
Lichterkette).
Auf den Oszi-Bildern (s.Anhang) sieht man, dass dann auch die
Transistorimpulse sich ändern - bei eingestelltem Eingang (Problemfall)
werden sie schmaler.
Ist es Energietechnisch etc. überhaupt von Belang, ob Aus- o. Eingang
eingestellt ist - oder ist die Hauptsache, dass das ganze
funktioniert?
Gruß Richard
Es ist von Belang, da ein Ausgang, der periodisch gegen Masse kurzgeschlossen wird, dazu führt, dass irgendwann der Controller abraucht. Deshalb ist es wichtig, dass der INT0 als Eingang gesetzt wird. Die Kurvenform rechts zeigt auch durch die besseren Flanken den korrekten Zustand an. Wenn es jetzt flackert, muss ggfs. das Timing im Programm etwas angepasst werden (evtl. ein leichtes Delay). Gruss Jadeclaw.
Danke, Jadeclaw, für die Hintergründe! Ich habe das Problem behoben - es lag tatsächlich nur am Programm! Danke nochmals! Richard
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.