OpenDCC-GBMBoost, eine Steuereinheit für BiDiB und DCC

Einleitung

    Mit der Möglichkeit bidirektionaler Übertragung (railcom®) eröffnen sich wichtige Möglichkeiten, die bei der bisherigen Zentrale Z1 nicht im gewünschten Umfang implementierbar sind:
    • Schnelle Rückmeldung auch größerer Informationsmengen, wie z.B. die aktuelle Istgeschwindigkeit, Ort und Adresse aller Fahrzeuge auf der Anlage.
    • Perfekte Optimierung der Gleisausgabe unter Zuhilfenahme der Empfangsquittungen der Lokomotiven und Dekoder.
    Ausgehend von einem leistungsfähigem Interface für die Rückmelder entstand der GBMBoost, welcher wahlweise als Zentrale, Booster und/oder Interface agieren kann.

Eigenschaften

    Die Steuereinheit GBMBoost kann für drei wesentliche Aufgaben eingesetzt werden, die Funktionen werden durch die geladene Firmware definiert:
  • Als Zentrale (Command Station):
    Hier agiert der GBMBoost wie eine konventionelle Zentrale. Enthalten ist ein Interface vom PC in die Anlage, die Anschlußmöglichkeit von Handreglern und Bedienpulten via Xpressnet, weiterer Einheiten via BiDiB, sowie ein integrierter Booster bis 4A.
  • Als Booster:
    In dieser Betriebsart funktioniert der GBMBoost als intelligenter Booster, welcher das von der Zentrale über BiDiB bereitgestellte Signal verstärkt auf die angeschlossenen Gleise gibt. Die internen Zustände des Boosters (also momentaner Strom, Spannung, Temperatur) werden direkt an das Hostprogramm gemeldet.
  • Als Rückmelde-Concentrator:
    In dieser Betriebsart werden Rückmeldungen von bis zu drei lokal angeschlossenen Rückmeldemodulen (GBM16T) ausgewertet. Das kann auch gleichzeitig mit der Boosterfunktion erfolgen.
  • Mit diesen Einsatzmöglichkeiten wird nun die Digitalisierung einer Modellanlage denkbar einfach: Eine GBMBoost übernimmt die Signalerzeugung und das PC-Interface, je nach Anlagengröße sind weitere GBMBoost als Booster zugeschaltet. An der ersten GBMBoost bzw. an beliebigen weiteren GBMBoost sind die Rückmeldemodule angegeschlossen, welche dann alle Gleisanschlüsse bereitstellen. Es ergibt sich eine saubere, klare und einfach zu verlegende Installation.

Download

Schaltung

  • Prozessor:
    Kern des GBMBoost ist ein Atmel AVR Atxmega128A1. Dieser Chip bietet mit insgesamt 8 seriellen Schnittstellen die Basis für die vielen Anschlußmöglichkeiten. Der Chip wird mit 3,3V versorgt und mittels eines 8MHz-Quarz getaktet. Durch die interne PLL wird der Arbeitstakt des Prozessors auf 32MHz eingestellt.
  • Stromversorgung:
    Der Stromversorgungseingang ist gemäß folgender Schaltung verpolsicher ausgeführt:


    Als Spannungsregler für die 3,3V kommt LP2951-33 (bzw. TS2951ACS-33) zum Einsatz, wobei eine Vorregelung mit einem LM7812 erfolgt. Der 3,3V-Regler wird durchaus warm ...
  • Booster:
    Als Booster wird eine BTM7752 H-Brücke von Infineon verwendet, diese zeichnet sich durch ein hervorragendes Ausgangssignals aus:

    Der Screenshot vom HMO2524 zeigt gelb und blau die Flanken der beiden Seiten der Brücke, rot das sich ergebende Summensignal am Gleis. Die Flanke ist sauber monoton und besitzt eine gut passende Anstiegsflanke (nicht zu schnell, nicht zu langsam), welche Reflexionen und sich daraus ergebende Spannungsüberhöhungen und Fehler bei der Signalerkennung sehr gut verhindert. Wichtig sind die Abblock-Cs um den Booster, speziell der Elko muß ein niedriges ESR und hohen zulässigen I(ripple) haben, hier muß unbedingt ein Polymertyp (z.B. Oscon) eingesetzt werden.
    Am Ausgang des Boosters ist ein Kompensationsfilter (C12, C21 und R62 .. R65), hierbei wird C12 nicht bestückt. R62 .. R65 sind 4,7 Ohm Widerstände, diese müssen aus Verlustleistungsgründen die Bauform 1206 haben.

    Die Spannung des Boosters wird über einen Spannungsteiler mit dem A/D-Wandler des Prozessors überwacht, ebenso der fließende Strom, welcher vom Boosterchip intern in eine Meßspannung konvertiert wird. Die Spannungs- und Strommessung ist hier nicht auf große Genauigkeit getrimmt, jedoch sind speziell bei der Strommessung recht hohe Toleranzangaben der H-Brücke zu berücksichtigen. Diese werden per Firmware abgeglichen, dann ergibt sich eine genaue Messung mit etwa 5% Meßfehler, was für diese Zwecke vollkommen ausreichend ist.
    Der Abgleich der Strommessung muß einmalig erfolgen, der ermittelte Abgleichwert wird gespeichert.
    • 1. GBMBoost mit gestecktem Debug-IF Jumper einschalten. Auf der USB-Schnittstelle mit 115200, 8N1 verbinden.
    • 2. An den Boosterausgang einen Leistungswiderstand im Bereich 50-100 Ohm anschließen.
    • 3. Mit dem Kommando BA<cr> die aktuellen Messwerte und Einstellwerte für die Messung anzeigen lassen.
    • 4. Kontrollieren, ob die gemessene Spannung stimmt und ob der eingestellte Meßwiderstand stimmt.
    • 5. Falls ein abweichender Meßwiderstand verwendet wird: mit Kommando BAR [wert]<cr> den bisherigen Wert korrigieren.
    • 6. Messungsabgleich mit BA 1<cr> starten.
    • 7. Sicherheitshalber eine Zustandsanzeige (und Strommessung) mit dem Kommando B<cr> starten.
    • 8. Wenn das Messergebnis gut ist, kann man den aktuellen Abgleichwert BAS permanent speichern. Dabei wird der Abgleichwert in die USER SIGNATURE ROW des xmega gespeichert und ist dort sogar gegen 'chip erase' gesichert.
    • 9. Sollte der Abgleich aus irgendwelchen Gründen daneben gehen, kann man mit BA [wert] einen Abgleichwert manuell setzen. BA 823 ist der default-Wert.
  • BiDiB-Interface:
    Das BiDiB-Interface wird mit zwei RS485 Transceivern gebildet: ein Transceiver übernimmt das DCC-Signal, der zweite Transceiver kontrolliert die Datenleitung. Eine BiDiB-Busleitung muß an beiden Enden abgeschlossen werden, an einer Stelle soll eine kontrollierte 'Vorspannung' (Biasing) erfolgen. Der Abschluß kann durch steckbare Jumper erfolgen, das Biasing erfordert das Bestücken von 2 Widerständen mit 1.5 KOhm. Biasing darf im System nur einmal erfolgen und wird bei der Baugruppe Interface gemacht.
      BiDiBus Konfiguration
      Abschlußan beiden Enden der Busleitung
      Biasingnur auf dem Interface, je ein Widerstand 1,5kΩ
      Spannungsversorgungauf dem Interface, Spannungsregler 12V
    Wichtig: die Spannungsversorgung des BiDiB muß vorhanden sein, sonst erfolgt kein Pullup auf der ACK-Leitung und die Booster können nicht einschalten.
  • USB-Interface:
    - Text fehlt noch -
  • Xpressnet-Interface:
    - Text fehlt noch -
  • Rückmeldemodul-Interface:
    - Text fehlt noch -
  • Externe Nothalttaster:
    - Text fehlt noch -

Verhalten des Boosters

    Der Booster verstärkt das Gleissignal, welches er über BiDiB empfängt. Optional fügt er eine Austastlücke (cutout) für BiDi (railcom®) hinzu. Für die Kontrolle der Booster ist neben der Abschaltung durch den Host auch eine dezentrale Nothaltschaltung vorgesehen.

    Der Booster wird unter folgenden Bedingungen aus- oder eingeschaltet:
  • Ein- Ausschaltnachricht vom Host
    Der Host sendet an das Interface die entsprechende Nachricht, diese wird von dort als Broadcast verteilt. Eine Quittung oder ein Statusupdate erfolgt nach der Umsetzung der Zustandsänderung.
  • Ausfall oder Einschalten des DCC-Signals
    Wenn das im BiDiB verteilte DCC-Signal keine Flankenwechsel mehr enthält, dann schaltet der Booster ab. Eine Meldung erfolgt nicht. Wenn das DCC-Signal wieder aktiviert wird, dann schaltet der Booster von selbst ein. Dieser Übergang kann z.B. benutzt werden, um nach einem generellem Nothalt eine komplette Anlage wieder hochzufahren.
  • Blockade der ACK-Leitung (harter Nothalt):
    Ein Booster schaltet ab, wenn die ACK-Leitung für eine bestimme Zeit auf LOW gezogen ist. Ein automatisches Wiedereinschalten erfolgt nicht.
  • Überstrom:
    Sofern ein zu hoher Stromverbrauch festgestellt wird, reagiert der Booster wie folgt:
    • Der hohe Stromverbrauch wird für eine kurze Zeit (im Bereich von ein paar ms) toleriert.
    • Bleibt der hohe Stromverbrauch für mehr als die Toleranzzeit bestehen, wird abgeschaltet. Der Booster versucht dann dreimal, innerhalb kurzer Zeit (10ms) erneut einzuschalten.
  • Sollte dabei wieder Überstrom detektiert werden, so schaltet der Booster permanent ab und und gibt eine Statusmeldung an den Host.
  • Wenn das feature 'self_restart' gesetzt ist, versucht der Booster weiterhin, nach jeweils einer Sekunde wieder einzuschalten.

Kühlung

    Das Board ist recht dicht gepackt und neben den vielen Funktionen ist auch ein Booster mit integriert. Der Booster kann etwa 3A Dauerstrom, Spitzenleistung ist 5A. Zur Kühlung sind sehr viele Kupferflächen und Vias rund um den Chip vorgesehen, ein SMD-bestückbarer Kühlkörper von Fischer Elektronik erhöht die Abstrahlung des Boards.
    Wenn man 3A Dauerstrom zieht, geht der Chip auf etwa 100° hoch (bei 23° Umgebung). Bei 4A Dauerstrom wird es dann noch ein bischen mehr. Hierbei spielt auch die Einbausituation eine Rolle: Wenn das Board flach liegt, sind die Temperaturen höher, bei senkrechtem Einbau und guter Konvektion sind die Übertemperaturen deutlich geringer. Senkrechter Einbau ist empfohlen.

    Es gäbe noch drei Möglichkeiten, die Kühlung zu verbessern:
  • Kühlkörper auf Chip aufkleben
  • unten 2. SMD Kühlkörper montieren
  • 3,3V als Schaltregler ausführen

Software Details

  • Booster:
    Die Boosterfunktion ist in der Firmware weitgehend von der Zentralenfunktion getrennt. Selbst bei Betrieb als DCC-Erzeuger wird das DCC-Signal ausgegeben und dann wieder empfangen, d.h. die Software empfängt das im anderen Modul erzeugte Signal selbst wieder. Das läuft unabhängig, damit ist dann auch eine Betrieb mit externem DCC möglich.

Einsatz bei Gartenbahnen?

    Der GBMBoost und die Belegtmelder sind optimiert für H0, TT, N oder Z. Bei Gartenbahnen wird i.d.R. mehr Leistung benötigt und auch mit höherer Spannung gefahren.
    Will man trotzdem die Platinen für Gartenbahn verwenden, dann müssen folgende Stellen beachtet werden:
  • Boosterstrom:
    Der Booster kann etwa 3A Dauerstrom, Spitzenleistung 5A. Wenn man dauerhaft viel Leistung nimmt, muß man über zusätzliche Kühlung nachdenken. Die Platine ist an der Stelle ein Kompromiss aus Bauteilaufwand, Platinenfläche, Leiterbahnbreite und erzielbaren technischen Daten, welcher optimal für H0 und kleiner ist.
  • Ausgangsspannung:
    Auch die Ausgangsspannung ist in der Standardversion auf 20V beschränkt, der Grund hierfür ist der (teure) Polymer-Elko des Boosters. Wenn man höher gehen will, muß man die Bauteile im Leistungspfad beachten: FET des Verpolschutzes, Ladeelko, Boosterchip. Der Boosterchip kann die bei Gartenbahn üblichen 24V, beim FET und Elko muß man fallweise andere Komponenten verwenden.
  • Verlustleistung:
    Am 7812 Regler fällt mehr Spannung ab, daher wird hier eine Kühlung erforderlich.
  • Strom der Sensoren?
    Auch im Messzweig muß die Stromfähigkeit der Dioden beachtet werden. Die SSL33A kann 3A Dauerstrom, DCC ist Wechselstrom, also sind etwa 5A möglich.

Änderung von Version 1.5 nach V1.6

  • LEDs grün auf LTSTC190 KGKT (mit 35mcd@20mA)
  • Spannungsregler: LP2951-33 (bzw. TS2951ACS-33), damit Entfall von R45/R46 bzw. R60/R61; im Layout ist auch alternativ der TS2950ACT-33 im TO92-Gehäuse (3-beiniges Transistorgehäuse) bestückbar.

Rückmeldemodul GBM16T

Anschlußklemmen

    Der GBM16T kann mit verschiedene Klemmen für den Gleisanschluß bestückt werden. Je nach Anschlußplatz und finanziellen Aufwand gibt es verschiedene Alternativen. Empfohlen ist jeweils zweiadrige, verdrillte Anschlußleitung zum Gleis, bei den RIA-TOP und bei den Doppelstockklemmen ist der notwendige Verteiler gleich mit auf der Platine integriert:
    Anschlußklemmen für GBM16T
    Klassische Schraubklemmen, Raster 3,5mm
    Diese ist die preiswerteste Alternative
    Doppelstock-Schraubklemmen, Raster 3,5mm
    Hier lassen sich beide Adern vom Gleis direkt paarweise einklemmen, ein extern Verteiler ist nicht nötig.
    RIA Stiftstecksystem, Raster 3,5mm
    Die Verbindung zum GBM16T ist lösbar, der Anschluß erfolgt mit steckbarem Schraubklemmen. Diese gibt es anreihbar in verschiedenen Polzahlen.
    RIAplug Stecksystem, gewinkelt, Raster 3,5mm
    Die Verbindung zum GBM16T ist lösbar, der Anschluß erfolgt mit steckbarem Schraubklemmen. Dieses System ist verpolsicher und mechanisch robust.
    RIAplug Stecksystem, gerader Abgang, Raster 3,5mm
    Die Edellösung. Sowohl Verteilerfunktion für einfachen Anschluß als auch lösbare Verbindung ist realisiert.

Schaltung

    ... Text fehlt noch ...

Download

Eigenschaften, Details

    In diesem Abschnitt geht es um technische Details zu bestimmten Abläufen, für Anwender ist das normalerweise ohne Belang.
  • Mehrere Loks in einem Abschnitt
    Railcom kennt 2 Kanäle (Channels), in denen Nachrichten von der Lok zum Rückmelder gelangen. Channel 1 ist ein sogenannter Broadcast-Kanal, hier sendet jeder Dekoder permanent seine Adresse aus. Sind hier mehrere Dekoder in einem Abschnitt, so kommt es zu Überlagerungen und gegenseitiger Störung der Übertragung. Im Channel 2 hingegen darf nur der aktuell adressierte Dekoder senden.

    Der GBM16T empfängt auf beiden Kanälen und kann so bis zu 4 Lokomotiven unterscheiden. Wenn im Channel 1 bei drei aufeinanderfolgenden, kompletten Adressmeldung kein Fehler aufgetreten ist, wird diese Adresse als gültig angenommen. Ebenso wird die aktuelle DCC-Adresse als gültig angenommen, wenn ich Channel 2 eine fehlerfreie Antwort empfangen wird.
    Wenn eine Adressmeldung neu empfangen wird, werden die bisherigen Adressen von Channel 1 als auch Channel 2 geprüft, ob diese neue Adresse schon vorhanden ist und nur bei Änderungen erfolgt eine Meldung. Adressmeldungen verfallen automatisch nach 800ms, wenn der Dekoder nichts mehr sendet.

    Durch dieses Verhalten ist der GBM16T in der Lage, auch mehrere Dekoder in einem Abschnitt zu detektieren, auch wenn in CV28 bei railcom-Kanäle aktiviert sind.
  • CV-Lesen
    Der GBM16T enhält einen Filter, welcher sich wiederholende identische CV-Meldungen unterdrückt. Wenn also ein Dekoder eine mit PoM gelesene CV meldet, dann wird nur eine Nachricht an den Host geschickt. Diese Nachricht enthält Lokadresse, CV-Adresse und CV-Datum. Sollte die gleiche CV binnen 500ms erneut eintreffen, wird keine erneute Nachricht generiert.

    Dadurch, dass die CV mitsamt der Lokadresse ausgeliefert wird, lassen sich PoM-Lesezugriffe beschleunigen: Es kann bereits ein weiterer PoM-Befehl an den Dekoder geschickt werden, während die Auswertung des ersten Lesebefehls noch auf dem Weg zum Host ist.

Legacy Mode

    Zur Unterstützung veralteter Hostsoftware gibt es die Möglichkeit, an der Hostschnittstelle eine HSI88 bzw. p50x-Emulation (TamsEC) zu aktivieren.
    Wichtiger Hinweis vorab: diese Emulation sind ausdrücklich beta-Status, werden nicht gepflegt und sind nur in besonderen Firmwareversionen enthalten. Auch kann es sein, dass ein Hostprogramm auf eine gewisse Trägheit einer Intellibox vertraut und nicht mit dem schnellen Antwortverhalten des GBMBoost zurecht kommt.

    Hosteinstellungen: Im Gegensatz zu den orginalen emulierten Interfaces läuft der GBMBoost auf der Hostseite immer mit 115200 Baud. (Einstellung DEFAULT_BAUD im Sourcecode). Man muß also die Hostsoftware auf diese Baudrate einstellen, hierzu muß man je nach Programm auch Registry oder Configdateien verändern, z.B. mittels UseCommDefaults=1

    Änderungen am Master: Zum Support eines solchen Legacy-Interface muß man die Baumstruktur von BiDiB aufheben (diese Interfaces kennen das nicht), es wird also ein 'lokaler' Host implementiert, welcher untergeordnete Knoten abfrägt, die Daten sammelt und fallweise dafür sorgt, dass die gewählte Emulation auch einen Hosttransfer auslöst. (#define LOCALHOST_ENABLED 1) Dieser lokale Host beherrscht nur 'flache' Adressierung, keine Hubs. Auch ist es nicht möglich, erweiterte Fähigkeiten von BiDiB zu nutzen: Boosterkontrolle und -diagnose, railcom, Accessory usw. sind nicht möglich, nur Belegtmeldung/Lokkontrolle. oder kurz: 'Ende der Ausbaustrecke'.
    Sogar bei der Belegtmeldung sind Klimmzüge erforderlich: das Interface muß in diesem Fall eine Abbildungsfunktion BiDiB-Melder auf klassische S88-Melder bereitstellen, dies erfolgt im Debug-Mode mit zusätzlichen Konfigurationseingaben.
  • Befehle Debug-IF:
    • NB: Einstellen der Nodebase: Damit wird dem angegebenen Node eine Basisadresse zuwiesen. Belegtmeldungen dieses Nodes werden beginnend mit der Basisadresse in das Rückmeldearray eingetragen. Basisadressen müssen immer durch 8 teilbar sein, also 0,8,16, usw. Es ist darauf zu achten, dass sich Rückmeldebereiche nicht überlagern.
      Die Melderadressen 0..31 sind für NODE_INACTIVE reserviert, 32..63 für die Confidence-Meldung des Nodes. Der Lokalhost versucht, die Nodes gemäß der NB einzusortieren, d.h. bei voll konfiguriertem System ergeben sich i.d.R. immer gleiche Nodeadressen, damit sind die Adressen 0..63 den jeweiligen Nodes zugeordnet.
      Die Basisadresse wird intern zusammen mit der Unique-ID gespeichert und beim nächsten Start dann anhand der Unique wieder restauriert.
    • NI: Senden einen Identify-Befehles an einen Node. Der angesprochene Node beginnt zu blinken. Damit läßt sich die Zuordnung der Belegtmeldung kontrollieren.
    • N: Anzeige der Nodetabelle.
    • O: Anzeige des aktuellen Belegung.
  • Befehle HSI88: siehe GBM16TC
  • Befehle P50X: siehe OpenDCC Z1, jedoch fehlen hier die Programmiergleisbefehle und die Befehle für Sonderoptionen.