OpenDecoder - Digitaldecoder für DCC

Überblick

    Passend zum Open Source Projekt einer Selbstbauzentrale gibt es hier die geeigneten DCC-Decoder für den Selbstbau dazu.
    Diese Decoder basieren auf Atmel AVR. Es gibt vier verschiedene Ausführungen, eine einfachere mit ATtiny2313 (Version 1), eine etwas aufwändigere Platine mit ATmega8515 (Version 2, Standard) und eine Platine mit Atmega162 und BiDi-Fähigkeit (Version 3). Seit 2009 ist ein Ableger mit deutlich erweiterten Fähigkeiten dazugekommen (AniMat). Als Derivat entstanden auch Dekoder mit anderen Prozessoren, z.B. mit atmega8. Alle Varianten sind in C programmiert, unterscheiden sich aber natürlich in der Speichergröße auf dem Chip und damit auch in der Vielfalt der implementierten Funktionen.

    Ein besonderer Vorteil dieser Decoder und der Programmierung in C ist die leichte Möglichkeit, Sonderdecoder für bestimmte Anwendungsfälle schnell erstellen zu können. Wir setzen diese Dekoder in größerer Stückzahl auf unserer Vereinsanlage ein.
    Platine OpenDecoder
    Platine Version 1 Platine Version 2

Hardware

    Es gibt vier verschiedene Hardwareplattformen:
  • Hardware 1:
    Diese einfache Hardwareplattform basiert auf Attiny2313 (2k Flash) mit den Platinenmaßen 50*80mm (einseitiges Layout). Es sind große Schraubklemmen, ein Programmiertaster, eine Kontroll-LED, ein extra Jumper sowie getrennte Versorgung vorgesehen; der DCC Eingang ist optogekoppelt. Die Bauelemente sind komplett als Durchsteckbauteile ausgeführt. Zudem gibt es eine Variante in Mini-SMD.

    Mit unterschiedlichen Softwaremodulen können verschiedene Dekoder realisiert werden:
    TypAnwendung
    Weichendecoder und Schaltdecoder Schalten von Weichenantrieben oder Formsignalen
    programmierbare Impulslängen
    Schalten von einfachen Lichtsignalen
    Schalten einer Ampel
    Signaldecoder Schalten von Lichtsignalen, bis zu 7-begriffig
    mit sanftem An- und Abdimmen, Dunkelphase
    Bahnübergangsblinker mit Ansteuerung Faller Car
    Ampelsteuerung mit Ansteuerung Stopmagnet für Faller Car
    Lichtdecoder: Bis zu 8 Straßen- oder Gebäudebeleuchtungen
    Leuchtstoffröhrensimulation
    Zufallssteuerung für Tag-Nacht Übergänge
    NatriumDecoder Straßenbeleuchtung
    mit Natriumdampflampen-Simulation, Zufallssteuerung
    EffektDecoder Baustellenblitzer, Baustellenlauflicht
    Lauflichter, Lichtsäulen für Reklame und Kirmesbeleuchtung, jeweils mit Überblendtechnik
    Motordecoder Sonderdecoder zur Ansteuerung einer Fähre
    mit Motorcontroller und lokalen Bedientasten
    Watchdog Decoder: Einstellbare Ansprechzeit bis zum Abschalten der Modellbahn bei Ausfall der PC-Steuerung oder der Zentrale.

    Eine Variante dieses Dekoders mit den Abmessung 18 * 200mm dient als Signalbrücke im Schattenbahnhof. Diese Variante hat die rot-grünen LEDs für vier Gleise bereits integriert.
  • Hardware 2:
    Dieser Dekoder basiert auf ATmega8515 (8k Flash, 512 Bytes RAM und 512 Bytes EEPROM). Diese Plattform ist aus Platz- und Kostengründen teilweise in SMD aufgebaut, allerdings noch mit moderat großen Bauformen und damit noch manuell lötbar.
    Es gibt mittlerweile auch einen Nachbau mit einseitigen Layout und DIL-Bauteilen sowie auch eine abgespeckte Version nur zur Servoansteuerung.

    Die Plattform 2 hat die gleichen Maße 80*50mm (zweiseitig), große Schraubklemmen und identische Befestigungslöcher wie Plattform 1. Es sind wahlweise 8 (Haupt-)ausgänge oder 8 Eingänge konfigurierbar. Auf der DCC-Seite kann ein Programmier-Acknowledge (Bestätigungspuls) zurückgesendet werden. Das DCC-Interface ist komplett optogekoppelt und es besteht über Lötbrücken die Wahlmöglichkeit, ob der Decoder fremdgespeist oder von DCC versorgt wird.
    Es sind zwei Anschlüsse für Servos vorgesehen und als Bestückungsalternative ist ein DMX Interface realisierbar (sowohl Senden als auch Empfangen). Zusätzlich kann eine Erweiterungsplatine zur Motoransteuerung aufgesteckt werden.
    Der Decoder ist programmierbar mit CVs und liefert einen Acknowledge-Puls zurück, er kann damit als voll NRMA-kompatibler Accessory Decoder agieren (muß aber nicht:-).

    Es gibt folgende Programme für den Decoder 2:
    TypAnwendung
    Dual Servodecoder Bewegen von Zubehör auf der Modellbahn
    z.B. Formsignale, Schranken, Schaukeln, Tore
    frei definierbare Zeit-Ortskurven für wirklichkeitsgetreue Bewegungen und besonders feinfühliger Servosteuerung. Es sind zwei Servo ansteuerbar.
    Multipositions-Servodecoder Bewegen von Zubehör auf der Modellbahn
    Bis zu 8 verschiedene Zielpositionen direkt anfahrbar, kein Zwischenhalt; ruckfreie Steuerung, entweder linear oder mit sanftem Anfahren/Bremsen.
    Handbedienung.
    Weichendecoder mit Rückmeldung Schalten von Weichen mit Überwachung der tatsächlichen Lage
    Rückmeldung bei nichtschaltender Weiche an die Zentrale und/oder Auslösen von Nothalt. Frei programmierbare Pulsdauer, Schalten von Signalen.
    DMX-Decoder Vielseitiger Raumlichtdecoder mit DCC nach DMX Umsetzung
    und flexibler Macroprogrammierung, ähnlich der
    Raumlichtsteuerung in der Zentrale. Ein Watchdogdecoder ist integriert.
    Kirmes-Decoder Decoder, der Motoransteuerung und Licht für Karussells kombiniert.
    Verschiedeneste Lauflichter, feinfühlige Motorsteuerung per PWM
    Signaldecoder und Lichtdecoder frei programmierbare Signale mit bis zu 16 Begriffen;
    Verkehrszeichen (Ampel, Bahnübergang, Wechselblinker);
    Lichteffekte wie Lichtsäule, Lauflicht, Nightrider, Blitzer, Doppelblitzer usw.; Auch Signale mit blinkenden Begriffen wie z.B. für Belgien. Einstellbares Überblenden.
    Effektdecoder (in Planung) Lichteffekte, insbesondere mit Spezial-Dimmvorgängen
    wie Feuerflackern, Schweißen, Farbspiele, Gaslaterne, Lagerfeuer, Blitzer, Doppelblitzer usw.
  • Hardware 3:
    Dieser Dekoder basiert auf ATmega162 (8k Flash, 1024 Bytes RAM und 512 Bytes EEPROM). Diese Plattform ist weitgehend in SMD aufgebaut, allerdings noch mit moderat großen Bauformen und damit noch manuell lötbar. Sie wird auch kommerziell verfügbar sein.

    Die Plattform 3 hat die Maße 73*82.5mm (zweiseitig) und große Schraubklemmen an einer Seite; auf der anderen Seite ist entweder DMX, Easynet oder XPressNet aufbaubar. Loconet wäre (nach Klärung der Lizenzfragen) auch möglich. Es sind 2 Servoausgänge, 4 Relais Schaltausgänge und 4 Eingänge vorgesehen. Auf der DCC-Seite kann ein Programmier-Acknowledge (Bestätigungspuls) sowie BiDi (Railcom) zurückgesendet werden. Das DCC-Interface ist komplett optogekoppelt und es besteht über Lötbrücken die Wahlmöglichkeit, ob der Decoder fremdgespeist oder von DCC versorgt wird.
    Der Decoder ist programmierbar mit CVs und liefert einen Acknowledge-Puls zurück, er kann damit als voll NRMA-kompatibler Accessory Decoder agieren (muß aber nicht:-). Zusätzlich ist die Unterstützung von NMRA-BiDi geplant.

    Ab Februar 2008 ist dieser Dekoder auch kommerziell verfügbar. Tams bietet zwei Versionen an: SD-22 (Servodecoder) und DMX-1 (DMX-Decoder).
    Es gibt folgende Programme für den Decoder 3:
    TypAnwendung
    Servodecoder (zweifach) Bewegen von Zubehör auf der Modellbahn
    z.B. Formsignale, Schranken, Schaukeln, Tore
    frei definierbare Zeit-Ortskurven für wirklichkeitsgetreue Bewegungen und besonders feinfühliger Servosteuerung ohne Ruckeln.
    inkl. Herzstückpolarisierung bei Weichen
    Multipositions-Servodecoder Bewegen von Zubehör auf der Modellbahn
    Bis zu 8 verschiedene Zielpositionen direkt anfahrbar, kein Zwischenhalt; ruckfreie Steuerung, entweder linear oder mit sanftem Anfahren/Bremsen.
    Handbedienung.
    DMX-Decoder Vielseitiger Raumlichtdecoder mit DCC nach DMX Umsetzung
    und flexibler Macroprogrammierung, ähnlich der
    Raumlichtsteuerung in der Zentrale. Ein Watchdogdecoder ist integriert.
    Schaltausgang/Relais Decoder Unabhängiges Schalten von 4 Relaisausgängen, auch mit Handbedienung. (in jeder obigen Software enthalten)
  • AniMat:
    Diese Hardware kann auch als Dekoder agieren, sie basiert auf AT90can128 (128k Flash, 4096 Bytes RAM und 4096 Bytes EEPROM). Diese Plattform ist fast komplett in SMD aufgebaut, mit teils kleinen Bauteilen und erfordert bereits etwas Erfahrung.

    Die Plattform AniMat hat die Maße 80x50mm und bietet 2 Servoausgänge, 8 allgemeine Schaltausgänge und 8 Eingänge. Des weiteren ist eine doppelte Motorendstufe mit Lastregelung vorgesehen. Eine SD-Karte, mp3-Decoder mit nachgeschalteter kräftiger Audioendstufe macht Sound möglich. Auf der DCC-Seite kann ein Programmier-Acknowledge (Bestätigungspuls) sowie BiDi (Railcom) zurückgesendet werden. Das DCC-Interface ist nicht optogekoppelt und es besteht über Lötbrücken die Wahlmöglichkeit, ob der Decoder fremdgespeist oder von DCC versorgt wird.
    Es sind folgende Programme für den AniMat in Vorbereitung:
    TypAnwendung
    mp3-Decoder Abspielen von Sound
    Kirchturm-Uhr Auswerten des Fast Clock, Abspielen der echten Uhrzeit
    Animations-Dekoder Schrittschaltwerk, das Motorbewegungen, Servo und Sound koordiniert ansteuern kann
    OpenPlayer Standalone mp3-Player
  • Hardware 5:
    Dieser Dekoder basiert auf ATmega8 und zusätzlichen Schieberegistern. Er ist speziell für die Ansteuerung von Signalen geeignet.

Software:

  • Weichendecoder bzw. Schaltdecoder:
    (für Hardware V.1)
    Mit diesem Softwaremodul wird aus der Hardware ein handelsüblicher Vierfachdecoder für Magnetantriebe bzw. Lichtsignale. Die Pulsdauer kann einfach durch Programmierung gewählt werden: 0.25s, 0.5s 1s und 2s sind einstellbar. Weitere unterstützte Modi sind Signaldecoder für 2-begriffige, 3-begriffige und 4-begriffige Signale sowie die Ansteuerung einer Ampel.

    Im Download sind die .HEX files für 10MHz und 8MHz Atmel CPU bereits vorkompiliert enthalten.
  • Weichendecoder bzw. Schaltdecoder:
    (für Hardware V.2)
    Diese Software hat die gleiche Funktionalität wie oben (Ausnahme: keine mehrbegriffigen Signale), jedoch unterstützt Sie zusätzlich CV-Programmierung und alle NRMA-Befehle. Zudem kann die tatsächliche Lage der Weiche für eine Rückmeldung ausgewertet werden. Nicht schaltende Weichen werden angezeigt.
  • Signaldecoder:
    (für Hardware V.1)
    Mit diesem Softwaremodul wird aus der Hardware ein spezieller Decoder für Lichtsignale. Ansteuerbar sind (fast) alle Lichtsignale (zweibegriffig und mehrbegriffig). Realisiert ist vorbildgetreues Stellen der Signalbilder durch Dimmfunktion und kurzer Dunkelphase zwischen den Signalbildern der DB.
    Ein gute Übersicht über die Signalbilder findet sich bei: www.stellwerke.de
    Befinden sich Vor- und Ausfahrsignal am gleichen Mast, so muß das Vorsignal dunkel bleiben, wenn das Ausfahrsignal Halt (Hp00) oder Rangierfahrt (Sh1) zeigt.
  • Lichtdecoder:
    (für Hardware V.1)
    Mit diesem Softwaremodul wird aus der Hardware ein spezieller Decoder für Beleuchtung. Die Lampen können entweder einzeln angesteuert werden, zufällig nacheinander eingeschaltet oder ausgeschaltet werden. Damit können z.B. bei Tag-Nacht Übergängen in Häusern die Lichter nach und nach angehen bzw. wieder ausgehen. Dies ist insbesondere zusammen mit der Raumlichtsteuerung von OpenDCC interessant. Ein weiterer Mode simuliert das Anschalten der Leuchtstoffröhren eines Straßenzuges inklusive des charakteristischen Flackern der Neonröhren beim Starten.
  • EffektDecoder:
    (für Hardware V.1)
    Mit diesem Softwaremodul wird aus der Hardware ein spezieller Decoder für Sondereffekte, wobei der Schwerpunkt auf Lauflichtern und Lichtsäulen liegt. Alle Betriebsarten arbeiten mit einer variablen Timing-Maschine, wobei das Überblenden zwischen den einzelnen Lampen mit einer einstellbaren Kennlinie geschieht. Ein Sonderfall hierfür sind sog. Baustellenblitzer, d.h. ein blitzartig aufleuchtender Punkt springt durch die Ausgänge.
  • DMX-Decoder:
    (für Hardware V.2 und V.3)
    Raumlichtdecoder mit DCC nach DMX Umsetzung und flexibler Macroprogrammierung, ähnlich der Raumlichtsteuerung in der Zentrale. Zusätzliche Steuereingänge für Licht an/aus und Watchdog.
  • Watchdogdecoder:
    (für Hardware V.1, V.2 und V.3)
    Mit diesem Softwaremodul wird aus der Hardware ein spezieller Decoder für Anlagenüberwachung.

    Zu Beginn ist der Anlagenstrom eingeschaltet. Wird nun einmal ein bestimmter Schaltbefehl gesendet, bleibt die Anlage noch 2s eingeschaltet. Wenn dieser Schaltbefehl wiederholt wird, verlängert sich dadurch die Einschaltzeit. Das Ausgangsrelais wird also durch zyklischen Aufruf dieser Schaltadresse permanent gehalten, dadurch bleibt die Anlage eingeschaltet. Wird diese Adresse für 2 sec nicht mehr bedient (z.B. weil PC oder Zentrale ausgefallen sind), dann fällt das Relais ab und die Anlage geht in Nothalt.
    Zusammen mit Railware oder Traincontroller kann damit die korrekte Funktion von PC und Zentrale überwacht werden; zusätzlich gibt es einen externen Triggereingang für eine separate Nothaltschaltung, welche redundant zur normalen Steuerung agiert.
    Es wird beim Eintreten des Nothaltereignisses sowohl der Fahrstrom abgeschaltet, als auch eine Meldung an den PC erzeugt, sowie ein Hupe oder Alarmlicht für kurze Zeit aktiviert.
    Bei OpenDecoder2 und OpenDecoder3 ist der Watchdog in der DMX-Software integriert.
  • Motordecoder:
    (für Hardware V.1)
    Dies ist ein Beispiel für einen Spezialdecoder für eine Sonderaufgabe. Ein mit Gleichstrommotor angetriebenes Objekt war zwischen zwei Endpunkten hin und her zu bewegen. Der Motor wird mit einer hochfrequenten Pulsweitenmodulation feinfühlig beschleunigt und gebremst, es werden Lichtschranken und Tasten zusätzlich zum DCC-Signal zur Lageerfassung und Steuerung des Motors verwendet.
    Natürlich funktioniert das auch ohne DCC-Ansteuerung und ist damit auch als analoge Pendelzugsteuerung geeignet.
    Motordecoder Programm V0.2
    Neben den obigen Beispielen kann leicht eine eigener "Sonderdecoder" gebaut werden: OpenDecoder ist in C programmiert und die Software ist sauber in DCC-Empfangsteil, Befehlsauswertung und Aktionsteil getrennt. Grundfunktionalität für das Dimmen und Blinken ist bereits vorhanden.

    Mittlerweile liegen mir auch schon eine Reihe Berichte vor, wo der Decoder modifiziert im Einsatz ist: mit invertierten Ausgängen, mit Relaisausgängen, mit Motortreibern, als 8-fach Decoder.

    Die Software ist in C unter gcc (WinAVR) geschrieben. Die notwendige Entwicklungsumgebung ist kostenfrei. Hier steht, was man zum Loslegen braucht. Und hier sind Hilfestellungen und Erklärungen, wie das Ganze funktioniert.

Copyright:

    Die Software für den Decoder ist unter gnu public license freigegeben. Sollte jemand damit einen neuen Decoder bauen, würde ich mich freuen, wenn dieser auch hier veröffentlicht wird.

    Und wenn jemand nur nachbaut, empfinde ich es als fair, wenn er entweder mithilft (z.B. übersetzen von Webseite von D nach E, Howto schreiben), sich mit einer Spende an den Kosten beteiligt oder mir mal ein Bier spendiert ;-). Kontoverbindung per mail () oder mit paypal zahlen.

Unterlagen / Links


Andere DCC-Decoder im Netz:
www.digital-bahn.de von Sven Brandt, basierend auf PICs
Modelleisenbahn Claus besonders für Faller Car
Booster, Decoder, Rückmelder von Dieter Ratschmeier
Decoder von Manfred Richter
Servodecoder von Holger Wagenlehner
led-treiber.de Gute Seite mit Schaltungen für LEDs