LuK-AS
26.02.2004, 05:42
IR - Empfänger mit einem AT90S2313
Der Aufbau ist supersimpel, einfach den Tsop1736 an einen Eingang des 2313 anschließen und dann mit ein paar Zeilen Code und der 2313er reagiert auf eine handelsübliche TV-Fernbedienung (ich meine diese Universalfernbedienungen).
Das ganze geht natürlich mit allen Controllern.
http://www.cwnet.de/assets/images/IR-Fernbed1.JPG
Auf dem Bild sieht man den AVR und den TSOP an einem Eingang (Portd.6) zur Kontrolle der emfangenen Daten habe ich zusätzlich noch eine LED (links im Bild) angeschlossen die mir anzeigt wenn der AVR einen Tastendruck der Fernbedienung empfangen hat. Im Vordergrund sieht man eine 10 Led-Zeile mit einem Widerstandsnetzwerk. Da zeige ich die Zustände der 8 Port-Pins (PortB.0 bis PortB.7) an. Wenn man auf der FB die “1” drückt geht die erste Led an, bei erneutem Drücken geht sie auch wieder aus usw.
http://www.cwnet.de/assets/images/IR-Empfaenger.jpg
Das Ganze nochmal von oben gesehen, links an der kleinen Klemme habe ich RxD und TxD der Seriellen Schnittstelle herausgeführt um beim Programmieren die Daten der FB auszulesen. Jetzt taucht wahrscheinlich die Frage auf wo der Quarz ist. Hehe, den hab ich unter den IC-Sockel gesetzt, so ist die Schaltung schön klein gehalten.
http://www.cwnet.de/assets/images/IR-Fernbed3.JPG
Das ist die Universalfernbedienung, die ich dazu verwende. Mit dem Suchlauf habe ich solange gesucht bis ich eine Einstellunge gefunden habe auf die der TSOP angesprochen hat. Alles weitere war jetzt ein Kinderspiel.
Hier hab ich mal den Code für den AVR:
$crystal = 3579545
$baud = 4800
$lib "mcsbyte.lbx"
Config Portd = Input
Config Pind.6 = Output
Config Portb = Output
Config Rc5 = Pind.5
Dim A As Integer
Enable Interrupts
Dim Adress As Byte , Command As Byte
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.6 = 1
Do
Getrc5(adress , Command)
Waitms 150
If Adress = 0 Then
Command = Command And &B01111111
Print "Adresse: " ; Adress ; " Command: " ; Command
Gosub Var1
End If
Waitms 50
If Command = 1 Then
Toggle Portb.0
Elseif Command = 2 Then
Toggle Portb.1
Elseif Command = 3 Then
Toggle Portb.2
Elseif Command = 4 Then
Toggle Portb.3
Elseif Command = 5 Then
Toggle Portb.4
Elseif Command = 6 Then
Toggle Portb.5
Elseif Command = 7 Then
Toggle Portb.6
Elseif Command = 8 Then
Toggle Portb.7
End If
Loop
Var1:
Portd.6 = 0
Waitms 50
Portd.6 = 1
Return
Hier ist der Schaltplan für den IR-Empfänger: (zum Vergrößern anklicken)
http://www.cwnet.de/assets/images/IR-Empfaenger_k.jpg (http://www.cwnet.de/IR-Empfaenger.jpg)
Autor Clemens Wagner
Quelle: http://www.cwnet.de
Der Aufbau ist supersimpel, einfach den Tsop1736 an einen Eingang des 2313 anschließen und dann mit ein paar Zeilen Code und der 2313er reagiert auf eine handelsübliche TV-Fernbedienung (ich meine diese Universalfernbedienungen).
Das ganze geht natürlich mit allen Controllern.
http://www.cwnet.de/assets/images/IR-Fernbed1.JPG
Auf dem Bild sieht man den AVR und den TSOP an einem Eingang (Portd.6) zur Kontrolle der emfangenen Daten habe ich zusätzlich noch eine LED (links im Bild) angeschlossen die mir anzeigt wenn der AVR einen Tastendruck der Fernbedienung empfangen hat. Im Vordergrund sieht man eine 10 Led-Zeile mit einem Widerstandsnetzwerk. Da zeige ich die Zustände der 8 Port-Pins (PortB.0 bis PortB.7) an. Wenn man auf der FB die “1” drückt geht die erste Led an, bei erneutem Drücken geht sie auch wieder aus usw.
http://www.cwnet.de/assets/images/IR-Empfaenger.jpg
Das Ganze nochmal von oben gesehen, links an der kleinen Klemme habe ich RxD und TxD der Seriellen Schnittstelle herausgeführt um beim Programmieren die Daten der FB auszulesen. Jetzt taucht wahrscheinlich die Frage auf wo der Quarz ist. Hehe, den hab ich unter den IC-Sockel gesetzt, so ist die Schaltung schön klein gehalten.
http://www.cwnet.de/assets/images/IR-Fernbed3.JPG
Das ist die Universalfernbedienung, die ich dazu verwende. Mit dem Suchlauf habe ich solange gesucht bis ich eine Einstellunge gefunden habe auf die der TSOP angesprochen hat. Alles weitere war jetzt ein Kinderspiel.
Hier hab ich mal den Code für den AVR:
$crystal = 3579545
$baud = 4800
$lib "mcsbyte.lbx"
Config Portd = Input
Config Pind.6 = Output
Config Portb = Output
Config Rc5 = Pind.5
Dim A As Integer
Enable Interrupts
Dim Adress As Byte , Command As Byte
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.6 = 1
Do
Getrc5(adress , Command)
Waitms 150
If Adress = 0 Then
Command = Command And &B01111111
Print "Adresse: " ; Adress ; " Command: " ; Command
Gosub Var1
End If
Waitms 50
If Command = 1 Then
Toggle Portb.0
Elseif Command = 2 Then
Toggle Portb.1
Elseif Command = 3 Then
Toggle Portb.2
Elseif Command = 4 Then
Toggle Portb.3
Elseif Command = 5 Then
Toggle Portb.4
Elseif Command = 6 Then
Toggle Portb.5
Elseif Command = 7 Then
Toggle Portb.6
Elseif Command = 8 Then
Toggle Portb.7
End If
Loop
Var1:
Portd.6 = 0
Waitms 50
Portd.6 = 1
Return
Hier ist der Schaltplan für den IR-Empfänger: (zum Vergrößern anklicken)
http://www.cwnet.de/assets/images/IR-Empfaenger_k.jpg (http://www.cwnet.de/IR-Empfaenger.jpg)
Autor Clemens Wagner
Quelle: http://www.cwnet.de