Der  Sparrow als IR-Fernbedienung       

Elektronik-Labor  Projekte  AVR                  




LED-Kerze 43-995IR3

Diese mechanisch defekte LED-Kerze mit IR-Empfänger war der Anlass für eine Entwicklung einer Infrarot-Fernbedienung. Die originale Fernbedienung konnte ich mir leihen und die Signale analysieren.



Das Protokoll kannte ich vorher nicht. Das Gerät sendet mit 38 kHz. Am Anfang steht ein langer Impuls, später folgen dann kurze Impulse mit 0,55 ms Länge unter unterschiedlichen Pausen mit 0,55 ms oder 1,65 ms. Ich dachte erst, dahinter muss eine besonders stromsparende Technik für den Batteriebetrieb stecken. Aber im Leerlauf braucht die Schaltung etwas über 1 mA, was auch mit Standard-IR-Empfängern und einem ATtiny zu schaffen wäre.




Die Fernbedienung kennt nur zwei Kommandos, An und Aus. Teilt man die Impulse in Bytes ein, sind die ersten beiden Bytes gleich, die letzten beiden unterscheiden sich.



"An"



"Aus"

Das ganze lässt sich relativ einfach in Bascom nachprogrammieren. Es zeigte sich aber, dass mit etwas Verzögerung noch weitere einzelne Impulse kommen, die anscheinend auch wichtig sind.  Nach einigen Versuchen ist es gelungen eine funktionierende Fernbedienung auf der Basis des Sparrow zu bauen. S1 und S2 schalten die LED-Kerze ein und aus. Die Infrarot-LED wurde direkt und ohne Vorwiderstand an B1 angeschlossen. Das ist wegen der extrem kurzen Impulse erlaubt. Die Strombegrenzung ergibt sich aus dem Innenwiderstand des Ports. Für eine größere Reichweite wäre ein Leistungstransistor besser.

Download: Sparrow_IR_Fernbedienung.zip

'Sparrow_IR_Kerze.bas

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4

Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
Config Portb = &B000011010

Dim D As Byte
Dim T As Byte
Dim N As Byte

Declare Sub Ir550us
Declare Sub Ir6600us
Declare Sub Irsendbyte

Do

If S1 = 0 Then
Ir6600us
Waitms 5
D = 1 : Irsendbyte
D = 254 : Irsendbyte
D = 88 : Irsendbyte
D = 167 : Irsendbyte
Ir550us
Waitms 40
Ir6600us
Waitms 2
Ir550us
Waitms 100
Ir6600us
Waitms 2
Ir550us
Waitms 2000
End If

If S2 = 0 Then
Ir6600us
Waitms 5
D = 1 : Irsendbyte
D = 254 : Irsendbyte
D = 160 : Irsendbyte
D = 95 : Irsendbyte
Ir550us
Waitms 40
Ir6600us
Waitms 2
Ir550us
Waitms 100
Ir6600us
Waitms 2
Ir550us
Waitms 2000
End If

Loop

Sub Ir6600us
For T = 1 To 252
Led1 = 1
Waitus 2
Led1 = 0
Waitus 7
Next T
End Sub

Sub Irsendbyte
For N = 1 To 8
For T = 1 To 21
Led1 = 1
Waitus 2
Led1 = 0
Waitus 7
Next T
Waitus 550
If D > 127 Then Waitus 1100
Shift D , Left
Next N
End Sub

Sub Ir550us
For T = 1 To 21
Led1 = 1
Waitus 2
Led1 = 0
Waitus 7
Next T
End Sub


Elektronik-Labor  Projekte  AVR