OpenDCC OpenDecoder - FAQ und Change Log

FAQ - häufige Fragen

    Es tauchen immer wieder gleiche Fragen zu OpenDecoder auf, diese versuche ich hier zu sammeln und zu beantworten.

  • Der Decoder blinkt .. was bedeutet das?
    Mit Hilfe der LED wird ein interner Zustand des Decoders angezeigt. Dabei wechseln sich eine Reihe schneller Pulse mit einer Pause ab. Es gibt folgende Blinkcodes:
     1  ----x----x---- Weiche 1 hat nicht korrekt geschaltet.
     2  ----x-x----x-x---- Weiche 2 hat nicht korrekt geschaltet.
     3  ----x-x-x----x-x-x--- Weiche 3 hat nicht korrekt geschaltet.
     4  ----x-x-x-x----x-x-x-x--- Weiche 4 hat nicht korrekt geschaltet.
     5  ----x-x-x-x-x----x-x-x-x-x--- Es wurde noch keine Adresse programmiert. Das ist der normale Zustand nach dem Laden der Firmware bzw. nach einem Decoder-Reset.
     6  ----x-x-x-x-x-x---- Falscher Mode, der gewählte Mode wird von der geladenen Firmware nicht unterstützt. (also z.B. wenn beim ServoDecoder DMX gewählt wird).
     X  -|-|-|-|-xxxxx sehr schnelles Blinken: es werden intern gerade Werte umkopiert, z.B. nach einem Preset oder Reset-Befehl. Dabei darf der Decoder nie stromlos geschaltet werden.
  • Ich habe die Adresse mit CVs eingestellt und kann den Decoder nicht mehr ansprechen.
    Es gibt einen Unterschied zwischen Decoderadresse und Weichenadresse. Wenn man über Taster programmiert, dann gibt man an der Zentrale die Weichenadresse an. Bei Programmierung über CV (CV513 und CV521) wird jedoch die Decoderadresse eingestellt.
    Dieser Unterschied (welcher aus der DCC Norm resultiert) ist beim Schaltdecoder erläutert.
    Auf der Seite CV ist ein CV-Rechner, der das umrechnet.
  • Ich habe die Adresse mittels CV513 umprogrammiert, warum blinkt aber die LED trotzdem weiter (5x)?
    Das liegt an einem 'versteckten' Bit in der CV521; CV521 ist der zweite Teil der Adresse, jedoch werden nicht alle Bits benötigt. In einem dieser unbenutzten Bits ist bei unprogrammiertem Decoder eine '1' hinterlegt. Wenn dieses Bit gefunden wird, dann blinkt der Decoder (5x), um anzuzeigen, dass noch keine Adressprogrammierung erfolgt ist. Wird die Adresse komplett geschrieben (entweder mit Taste oder durch Programmieren mit CV513 und CV521), dann blinkt der Decoder auch nicht mehr.
  • Ich verstehe das mit der Digitaladresse nicht, was ist denn nun was?
    Die DCC Norm kann bis zu 511 Zubehördecoder ansprechen, von denen kann jeder 8 Ausgänge haben, diese sind ein- oder ausschaltbar. Soweit die Theorie.

    Häufig werden nun zwei dieser Ausgänge paarweise gekoppelt, um z.B. eine Weiche zu schalten. Hierzu ist es erforderlich, dass sich diese beiden Ausgänge gegenseitig abschalten (sonst kracht es in der Weiche). Zudem schalten die Decoder sicherheitshalber einen aktivierten Ausgang selbständig nach einer gewissen Zeit ab, um ein Durchbrennen der Spule zu verhindern.

    Dies hat zwei Folgen: Viele Bediengeräte (und auch PC-Steuerprogramme) fassen diese zwei Ausgänge zu einer neuen Adresse (Weichenadresse) zusammen. Man spricht das Ausgangspaar also nicht mehr über den Deocder und eine Untergruppe an, sondern direkt über die 'Weiche' und hat dann 2046 mögliche Adressen. Und da die Dekoder selbständig abschalten, wird auch der Abschaltbefehl stiefmütterlich behandelt - z.B. sendet die IB den Abschaltbefehl gar nicht.

    Als weitere Folge ergibt sich für Decoder, welche einen einzelnen Ausgang ein- oder ausschalten wollen, dass sie dies nicht zuverlässig über den Ausgangsschaltbefehl von DCC abbilden können. Das wird dann oft mit zwei 'Ein'schaltbefehle realisiert, die sich gegenseitig wie bei einer Weiche abschalten.
    Damit ist man (als Decoder) dann über übliche Zentralen und PC Programme bedienbar.
  • Ich verwende 4N25 als Optokoppler, es geht nichts.
    Der 4N25 ist wirklich langsam und braucht auch relativ viel Strom, um wieder abzuschalten. Hier muß der Pullup recht klein gewählt werden (etwa 1k).
  • Gibt es fertig programmierte Prozessoren für OpenDecoder2 und 3?
    Leider nein, zumindest bei mir nicht - die SMDs kann ich nur eingelötet programmieren und das kann ich leider nicht für andere machen.
  • Der Decoder ist so komplex, wie kann ich den einfach konfigurieren?
    Es sind i.d.R. sinnvolle Voreinstellungen vorhanden, die einfach mit Tasterdruck und Senden eines Weichenbefehls gewählt werden. Diese Voreinstellung passen im allgemeinen. Sollte es spezieller werden, so kann man mit einem der folgenden Programme ein mehr oder weniger ausgefeilte Oberfläche für die Konfiguration verwenden: Ungeeignet ist DecoderProgrammer von Henning Voosen, dieses Programm ist nicht für komplexe Zubehördekoder ausgelegt.
  • Die Servos gehen nur in einem Bereich von 0-45°. Was könnte da falsch laufen?
    Das liegt an den Servos. Leider halten sich manche Hersteller nicht an die 1ms bis 2ms Ansteuerbereich. Deswegen gibt es ab der Version 0.9 in der Software ein CV-Bit 'extended range', da wird der Stellbereich auf 0.5ms bis 2.5ms ausgedehnt. (CV555 bzw. CV567).
  • Ich habe bei nur den Digitalstrom, keine extra Versorgung, was muß ich tun?
    Hier kann man einfach zwischen DCC-Eingang und Power eine Brücke legen. Auch der Lade-Elko sollte verkleinert werden, damit der Anlaufstrom des Digitalsystems nicht so groß wird.
  • Das Auslesen mit der Intellibox dauert so lang!
    Tja, das liegt an der IB. Die sucht nämlich bei jeder CV alle möglichen Datenworte (bis zu 256) ab und das dauert beim Lesen vieler CVs halt seine Zeit.
    Die OpenDCC-Zentrale geht da intelligenter vor: Zuerst mal wird der Dekoder auf 'Bit'fähigkeit getestet und dann mit nur 8 Abfragen das Datum bestimmt. Und die Zentrale merkt sich diese Fähigkeit des Decoders für etwa 0,5s, der nächste Lesebefehl muß dann gar keine Bitfähigkeit mehr testen.
  • PoM Programmieren mit dem TwinCenter funktioniert nicht!
    Das TwinCenter verwendet eine veraltete Form des PoM Befehles (siehe RP921, Appendix A).
  • Ich möchte den Code oder Teile davon für ein eigenes Projekt verwenden, was muß ich beachten?
    OpenDecoder ist keine freeware, sondern unterliegt einer Lizenz (gnu). Diese erlaubt die private Nutzung, bei kommerzieller Nutzung bzw. Weiterentwicklung sind die Lizenzbedingungen zu beachten. Ich vergebe auch Lizenzen an kommerzielle Anbieter, z.B. ist OpenDecoder3 ab Frühjahr 2008 bei Tams Elektronik käuflich zu erwerben. Source Code ist entweder auf dieser Seite oder unter sourceforge.net verfügbar.
  • Ich habe die eagle Datei geladen, nur sind bei mir Linien in Ausdruck, die Kurzschluß verursachen!
    Das ist eine Eigenheit von eagle. Masseflächen werden nur als Umriß in der Datei gespeichert und müssen nach dem Öffnen wieder neu berechnet werden. Hierzu muß man den Befehl 'Luftlinien neu berechnen' (Ratsnest) aufrufen.
  • Das mit diesen Prozessoren interessiert mich, wie geht das?
    Zunächst einmal braucht man die entsprechenden Programme (sind alle kostenlos). Zum Starten empfiehlt es sich, da mal ein einfaches Programm (z.B. Boostercontroller) zu laden und zu übersetzen.
  • Ich möchte selbst übersetzen, was ist denn nun welcher Sourcecode?
    Die Software für den OpenDecoder1 ist immer in einem File enthalten, jede Decodervariante hat ein eigenes File. (Grund: damit kann der Compiler am besten den Platz optimieren und die Sache paßt dann in einen ATtiny2313)
    Bei OpenDecoder2 und -3 ist die Software in Module aufgeteilt, diese sind alle in einem Projekt enthalten. Durch die Compile-Switches in config.h wird dann die zu erzeugende Variante ausgewählt, man muß einfach die entsprechende Variable (z.B. SERVO_ENABLED) auf TRUE stellen. Leider passen nicht alle Softwarevarianten zugleich in den Atmega8515, man muß sich also entscheiden, ob man Standarddecoder, Servodecoder oder DMX Decoder will.
    Eine Sonderposition nimmt der Signaldecoder2 ein: hier war leider eine grundlegende Änderung der Interrupts erforderlich, so dass diese Software ein eigenes Projekt ist.
  • Ich habe beim Programmieren der Fuses erreicht, daß der Prozessor nicht mehr erkannt wird.
    Vorsicht Falle! Wenn man den Atmel auf externen Takt stellt, und da ist keine Quelle oder nur ein Quarz angeschlossen, dann geht gar nichts mehr. Lösen kann man das nur, wenn man bei XTAL1 eine (ziemlich) beliebige Frequenz von etwa 100kHz bis 10MHz einspeist. Dann lassen sich auch die Fuses wieder umprogrammieren und der Prozessor lebt wieder.
  • Schade, aber SMD ist mir zu fuzzelig zum Löten.
    Klaus Kemkes hat den Decoder (bis auf Feedback) mit DIL-Bausteinen und einseitigem Layout nachgebaut. Schaltungsbeschreibung von Hardware2 / V2.1 / DIL.
    Ab April 2008 wird es einen fertig aufgebauten OpenDecoder3 (Servo bzw. DMX) bei Tams Elektronik geben.
  • Ich habe den Prozessor falsch bestückt, wie kann ich den wieder auslöten?
    Wenn man kein professionelles Werkzeug hat, kann folgender Trick angewandt werden: man fädelt dünnen Lackdraht unter den Pins einer Seite durch und fixiert ein Ende des Drahtes. Nun zieht man beginnend beim anderen Ende den Draht nach außen, wobei man gleichzeitig mit den Lötkolben die Pins erwärmt. So wird eine Anschlußseite wie ein Reißverschluß geöffnet. Der Baustein sowie die Platine nimmt dabei keinen Schaden.
  • Wie kann ich Motorweichen ansteuern?
    Dies kann entweder mit einem nachgeschalteten bistabilen Relais erfolgen oder mit einer Transistorstufe. Christian Wichmann hat hierfür auch ein Decoder Layout entworfen.
  • Meine Roco-Weichenantriebe schalten manchmal nicht, was ist da los?
    Roco Weichenantriebe sind nicht gerade berühmt für ihre Zuverlässigkeit. Zudem liegt ihr Strombedarf an der oberen Grenze der ULN2803 Treiber. Darüber hinaus streuen die Antriebs zeimlich in notwendigen Spannung zum Schalten - ich habe bei Kontrollen schon Ansprechspannungen von 7V bis zu 15V gemessen.
    Abhilfen:
     - eine Verdopplung des ULN2803 (einfach einen zweiten Chip Huckepack drauflöten) bringt mehr Ausgangsstrom.
     - Die Sicherung auf 0,8A bis 1A erhöhen.
     - Versorgung des Decoders mit 16V~ oder 18-20V=.
  • Die manuelle Justage am Servodecoder funktioniert irgendwie nicht richtig, nur gelegentlich kommt ein kleiner Schritt. Warum?
    Die manuelle Justage verfährt bei jedem empfangenen Befehl um eine 'Justierschrittweite' (CV579). Und genau hier liegt das Dilemma: IB und Rocomaus 'fluten' beim Drücken der Weichentaste massiv Weichenstellbefehle auf das Gleis. OpenDCC schickt bloß 2 oder 3 - der Rest ist Bandbreitenverschwendung. Wenn das Increment zu groß ist, dann 'rennt' der Servo beim Stellen mit der Rocomaus, paßt aber recht gut zu TC und OpenDCC. Wenn es zu klein ist, geht es bei OpenDCC beim Stellen nur mühsam voran, man muß öfters Drücken.
  • Ich habe den Servodekoder nachgebaut, aber der stürzt dauernd ab!
    Das ist ein Stromversorgungsproblem und kann bei bestimmten Servos auftreten. Der Einschaltstrom des Servos kann so groß sein, dass die 5V Versorgung des Prozessors in die Knie geht und damit einen Reset des Prozessors auslöst. Mögliche Abhilfen:
    • Separate Stromversorgung des Servos
    • Brownout-Spannung des Atmel etwas tiefer einstellen, der läuft stabil bis 2,7V runter.
    • Puffer-Elko beim Servos
  • Wie kann ich mich aktiv an dem Projekt beteiligen?
    Gerne! Mithilfe beim Programmieren, Testen und Übersetzen ist immer gefragt. Es gibt eine (anmeldepflichtige) Yahoo Group, wo man weiteres erfahren kann: http://groups.yahoo.com/group/opendcc/

Change Log bzw. Release Notes

    Hier findet sich die Änderungsgeschichte. OpenDecoder ist ein nicht kommerzielles Projekt (ich mache das in meiner Freizeit) - daher bitte ich um Nachsicht, wenn mal nicht alle Facetten getestet sind und vielleicht der eine oder andere Bug enthalten ist. Aber ich hoffe auf Unterstützung beim Test und auf möglichst konstruktive Kritik. Danke all jenen, die bisher zum Projekt beigetragen haben.
  • SignalDecoder V0.14, 19.09.2014
    • Bugfix Mode 3: Der Dekoder merkt sich jetzt neben dem letzten Signalbild auch die letzten Zustände von Hauptsignal bzw. Vorsignal. Restauration nach Power-Up jetzt korrekt.
  • SignalDecoder V0.13, 04.06.2013
    • Bugfix: Bei DIMM_DOWN_SAME_BULB wurde der letzte Signalbegriff nicht korrekt permanent gespeichert.
  • OpenDecoder V0.13, 29.06.2011
    • Bugfix im Multipositionsservo, die letzte Position wurde nicht gespeichert.
  • OpenDecoder V0.11, 05.05.2009
    • die in V0.10 eingeführte Verzögerungszeit beim ServoDecoder führte zu CV-Lese-Problemen, wenn keine externe Versorgung vorhanden ist. Durch die Verzögerung dauert es zu lange, bis der Decoder nach einem Power-Up DCC Befehle erkennt. Jetzt wird die DCC Routine bereits während der Verzögerung aktiviert, jedoch Stellbefehl werden noch nicht ausgewertet, nur Programmierbefehle.
    • Mit CV555, Bit 6 kann eine alternative Initroutine für die Servos ausgewählt werden. Diese kann bei bestimmten Typen das Einschaltruckeln weiter reduzieren.
  • OpenDecoder V0.10, 13.01.2009
    • spezielle Initialisierung für Servos, diese ergibt kleine Einschaltruckler bei den meisten Servos. Trotzdem gilt die Empfehlung für Digitalservos.
    • Verzögertes Einschalten der Servo-Stromversorgung (falls Schalter bestückt sind). Die Verzögerung ist abhängig von der aktuellen Adresse des Dekoders, dadurch schaltet bei vielen Servos diese nacheinander ein und die Einschaltstromspitze wird minimiert.
    • Die LED leuchtet schwach während der Verzögerungszeit.
  • OpenDecoder V0.9, 01.10.2008
    • neu: Hardware 2.5 für Servo only
  • SignalDecoder V0.2, 28.05.2008
    • neu: Schreibzugriff auf CV8 macht Dekoderreset
    • neu: Interne Zustände werden 3s nach dem letztem DCC-Befehl gespeichert und beim Neustart wieder hergestellt. (ausgenommen Blinken).
  • alle Decoder, 08.02.2008
      Änderung der Präambelerkennung: bisher wurde auf >10 'Eins'-Bits für eine Präambel geprüft, diese wurde geändert auf >=10. Das ist die minimale Zahl, die NMRA zuläßt.
  • OpenDecoder3, DMX-2, 26.01.2008
      Änderung DMX Decoder: jetzt 72 virtuelle Decoder, dafür aber 18 Einträge ja Macro.
  • OpenDecoder2, V0.6, 09.01.2008
      - Übernahme der Erweiterungen für DMX von OpenDecoder3 (soweit möglich). Ein Schreibzugriff auf CV8 macht Decoder Reset. Es wird sofort ein ACK zurückgegeben, das Umkopieren erfolgt gleich anschließend.
      - 09.01.2008: Beim Lesen des Feedbacks wird die Leseleitung zuerst entladen um ev. vorhandene Einkopplungen vorher wegzulöschen.
  • OpenDecoder3, DMX-1, 09.11.2007
      Erweiterung DMX Decoder um virtuelle DMX-Kanäle zur Relaisansteuerung. Die DMX-Kanäle 24-27 steuern je ein Relais an. Des weiteren gibt es die Möglichkeit, Preset-Scenarien zu laden. Auch neu: Gewittersimulation.
  • OpenDecoder3, DMX-1, 02.11.2007
      Erweiterung DMX Decoder um CVs für Einschaltzustand; bei den Befehlen 'alles an' / 'alles aus' wird jetzt auch jede noch laufende Macroanwendung abgebrochen.
      Ein Schreibzugriff auf CV8 macht Decoder Reset. Es wird ein ACK zurückgegeben.
  • SignalDecoder1 V0.9, 24.10.2007
      doppelte Adresseerkennung entfernt (bugfix), sonst keine Funktionsänderung
  • OpenDecoder2 V0.05, 19.09.2007
      CV Mappingfehler bei DMX, keine Funktionsänderung

Geplante Erweiterungen

  • SignalDecoder für OpenDecoder2 (z.Z. im Softwaretest)
  • Steppermotor Decoder
  • Geregelter Motordecoder

Intellibox ist das eingetragene und geschützte Warenzeichen der Fa. Uhlenbrock