OpenDCC GBM16: Gleisbesetztmelder / BiDi-Belegtmelder, Bauanleitung

Einleitung

    Der GBM2 basiert auf 2 Prozessoren Atmel ATXmega128A1 (TQFP100, Pitch 0,5mm) und auf einer Reihe von SMD-Bauteilen (meist 0603), entsprechende Erfahrung beim Löten von SMD wird nachfolgend vorausgesetzt.

Layout

    Bestückungsseite Lötseite

Hardware aufbauen

Schritt 1

    Gleisbelegtmelder Railcom, Platine 1 Zuerst werden die LEDs und die Widerstandsnetzwerke (Bauform 1206, z.B. reichelt BCN16 1,0K) bestückt, Spannungsregler und Prozessoren bleiben noch unbestückt. Bei dem LED markiert eine kleine Ecke die Kathode (Substrat), die Anode ist fallweise auch am Anschlußdrähtchen innen auf dem Chip erkennbar. Bei den LEDs mit dem Löten aufpassen, das Plastik oben wird schnell weich, also nicht zu hohe Temperatur nehmen.

    Jetzt werden die LEDs auch gleich getestet: die Platine wird mit GND verbunden und an den entsprechenden Pin-Pads des Prozessors wird mittels Anlegen von 3,3V kontrolliert, ob alle LED jeweils einzeln leuchten. Am besten geht dieser Test, wenn man die 3,3V über einen bedrahteten Widerstand (100 Ohm) zuführt und einfach sanft entlang der Pads durchstreicht.

Schritt 2

    Nun werden die Spannungsregler und die Kondensatoren bestückt und die Ausgangspannungen auf der Gleisplatine ('trackproc') und dem Controlboard ('controlproc') kontrolliert. Es müssen je 3,3V anliegen. Zu beachten ist hierbei, dass je nach verwendeten Spannungsregler ev. eine Mindestlast (oft so im Bereich von 2mA) auf den 3,3V vorhanden sein muß, damit der Regler auch richtig arbeitet. Deswegen empfiehlt es sich, für diesen Test die 3,3V mit 1k zu belasten.

Schritt 3

    Gleisbelegtmelder Railcom, Platine 2 Jetzt werden die ATXmega bestückt. Achtung: vor dem Bestücken die Revision des Chip kontrollieren: für den GBM ist Revision H oder größer erforderlich. Die Revisionsbezeichung steht auf der Unterseite des Chips. Zuerst exakt auf einen Eck-Pin ausrichten, dann gegenüber anlöten. Nochmals die Pin1-Orientierung prüfen (nicht dass der Käfer im Eifer des Gefechtes falsch rum drauf kommt).
    Bei Löten keine Angst vor Kurzschlüssen! Einfach alle Pins unter sparsamer Zugabe von Lötzinn anlöten und dann das überschüssige Zinn mit einer dünnen Lötsauglitze aufsaugen. Nachdem die Pins nochmal mit der Lupe auf Kurzschluß untersucht wurden (mind. zweimal checken, unter verschiedenen Blickwinkeln!) wird mittels eines strombegrenzten Netzteiles Spannung angelegt und der Leerlaufstrom überwacht. Dieser sollte ca. 15mA betragen. Der Strom im Betrieb liegt dann bei etwa 50-70mA.

Schritt 4

    Die Bestückung wird komplettiert, die Gleiseingänge sowie die Magnetkoppler werden bestückt, ebenso die Buchsen und Schraubklemmen (diese erst ganz am Schluß). Bei den Dioden bitte genau kontrollieren, ob diese richtig gepolt und sauber verlötet sind, wenn hier eine Lötstelle offen ist, kann eine zu große Eingangsspannung den Prozessor zerstören! Auch der Typ der Dioden ist wegen der max. Durchflußspannung und Strom zu beachten.
    Für die Jumper und die Verbindungsstecker zwischen den GBM16T kann man einfache Stiftleisten nehmen, wie z.B. Reichelt SL 2X32G, gerade, RM 2,00.

    Die Anschlußklemmen des GBM sind ab Version 1.4 in verschiedenen Varianten bestückbar:
    Der Gleisansschluß kann zweipolig oder einpolig erfolgen. Falls einpolig angeschlossen wird, sollte trotzdem die zweite Ader vom Gleis bis zu Rückmelder verlegt werden und erst dort die DCC1-Seite jeweils miteinander verbunden werden.
    Für zweipoligen Gleisanschluß kann die Doppelstockklemme RIA AKL 267 verwendet werden oder man bestückt das steckbare System AKL183 + AKL169.
    DCC-In und Ersatzspeisung sind entweder mit 4-poligen Anreihklemmen (Schraubklemmen) oder lösbar mittels AKL182-04 + AKL169-04 auszuführen. Hier sollte nicht die AKL183 verwendet werden, damit bei einem ev. aufgestecktem Kehrschleifenmodul die Leitungsführung nicht stört.

Firmware einspielen

    Die Firmware kann entweder direkt einspielt werden oder es wird ein zweistufiges Verfahren mit Bootloader angewendet. Das Verfahren mit Bootloader hat den Vorteil, dass man spätere Firmware-Updates dann ohne Programmiergerät einspielen kann. Allerdings müssen hierzu auch die Boards mit USB ausgerüstet (bestückt) sein, bzw. beim GBM16T wird das FTDI USB-RS232-TTL-Kabel benötigt.

    Die ATXmega werden mittels PDI bespielt, das ist eine Zweidraht-Schnittstelle. Der bisher übliche SPI-Adapter (wie z.B. ponyprog) kann nicht verwendet werden. Auch für USBPROG gibt es noch keine Unterstützung, eine Anfrage im dortigen Forum bzw. beim Entwickler blieb unbeantwortet. Leider ist da der Support etwas mager ...

    Verwendet werden kann:
    • AVRISPmkII: Hierzu ist eine aktuelle Version von AVR Studio erforderlich, vor Benutzung unbedingt im Programmiermenu die Firmware des AVRISP updaten.
    • STK600: Bei STK600 wird vom 6-poligen blauen PDI-Stecker eine 1:1 Verbindung auf das Board gezogen. Wichtig: Am STK600 muß der VTARGET-Jumper geöffnet werden!
    Begonnen wird das Einspielen der Firmware mit den Fuses:
    Fuses ATXmega128A1 Bootloader
    Hinweis: die JTAG Fuse disable, sonst funktioniert die Messung auf Kanal 12-15 nicht.
    Fuses ATXmega128A1, mit Bootloader
    Fusebyte 00xFFJTAG User ID
    Fusebyte 10xAAWatchdog Configuration
    Fusebyte 20xBAReset Configuration
    Fusebyte 40xFFStart-up Configuration
    Fusebyte 50xFDNon-Volatile Memory
    Ohne Bootloader wäre Fusebyte 2 0xFA, hier der entsprechende Screenshot.
    Fuses ATXmega128A1U, mit Bootloader
    Fusebyte 00xFFJTAG User ID
    Fusebyte 10xAAWatchdog Configuration
    Fusebyte 20xBEReset Configuration
    Fusebyte 40xFFStart-up Configuration
    Fusebyte 50xDDNon-Volatile Memory
    (Hinweis: trotz gleicher Signatur des ATXmega128A1 und des ATXmega128A1U hat Atmel die EESAVE und die BODACT-Fuse vom Fusebyte 2 auf Fusebyte 5 verschoben). Man kann (und sollte) die Einstellung 0xDD für Fusebyte5 sowie 0xBA für Fusebyte2 generell wählen.

    Als nächstes wird der Bootloader eingespielt: für den GBM16C (ControlProc) wird xboot_gbm16c.hex verwendet, für den GBM16T (TrackProc) entsprechend xboot_gbm16t.hex. (Sollte kein Bootloader verwendet werden, kann man an dieser Stelle gleich die Anwendungsdateien (hex und eep) einspielen.)
    Wichtiger Hinweis zur Stromversorgung während des Programmierens mit dem PDI Adapter:
    Das Programmiergerät verbindet GND des Boards mit GND des PCs. Das ist beim GBM16C (ControlProc) auf gleichem Potential (dort gibt es also diesbezüglich keine Probleme), bei GBM16T (TrackProc) ist allerdings der GND der Platine mit dem Gleisausgang des Boosters bzw. der Zentrale verbunden. Wenn hier das Programmiergerät aufgesteckt wird, dann wird dieser Gleisausgang gegen GND kurzgeschlossen. Das bedeutet, dass man entweder:
    • den Booster oder die Zentrale komplett erdfrei stellen muß - das Netzteil muß potentialgetrennt sein, es darf keine USB oder RS232-Verbindung von der Zentrale zum PC geben. Xpressnet muß auch isoliert sein.
    • oder man sorgt dafür, dass DCC abgeschaltet ist und der Trackproc trotz abgeschalteter Zentrale versorgt wird. Man kann ein USB-Netzteil (oder eine sonstige Spannungsquelle) an Trackproc anstecken und so die Versorgung des Prozessors beim Einspielen der FW sicherstellen.

Firmware Update durchführen

    Nachdem der Bootloader installiert ist, wird die Betriebsfirmware mit der seriellen Schnittstelle durchgeführt. Hierzu geht man wie folgt vor:
    Update am GBM16T: (Trackproc)
    1. Bereitstellen von avrosp.exe, update_gbm16t.bat und den gewüschten Firmware-Dateien (gbm16t.hex, gbm16t.eep) in einem Verzeichnis. AVROSP findet man in der Application Note 911 von Atmel.
    2. Verbinden des GBM16T über die Pfostenverbinder am unteren Rand mit Hilfe des FTDI USB-RS232-TTL-Kabels. Es ist egal, ob eine 3,3V oder 5V Kabel verwendet wird. Unbedingt auf richtig Polarität achten (Schwarz = GND). Bitte auch beachten, dass die Optokoppler für diese Schnittstelle am GBM16T bestückt sein müssen.
    3. Kontrolle des (virtuellen) seriellen Ports, welcher für das Kabel vergeben wurde. Das geht über den Gerätemanager, welcher über die Eigenschaften des Arbeitsplatzes erreichbar ist. Direkt kann man den unter Windows aufrufen mit: 'Ausführen...' und dann devmgmt.msc (Ich habe mir da eine Verknüpfung auf den Desktop gelegt, weil ich das öfter brauche)). Der Port muß im Bereich COM1 bis COM8 liegen.
    4. Starten von update_gbm16t.bat COMx, wobei x die vorher gefundene Portnummer bezeichnet.
    5. Einschalten des GBM16T, dabei den Programmiertaster gedrückt halten. Die Art der Stromversorgung ist jetzt nicht mehr wichtig, weil ja der serielle Port über Optokoppler angeschlossen ist. Eine Potentialtrennung ist nicht mehr erforderlich, d.h. der GBM16T kann hierzu einfach in der Anlage verbleiben. Den Taster erst nach dem Einschalten loslassen.
    6. Den Anweisungen in update_gbm16t folgen.
    Update am GBM16C: (controlproc)
    1. Bereitstellen von avrosp.exe, update_gbm16c.bat und den gewüschten Firmware-Dateien (gbm16c.hex, gbm16c.eep) in einem Verzeichnis.
    2. Verbinden des GBM16C entweder über den USB-Port oder (sofern der USB-Port nicht bestückt ist) über ein FTDI USB-RS232-TTL-Kabel mit dem PC. Es ist egal, ob eine 3,3V oder 5V Kabel verwendet wird (der Stromversorgungspin ist nicht angeschlossen). Unbedingt auf richtig Polarität achten (Schwarz = GND).
    3. Kontrolle des (virtuellen) seriellen Ports, welcher für das Kabel oder den GBM16C vergeben wurde. (siehe oben)
    4. Starten von update_gbm16c.bat COMx, wobei x die vorher gefundene Portnummer bezeichnet.
    5. Einschalten des GBM16C, dabei muß die Steckbrücke auf Port K3 bestückt sein. Diese Steckbrücke befindet sich auf der 2mm 8-fach Stiftleiste (J54), am nächsten zum Programmierstecker gelegen.
    6. Den Anweisungen in update_gbm16c folgen.

Jumper, Lötbrücken

  • JP30: Diese Lötbrücke ist immer zu schließen (dient als Detektionsleitung des GBM16T)
  • JP54-3: nur zum aktivieren des Bootloaders
  • Alle sonstigen Jumper sind offen zu lassen.

Errata für die ersten Boardversionen

  • Am PDI-Stecker war Pin 3 und 5 vertauscht.
  • Wertänderungen: R40: 47 Ohm -> 22 Ohm
  • R41 nicht bestückt. Wird ab Verion 1.2 durch eine Stromquellenschaltung ersetzt. Diese Stromquellenschaltung ist als Nachrüstlösung (kleine Zusatzplatine) verfügbar, bitte nachfragen.
  • Brücke IC1 Pin 51 nach Pin 48 (DCC_IN doppelt anschließen)
  • IC50 Pin 100 über R81 (=10k) nach +5V (S88) legen, damit wird eine Erkennung der S88-Versorgung möglich.