Startseite
Modellbahn
Modellbau
       


Für meine zukünftige Modellbahnanlage, derzeit habe ich eine kleine ältere N-Bahnanlage, habe ich beschlossen, die neue Anlage digital zu fahren und zu steuern. Entschieden habe ich mich eindeutig für das DCC-Protokoll.
Bei der Realisierung soll so viel wie möglich an elektronischen Komponenten im Selbstbau über die Bühne gehen.
Für Tests und Erfahrungssammlung, auch für den Geländebau, habe ich erst einmal eine Teststrecke, bis jetzt eine abzweigenden Strecke mit Weiche und Signal, aufgebaut. Hier ist auch die Stromversorgung und der Booster untergebracht. Der ganze Aufbau bietet genug Platz entwickelte Baugruppen unterzubringen und anzuschließen.

Seit dem Servos aus dem Modellbausektor zu günstigen Preisen angeboten werden,
die preiswertesten kosten um die 5 Euro, ist ihre Verwendung auch für die Ansteuerung von Weichen, Flügelsignalen, Schranken, Toren und sonstigen beweglichen Teilen im Modellbahnbereich eine kostengünstige Alternative geworden.
Besonders die beliebige Einstellung der Stellgeschwindigkeit, des Stellhubes und der Möglichkeit der Konfiguration von Rückwippfunktionen, macht den Einsatz von Servos im Modellbahnbereich attraktiv. Deshalb habe ich den DCC-Servo-Zubehördecoder DCC-SRV01, für das bei der digitalen Modellbahnsteuerung weit verbreitete DCC - Protokoll, entwickelt.



  • die Baugruppe versteht das von der NMRA standardisierte digitale DCC Format, nähere Info unter:  NATIONAL MODEL RAILROAD ASSOCIATION
  • alle Funktionen werden durch den Anschluss am Programmiergleis über CV-Variablen programmiert
  • 8 völlig unabhängige Servoansteuerungen
  • 8 beliebig zu den Servos zugeordnete Schaltausgänge für LED's, Lampen, Relais usw.
  • jedes Servo ist in seinen beiden Endpunktlagen beliebig einstellbar
  • alle Servos und Schaltausgänge sind reversibel einstellbar
  • für alle Servos ist die Stellgeschwindigkeit in jede Richtung separat einstellbar
  • bei jedem Servo ist ein Rückschwingen mit beliebig einstellbaren Hub separat von jedem Servoendpunkt einstellbar
  • bei jedem Servo ist die Anzahl der Rückschwingungen separat für jeden Servoendpunkt einstellbar
  • von einem beliebigen Servoendpunkt kann eine im Hub einstellbare Endlosschwingung konfiguriert werden
  • die zeitliche Aktivität nach Erreichen einer Endpunktlage kann bei jedem Servo separat eingestellt werden und kann auch für Dauerbetrieb konfiguriert werden (Stromaufnahme beachten)
  • der letzte Stand des Servos kann in den EEPROM geschrieben werden, dass ist wiederum für jedes Servo separat einstellbar
  • jedes Servo kann eine Gruppe mit einem anderen Servo bilden, zum Beispiel zur Ansteuerung von dreibegriffigen Signalen
  • NEUE VERSION 5
  • Bei den 8 Schaltausgänge kann ab Vers. 05 über einen CV–Wert entschieden werden, ob beim Einschalten der letzte Zustand des Schalters eingenommen werden soll
    Ab Vers.05 wird der Schalterzustand erst in der Mitte der Servobewegung geändert



Der Aufbau der Schaltung ist auf Grund der Verwendung einer einseitigen Leiterplatte in den Ausmaßen 100 X 75 mm im Grunde genommen unkompliziert. Es werden nur handelsübliche Bauelemente, die überall beschaffbar sind, verwendet.Der Zubehördecoder basiert auf dem ATMEL Mikrocontroller ATmega8.
Die Schaltung und die Layoutvorlage stehen als EAGLE- Dateien, hier der Link, zur Verfügung.
Hier der Download zur Schaltung 

DCC_Servovo.sch
und Layout 

DCC_Servo.brd
.


Die Schaltung weist keine Besonderheiten auf. Für die Stromversorgung der Servos und der aktiven Schaltung werden getrennte Spannungsregler eingesetzt, um die Einflüsse der Servomotoren auf die Schaltung zu minimieren.
Zur Spannungsversorgung der Schaltung sollte ein Trafo von 6 bis 9 V~ Verwendung finden.
Beim Anschluss des DCC - Signals braucht keine Polarität beachtet zu werden.
Die Servos werden dreipolig an den Pfostensteckern angeschlossen, die Steckverbindung entspricht Graupner JR aus dem Modellbausektor. Sind beim Betrieb des Servozubehördecoders mit Servos Störungen bemerkbar, kann parallel zur Servostromversorgung ein großer Kondensator geschalten werden. Sollen mehrere Servos gleichzeitig laufen, ist selbstverständlich ein ausreichend dimensionierter Trafo mit der entsprechenden Strombelastbarkeit zu verwenden.
An der Klemmverbindung der Schaltausgänge SV2, SV3 erfolgt der Anschluss der zu schaltenden Bauelemente. Dabei ist selbstverständlich auf die Spannungsverträglichkeit der jeweiligen angeschlossenen Verbraucher zu achten. Das können Relais, Lampen oder auch LED's sein.
Der Anschluss des Decoders am DCC-Signal sollte gleich unmittelbar am Boosterausgang erfolgen. Wird der Decoder irgendwo am Gleis angeschlossen, kann es durch fahrende Loks beim Decoder zu Einleseproblemen kommen, es werden Befehle schlecht oder gar nicht erkannt.
Betreffs des Nachbaus der Schaltung kam dankenswerterweise auch der Hinweis, den Widerstand R3 zwecks Verbesserung des Einlesens der DCC - Signale, auf die Hälfte zu verkleinern.


Nachfolgend der Bestückungsplan nicht maßstabsgerecht

Bestückungsplan

Unten ist die aufgebaute Schaltung zu sehen

Musterplatine

Ist die Schaltung aufgebaut, muss nun der ATMEL Mikrocontroller gebrannt werden.
Vorher gibt es aber noch etwas zu beachten. Beim verwendete Mikrocontroller ist im Auslieferungszustand die interne Taktfrequenz mit 1MHz  aktiviert.
Wird der Flashspeicher und das EEPROM ohne Änderungen der so genannten FUSE-Bits beschrieben, wird das Programm nie laufen. Deshalb sind die entsprechenden FUSE-Bits zu setzen. Dazu muss man einen Blick in das Datenblatt werfen. Für das Setzen der Taktfrequenz und Anschwingverhalten des Quarzes sind die Bits CKSEL1 ...CKSEL3 unter Einbeziehung von CKSEL0 und SUT0...1  relevant. Nun hängt es von der verwendeten Programmersoftware ab, ob die Bits einzeln gesetzt werden müssen oder wie im unteren Bild zu sehen, alles komfortabel über eine Textauswahl erfolgt.
Mehr zum Thema Fusebits ist unter wiki.elektronik-projekt.de zu finden.
Das vorliegende Programm setzt die Verwendung eines 12 MHZ Quarzes vorraus.
Es ist auch das so genannte Brownout-Detection zu aktivieren. Sinn dieser Aktivierung ist es, den Mikrocontroller zu einem Reset bei Unterschreitung einer Mindestspannung, auch einer sehr kurzzeitigen Unterschreitung, zu überreden. Das Reset ist besser, als mit einem unkontrollierten Programmablauf fertig zu werden.
Als Abschaltspannung hat man die Wahl zwischen 2 Werten, es werden 2,7 V genommen.
Die unten stehende Abbildung verdeutlicht die vorzunehmenden Einstellungen.



MikrocontrollereinstellungenVerwendet wurde zu dieser Darstellung der AVRprog. Mit jeden anderen Programmer ist das auch möglich. Zu dieser Thematik sind im WEB schon viele Beiträge geschrieben wurden. Einen Einstiegslink findet man unter:
Mikrocontroller.net

Nach Aufbau und Überprüfung der Schaltung, können die unten im Download stehenden Programmdateien zum Mikrocontroller übertragen werden, das sind die Dateien DCCServo.hex und DCCServo.eep.

Es gibt zwischenzeitlich eine überarbeitete Version, unter anderem mit der Beseitigung des Anlaufens von Servos beim Einschalten der Versorgungsspannung und auch mit der Möglichkeit von Servogruppenbildung, für z.B Ansteuerung von dreibegriffigen Signalen. Weiterhin ist es in der neuesten Version 05  mögich, zu entscheiden, ob beim Einschalten der letzte Schalterzustand eingenommen werden soll oder nicht. Der Schalterzustand ändert sich bei dieser Version erst bei Ablauf der Hälfte der Servostrecke.

Hier der Download   

 DCC-SRV01Vers_05.zip
, mit den entsprechenden Erleuterungen.

Eine ausführliche aktualisierte Beschreibungs - und Bedienungsanleitung als PDF-Datei ist hier 

Bedienungsanleitung.pdf
 zu finden.
In dieser Anleitung ist auch eine detaillierte Beschreibung und Programmieranleitung aller verwendeten CV - Werte enthalten.





Servogruppierung

Jeder beliebige Servoausgang kann mit einem anderen Servo zu Gruppen zusammengefasst werden. Dazu hat jeder Servoausgang einen eigenen CV-Wert, also ein Decoder 4 CV-Werte für Gruppierungen.
Durch die Zusammenfassung von 2 Servoausgängen besteht z.B. die Möglichkeit dreibegriffige Flügelsignale anzusteuern.
Im unteren Beispiel ist die Einstellung für einen derartigen Fall mit den entsprechenden CV-Werte Eistellungen dargestellt.

Konfiguration der CV# Werte

Konfiguration im AnwendungsprogrammDie entsprechenden Einstellungen für ein Flügelsignal mit den Signaldarstellungen Hp0, Hp1 und Hp2 sind links am Beispiel der SRCP- Clientsoftware von dargestellt.Für die Ansteuerung Hp2 werden bei  Einstellungen in der Clientsoftware Railyplan Version 2.0 und den oberen CV-Wert Einstellungen 2 Servos aktiv, bei Hp1 ist ein Servo in Bewegung.



In Betrieb genommen wurde die Baugruppe immer unter Einbeziehung einer aktiven Lok mit DDC - Lokdecoder.
Da ich nicht im Besitz einer Zentraleinheit bin, wurde mit der PC-Software DDL (Digital Direct for Linux) die erste Umgebung aufgebaut.
Diese Software beinhaltet den Daemon erddcd v1.5.1 mit der SRCP-Versionsnummer srcp0.7.3. Installiert wurde diese Software unter SUSE - Linux 9.3.
Für die graphisch aufbereitete Ansteuerung von Weichen und Signalen wird das Programm SpDrS60 für Linux in der Version 0.4.8 verwendet.
Die CV - Programmierung erfolgt mit dem Programmer nmra_programmer 0.5.40, welches ein einfaches im Textmodus zu bedienendes Softwaretool zum Setzen, Auslesen und Vergleichen von CV -Werten ist. Diese Software ist im Paket von DDL (Digital Direct for Linux) enthalten.

Sehr schön wird die Baugruppe auch mit einer unter Windows betriebenen Software angesteuert. Verwendung findet das Programm DDW, welches die Portierung von DDL ist.
Hier wird genau wie schon bei DDL mit dem SRCP-Protokoll gearbeitet.
Für die graphisch aufbereitete Ansteuerung von Weichen und Signalen wird unter Windows das Programm Railyplan Version 2.0
verwendet.
Bei diesem Programm kann auch eine handelsübliche Infrarotfernbedienung zu Steuerungsaufgaben verwendet werden.
Die CV-Programmierung unter Windows lässt sich sehr schön mit dem Programm Railyprog durchführen.
Dieses CV-Programmiertool verfügt über eine graphische Oberfläche und arbeitet genau wie schon bei DDL und DDW mit dem SRCP-Protokoll.

Unten zur Verdeutlichung  die Darstellung der Anwendungsumgebung


Bemerkungen zur CV Programmierung:
Der Decoder wird bei der Programmierung der CV Werte, wie auch im Normalbetrieb über den Booster angesteuert. Dessen digitale Ausgangsspannung beträgt ca. plus/minus 18V. Für diesen Spannungspegel ist die Eingangsbeschaltung auch ausgelegt. Bezüglich anderer Zentralen, also nicht die Softwarelösungen DDL oder DDW, gab es Informationen, dass die Ansteuerung der Servos zwar funktioniert, aber die CV-Programierung Probleme macht.
Sollte die CV-Programmierung bei manchen Zentralen nicht funktionieren und die CV-Programmierung nicht über den Booster erfolgen, kann ich mir vorstellen, dass eventuell der Eingangspannungspegel des Servodecoders nicht ausreichend ist.
Erster Vorschlag wäre hier den Widerstand R3 experimentell zu verkleinern.
Eine weitere Möglichkeit ist, den Eingang mit dem Optokoppler OK1 ganz zu umgehen, in dem der Eingang PD2 des Mikrocontrollers über einen Widerstand und Z-Diode (4,7 bis 5,1V) angeschlossen wird. Die Z-Diode nicht vergessen, sonst gibt's den Mikrocontroller nicht mehr. Mit dieser Variante, direkt an der seriellen Schnittstelle des PC's angeschlossen, erfolgte bei mir die erste Programmentwicklung und das funktionierte. Natürlich verzichtet man hiermit auf die Rückmeldung.



Um den DCC-Servodecoder DCC-SRV01 übersichtlicher mit CV-Werten einstellen zu können, wurde das hier im folgenden beschriebene Java Programm entwickelt. Da der Servodecoder um einige CV-Werte erweitert wurde, gab es auch beim Java-Programm eine Angleichung bezüglich dieser Konfigurationsvariablen, so dass jetzt die Version 0.1.5 vorliegt.
Beim vorliegenden Programm handelt sich um einen Java-Client für das SRCP-Protokoll vorläufig nur für das SRCP-Protokoll in der Version 0.7.3. Das Programm ist eine Konfigurationssoftware für die Einstellung von CV-Werten des Servodecoders DCC-SRV01mit der Möglichkeit der gleichzeitigen Überprüfung der Auswirkung der eingestellten CV-Werte.
Diese sofortige Überprüfung erfolgt, wenn man das will, durch die direkte Ansteuerung des mit den CV-Werten versorgten Servos.

Der SRCP-Client erfüllt folgende Anforderungen:

  • Der SRCP-Client arbeitet mit dem SRCP-Protokoll 0.7.3, zum Protokoll nähere Infos unter: http://srcpd.sourceforge.net/srcp/srcp-073.html.
  • Das Programm ist plattformunabhängig, da Java verwendet wird.
  • Bei der Auswahl der Konfigurationsvariablen wird eine kurze Beschreibung angezeigt.
  • Das in der Konfigurationsauswahl ausgewählte Servo kann vor und nach der CV-Werteinstellung angesteuert werden, damit wird sofort die Auswirkung der Einstellung deutlich.
  • Zu jedem einzustellenden Decoder kann eine Datei mit vorgegebenen Format geladen werden.
    Die Werte dieser Datei dienen als Konfigurationsparameter, so dass mit bereits vorhandenen Einstellungen gearbeitet werden kann.
  • Die eingestellten CV-Werte können unter dem vorher geladenen Dateinamen oder jeden anderen Dateinamen abgespeichert werden.
  • Es besteht auch die Möglichkeit, jeden CV-Wert einzulesen, wenn die Schaltung für die Auswertung des Rückmeldesignals, siehe Anwendungsumgebung, angeschlossen ist.

Programmbeschreibung:
Das Programm besteht aus einem ausführbaren JAR-File. Das Programm ist entweder durch direkten Aufruf startbar bzw. über die Syntax java -jar %Progammfile%. Beim letzteren Aufruf hat man für Java die Standardausgabekonsole dabei. Wichtig ist, dass die Java Runtime-Version 1.6.0_05 oder höher installiert ist.
Die Buttonsteuerung ist nur mit der Maus möglich. Eine Tastaturunterstützung ist derzeit nicht vorgesehen.
Nach dem Start des Programms baut man eine Verbindung zum SRCP-Server auf, wie schon erwähnt mit der Protokollversion 0.7.3.
Die Felder "Server Adresse" und "Portnummer" sind frei editierbar.
Nach Betätigung des Buttons "Connect" erfolgt der Verbindungsaufbau zum SRCP-Server und der Begrüßungstext des Servers erscheint. Im Screenshot wurde eine Verbindung zum lokalen SRCP-Server von DDW aufgebaut. Nun sollte man über den Button "Datei auswählen" eine abgelegte Konfigurationsdatei laden.
Gab es bereits Einstellungen für diesen Decoder, wird die entsprechende  abgespeicherte Konfigurationsdatei geladen. Bei einer Neukonfiguration wird die Standardkonfigurationsdatei geladen.
Diese Datei kann man hier herunterladen  

SRV01.txt
.Das Format der Datei ist vorgegeben und muss zwingend eingehalten werden.
Die Daten dieser Konfigurationsdatei werden komplett im Speicher abgelegt und stehen damit für die weitere Bearbeitung zur Verfügung.

Die ComboBox "Auswahl der CV Werte" ist der Einstiegskontext für alle weiteren Handlungen. Nach dem ein CV-Wert ausgewählt wurde, erfolgt eine knappe Beschreibung dieses Wertes. Je nach CV-Werteauswahl wird das darunterliegende Panel oder auch der Schieberegler aktiviert, wobei der Schieberegler sinnvoller Weise nur bei den Endpunkteinstellungen von Servos aktiv wird. Ist die CV-Werteauswahl mit einer Servo-Nummer verbunden, sind auch gleichzeitig die Buttons "Up" und "Down" aktiviert.


Nach Eingabe der Decoderadresse kann das entsprechende Servo angesteuert werden. Die Eingabe der Decoderadresse ist zwingend nötig, da beim Ansteuern des Servos mit "Up" oder "Down" der Servicemode verlassen wird.
Die Vergabe der Servonummer erfolgt intern durch die Auswahl der Decoderadresse. Mit den Buttons "CV Wert übertr..." oder "Set Servo Wert" wird im Servicemode der derzeit angezeigte Wert in den Decoder übertragen und der CV-Wert ist im Decoder gespeichert.
Es ist auch über den Button "CV auslesen" möglich, wenn die Schaltung für die Auswertung des Rückmeldesignals angeschlossen ist, alle CV-Werte auszulesen.
Hierbei wird, wie es im Servicemode beim DCC eben so ist, der Decoder von 0 beginnend nach seinem Konfigurationswert abgefragt. Trifft der abgefragte Wert zu, gibt es einen Bestätigungsimpuls und der entsprechende Wert gilt als ausgelesen.
Wenn der Wert gerade 255 ist, dauert es eben, bis diese Abfrage erreicht ist.
Der ausgelesene Wert wird angezeigt und in den Feldern des Panels bzw. Schieberegler aktualisiert.
Zum Schluss sollte man dann die Konfigurationseinstellungen über den Button "Datei speichern" abspeichern.
Da alle Werte im Speicher stehen, wird hierbei eine geladene Datei immer komplett überschrieben bzw., beim Abspeichern unter anderen Namen, neu angelegt.


Hier nun noch der Download der Programmdatei: 

SRV01Config.jar




 
   
   
   
Top