Details zur Schaltung des OpenDecoders (Var. 2)

  • Schaltplan:
    Nachdem die kostengünstige Variante 1 bei komplexeren Decoderaufgaben an Ihre (Speicher-)Grenzen kommt, entstand die Plattform 2, basierend auf einem Atmega8515 mit 8k Flash, 512 Bytes RAM und 512 Bytes EEPROM.
    Diese Plattform ist aus Platz- und Kostengründen teilweise in SMD aufgebaut (allerdings noch moderat große Bauformen, noch manuell lötbar).
    Schaltplan
    Schaltplan V2.01 (V2.00)
    Hinweis: Mittlerweile gibt es auch eine Version ohne SMD Diese Version hat die Bezeichnung 2.1, ist etwas größer (80*100mm) und mit doppelten Treibern ausgerüstet (damit 1A belastbar), ansonsten von der Software her indentisch ansteuerbar.
  • Schaltungsbeschreibung:
    Spannungsversorgung:
    An X2 wird die Eingangsspannung des externen Netzteils eingespeist (ca. 15V); Polarität und Stromart ist egal: es kann also ein Modellbahntrafo, ein Steckernetzteil oder das DCC-Signal verwendet werden. Das DCC Signal kann auch ohne externe Brücke per Lötbrücken (SJ6 und SJ7) zum DCC-Eingang weitergeleitet werden. Die Eingangsspannung wird gleichgerichtet und über den üblichen 5V Längsregler 7805 zur Versorgung des Prozessors verwendet. Der Leerlaufstrom beträgt etwa 20mA; Es ist sowohl die T0220 Bauform, als auch die kleinere T039 Bauform bestückbar.
    Hinweis 1: Ich habe festgestellt, dass manche Weichenantriebe von Roco erst bei 15V schalten; durch die Spannungsabfälle an Gleichrichter und Ausgangstreiber ist in diesem Fall die Versorgungsspannung auf 16V~ oder 18V= zu erhöhen.
    Hinweis 2: Wenn nur Servos oder DMX angesteuert werden, dann macht man dem 7805 das Leben deutlich leichter, wenn man 7-9V zur Speisung verwendet. Ich verwende hier Steckernetzteile, die es 'günstig' beim nächsten Wertstoffhof gibt.

    DCC-Eingang:
    An X1 wird das DCC-Signal angeschlossen. Dieses wird über einen Optokoppler (6N136) von der Spannungsversorgung des Decoders getrennt. Der Optokoppler sorgt für einen störungsfreien Betrieb auch bei ausgedehnten Anlagen. Verwendbar ist sowohl der 6N136 als auch der 6N137 oder 4N25, wobei beim 6N137 noch zusätzlich der Pin 7 (Freigabeeingang) mit dem Pin 8 verbunden werden muß (nicht im Layout, da dieser Pin beim 6N136 frei bleiben muß).
    Tipp: wer das DCC Eingangssignal überwachen möchte, kann die Freilaufdiode durch eine LED ersetzen.
    Der 4N25 (oder seine Derivate) muß so bestückt werden, dass der Pin 1 des 4N25 auf Pin 2 des Layouts kommt (Pin 1 des Layout ist dann frei). Der 4N25 ist relativ langsam, insbesondere die Freiräumzeit ist relativ lang. Der Pullup (R5) am Ausgang muss auf 1k verkleinert werden, ansonsten kommen nach dem Optokoppler nur verfälschte Signale an.
    Empfehlung: 6N136 verwenden.
    R15 und C11 sind nicht bestückt.

    Schaltausgang:
    Hier findet der übliche ULN2803 als DIL Bauform Verwendung, damit er leicht gesockelt werden kann. Dieser Treiber kann 0,5A Dauerstrom je Ausgang liefern und ist intern mit einer Freilaufdiode für induktive Lasten ausgerüstet. Die Ausgänge sind jeweils in Dreier-Gruppen mit einem Versorgungsanschluß zusammengefaßt. Damit wird die Verdrahtung auf der Anlage erleichert und ev. sonst notwendige Verteilerklemmen können entfallen.
    Sollte der Ausgangsstrom nicht ausreichen so kann folgender Trick angewandt werden: einfach einen zweiten ULN2803 Huckepack auf den ersten Chip auflöten.
    Schalten von induktiven Lasten:
    Weichenantriebe sind in der Regel Spulen, diese werden normalerweise mit einem Kontakt in der Weiche endabgeschaltet. Diese Endabschaltung verursacht eine Induktionsspannung, die rückwärts auf den Ausgangstreiber fließt und von der integrierten Freilaufdiode abgeleitet wird. Wenn die Endabschaltung "flattert" und mehrfach schnell hintereinander aus- und einschaltet, dann kann es passieren, dass die Freilaufdiode überlastet wird bevor die Absicherung über die Polyfuse abschaltet.
    In so einem Fall kann mit einer schnellen Suppressordiode über der Weichenspule Abhilfe geschaffen werden - besser jedoch sollte der Weichenantrieb getauscht werden.

    Zudem verursacht der Abschaltstrom eine erhebliches Störfeld in der Umgebung - Weichenleitungen dürfen daher nicht lang sein, zudem sollten sie nicht parallel zu anderen Leitungen liegen und verdrillt ausgeführt sein.


    Prozessor:
    Als Prozessor wird ein Atmel ATmega8515 verwendet.

    Takterzeugung:
    Der Atmel ATmega8515 wird mit einem werksabgeglichenen RC-Oszillator ausgeliefert, welcher bei 8 MHz läuft, der Quarz und die Kondensatoren können daher entfallen. Das zu ladende Hexfile muß für diese Frequenz passen, es ist also beim Übersetzen Taktrate (F_CPU) auf 8000000 einzustellen, alle Timingeinstellungen werden automatisch angepaßt.
    Hinweis: die Taktgenauigkeit wird von Atmel mit 3% angegeben, was für diese Anwendung hinreichend genau ist; allerdings kann es bei extrem ungünstiger Kombination der Streuung des Takts, Temperatur, Versorgungsspannung der Durchlaufzeit durch die Optokoppler *und* einem DCC Signal an der Grenze des zulässigen Timing zu einer Fehlfunktion kommen.
    Wer es gerne hypergenau mag, kann einen Quarz (und die zusätzlichen 18pF Kondensatoren) bestücken. Allerdings muß dann auch ein hex-file für die gewählte Frequenz geladen werden. Beim Übersetzen ist also entsprechend die Taktrate (F_CPU) auf diesen Wert zu stellen, alle Timingeinstellungen werden automatisch angepaßt. Auch bei der Programmierung der Fusebits muß entsprechend auf "external crystal" umgestellt werden.

    Taste und LED:
    Als LED ist eine 2mA Typen zu verwenden, diese kann direkt mit dem ATmega angesteuert werden. Der Taster wird zum Starten des Programmierens verwendet.

    Servoausgang:
    Es sind 2 Steckplätze für Servos vorgesehen, die übliche Pinbelegung GND - +5V - Servo wurde verwendet. Die Servos werden ja nach eingestellter Option im Stillstand nicht mit Pulsen versorgt, aber sie ständig an den 5V. Manche Servos (speziell billige) ziehen ziemlich heftige Stromstöße aus der 5V und liefern auch ziemliche Loaddumps zurück. Um diese sicher abzufangen, sollten die keramischen Abblockkondensatoren (C9 und C10) an den Servoanschlüssen 22u - 47u groß sein. Wenn diese Kondensatoren nicht in keramisch verfügbar sind, so kann man auch einen keramischen Kondensator 100nF und huckepack einen Elko verwenden - der Elkos sollte eine Spannungsfestigkeit von mind. 10V haben. Hochleistungsservos (z.B. für eine Zugbrücke) muß man mit separater Stromversorgung versehen.
    Die Servos belegen separate Ausgänge am Prozessor (von Timern), so daß die Ansteuerung kaum CPU-Last verursacht.



    Weichenrückmeldung:
    Die Schaltausgänge zu den Weichen sind über Widerstand und Zenerdiode auf Eingänge zurückgeführt. Hier kann die Lage des Endabschaltkontaktes abgefragt werden. Damit ist eine Rückmeldung der tatsächlichen Weichenlage möglich bzw. kann erkannt werden, ob die Weiche geschaltet hat.

    Wichtig: diese Widerstände sind nur zu bestücken, falls ein Feedback-Decoder gebaut werden soll, bei einer LED Ansteuerung stören sie!
    Wenn statt des Endlagenkontaktes ein separater Microschalter oder eine Lichtschranke verwendet werden soll, so sind die Rückmeldereingänge direkt zu kontaktieren. Am besten macht man sich eine zusätzliche kleine Lochrasterplatine mit Stiftsteckern und verdrahtet von dort wie folgt:
    Direkter Rückmeldeeingang
     Weiche 1   Port PA0   Anschluß bei Kathode von Diode D8 
     Weiche 2   Port PA2   Anschluß bei Kathode von Diode D6 
     Weiche 3   Port PA4   Anschluß bei Kathode von Diode D4 
     Weiche 4   Port PA6   Anschluß bei Kathode von Diode D2 

    Diese Rückmelderkontakte schalten jeweils gegen Masse, der entsprechende Pull-Up ist auf OpenDecoder2 bereits integriert.

    DMX:
    Ein bidirektionaler RS485 Treiber (online umschaltbar) ermöglicht sowohl die Ansteuerung der Platine von DMX aus als auch das Erzeugen eines DMX Datenstroms. Zumsammen mit der aus OpenDCC bekannten Macroprogrammierung läßt sich damit die Hintergrundbeleuchtung der Modellbahn von DCC aus schalten.

    Acknowledge-Puls und/oder Notausschaltung:
    OpenDecoder V2 hat die Möglichkeit, an die Zentrale irgendwas zurückzumelden. Dies kann entweder ein DCC-konformer Acknowledgepuls, ein Puls auf einer separaten Rückmeldeleitung oder eine Nothalt sein, welcher über eine getrennte Leitung gemeldet wird.
    • DCC-konformer Acknowledgepuls:
      hierbei handelt es sich um kurzfristige Lasterhöhung (> 60mA für 6ms) auf dem DCC Eingang. Dieser Puls kann von der Zentrale am Programmiergleis ausgewertet werden. Hierzu wird über SJ1 und SJ2 (SJ = Solder Jumper = Lötbrücken) und die Dioden (BAV199) das DCC-Signal gleichgerichtet und mit einer schaltbaren Last von 100 Ohm beaufschlagt. X7 entfällt in diesem Fall.
    • Separater Rückmeldepuls:
      Hier werden einfach alle X7 Ausgänge der Decoder (Pin 1 = Ground) zusammengefaßt und mit einem Pullup (z.B. 4k7 oder in der Zentrale integrierter OC) versorgt. Der Rückmeldepuls muß dann an der Zentrale direkt eingelesen werden. Die Dioden können in diesem Fall entfallen und SJ1/2 bleibt offen.
    • Nothaltleitung bei nicht schaltenden Weichen:
      Gleiche Ringleitung und Schaltung wie oben, jetzt wird jedoch ein Abschalten der Anlage (oder Teilen davon) ausgelöst. Dies kann entweder direkt (Nothalt) oder über ein Rückmeldesystem (wie z.B. S88) erfolgen.
    Das jeweilige Rückmeldeverfahren wird per Software gewählt. Auch wenn kein DCC-Rückmeldepuls verdrahtet ist, so kann doch der Decoder programmiert werden - die Zentrale wird jedoch *Fehler* melden, da ja die Quittung nicht kommt.
  • Motoransteuerung: Für die Ansteuerung von Motorantrieben muß man aus den Pulsen ein Umpolsignal erzeugen, hierzu kann entweder dieser Polaritätsumschalter oder diese Transistorstufe verwendet werden.
    Für kombinierte Dekoder (Licht / Sound / Bewegung) z.B. für das Kaffeetassenkarussell gibt es eine Aufsteckplatine, welche entweder eine volle Motorendstufe (mit H-Brücke) oder eine einfachere Schaltung, die einen Transistor zur PWM-Steuerung und ein nachfolgendes Polwende-Relais enthält. Diese Platine wird auf JP1 und JP4 aufgesteckt.

    Mittlerweile gibt es für solche Anwendungen auch den OpenDCC AniMat mit 2 integrierten H-Brücken.
  • Layout:
    Die Platine ist in der Version 2.0 als zweiseitige Platine mit den Abmessungen 80*50mm realisiert. Es sind nur wenige SMDs, zumeist Durchsteckbauteile und DIL-ICs verwendet, ein Nachbau ist daher möglich. Auch ist genug Platz für große Schraubklemmen und Befestigungslöcher vorgesehen, so daß der fertige Decoder leicht installiert werden kann.

    Bauteilseite / Components
    Bauteilseite

    Lötseite / Solder
    Lötseite

Wie geht die CV-Programmierung?

    Wenn der Decoder einen gültigen CV-Programmiervorgang erkannt hat und eine Rückmeldung an die Zentrale erforderlich ist, dann wird ein sog. Service Mode Acknowledge ausgelöst. Hierzu muß der Zentrale eine 6ms lange Lasterhöhung um mind. 60mA präsentiert werden. Dies geschieht mit OK4 und T1.
    T1 schaltet den Widerstand als Last auf das gleichgerichtete DCC-Signal, hierzu muß SJ1 und SJ2 geschlossen sein.

    Hinweis für altes Layout 2.00:
    Für die DCC-Rückmeldung muß mindestens ein Strom von 60mA fließen. Dieser kann mit dem Optokoppler OK4 nicht allein bewältigt werden. Hier wird ein PNP-Transistor als Emitterfolger nachgeschaltet.
    Dieser Transistor ist im Layout V2.0 nicht enthalten. Ohne Transistor wird bei einigen Zentralen im Servicemode ein Fehler gemeldet, da die Zentrale den zu schwachen ACK-Strom nicht erkannt hat. Das Programmieren des Decoders funktioniert jedoch trotzdem!
    Wenn statt SFH628 der CNY17F verwendet wird, dann muß die Brücke zwischen Pin 4 und 5 durchgetrennt und SJ5 geschlossen werden. Beim CNY17 gibt es 2 Varianten: CNY17 und CNY17F (hier ist der Basiseingang offen), verwendbar ist CNY17F. Bei CNY17 muß dann auch auch noch der Pin 6 (Basisanschluß) freigemacht werden.

Versionen, Änderungen:

    Version 2.0:
  • 12.04.2007: Wertänderung R2, R4, R6, R7, R9, R10, R11, R12 von 10k auf 22k
  • 21.04.2007: Transistor T1 (BC560 oder BC860) als Emitterfolger auf der ACK dazu, damit wird der normgerechte Strom bei DCC-ACK gezogen. (siehe Bauanleitung) (ist ab V2.01 im Layout enthalten)
  • 25.09.2007: V2.10 dazu; dies ist eine Varianten ohne SMDs und einseitigem Layout (bis auf die Feedbackschaltung); diese Version wurde von Klaus Kemkes gemacht, ich habe keine Platinen dafür!

Unterlagen

    Nochmals der Hinweis: Diese Schaltung und Layout ist frei für den privaten Gebrauch, eine kommerzielle Verwertung bedarf der schriftlichen Genehmigung. Eagle-Files gibt es nur auf Anfrage.
    Schaltplan / Layout:
    Stückliste:
    Layout:
    Datenblätter:
    -