Startseite
Modellbahn
Modellbau
       


Für meine 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 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 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
  • nach jedem Setzen, Lesen oder Vergleichen von CV-Werten erfolgt ein von der NMRA definiertes Acknowledgment
  • 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.
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.  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. 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.






Links ist die aufgebaute Schaltung zu sehen

Ist die Schaltung aufgebaut, muss der ATMEL Mikrocontroller gebrannt werden.
Dabei ist folgendes 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.
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 zu bringen. 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.

Durch Softwareänderungen wurde die Funktionalität laufend erweitert, unter anderem mit der Beseitigung des Anlaufens von Servos beim Einschalten der Versorgungsspannung und auch mit der Möglichkeit der Servogruppenbildung, z.B für die 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.

Eine der vielen Möglichkeiten ist die 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.




Einstellungen der CV# Werte


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







Als Zentrale fungierte ein PC mit der PC-Software DDL (Digital Direct for Linux) .
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.



Um den DCC-Servodecoder DCC-SRV01 übersichtlicher mit CV-Werten einstellen zu können, habe ich das folgende 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-SRV01 mit der Möglichkeit der gleichzeitigen Überprüfung der eingestellten CV-Werte.

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 eine Schaltung für die Auswertung des Rückmeldesignals 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




Da ich für die Modellbahnanlage, was die elektronischen Komponenten betrifft, so viel wie möglich im Selbstbau zu Wege bringen möchte, habe ich nun auch einen Lokdecoder für die Spur N entwickelt.
Im Lokdecoder ist ein Atmel Mikrocontroller ATtiy44 verbaut. Die doppelseitige Platine hat die Ausmaße von 8,7mm x 13mm.
Der SMD Mikrocontroller hat im Vergleich zu den sonstigen in der Baugruppe verwendeten Bauteilen, das grösste Ausmaß.








In diese N-Lok ist der Lokdecoder eingebaut









Im rechten Bild ist der eingebaute Decoder in der obigen Lok  zu sehen


Der Lokdecoder hat die folgenden Funktionalitäten:                        
Unterstützt folgende DCC Protokoll Versionen:
* NB: NMRA-DCC Basisprotokoll (7-bit-Adr., 14 FS)
* N1: NMRA-DCC erweitert (7-bit-Adr., 5 Funkt., 28 FS)
* N2: NMRA-DCC erweitert (7-bit-Adr., 5 Funkt., 128 FS)
* N3: NMRA-DCC erweitert (14-bit-Adr., 5 Funkt., 28 FS)
* N4: NMRA-DCC erweitert (14-bit-Adr., 5 Funkt., 128 FS)

Liegt eine negative Gleichspannung am Gleis, kann die Lok auf Fahrgeschwindigkeit Null heruntergebremst werden.
Die Funktion kann richtungsabhängig konfiguriert werden. Eine Richtung wird durchgefahren,
in andere Richtung wird abgebremst.



Der Lokdecoder bietet die Möglichkeit der IR Adressenübertragung.
Die IR - Übertragung erfolgt mit einem 36kHz modulierten Signal.
Die IR - Übertragung der Lok-Adresse erfolgt bis zu einer Wertigkeit von 127 im 7-bit und auch im 14-bit Modus.

Das IR Protokoll hat in Anlehnung an das IR-Protokoll SIRCS von Sony das folgende Format:

  • Jede Übertragung beginnt mit einem 2,4ms langen Startbit.
  • Es folgt eine Pause von 0,6ms, darauf folgen die Datenbits, auch immer mit 0,6ms Low Wert als Pause.
  • Wert Null 1,2ms (0,6ms High + 0,6ms Low)
  • Wert Eins 1,8ms (1,2ms High + 0,6ms Low)
  • Eine Datenübertragung besteht aus Startbit und 7 Datenbits (Bit 0 bis Bit 6) -> 127 Adresswerte.
  • Es wird ein Paritätsbit verwendet, das ist Bit 7 und wird bei ungerader Anzahl von Einsen auf 1 gesetzt.








Links ist der Einbau der IR-Diode mit Vorwiderstand zu sehen.




Die Schaltung des Lokdecoders

Eine umfangreiche Beschreibung des Lokdecoders und die Bedienungsanleitung ist hier

Bedienungsanleitung_Lokdecoder.pdf
  zu entnehmen.

Die folgenden Fuse Bit Einstellung sind beim Mikrocontroller durchzuführen:
Brown Out Detection 2,7V
Interner Oszillator 8 MHz Start-up time PWRDWN:6CK/14 + 64ms
Divide clock by 8 internally; [CKDIV8=0] herausnehmen

Die Schaltung und die Layoutvorlage stehen als EAGLE- Dateien, hier der Link, zur Verfügung.

Stromlaufplan, Layout und Programmdateien sind in der ZIP - Datei  

LokLDAT44_V1b.zip
zu finden.





 
   
   
   
Top