433 MHz Schaltkanalübertragung
Von einem Modellbaukollegen wurde ich gefragt ob es wohl möglich sei einfache Schaltkanäle mit günstigen (ein Paar kostet unter einem Euro) 433 MHz Sender und Empfangsbausteinen zu übertragen. Hintergrund ist die Übertragung von einer LKW Zugmaschine zum Trailer. Durch die Möglichkeit diesen abzukoppeln, sollte eine Funklösung her. Generell sind natürlich auch andere Anwendungen denkbar.
Nachdem meine ersten Versuche erfolglos blieben eine stabile Kommunikation zwischen Sender und Empfänger auszubauen (alle 100ms wurden die 8 Schalterstellungen als einzelner 8bit-Wert gesendet), wurde das Internet bemüht.
Zuerst einmal fand ich den Hinweis, dass der 433 MHz Empfänger bei 5V Spannungsversorgung vermehrt Störungen verursacht, was sich über eine Messung nachvollziehen ließ, so dass ich dessen Spannungsversorgung über zwei Dioden reduziert und sein Ausgangssignal per 10k Pull-up Widerstand gegen 5V wieder auf ein für den PIC notwendiges Spannungsniveau angehoben hatte – hier war meine Vermutung (nicht geprüft), dass der Empfänger wie zumeist üblich aktiv Minus schaltet und ansonsten nur seine Versorgungsspannung über einen weiteren Pull-up Widerstand auf den Ausgang legt. Beide Modifikationen erwiesen sich am Ende aber als nicht relevant und wurden wieder zurückgebaut.
Generell werden die Module von vielen Bastlern mit Atmega-Mikrocontrollern eingesetzt. Hier gibt es fertige Bibliotheken („Virtual Wire“, …) mit denen es leicht ist eine stabile Kommunikation aufzubauen. Für den von mir bei meinen PIC-Mikrocontrollern verwendeten C-Compiler habe ich so etwas aber leider nicht gefunden.
Letztlich stieß ich auf folgendes Bild, welches das Problem erklärte:
Wie man sieht (Vergleich des orangenen und grünen Signals) gibt es keinen stabilen Kommunikationskanal zwischen Sender und Empfänger, sondern der Empfänger muss sich bei jeder „Kontaktaufnahme“ des Senders erst wieder auf diesen synchronisieren und benötigt dafür mehrere Impulse (Datensignale) bzw. verliert in der Synchronisationsphase einige Signale. Diese Eigenschaft hat zur Folge, dass man den einzelnen Wert, der den Schalterstellungen entspricht, entweder wesentlich schneller als meine 100ms und zudem ständig übertragen muss oder eine Sequenz vor die eigentliche Nutzdatenübertragung vorschaltet, die dem Empfänger die Möglichkeit gibt sich mit dem Sender zu synchronisieren.
Da ich einerseits eine stetige Übertragung eines einzelnen Wertes nicht garantieren kann – der PIC soll ja nebenbei ja auch noch andere Aufgaben erledigen – und ggf. noch weitere Daten zur Übertragung vorhanden sein können, habe ich mich für die zweite Variante entschieden. Als „weitere Daten“ wird derzeit eine abgewandelte Kopie des eigentlichen Wertes gesendet, die es erlaubt eine Fehlererkennung durchzuführen.
Seitdem funktioniert der Prototyp ohne Probleme. Ohne zusätzliche Antennen (17cm) sind Übertragungsstrecken von einigen Zentimetern zu erreichen. Bei Verwendung von nur einer Antenne am Empfänger waren es einige Meter. Glaubt man den Berichten aus dem Internet, so sind bei Verwendung von zwei Antennen mehrere 100m möglich.
Testaufbau mit Prototypen (links: 433 MHz Encoder mit MS-Encoder und 433 MHz Sender; rechts 433 MHz Empfänger und 433 MHz Decoder mit MS-Decoder)