OpenDCC - Eine Zentrale für DCC - Schaltungsbeschreibung

Schaltplan, Blattaufteilung

    Blatt 1: ATmega, 5V Stabilisierung, JTAG und Programmierschnittstelle
    Blatt 2: Booster, DCC und Programmiergleisausgang
    Blatt 3: S88-Zusatzplatine
    Blatt 4: Tastenplatine und LEDs, DMX-Ausgang
    Blatt 5: RS232 und USB Interface

Schaltung

    Prozessor:
    Als Herz von OpenDCC pocht ein AVR ATmega32 oder ATmega644P (nötig für die Xpressnetversion) von Atmel. Dieser Prozessor bietet 32kByte bzw. 64kByte Flash Programmspeicher, 2kByte SRAM und 1kByte EEPROM, sowie Interruptcontroller, Timer und Schnittstellen "on chip". Auch wenn Xpressnet nicht benötigt wird, so empfehle ich doch den ATmega644P zu verwenden. Der ATmega wird mit 16MHz getaktet, dies ist auch zugleich die Leitfrequenz, aus der sich alle anderen Timings ableiten. Beim Selbst-Compilieren muß daher unbedingt die richtige Taktrate angegeben werden (F_CPU in config.h bzw. im Project Setting).

    Spannungsversorgung:
    An X13 (X2) wird die stabilisierte 15V-Spannung des externen Netzteils eingespeist und zur Versorgung des Doppelvollbrückentreibers L6206 und des 5V Längsreglers 7805 verwendet. Leider gibt es bei Steckernetzteilen ein wenig Wildwuchs, was den Stecker angeht: Hier ist der Innenstift Plus, der Mantel Minus. Statt des Kleinspannungsstecker können auch Schraubklemmen bestückt werden.

    Sollten mehrere S88 Ausgänge verwendet werden, so wird der auf 5V entnommene Strom zu groß für den 7805. In diesem Fall kann statt des 7805 ein Schaltwandler PTH08080 von Texas Instruments bestückt werden. Diese kann bei einem Wirkungsgrad von 85% 2,5A liefern. Eine andere Alternative ist RECOM R-7805-0.5 im SIP3 Gehäuse, das ist ein 1:1 Ersatz für den 7805. Ein mögliche Alternative ist auch der externe s88-n Booster von Sven Brandt.
    Der externe S88-Eingang ist mit einer Polyfuse gegen Kurzschluß gesichert.

    Kurzschlußüberwachung:
    Der Vollbrückentreiber hat eine integrierte Kurzschlußüberwachung, diese wird über die exteren Widerstände R7 und R12 eingestellt. Ein Wert von 39k erlaubt einen Kurzschlußstrom vom ca. 500mA, bei 15k sind es 1.5A. Beim Programmiergleis wird zusätzlich der Rückstrom aus der Vollbrücke über einen Strommeßwiderstand (0,5 Ohm, Parallelschaltung von zwei 1 Ohm Widerständen) geleitet. Der Spannungsabfall an diesem Widerstand wird für die ACK-Detection verwendet.

    Gleisausgang, Überschwinger am Ausgangssignal:
    Prinzipiell ist der Gleisanschluß mit verdrillten Leitungen auszuführen, um Einkopplungen des Ausgangssignals auf andere Schaltungsteile (z.B. Rückmelder, S88) möglichst zu vermeiden. Der Ausgang ist intern mit einer RC-Kombination kompensiert, um Signalüberschwinger zu vermeiden.
    Sollten am Gleis trotzdem noch Signalüberschwinger auftreten, so kann das zusätzliche RC-Glied etwas größer dimensioniert werden (größerer Kondensator).
    Die Signalüberschwinger haben Ihre Ursache in Reflexionen auf der Gleiszuleitung. Diese lassen sich vermeiden bzw. reduzieren wenn man den Ausgang zusätzlich durch ein RC-Glied filtert. Bewährt hat sich eine Kombination aus Längswiderstand und Querkondensator mit den Werten R3=R4=0,15Ohm und C9, C10=100nF bis 200nF. C10 sollte nicht über 200nF gewählt werden, weil sonst nach dem Polaritätswechsel des DCC-Signals die Kurzschlußschaltung anspricht. Der Widerstand (R3 bzw. R4) sollte eine max. Verlustleistung von 1W haben. Der Ruhestrom steigt dadurch allerdings um ca. 30-60mA (je nach Kondensator) an.

    Bild: Das Ausgangssignal von OpenDCC

    ACK Detection:
    Schaltplanauszug
    Gemäß RP 9.2.3 soll ein Lokdecoder im Service-Mode ein Acknowledge zurücksenden. Dies geschieht dadurch, dass die Stromaufnahme kurzzeitig um 60mA erhöht wird. Diese Erhöhung verursacht am Sense Pin des Programmierausgangs einen Spannungsabfall. Nach einem Vorschlag von Martin Pischky wird der Spannungsabfall auf zwei verschiedene RC-Glieder geführt. Normalerweise ist die Spannung am negativem Eingang des Comparators um ca. 11mV höher. Bei einer Spannungsänderung braucht das untere Glied deutlich länger, um der Spannung zu folgen. Der Komparator detektiert daher einen kurzen positiven Puls beim Anstieg der Spannung. Dieser Puls löst einen Interrupt (aktiv low) am Prozessor aus.

    Eine Hochpassschaltung nach http://www.geocities.com/CapeCanaveral/Lab/2459/ACKDET02.HTM wäre auch gegangen. Den internen Komparator des ATmega habe ich nicht genommen, weil dieser mit einem max. Offset von 40mV gesegnet ist.


    Hier sind die Signale zu sehen; oben das Signal SENS_PROG. Bei jedem Wechsel des DCC-Signals fließt kurzzeitig ein hoher Strom. Diese werden durch einen (zusätzlichen) 10nF Kondensator am Eingang des ACK-Komparators 10nF zwischen Pin 2 und 3 weggefiltert. Unten das Signal ACK_DETECT, wobei deutlich der ca. 14ms lange ACK-Puls zu sehen ist; Wenn die o.g. RC-Glieder sich auf die Last neu einpegeln, kommt es zu Überlagerungen der Schaltpulse, deswegen ist die Rückflanke des ACK_DETECT Signals so "ausgefranst". ACK wird ab einer Stromerhöhung von 50mA erkannt (lt. Norm 60mA). Diese Schwelle kann für Faulhabermotoren bzw. Spur N zu hoch sein, hier wird eine Reduzierung von R22 auf 12k empfohlen, siehe hierzu auch die Hinweise in der FAQ bzw. im Forum. (Hinweis: beim normalen Programmieren ist dieser Puls nur 6ms lang, hier ist dann auch die Rückflanke sauber.)

    PC Schnittstelle:
    Hier wird der übliche Max232 oder LT1081 zur Pegelwandlung verwendet. Neuere Varianten brauchen i.d.R. kleinere oder keine Kondensatoren mehr, in diesem Fall einfach die C's nicht bestücken. (z.B. Max232A benötigt nur 0,1µF). Im Layout sind neben den Pins 1 und 16 zwei Vias positioniert. Damit ist an dieser Stelle auch ein LT1080 bestückbar. Dieser ist an sich pinkompatibel, hat jedoch ein 18-poliges Gehäuse.
    Es wird Hardwarehandshake via CTS unterstützt. +10V auf CTS (Pin 8) gibt die Datenübertragung Richtung OpenDCC frei. RTS liegt auf Pin 7;
    Eine direkte USB-Schnittstelle ist alternativ über den Chip FT232RL möglich. Dieser Chip emuliert eine RS232-Schnittstelle am USB-Bus; das sekundäre Interface entspricht RS232, allerdings mit TTL-Pegeln, so dass eine direkte Verbindung zum ATmega möglich ist. Dieser Chip samt zugehöriger Steuerwiderstände ist auf der Platine in SMT (SO28) ausgeführt. Sollte die USB-Schnittstelle verwendet werden, so ist der angepaßte USB-Treiber von ftdi zu verwenden und die beiden Jumper JP5 und JP6 in Position USB zu stecken, ansonsten müssen beide Jumper in Position RS232 stecken. Wer nur ein Interface hat, kann die Jumper JP5 und JP6 durch Drahtbügel ersetzen.
    Für die V1.3 sind diese Jumper noch als Lötbrücken ausgeführt, bitte Stromlauf und Bestückungszeichnung beachten.

    Tastatur und LEDs:
    Als LEDs sind 2mA Typen (=low current) zu verwenden, diese können direkt mit dem ATmega angesteuert werden. Die LEDs kann man alternativ auf der Hauptplatine (dann nach vorne umgebogen) oder auf der Frontplatine bestücken. Bei den Tastern ist im Schaltplan ein RC-Glied zum Entprellen vorgesehen, dieses wird jedoch nicht bestückt. Der notwendige Pullup wird mit ATmega programmiert und die Entprellung erfolgt per SW.

    Boosterstufe:
    Der verwendete H-Brückentreiber L6206 könnte einen theoretischen Maximalstrom von 2,8A je Ausgang. Allerdings ist dies beschränkt durch die maximal mögliche Verlustleistung, welche abgeführt werden muß. Auf dem Layout sind Kühlflächen, damit kann (bei eingelötetem L6206) etwa ein Wärmeübergangswiderstand von 44K/W erreicht werden. Läßt man eine Erwärmung von 90 Grad zu, dann darf nicht mehr als 1,5A Dauerstrom entnommen werden.

    Die Wärmeableitung erfolgt im wesentlichen über die Groundpins, deshalb sollte in die Lochreihe quer zum L6206 ein entsprechendes Kühlblech (Kupferstreifen) eingelötet werden. Ersatzweise sind auch Lötstifte und ein kleiner Platinenstreifen möglich. STM nimmt für eine Kühlfläche mit 6cm2 Kupfer einen Wärmeübergang von 44 K/W an. Zusätzlich sollte man auf dem Baustein noch einen IC-Kühlkörper aufkleben, um die Wärmeabgabe weiter zu verbessern.
    Andere Gehäusearten (PowerSO36) hätten zwar bessere Wärmeableitung und damit mehr Leistung, aber sind auch teilweise schwierig manuell zu verlöten.
    Die interne Überstromabschaltung ist mit 15k Referenzwiderstand beschaltet, das aktiviert die Abschaltung bei ca. 1.5A. Bei kapazitiven Lasten (z.B. sehr lange Leitungen (> 20m)) kann es sein, daß die Uberstromschaltung bereits wegen des Umladens der Leitungskapazität anspricht. Hier dann unbedingt einen externen Booster nachschalten.

    Bei der Gehäusewahl ist auf eine ausreichende Luftführung zu achten. Löcher bohren :-)

    Bitte beachten: der Gleisausgang ist nicht massebezogen, sondern schaltet zwischen etwas über GND und etwas unter VCC hin und her. Beim Einsatz von Rückmeldemodulen auf potentielle Masseschleifen achten!

    S88:
    Der S88-Bus ist mit Bustreibern 74AC244 ausgerüstet. Jeder S88-Strang hat einen eigenen Clocktreiber. Zur Vermeidung scharfer Flanken ist im Clockausgang ein RC-Glied vorgesehen, am Leitungsende sollte ein Pullup von etwa 330 Ohm gegen 5V vorgesehen werden.
    Es sind die übliche Steckleiste oder alternativ eine RJ45-Buchse bestückbar. Damit kann der S88-Bus mittels CAT5-Kabel verdrahtet werden. AB V1.4 ist die Belegung nach dem Standard S88-N verwendet.
    S88-N erlaubt auch die Übertragung von RAILDATA, hierzu wurde ein Buffer '125 hinzugefügt; um auch ein eventuelles Programmier-ACK auf S88-N zurück melden zu können wurde der RESET tristate schaltbar gemacht. Diese Optionen sind für den normalen S88-Betrieb nicht erforderlich. Hinweise:
    -  in der V1.2 bzw. V1.3 war diese Kabelbelegung verwendet.
    -  Adapter lassen sich relativ einfach mit MEB 8-8 (reichelt.de) erstellen. das ist eine RJ45-Buchse mit 70mm Kabelanschlüssen


    Anschlußstecker (Typen):
    Anschluß des Gleisausgangs mittels Wago 734-164, zugehöriger Stecker 734-104; (Bezug z.B. www.reichelt.de). Ersatzweise kann auch eine 4-polige Schraubklemme (RM 5,08) bestückt werden.

    Stecker für Power: üblicher DC-Kleinspannungsstecker, z.B. Bürklin 40F140, (0338-8230-00), Typ AMP 5202550 &xnbsp;(–,74), Dazu passender Stecker ist 40F120. Ersatzweise kann auch hier eine Schraubklemme bestückt werden.

    Stecker für S88: RJ45: AMP 520251-4, Bürklin 73F558

Wunschliste an Verbesserungen:

    Natürlich kann eine einfache Box nicht alle Wünsche abdecken und die jeweiligen Vorlieben und Bedürfnisse sind verschieden. Folgende Wünsche an eine Weiterentwicklung sind bisher aufgetaucht:
     - Support Loconet
     - Ethernet, als SRCP Server

Hardware Change Log

    from V1.3 to V1.4
  • RJ45 according to S88-N.
  • Buffer for raildata added.
  • Reset tristate possible
  • switch between USB and RS232 through jumper
  • SJ4 on comp. side
  • from V1.2 to V1.3:
  • Rotated RJ45 connectors
  • More holes on front panel keyboard
  • Added C44 (10nF) at IC6
  • Changed value of R19, R20 from 10k to 2k2