Hallo zusammen. Ich hab ein Problem mit einem TSOP 1740. Der TSOP macht was er will, ich versteh das einfach nicht. Ich habe folgende einfache Schaltung (siehe Anhang). Ich wollte erst mal so weit kommen, dass die LED aus geht, wenn ein IR-Impuls kommt. Ist ja eigentlich nicht schwer. Wenn ich aber folgenden Code benutze: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> #include <stdint.h> #include <avr/delay.h> #include <avr/signal.h> #include <stdbool.h> static void io_init(void) { PORTA =0xff; //eingänge DDRA = 0x0; // PortB PORTB = 0x0; //ausgänge DDRB = 0xff; // PortC PORTC = 0x0; //ausgänge DDRC = 0xff; // PortD PORTD = 0xff; //eingänge DDRD = 0x0; ACSR = 0x80; } void interruptinit(void){ MCUCR = 0xF;//(1<<ISC11) | (1<<ISC10); GICR = (1<<INT0); //| (1<<INT1); } SIGNAL(SIG_INTERRUPT0) { PORTB = 0x00; } int main(void) { io_init(); interruptinit(); PORTB = 0x1; on = true; while(1) { } return(0); } Damit sollte doch die LED ausgehen, wenn ich einen IR-Impuls erzeuge, z.B. mal auf meine Fernbedienung vom TV drücke. Das Problem ist aber, dass die LED gar nicht an bleibt. Irgendwas stört den TSOP. Wenn ich einschalte, bleibt die LED kurz an, dann geht sie wieder aus. Wenn ich meine Schreibtischlampe direkt auf den TSOP richte (damit mein ich, dass die Glühbirne min. 10cm davor sein muss), dann bleibt die LED so lange an, bis ich auf ne Taste von der Fernbedienung drücke. => die Schaltung und die Software müsste eigentlich stimmen. Was ist da los?!?! Hab jetzt schon viel über den TSOP gelesen und immer wieder gelesen, dass man den normal nicht entstören muss. Kann mir jm. weiter helfen, was da faul sein könnte??? Danke!
Must du die Interrupts nicht noch freigeben (sei oder sowas)? Werner
Wenn das die tatsächliche Beschaltung ist? An Reset des Mega 10k 0,1µ Zwischen VCC und GND nahe am Mega 0,1µ An den TSOP so nah wie möglich zwischen VCC und GND zusätzlich 0,1µ AVCC beschalten? Wenn Port A verwendet wird. Wie sieht die Stromversorgung aus? C direkt am Spannungsregler?
Wenn du ne LED vom Portpin gegen GND schaltest, geht sie aus sobald du den Pin auf 0 setzt. Änder den Wert in der INT Routine mal auf 0xFF und versuch es nochmal ;-)
Hallo Andreas, ich glaube, das Übel kommt vom 10K Widerstand zwischen TSOP-Ausgang und Masse. Der TSOP besitzt intern zwischen Vcc und Ausgang einen Widerstand mit 80K (Pull Up). Bei Deinen 10K gegen Masse bleibt kein Ausgangssignal mehr übrig. Das Ausgangssignal des TSOP ist low-aktiv. Im Ruhezustand liegt der Ausgang auf Vcc. Lösung: Den 10K Widerstand ersatzlos entfernen. Gruß Michael
Häng mal ein Oszilloskop direkt an den Ausgang des TSOP und Du wirst das Verhalten verstehen... Der TSOP schraubt die Signalverstärkung hoch, sobald er kein Signal empfängt. In diesem Zustand ist so ziemlich jede IR-Quelle ein Sender, Du bekommst permanent Peaks. Die Schreibtischlampe "blendet" den TSOP, dadurch fährt er die Verstärkung runter - und schon klappts. Du wirst die IR-Codes der Fernbedienung richtig dekodieren müssen, damit es wirklich klappt.
Hallo zusammen. Erst mal DANKE für eure Hilfe! Da ich leider kein Oszilloskop hab, kann ich mir das leider nicht anschauen, klingt aber logisch und würde auch das Phänomen mit der Schreibtischlampe erklären. Wenn ich nur den Widerstand entferne, bringt das leider keinerlei Verbesserung. Hab mich eben mal hingesetzt und von Thomas Kaiser inspiriert ein Timer eingebaut, der überprüft, ob in einer halben sec mehr als 14 IR-Impulse kommen (glaub mich daran zu erinnern, dass eine Philips Fernbedienung 15Impulse sendet). Des Weiteren hab ich noch ein Kondensator mit 4,7mykroF an Plus / Minus meiner Spannungsquelle gehängt. Das Ergebniss von dem ganzen überrascht mich sehr. Wenn ich mit dem eben beschriebenen Programm den Kondensator weg lasse, hab ich immer noch das gleiche Phänomen, wie die ganze Zeit. TSOP macht, was er will. Wenn ich den Kondesator dran habe, dann schaltet er nicht mehr, sondern nur noch, wenn er ein IR-Signal von meiner Fernbedienung bekommt (also das sind ja mehrere, wenn ich eine Taste drücke...). Jetzt kommt aber das ABER: Die LED schaltet nicht einfach aus, sondern wird erst ca. ne viertel sec dunkler und dann geht sie aus. Gleiche, wenn ich die dann wieder anschalte. Fäng an zu leuchten, aber nicht so hell und wird dann auf ein Schlag ganz hell... Kann mir das jm. erklären? Kann der ganze Spuk von meiner Spannungsquelle herkommen? Sollte ich vllt mal einen größeren Kondensator parallel zur Spannungsquelle schalten, z.B. 100nF, könnte das was bringen? Habe leider kein da, muss erst kaufen, aber was meint ihr???
Wenn schnell getaktete ICs wie der AVR nicht jeweils mit einem eigenen Kondensator in unmittelbarer Nähe entstört sind, gibt es lustige Muster auf den Versorgungsleitungen... siehe Anhang Faustregel: 100nF in induktivitätsarmer Bauart an jeden Versorgungsanschluss, plus nen zentral sitzenden großen Elko...
Also direkt parallel an den GND, Vcc Anschluss vom AVR ein 100nF Kondensator und dann noch einen direkt vor die Spannungsquelle?! Was verstehst du unter 'großen' Elko??? Also anders kann ich mir das auch nicht mehr erklären, ist nämlich wirklich sehr komisch. Die LED geht in 2 Helligkeitsstufen aus, bzw. an. Sprich, wenn sie an ist und ich drück, wirds dunkler, dann aus (passiert in ca. 1/4 sec). Wenn ich anschalte, das gleiche, nur anders rum. Was auch interessant ist, manchmal geht die LED gar nicht aus, sondern wird nur dunkler und dann gleich wieder hell??????? Oh man, ich bin als Laihe total überfordert *gg. Super, dass ihr mir alls so helft. Ich probiere das jetzt also mal mit Kondesatoren aus, wenn mir also noch jm. schreiben würde, was mein Vorredner mit einem 'großen' Elko meint, wäre ich glücklich :)
100µ sollten für das bisschen fast schon reichen, 220µ erst recht. Die LED wird übrigens nicht dunkler, sondern die blinkt!
Zeige auch mal deine Stromversorgung, dann kann man etwas genauere Auskunft geben. Am besten den kompletten Schaltplan wenn es nicht gerade ein Labornetzteil ist. Bei einfachen Netzteilen rechnet man 1000µ je Ampere.
Hi! Also es ist ein Labornetzteil. Der Schaltplan ist der ganze Schaltplan. Vcc und GND gehen an ein Netzteil, das auch ~5,0 - 5,2V eingestellt ist. Das die LED blinkt dacht ich mir beinahe ;), weil es geht ja nur entweder 0, bzw. 5V :). Aber warum zum Kuckuck blinkt die LED... Kann das mit dem Kondensator zusammen hängen? Ich werde also morgen mal 2 Kondensatoren kaufen (2 * 22µF) und dann mal einen parallel zum Netzteil und dann noch eine parallel zum Controller. Meint ihr, dann wird's besser??? Kann am Netzteil was sein?
Timer-Interrupt? Interrupt-Maske? Stimmt da wirklich alles? Ich denke, dass hier eher die Software schuld ist. Klemm den TSOP mal ab und klemm den Pin direkt nach GND, wenn's dann noch immer blinkt ist's der Code
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.