Hallo,
heute möchte ich euch den Roadtrain-Dekoder für das Beier SM-IR-16-2 vorstellen. Der Roadtrain Dekoder basiert auf dem SM-IR-16-2 Dekoder und nutzt die Ausgänge 13 und 14 zur Adressierung für 3 Anhänger/Auflieger („Trailer“).
Benötigt werden je Auflieger/Anhänger:
- Beier Electronic SM-IR-16-2 Lichtmodul
- Beier Electronic IR-RTA Road-Train-Adapter
- Arduino Nano v3 (empfohlen)
- Akku 6-12V
- BEC (wenn Servos angeschlossen werden)
- Platine „Die Schwarze“ (optional)
Der Roadtrain-Dekoder gibt bis zu 2 Schaltausgänge und 2 Servos des SM-IR-16 frei oder sperrt diese in Abhängigkeit von der adressierten ID, welche über den Sender mit den Funktionen „IR: Lauflicht“ (Trailer-ID 1) bzw. „IR: Blitzer/Blinker“ (Trailer-ID 2) ausgewählt wird. Trailer-ID 0 ist immer dann aktiv, wenn keine der beiden anderen IDs ausgewählt wurde.
Für Details zur Auswertung der beiden Ausgänge siehe den Link oben.
Die Schaltausgänge am SM-IR-16-2 müssen mit 100% Helligkeit geschaltet werden und werden entsprechend auch nur als HIGH oder LOW ausgegeben. Die beiden Schaltausgänge könnten z.B. für eine Umpolschaltung mit Relais zur Stützen- oder Rampensteuerung dienen, ein Servo für Bremse und ein Servo für Sattelplatte oder Kupplung.
Für die Servos stehen Ausgänge mit normalem und invertiertem Signal zur Verfügung (natürlich kann man den Sketch auch ändern um 2 Servos synchron zu betreiben).
Es müssen nicht alle Eingänge und damit nicht alle Ausgänge verschaltet werden, noch müssen die Schalt- oder Servosignale zwingend vom SM-IR-16-2 kommen.
Der Sketch ist für die Platine "Die Schwarze" gedacht, kann aber natürlich auch mit eigenen Platinen und anderer Pin-Konfiguration verwendet werden.
Zu beachten ist aber, das der 2. Steuereingang an D3 einen Hardware-Interrupt nutzt. Die PWM Signale für die Servos werden über Pin Change Interrupts an Pin A0 und A1 berechnet.
Über zwei Jumper/Lötbrücken (Pin A2 und A3) wird die Trailer-ID 0 bis 2 festgelegt, welche beim Start des Arduino einmalig eingelesen und kalkuliert wird. Die Trailer-ID is binär kodiert:
- Beide Jumper offen = Trailer-ID 0
- Jumper 1 geschlossen und Jumper 2 offen = Trailer-ID 1
- Jumper 1 offen und Jumper 2 geschlossen = Trailer-ID 2
- Jumper 1 geschlossen und Jumper 2 geschlossen = nicht erlaubt
Die Pins A2 und A3 sind als INPUT_PULLUP deklariert, ein geschlossener Jumper zieht den entsprechenden Eingang auf GND (Masse). Daher wird beim Einlesen der Zustand mit „!“ invertiert, somit ergibt „00“ = TrailerID 0, „01“ = TrailerID 1 und „10“ = TrailerID 2.
Die Trailer-ID wird mit der über das SM-IR-16-2 ausgegebenen ID verglichen um zu entscheiden, welcher Trailer freigeschaltet wird. Andere Trailer werden gesperrt.
Trailer-ID 0 ist immer aktiv, wenn keiner der beiden anderen Trailer ausgewählt ist. Wird z.B. Trailer-ID 1 ausgewählt, dann werden die Signale beim Trailer 1 freigeschaltet und bei Trailer 0 sowie 2 gesperrt. D.h. Änderungen für die Schaltausgänge und Servos werden in Trailer 0 und 2 nicht mehr weitergegeben, der vorherige Zustand bleibt erhalten.
Änderungen im Zustand der Schaltausgänge und der Servosignale bei gesperrten Trailern werden nach deren Aktivierung sofort weitergegeben. Es sollte also darauf geachtet werden, daß die Schaltausgänge und Servos sich im gewünschten Zustand bzw. der richtigen Position befinden bevor ein anderer Trailer adressiert wird, insbesondere bei Trailer 0 der durch Deaktivierung von Trailer 1 und 2 automatisch freigeschaltet wird.
Die externe LED ist mit der LED auf dem Arduino-Board an Pin D13 verbunden und zeigt die folgende Zustände an
... wenn kein Trailer adressiert wurde:
- Sehr schnelles Blinken: Trailer-ID 0 / freigeschaltet
- Schnelles Blinken: Trailer-ID 1
- Doppel-Blinken: Trailer-ID 2
… wenn Trailer 1 oder 2 addressiert wurde:
- An: Trailer-ID wurde ausgewählt / freigeschaltet
- Aus: anderer Trailer ausgewählt / gesperrt
Die externe LED ist optional, je nach Einbau-Position reicht u.U. die LED auf dem Arduino-Board zur Anzeige aus; diese ist vielleicht auch weniger störend als eine zusätzliche LED.