Der DCC-Servodecoder wurde zur Ansteuerung von Servos auf der Modellbahnanlage entwickelt. Er ist hauptsächlich für das langsame und realistische Stellen von Weichen vorgesehen.
Die Schaltbefehle werden in Rocrail ausgelöst und von der Z21 als DCC-Zubehörbefehle übertragen. Das DCC-Signal wird über einen 6N137-Optokoppler galvanisch getrennt und anschließend vom Arduino Mega 2560 ausgewertet.
Der Signalweg lautet:
Rocrail → Z21 → DCC → 6N137 → Arduino Mega 2560 → PCA9685 → Servos
32 Servoausgänge
Da der Arduino die Servos nicht direkt ansteuert, werden zwei PCA9685-Servocontroller verwendet. Jeder PCA9685 stellt 16 PWM-Ausgänge zur Verfügung.
- PCA9685 Adresse 0x40: Servo 1–16
- PCA9685 Adresse 0x41: Servo 17–32
- Insgesamt: 32 Servos
Die beiden PCA9685 werden über den I²C-Bus mit dem Arduino Mega verbunden.
DCC-Adressen
Jedem Servo ist eine eigene DCC-Zubehöradresse zugeordnet. Der Decoder verwendet die Adressen 201 bis 232.
| Servo | DCC-Adresse | PCA9685 |
|---|---|---|
| Servo 1 | 201 | 0x40 / Kanal 0 |
| Servo 2 | 202 | 0x40 / Kanal 1 |
| … | … | … |
| Servo 16 | 216 | 0x40 / Kanal 15 |
| Servo 17 | 217 | 0x41 / Kanal 0 |
| … | … | … |
| Servo 32 | 232 | 0x41 / Kanal 15 |
Jede DCC-Adresse besitzt zwei Schaltzustände. Diese entsprechen den beiden Endpositionen des jeweiligen Servos, beispielsweise:
Position A → Weiche gerade
Position B → Weiche abzweigend
Die beiden Endpositionen werden in der Software festgelegt und können an den benötigten Stellweg angepasst werden.
Langsame Servobewegung
Der Servo springt nicht einfach schlagartig von einer Endposition zur anderen. Die Software bewegt ihn schrittweise zwischen den beiden Positionen.
Dadurch entsteht eine langsamere und für Modellbahnweichen besser geeignete Stellbewegung.
Bei unseren Tests wurden SG90-Servos verwendet.
Technische Daten
| Eigenschaft | Ausführung |
|---|---|
| Steuerung | Arduino Mega 2560 |
| Digitalzentrale | Z21 |
| Steuerungssoftware | Rocrail |
| DCC-Eingang | über 6N137 |
| DCC-Eingang Arduino | Pin 2 |
| Servocontroller | 2 × PCA9685 |
| I²C-Adressen | 0x40 und 0x41 |
| Anzahl Servos | 32 |
| DCC-Adressen | 201–232 |
| Positionen | A / B |
| getesteter Servo | SG90 |
Einsatz
Der Servodecoder entstand als separates Modul für die Ansteuerung von Modellbahnweichen. Die Servos erhalten ihre Befehle direkt über die vorhandene Rocrail/Z21/DCC-Steuerung, sodass in Rocrail jede Weiche über ihre entsprechende DCC-Adresse geschaltet werden kann. Grüne LED: IO
Rote LED: keien DCC Signal
Orange: Daten verarbeiten
