IR-Fernbedienung - der RC-5 Code


zurück zur Elektronik , Homepage

Einleitung
Wie funktioniert eine IR-Fernbedienung?
Funktionstest einer IR-Fernbedienung
Wie ist der RC-5-Code aufgebaut?
Tabelle der RC-5 Codes
Beispiel
Und was hat das alles mit PIC-Prozessoren zu tun?
 

zurück


Einleitung

Auf meinem Wohnzimmertisch liegt eine Grundausstattung von 5 IR-Fernbedienungen für das wichtigste Audio-/Video-Equipment. Manchmal kommen noch 2 weitere für spezielle Fälle hinzu. Da scheint mir das man-machine-interface noch nicht so recht gelungen zu sein.
Ob ein Bastler das Problem lösen kann, erscheint mir zweifelhaft, aber solche Zustände regen immer dazu an, sich mit der Materie etwas tiefer zu beschäftigen.
 
nach oben

Wie funktioniert eine IR-Fernbedienung?

Bei einer IR-Fernbedienung werden Steuerbefehle mit Infrarotlicht der Wellenlänge 940 ...950 nm zum zu bedienenden Gerät übertragen.
Dabei müssen eine große Anzahl verschiedener Befehle sicher übermittelt werden, und außerdem sollte der Sender stromsparend arbeiten, um eine lange Batterielebensdauer zu garantieren.
Wie die Befehle im IR-Licht codiert sind ist leider von Hersteller zu Hersteller völlig unterschiedlich. Manche arbeiten mit einer Pulslängenmodulation, andere mit einer rein digitalen Codierung. Ich konzentriere mich auf den RC-5-Code. Der wird z.B. von Philips, Marantz und Hauppauge eingesetzt und ist auch bei Bastlern sehr beliebt.
 
nach oben


Einfacher Funktionstest einer IR-Fernbedienung

Reagiert ein Gerät nicht auf die Fernbedienung kann man mit Hilfe eines Camcorders schnell testen, ob die Fernbedienung überhaupt IR-Signale sendet. Während das menschliche Auge für das IR-Licht blind ist, nimmt der CCD-Chip der Videokamera des Camcorders dieses Licht wahr. Es eignen sich auch digitale Fotoapparate, die das Bild live mit einem LCD-Display darstellen können oder einfache Web-Cams.

Also einfach den Camcorder auf Aufnahme schalten, die Fernbedienung ins Bild halten und die Tasten der Fernbedienung drücken. Nun sollte der Camcorder das Aufleuchten der Sendediode der Fernbedienung sichtbar machen.

Will man genau wissen, was die Fernbedienung sendet hilft bei RC-5-Fernbedienungen (z.B. Philips) mein RC-5-Fernbedienungstester, der empfangene RC-5-Codes sofort an einer Anzeige ausgibt.
 

nach oben

 Wie ist der RC-5-Code aufgebaut?

RC-5 ist der Fernbedienungscode der Firma Philips, der auch von einigen wenigen anderen Herstellern, z.B. Marantz oder auch Hauppauge (TV-Karten für PC), verwendet wird.
Jeder RC-5-Code besteht aus 14 Bit, die nacheinander an den Empfänger übertragen werden. Das waren ursprünglich: Die Startbits dienen dem Infrarotempfänger zur Synchronisation mit der Übertragung, sowie dazu, seine Verstärkungsregelung auf das Signal einzustellen.
Das Toggelbit ändert seinen Wert bei jedem Tastendruck. Dadurch kann man das lange Drücken einer Taste (und damit das wiederholte Senden eines Befehls) vom wiederholten Drücken der selben Taste unterscheiden.
In den Adressbits ist das zu steuernde Gerät codiert. Es können also 32 verschiedene Geräte gesteuert werden.
Die Kommandobits enthalten das Kommando, das an das adressierte Gerät versendet wird. Damit können erst einmal 64 verschiedene Kommandos pro Gerät übertragen werden.

Irgendwann fiel dann den Philips-Ingenieuren auf, das 64 Befehle für komplizierte Geräte etwas wenig sein könnten. Man brauchte ein weiteres Kommandobit. Im Interesse weitestgehender Kompatibilität, entschied man sich dafür, das zweite Startbit nun nicht mehr als Startbit, sondern als invertiertes 7. Kommandobit zu nutzen. Für die ersten 64 Kommandos ist es "1", als wäre es ein Startbit, für die 64 neuen Kommandos ist es "0". Damit sind nun für jedes Gerät je 128 unterschiedliche Befehle möglich.

Aufbau des RC-5 Datenworts

Wie werden nun die einzelnen Bits übertragen?
Die IR-Fernbedienung besitzt einen 36 kHz-Generator, der die IR-Sendediode ansteuert. Die Sendepulse sind 6,9444 µs lang. Zwischen den Sendepulsen ist jeweils eine Pause von 20,8332 µs.
Für ein Bit mit dem Wert "1" wird der Sendergenerator für 889 µs ausgeschaltet und anschließend für 889 µs eingeschaltet  (entspricht 32 IR-Impulse) . Ein "0"-Bit beginnt dagegen mit 889 µs Sendezeit  (32 IR-Impulse), gefolgt von 889 µs Pause.
Folglich dauert ein Bit 1,778 ms und die Übertragung eines kompletten 14-Bit Datenworts 24,889 ms.
Falls man die Taste auf der Fernbedienung gedrückt hält, wird das Datenwort alle 113,778 ms wiederholt (entspricht der Dauer von 64 Bit).

Wer sich dieses Timing mal genauer anschaut wird feststellen, das alles auf dem 36 kHz-Grundtakt aufbaut. Aber natürlich muss man das Timing nicht auf die dritte Stelle nach dem Komma genau einhalten.

In der Regel wird man zum Empfang solcher Signale einen speziellen Empfängerchip (SFH506-36 oder TSOP1736) verwenden, der die empfangenen 36-kHz-modulierten Signale in elektrische Signale wandelt. Dabei ist der Ausgang dieser Empfänger low, wenn IR-Strahlung empfangen wird. Es ergeben sich die oben blau dargestellten elektrischen Signale.


Nötige Präzision des Timings
Ich habe die Timings hier mit einer Genauigkeit von bis zu 4 Nachkommastellen angegeben. Wie genau muss man diese Timings in der Praxis einhalten? Genaue Angaben habe ich dazu nicht gefunden, ich empfehle aber Abweichungen der Bitlänge von mehr als 1% und Fehler beim 36-kHz-Takt von mehr als 5% zu vermeiden.

Modulationsfrequenz:
Die Empfängerchips besitzen sehr schmalbandige 36-kHz-Frequenzfilter. Schon eine Abweichung der Modulationsfrequenz um 10% vermindert die Empfindlichkeit des Empfängers auf etwa die Hälfte. Eine Abweichung von 5% begrenzt den Empfindlichkeit auf vertretbare 90%. Die 36 kHz sollten also um maximal 5% vom Sollwert abweichen. (32,4 ...39,6 kHz)

Bitlänge:
Das RC5-Protokoll ist 14 Bit lang. Es ist ein asyncrones Protokoll. Der Empfänger erkennt den Protokollanfang, und liest dann die Bits in einem festen Rythmus aus dem Protokoll. Die Rythmen von Sender und Empfänger dürfen nicht so stark von einander abweichen, dass sie innerhalb des Protokolls um mehr als ein halbes Bit auseinanderlaufen. Ein halbes Bit entspricht 3,6% einer Übermittlung. Da sowohl Sender wie auch Empfäner Toleranzen haben, sollte jeder der beiden Partner maximal 1,8% Timingfehler haben. (1,760 ... 1,795 ms pro Bit)

nach oben


Tabelle der RC-5-Codes

Geräteadressen: (dezimal)
00
TV1
01
TV2
02
Teletext
03
Video VD
04
Video LV1
05
VCR1
06
VCR2
07
experimental
08
Sat-Receiver
09
Kamera
10
Sat-Receiver 2
11
12
CDV (Video-CD)
13
Camcorder
14
15
16
Audio-Vorverstärker 1
17
Receiver / Tuner
18
Audio Tape Recorder
19
Audio-Vorverstärker 2 / experimental
20
CD-Player
21
Plattenspieler
22
23
DAT-Tape, MD-Recorder
24
25
26
CDR
27
28
29
Beleuchtung
30
Beleuchtung 2
31
Telefon

Allgemeine Kommandos: (dezimal)

00
"0"
01
"1"
02
"2"
03
"3"
04
"4"
05
"5"
06
"6"
07
"7"
08
"8"
09
"9"
10
11
12
Standby
13
Mute
14
Voreinstellungen
15
16
Volume +
17
Volume -
18
Helligkeit +
19
Helligkeit -
20
Farbe +
21
Farbe -
22
Bass +
23
Bass -
24
Höhen +
25
Höhen -
26
Balance rechts
27
Balance links
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Pause
49
50
<<
51
52
>>
53
Play
54
Stop
55
Aufnahme
56
57
58
59
60
61
62
63
Systemauswahl

Für jedes Gerät gibt es außerdem spezielle Kommandos.

nach oben


Beispiel

Um die Lautstärke eines TV-Gerätes zu erhöhen muss man für das Gerät "TV1" das Kommando "Volume +" aussenden.
Die Geräteadresse für den TV1 lautet 0 - als fünfstellige Binärzahl  also "00000".
Das Kommando "Volume +" wird mit 16 kodiert - als 6-stellige Binärzahl also "010000". Das zusätzliche 7. Bit wird nicht benötigt.
Damit ergibt sich das 14-stellige Datenwort "11 1 00000 010000", wobei die Lücken nur der deutlicheren Darstellung dienen. Das ganze Datenwort wird natürlich ohne Lücken übertragen.

(In dieser Abbildung ist das obere digitale Signal das vom Empfängerchip ausgegebene Signal. Es ist also dann high, wenn keine Pulse gesendet werde, und low, wenn die Fernbedienung Pulse sendet.)

Gerät TV1,  Kommando Volume +

nach oben


Und was hat das alles mit PIC-Prozessoren zu tun?

Die Fenbedienungen beruhen auf Impulsen, die sich vergleichsweise einfach mit PIC-Prozessoren erzeugen oder analysieren lassen. Wenn man also auf diesem Gebiet bastelt, bieten sich Lösungen mit PICs an.

Zum Beispiel ein RC-5-Fernbedienungstester, der empfangene RC-5-Codes sofort an einer Anzeige ausgibt.

Zum Beispiel eine einfache RC-5-Fernbedienung.
 

nach oben

zurück zur Elektronik , Homepage

Autor: sprut
erstellt: 2002
letzte Änderung: 16.07.2009