RC5-Infrarot-Fernbedienung

Jede Stereoanlage lässt sich heutzutage mit einer Fernbedienung bedienen, weshalb natürlich auch mein Selbstbau-Verstärker eine bekommen muss.

Prototyp der Fernbedienung
Prototyp der Fernbedienung

Grundlagen

Fast alle Fernbedienungen für Fernseher und Stereoanlagen funktionieren heute per Infrarot. Das heißt aber noch nicht, dass auch jede Fernbedienung mit jedem Gerät funktioniert. Es kommt auf das Protokoll an, das die Fernbedienung verwendet, um dem Gerät Befehle zu übermitteln. Fast jeder Hersteller verwendet da eine Eigenentwicklung. Eines der wenigen standardisierten und bekannten Protokolle ist das von Philips entwickelte RC5.

RC5 überträgt mit einem Tastendruck ein 14 Bit langes Datenpaket. Dabei sind die ersten zwei Bits Startbits, die immer 1 sind, dann folgt das Toggle-Bit (damit lässt sich eine dauerhaft gedrückte Taste vom mehrfachen Betätigen der selben Taste unterscheiden), dann 5 Bits für eine Geräteadresse (damit sich mit der Fernbedienung für den Fernseher nicht auch gleichzeitig der Receiver angesprochen fühlt) und 6 Bit für einen Befehl an das Gerät.

Bei der Übertragung von Daten wird das Infrarotlicht mit einer Frequenz von meistens 36kHz (manchmal auch 38kHz) getaktet, damit der Empfänger es von Umgebungslicht unterscheiden kann. Die Bits werden dann biphasenkodiert übertragen. Das heisst, jedes Bit besteht aus zwei Teilen, einer Übertragungsphase in der IR-Licht (mit 36 - 38 kHz moduliert) gesendet wird und einer genau so langen Pause, in der kein Licht ausgesendet wird. Für ein 1-Bit wird zunächst die Pause abgewartet und dann gesendet, für ein 0-Bit genau umgekehrt erst gesendet und dann die Pause abgewartet.

Timing des RC5-Protokolls
Timing des RC5-Protokolls

Ein Bit ist immer genau 1,8ms lang, das heisst, die Sendephase und die Pause dauern jeweils 900µs. Damit ist die Übertragung der 14 Bit nach ca. 25ms abgeschlossen. Das Protokoll sieht aber vor, dass höchstens alle 114ms ein Datenpaket übertragen wird.

Aufbau

Da der Verstärker nicht viele Funktionen hat, die gesteuert werden sollen, hat der Prototyp der Fernbedienung erst einmal nur 5 Taster. Ein Tastendruck weckt den für die Fernbedienung verwendeten Microcontroller (Atmel ATTiny 2313) aus dem Power-Down-Modus auf, so dass der entsprechende Befehl gesendet werden kann. Danach geht der Controller direkt wieder in den Sleep-Modus, um möglichst wenig Strom zu verbrauchen (ca. 0,5uA).

Schaltplan des RC5-Senders
Schaltplan des RC5-Senders

Die Infrarot-LED (LD274) wird über einen Transistor (BC337) angesteuert, da sie im Impuls-Modus wesentlich mehr als die von einem Portpin des Controllers gelieferten 20mA verkraften und so "heller" leuchten kann.

Die Tasten sind jeweils mit einem Portpin verbunden, dessen interner Pull-up-Widerstand aktiviert ist. Zusätzlich zieht der Taster über eine Diode den Eingang für den externen Interrupt auf low, um so den Controller aus dem Schlafmodus zu wecken. Die jeweils zwischen Taster und Portpin geschalteten Widerstände dienen dem Schutz des Controllers und haben einen Wert von 1kOhm. In meinem Prototyp-Aufbau habe ich sie zunächst weggelassen.

Der Transistor zur Ansteuerung der Infrarot-LED hängt über einen 1KOhm- Widerstand an einem Output-Pin des Controllers. Die Led wird durch den Transistor angesteuert. Ihr Maximalstrom wird durch einen 6,1-Ohm-Widerstand begrenzt. In dieser Konfiguration und mit einem TSOP1736 als Empfänger schafft man so eine Reichweite von etwa 10m.

Code

Der Code besteht im wesentlichen aus einem Initialisierungsteil, in dem die Hardware-Timer konfiguriert werden, einem Interrupt-Handler für die Taster und einem Interrupt-Handler für den Bit-Timer, der dafür sorgt, dass ein Bit nach dem anderen übertragen wird. Die 36kHz-Modulationsfrequenz wird ebenfalls von einem Timer erzeugt, so dass der Controller - auch während ein Datenpaket gesendet wird - kaum etwas zu tun hat (siehe auch).

Im Power-Down-Modus wird der Oszillator des Controllers abgeschaltet. Wird der Controller durch einen Tastendruck aufgeweckt, so läuft er mit 8MHz, denn mit geringerer Taktfrequenz könnte man die Modultationsfrequenz und Bit-Zeiten nicht so exakt einhalten.

Links

Download des Source-Code: remote-control-20061019.tar.gz

LinkedIn logo mail logo