Holgi's RC5-Seite

1 Kanal Sender3 Kanal Sender
Erstmal ein paar zusammenfassende Anmerkungen zu den vielen Anfragen die ich zu RC5 bekommen habe:
RC5 eignet sich NICHT als Lichtschranke um bei Rennen herauszufinden wer der Sieger ist. Zwei oder mehr RC5 Sender stören sich gegenseitig und das Protokoll selbst braucht auch Zeit für die Übertragung. Wenn mehrere Wagen mit RC5 Sender dicht hintereinander ankommen kann es auch gut sein das der zweite zuerst die Stoppuhr auslöst. Infrarot geht nicht durch optische Hindernisse hindurch. Zwei Wagen nebeneinander geht also schon mal gar nicht. Infrarot draußen bei Tageslicht zu benutzen ist keine wirklich gute Idee (die Sonne stört !!). Mit VIEL Glück kommt man dann noch auf 3m Reichweite. Einige fragten ob es möglich sei bei gedrückter Taste dauernd zu senden oder einen Ausgang nur solange zu schalten wie eine Taste gedrückt bleibt. Ist es möglich das ein Ausgang nur für eine bestimmte Zeit aktiv bleibt ? Ja, natürlich geht das alles. Dazu mußt DU SELBST das jeweilige Programm ändern. Ich mache das nicht für dich.

Bei den Empfängern sind TSOP1836 und TSOP1736 angegeben. Du brauchst natürlich nur einen davon.
Welcher von beiden besser ist ? Keine Ahnung.

Nachdem ich den RC5 Tester fertig hatte habe ich mich gleich daran gemacht auch einen Sender selbst zu bauen. Den ersten Versuch habe ich mit einem PIC16F873 gemacht. Ich benutzte das PWM-Modul um die Sendefrequenz von 36kHz zu erzeugen. Funktionierte prima, aber eigentlich war das ganze viel zu groß für einen einfachen Sender. Die 36kHz lassen sich auch über Warteschleifen mit kleineren PIC's erzeugen. Dabei ist dann eine ganze Familie von Sendern und Empfängern herausgekommen.

1-Kanal Sender mit 16 einstellbaren Codes (PIC12C508)
3-Kanal Sender (PIC12C508)
5-Kanal Sender (PIC16F84)
16-Kanal Sender (PIC16F84)
1-Kanal Empfänger mit 16 einstellbaren Codes (PIC12C508)
12-Kanal Empfänger (PIC16F84)
RC5-Tester zur Anzeige von RC5 Codes auf LCD-Display
RC5 auf 433MHz

Zur Funktion der Sender:
Die PIC's laufen im Sleepmodus solange keine Taste betätigt wird. Der Stromverbrauch liegt dann unter 1uA. Die Schaltung kann also ohne Ausschalter für längere Zeit an der Batterie bleiben. Auch mit 3V Knopfzellen sollte das Gerät sehr lange arbeiten.

Wenn eine Taste gedrückt wird, werden fünf RC5-Impulsfolgen im Abstand von 50ms gesendet. Das sollte für den Empfänger reichen um den Code zu empfangen. Danach geht der PIC wieder in den Sleepmodus. Es gibt keine Wiederholfunktion für die Tasten. Dadurch wird vermieden das die Batterie entladen wird wenn eine Taste ungewollt ständig betätigt wird. Alle Sender benutzen den Gerätecode 29 um Videorecorder-, Fernseher- oder CD-Player nicht zu stören.

!! Achtung !!
Im Gegensatz zu "normalen" RC5 Fernbedienungen ändere ich das Togglebit nicht bei jedem beliebigen Tastendruck. Jede Taste besitzt ein eigenes Togglebit. Dadurch wird das schalten für den Empfänger einfacher. Es ist deshalb nicht möglich die Empfänger mit einer RC5-Fernbedienung zu benutzen ! Es geht nur mit meinen Sendern.

Für kurze Entfernungen kann die LED auch direkt über R2 (dann 150 Ohm oder größer) gegen Masse angeschlossen werden. Mit der vorgeschlagenen Endstufe beträgt der Strom ca. 100mA. Einige meiner Fernbedienungen pusten bis zu 250mA durch die LED. Bei 5V könnte zur Erhöhung der Sendeleistung eine zweite LED in Reihe zu LED1. R1 wird dann 22 Ohm. 
 


 1-Kanal Sender mit 16 einstellbaren Codes

1-Kanal RC5 Sender

Brenndatei und Quellcode in C, Schaltplan und Board für Eagle3.5

Über J0-3 kann der Kommando-Code der gesendet werden soll im Binärcode von 0-15 eingestellt werden. Vor jeder Sendung werden die Jumper abgefragt. Der zu sendende Code kann also auch ohne Neustart des PIC's z.B. durch eine zusätzliche Schaltung geändert werden. Als Takt für den PIC benutze ich hier den internen RC-Oscillator. Der ist präziser als ich erwartet hatte. Zwischen 3V und 5V gibt es keine Probleme mit dem Empfänger. Bei 2,5V (2xNiCd Zelle) klappt es aber nicht immer. Auch bei extremen Temperaturen könnte es Probleme geben. Es muß dann ein Quarzoszillator an GP4,5 angeschlossen werden. Die Anzahl der einstellbaren Codes sinkt leider auf vier. Quellcode und Brenndatei reiche ich bei Bedarf nach.


 3-Kanal Sender

3-Kanal RC5 Sender

Brenndatei und Quellcode in C, Schaltplan und Board für Eagle3.5

Der Sender sendet die Codes 5,6,7. GP4,5 sind offen und werden nicht benutzt. Nur GP0,1,3 haben interne Pullups und können den PIC aus dem Schlaf aufwecken. Für den Oscillator gilt dasselbe wie beim 1-Kanal Sender. GP4,5 sind aber noch frei. Also kein Problem.


5-Kanal Sender

5-Kanal Sender

Brenndatei und Quellcode in C, Schaltplan und Board für Eagle3.5

Obwohl an PORTB noch Eingänge frei sind werden nur PORTB0,4,5,6,7 benutzt. Der PIC kann nur von diesen Eingängen über einen Interrupt aus dem Schlaf geweckt werden. Daher die maximal fünf Tasten. PORTB4,5,6,7 haben interne Pullups. Der Eingang an PORTB0 hat keinen internen Pullup-Widerstand. Deshalb wird ein externer benutzt. PORTB0 liefert den Code 3 und PORTB4-7 die Codes 4-7 eben.


 1-Kanal Empfänger mit 16 einstellbaren Codes

1-Kanal RC5 Empfänger mit 16 Codes

Brenndatei und Quellcode in C, Schaltplan und Board für Eagle3.5

Dieser Empfänger ist als Gegenstück zum 1-Kanal Sender gedacht, kann aber auch mit den anderen Sendern verwendet werden. Er ist geeignet wenn nur ein einzelnes Gerät geschaltet oder nur eine Funktion ausgeführt werden soll, z.B. Licht an/aus, Zentralverriegelung auf/zu. Mit den Jumpern können die Codes 0-15 eingestellt werden werden.


 12-Kanal Empfänger

12-Kanal RC5 Empfänger

Brenndatei und Quellcode in C, Schaltplan und Board(ungeroutet) für Eagle3.5

Dieser Empfänger kann 12 Kanäle mit den Codes 0-11 auswerten. Für schaltbare Steckdosenleisten z.B.

Vieleicht sollte ein Ausgang wieder als Empfangsanzeige verwendet werden. Ist doch immer praktisch anzuzeigen ob der Sender auch wirklich sendet.


16-Kanal Sender

16-Kanal Sender

Quellcode, HEX- und Eagle Dateien.

Diese Schaltung sendet 16 RC5 Codes von 0-15. Gerätecode ist wieder 29. Die Grundidee wie die Schaltermatrix funktioniert ist von Heinz Landauer. Ich hab sie noch ein wenig ergänzt. Der PORTB-Change Interrupt ist aktiv. RB0..3 liegen im Ruhezustand auf 0. RB4..7 werden von den Pullups auf 1 gehalten. Sobald eine Taste gedrückt wird, wird der PIC geweckt und die Matrix wird abgefragt. R7-10 sorgen dafür das beim abfragen der Matrix die Ausgänge RB0..3 nicht kurzgeschlossen werden wenn zwei Tasten gleichzeitig gedrückt sind. Es wäre möglich auch zwei gleichzeitig gedrückte Tasten auszuwerten, das Programm wertet bisher aber nur eine Taste aus. Die Anzahl der Taster könnte auf 28 erweitert werden wenn RA1-3 in die Matrix einbezogen würden. RA4 kann nicht verwendet werden weil das ein OpenDrain-Ausgang ist. Man könnte T1 mit Pullup an RA4 anschließen und RA0 für weitere 4 Taster benutzen. Das wären dann 32 Taster. Allerdings würde dann im Ruhezustand der Pullup an RA4 Strom verbrauchen weil der Ausgang auf 0 liegt wenn nicht gesendet wird ! 


 RC5 mit 433MHz Sende/Empfangsmodulen

433MHz Sender und Empfänger

Code und Brenndateien für alle Sender, Schaltplan für Eagle3.5

Wenn es durch die Wand oder um die Ecke gehen soll ist Infrarot ein wenig ungeeignet. Es sei denn du hängst viele kleine Spiegel in deinen Zimmern auf. Geschlossene Türen sind dann allerdings wieder ein Problem. Die Reichweite ist ohne IR-Booster auf ca. 10m beschränkt. RC5 eignet sich auch für 433MHz Sende/Empfangsmodule (sicher auch für das neue 860MHz ISM Band). In Gebäuden sind dann Reichweiten von ca. 30m möglich. Bei freier Sicht bis 100m !

Hier die lange versprochenen Sende/Empfangsschaltungen für RC5 auf 433MHz. Das Bild zeigt wie die Module an 5V angepasst werden. Bei 3V die Module direkt anschließen. Beim testen des UHF-Man stellte ich fest das die Reichweite ohne Modifikation der RC5 Empfängerprozessoren nicht optimal ist. Ich ändere die Programme noch !
 

Anpassungen:
Die Modulation mit 36kHz fällt weg. Der UHF-Empfänger invertiert die Daten nicht wie der Infrarotempfänger. Das macht jetzt der Sender. Dann können die bisherigen Empfängerprozessoren ohne Programmänderung weiterverwendet werden. Die 1-Phase vom Startbit wurde von mir verlängert. Warum ? Der einfache Pendel-Empfänger erzeugt Rauschen wenn kein Träger da ist. Das erste Startbit wird oft falsch erkannt. Die lange 1-Phase erzeugt einen gewollten Fehler. Die Abtastung wird neu gestartet und findet sicher das erste Startbit.


Ich entwerfe keine Schaltungen oder Programme für andere. Dazu fehlt mir einfach die Zeit. Bei mir sind keine Bausätze, Platinen oder programmierte Chips zu den Schaltungen erhältlich. 

E-Mail

Zur Startseite