OpenDCC ST4

Geschichte

    Ausgehend vom Alleskönner OneST entstand der Bedarf nach einer einfacheren und v.a. preiswerteren Hardware. Die ST4 ist aus der Verschmelzung von BiDiBOne und OneST enstanden.

Eigenschaften

    Bild ST4
    Daten ST4
    4 frei programmierbare Servoausgänge
    Stromversorgung der Servo schaltbar, kein Brummen. Integrierte Servoüberwachung
    4 frei programmierbare Relaisausgänge (Umschalter, z.B. zur Herzstückpolarisation), Schaltstrom 2A, Dauerstrom 3A.
    2 frei programmierbare Schaltausgänge mit 100mA - z.B. für die Beleuchtung von Weichen mittels LEDs
    4 universelle Eingänge (für Lagesensoren / lokale Taster / Optokoppler)
    1 BiDiBus-Anschluß
    Integrierter leistungsfähiger Schaltwandler mit 2A Ausgangsleistung (geringe Erwärmung)
    Möglichkeit zur Makroprogrammierung. Schaltvorgänge und Servobewegungen lassen sich universell zu Abläufen kombinieren. Freie (und einfache!) Zuordnung von Schaltvorgängen zu PC-Befehlen
    Flexible, menugeführte Konfiguration mit den BiDiB-Tools
    Optionaler Anschluß eines GBM16T (railcom-Belegtmelder mit 16 Eingängen)
    FW-Update über BiDiB.
    Kompakt: Baugröße 50mm x 80mm.
    Montagefreundlich: Befestigungslöcher an allen Ecken, alle Anschlüssen leicht vom Rand zugänglich.
    Fertig vorkonfiguriert für Weichenantriebe mit 2 Positionen.

    Die ST4 ist leicht anzuschließen: für Servos und Herzstückumschalter finden Stiftleisten Verwendung, diese sind am Rand positioniert. Für die Verkabelung empfehlen sich dreipolige MTA100-Stecker oder vorkonfektionierte Kabel mit 2.54 Rasterabstand.

    Einsatzbeispiele:
    Das Hauptanwendungsgebiet der ST4 ist die Steuerung von Weichen. Die ST4 bietet auf sehr kleinem Bauplatz die vorbildgetreue langsame Umsteuerung von Weichen samt Polarisation der Herzstücke. Auch Mehrfach-Weichen wie sie z.B. bei OpenCar-Fahrbahnen oder Faller Car Systemen vorkommen, lassen sich durch die freie Programmierung der Servos auf normale Weichen abbilden.

    Darüber hinaus ist natürlich der Einsatz dort sinnvoll, wo entweder Schaltkontakte oder Servos benötigt werden. Durch die Makroprogrammierung lassen sich auch umfangreichere Modellbahn-Szenen wie eine vorbildrechte schwingende Schaukel, Schuppentore o.ä. realisieren. Das Relais ist in diesem Fall dann frei um z.B. Beleuchtung zu schalten.


Download

      ST4   Version Erläuterung
      Bootloader: 
      V0.04.01  
    16.01.2014
        Der Bootloader ermöglicht das Erneuern der Firmware im eigenbauten Zustand und das permanente Speichern von Makros. Muß einmal mit einem Atmel-Programmer geladen werden und bleibt dann immer drin.
    Der Programmer ist anschließend nicht mehr erforderlich.
    (Dieser Bootloader ist indentisch zum Bootloader des BiDiBOne)
      Firmware 
    Applikation ST4 

      V0.02.00  
    24.11.2018

      V0.01.07  
    03.03.2016
      Die eigentliche Applikationsfirmware. Sie besteht aus zwei Teilen:
    ST4_version.000.hex für den Flashspeicher der ST4
    ST4_version.001.hex für den EEPROM-Speicher der ST4.
      Bauanleitung   
      V1.00  
         
      Schaltplan   
      V1.00  
         
      Bestückungsplan   
      V1.00  
         
    Hinweise:

Versions-History

  • Bootloader:
      14.02.2016 V0.01 Erste Freigabe
  • ST4:
      14.02.2016 V0.01.07 Erste Freigabe
      24.11.2018 V0.02.00 Bugfix in der Auskunftfuntion bei angeschlossenem GBM16T. Die 0.01.07 hatte da versehentlich zwei verschiedene Melderzahlen Richtung PC gemeldet.

Schaltplan

    Kern der ST4 ist ein ATXmega128A3 (atxmega128a3u-au im TQFP64 Gehäuse). Dieser Prozessor bietet hinreichend viel Speicher und mit seinen 64 Pins auch hinreichend viel I/O, um die Funktionen der ST4 realisieren zu können. Versorgt wird der Prozessor mit 3,3V.
    Die Clockversorgung erfolgt mit einem SMD Quarz mit 8MHz (Größe 5 x 3,2mm), z.B. www.geyer-electronic.de KX-9A 8MHz oder Euroquarz MJ (reichelt) oder Mouser 405I35E08M00000 .

    Stromversorgung:
    Die Platine kann mit einer Spannung von 7 bis 20V versorgt werden, auf der Platine selbst ist ein moderner Schaltregler mpm3620 vorgesehen, welcher aus dieser Spannung eine stabilisierte 5V-Versorgung mit 2A erzeugt. Damit ist der Betrieb von mehreren Servos gleichzeitig möglich, ohne dass zu einer Überhitzung der der Spannungsversorgung oder zum gefürchteten Servo-Chaos kommt. Dieses entsteht, wenn nach dem Einschalten die Spannung ansteigt und bedingt durch die Anfangsbewegung der Servomotoren sofort wieder einbricht: alle Servos fahren dann wild umher.
    Der Schaltregler hat die Spule und die Fets bereits integriert, extern sind nur noch Abblock-Kondensatoren (keramische MLCC mit 10uF/25V) erforderlich. Der Spannungsteiler für den Regler errechnet sich zu V(out) = 0,798V * (R(a) / R(b) + 1); Dieses Teilverhältnis kann z.B. mit 150k/28k5 erreicht werden. Um eine einfach Bestückung zu erreichen, wurde 102k2 / 19k5 gewählt und diese beiden Widerstände je mit einer Reihen- bzw. Parallelschaltung realisiert.
    (Alternativ sind die Lötpunkte für einen üblichen und sehr preiswerten 7805-Längsregler vorhanden.)
    Die 3,3V für den Prozessor werden mit dem LM3480-3v3 in SOT23 erzeugt.

    Eingespeist wird ein stabilisierte Gleichspannung (z.B. Laptopnetzteil), am Eingang ist ein Verpolschutz mit ein Leistungs-P-FET sowie eine Polyfuse mit 1A vorgesehen. Beide Sicherungsglieder können für Spezialanwendungen per Lötbrücken SJ1 und SJ2 geschlossen werden. Bei der Polyfuse ist notfalls auch auch ein THT Version verwendbar, entsprechende Vias sind vorhanden.


    BiDiB-Interface:
    BiDiB basiert auf dem RS485-Standard, der verwendet Bustransceiver soll 500kBaud Rate haben und sowohl 'failsafe' als auch 'slew rate limited' sein. Gewählt wurde der ISL3175 im SOIC8. (Hinweis auf der Platine V1.0 ist der Chip im kleinem MSOP-Gehäuse, das wurde aus Kostengründen auf SOIC8 geändert).
    Eine Schutzdiode SM712 ist optional vorgesehen. Die Schutzdiode ist dann sinnvoll, wenn ein besonders großes Netz mit langen Leitungen betrieben wird.

    Schaltausgänge:
    Als Ausgangstreiber für die Relais findet der TPIC595 Verwendung. Es sind 4 Relais direkt angeschlossen, weitere zwei Ausgänge stehen auf Steckkontakten zur Verfügung: max. 5V, 100mA.

    Servos:
    Die Servosignale sind mit einer Auflösung von 1us, ausgegeben werden sie über Leitungstreiber und Schutzwiderstände. Die Stromversorgung der Servos ist schaltbar ausgeführt (USB2044), damit kann nach der Bewegung der Strom abgeschaltet werden und lästiges Servo-Knarzen vermieden werden. Direkt an den Servo-Anschlüssen sind leistungsfähige MLCC angeordnet, um Stromspitzen und Störungen vom Servomotor abzufangen. Die Servos dürfen bis zu 700mA Strom aufnehmen.

Layout


    Die Platine ist 80 x 50mm groß, alle Ausgänge sind als Steckkontakte im Raster 2,54mm ausgeführt (GBM16T: 2mm). Die Herzstückanschlüsse sind alternativ als Schraubklemmen im Raster 3.5 bestückbar.

    RJ45-Buchsen werden als THT bestückt.

Software

    Servo-Ansteuerung:
    Servos benötigen einen Puls von 1ms bis 2ms Breite (eventuell ja nach Type sogar von 0,5ms bis 2,5ms) mit einer Wiederholrate von 20ms. Auf der ST4 sind 4 Servos, diese werden je um 5ms zeitversetzt angesteuert, das entlastet die Stromversorgung, weil der jeweilige Motorsteuerstrom immer nur von einem Servo aufgenommen wird.
    Besonderer Augenmerk wurde auf das Einschalten der Servostromversorgung gelegt, dies erfolgt synchron zu den Ansteuerpulsen. Dabei kann über eine CV das exakte Timing noch auf das jeweilige Servo feinjustiert wrden. Dadurch kann der unerwünschte Einschaltruckler weitestmöglichst unterdrückt werden.

    Ein Servo hat einen max. Verstellbereich (also z.B. 1ms ... 2ms bzw. 0.5ms bis 2.5ms bei erweitertem Range), dieser wird auf 0..255 abgebildet. Nun kommt der Justierwert (MIN und MAX) ins Spiel: durch den Justierwert wird der Verstellbereich eingeschränkt, also z.B. von 40-180. Das ist dann der Nutzbereich.
    Der Nutzbereich ist wiederum 0..255 unterteilt. Die Servobefehle fahren nun die jeweilige anteilige Stellung im Nutzbereich an. Dabei wird die interne Pulsbreite auf 1us genau berechnet. Weiche, ruckfreie (natürlich entsprechend hochwertige Servos vorausgesetzt) sind die Folge.

    BiDiB:
    Der BiDiBus wird über einen RS485-Transceiver empfangen. Der UART ist auf 9 Bit eingestellt. Wenn ein Byte mit gesetzem 9. Bit kommt (d.h. es ist ein Token für die Sendeerlaubnis), wird noch in der ISR überprüft, ob der Token die eigene Knotenadresse adressiert. Falls ja und falls eine abzusendende Nachricht vorliegt, wird direkt in der ISR auf Senden umgeschaltet, die TX-ISR freigegeben und auch gleich das erste Datum in den UART geschrieben.
    Wenn das letzte Byte der Nachricht geschrieben wird, dann wird der TX-Complete Interrupt aktiviert, welcher dann nach dem letzten Byte innerhalb von 2µs - 5µs wieder auf Empfangen umschaltet.

Bauanleitung

    Der Aufbau ausgehend von der SMD-vorbestückten Version ist ausführlich auf fichtelbahn.de beschrieben. Die Informationen auf dieser Seite richten sich an erfahrene Selbstbauer.

    Dieses Bild zeigt die Bestückung. Sinnvoll ist es, die Bestückung mit Spannungsregler, R und C sowie den LEDs zu beginnen. Diese werden dann auch zuerst geprüft, erst dann kommt der Prozessor und die Buchsen. Die Platine unbedingt abschließend reinigen. Neben dem Bootloader und Files im Download muß man auch eine Seriennummer einspielen, diese kann man sich hier generieren. Die generierte Seriennummer bitte auf der Baugruppe vermerken. Seriennummer sind vierstellige Hexzahlen, im hier dargestellten Beispiel (eep-file) fett markiert:
    :0207fe000001f8
    Bitte beachten: Im AVR-Studio 4 gibt es ein Häkchen 'erase chip before programming', das muß man nach dem Einspielen des Bootloaders rausnehmen, sonst löscht man den Bootloader beim Einspielen des Flashes wieder weg. In AVR Studio 6 erreicht man das durch Wahl von 'incremental programming'. Wenn direkt in die Applikation gesprungen werden soll, dann ist FUSEBYTE2 = 0xFA.

Inbetriebnahme

    Nach dem Bestücken der 5V und 3,3V-Regler überprüft man die Spannungspegel.
    Die Software hat verschiedene Selbsttestroutinen:
  • Wenn nur das Flash bespielt wird und EEPROM noch leer ist, dann blinken alle 4 LEDs parallel (hektisch), Timing ist 50ms on, 150ms off.
  • Wenn Flash und EEPROM bespielt sind, jedoch die Seriennummer noch fehlt, wird und EEPROM noch leer ist, dann blinken 2 LEDs parallel (STATUS und POWER), Timing ist 100ms on, 100ms off.
  • Im Regelbetrieb leuchtet die Power-LED mit halber Helligkeit (10ms on, 30ms off)
  • Wenn die ST4 mit BiDiB verbunden ist, dann leuchtet zusätzlich die LED_BIDIB auf.

Makros

Debugschnittstelle

    Die ST4 verfügt über einen seriellen Debugport, dieser paßt für die FDTI-RS232-TTL-Kabel mit 6-poliger Stiftbuchse im Raster 100mil (2,54mm). Das Kabel wird so angesteckt, dass die schwarze Ader (GND) zur Platinenmitte zeigt. Die Debugschnittstelle kann über eine Terminalprogramm wie hterm angesprochen werden und wird mit 115200, 8N1 betrieben.

    Mit dem Befehl ?<cr> kann man sich eine Übersicht der Funktionsaufrufe ausgeben lassen. Bedienungsbespiele finden sich auf fichtelbahn.de.

Vorkonfiguration

    Im Firmwarepaket sind bereits vorkonfigierte Makros zu Ansteuerung von Weichenantrieben mit Herzstück enthalten. Nach dem Einbau sind nur noch die Servoendlagen zu programmieren (mittels Schieberegler im Wizard), dann ist die ST4 bereits einsatzbereit.

Bootloader

    Der Xmega128a3 verfügt über eine separate Bootloader-Section mit 8k Speicherplatz. In diesem Speicher ist ein BiDiB-Bootloader implementiert. Dieser wird aktiviert, wenn während des Einschaltens der ST4 der Identify-Taster (ID) gedrückt gehalten wird. Die Firmware startet dann den Bootloader.
    Der Bootloader wird auch beim Speichern von Makros benötigt: ohne Bootloader funktioniert die ST4, ein Speichern ist aber nicht möglich. Zu Beginn wird durch zehnmaliges schnelles Blinken auf das Fehlen des Bootloaders hingewiesen.

    Der FW-Update läßt sich komfortabel mit dem BiDiB-Wizard durchführen. Dort wird in der Knotenliste der Knoten mit der der rechten Maus angeklickt und der Menupunkt FW-Update gewählt.
    Namensregeln: Eine Firmware besteht aus einer Datei für den Flashspeicher (Beispiel: st4_v0.09.02.000.hex) und aus einer Datei für das EEPROM (st4_v0.09.02.001.hex). Dieses Beispiel ist also die Version 0.9.2, 000 bezeichnet den Flashteil, 001 den EEROM-Teil. Wenn nur die Datei *_update*.000.hex eingespielt wird, dann wird die Firmware erneuert, Makros und Einstellungen bleiben erhalten.

FAQ

  • Soll ich OneST oder die ST4 verwenden?
    Die Firmware in beiden Baugruppen ist fast komplett identisch. Die OneST hat 8 Relais und kann damit bei Weichen ohne Zungenabtrennung (z.B. Peco) das Herzstück vor Bewegung abschalten und erst am Ende der Bewegung auf die andere Seite zuschalten. Auch sind bei komplizierten Gleisgeometrien (z.B. doppelte EKW) oft sehr viele Teilabschnitte je nach Fahrweg getrennt zu schalten.
    Die ST4 ist für automatische Bestückung optimiert (kleine Bauformen) und daher für den Selbstbau anspruchsvoll. Allerdings liegt der Preis dann auch niedriger als BiDiBOne + OneST.
  • Meine ST4 merkt sich die Makros nicht, nach dem Ausschalten sind sie weg.
    Zum Speichern der Makros braucht die LC einen sog. Read-Write-Zugriff auf das Flash, und dieser geht nur mit Bootloader. Wenn der Bootloader fehlt, dann blinkern die LEDs beim Starten (als Warnung) und auch die Möglichkeit zum FW-Update wird in den Tools nicht angezeigt. Abhilfe: Bootloader mit dem Programmer einspielen.

Links

    STµ Selbstbauvariante der OneST