Zum Inhalt springen

DCC-Servodecoder für 32 Servos

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.

ServoDCC-AdressePCA9685
Servo 12010x40 / Kanal 0
Servo 22020x40 / Kanal 1
………
Servo 162160x40 / Kanal 15
Servo 172170x41 / Kanal 0
………
Servo 322320x41 / 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

EigenschaftAusführung
SteuerungArduino Mega 2560
DigitalzentraleZ21
SteuerungssoftwareRocrail
DCC-Eingangüber 6N137
DCC-Eingang ArduinoPin 2
Servocontroller2 × PCA9685
I²C-Adressen0x40 und 0x41
Anzahl Servos32
DCC-Adressen201–232
PositionenA / B
getesteter ServoSG90

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

Link zum Arduino Code. Alles ohne Gewähr!