XpressNet zu Virtual COM USB Gateway

Für den Betrieb einer digitalen Modellbahnanlage über einen Computer benötigt man immer die gleichen Komponenten:

  1. ein Interface als Schnittstelle zwischen PC und Digitalzentrale (egal ob RS232, Ethernet oder USB-basiert)
  2. sowie eine Digitalzentrale selbst. Optional natürlich noch einen Booster oder ein einzelnes Gerät, welches all diese Funktionen sowie Schnittstellen bereits enthält

Diese Komponenten sind mir einzeln schlicht zu teuer für ein kleineres Spezialprojekt, bei welchem ich über ein eigens geschriebenes Programm am Computer DCC-Signale auf dem Gleis ausgeben und Rückmeldungen empfangen möchte. Also machte ich mich an einen einfachen Selbstbau, welcher das XpressNet Protokoll nutzt.

Die Forschungsreise…

Ein gekaufter Standard RS485 zu Virtual RS232 Adapter (basierend auf den bekannten FTDI Chips) sowie einem geeigneten Transceiver war vorhanden. Auch eine Roco multiMAUS zum Testen lag bereit – es konnte losgehen! Von wegen…

Über eBay aus China bezogener RS485 zu RS232 Adapter

Über eBay aus China bezogener RS485 zu RS232 Adapter

XpressNet ist von der Firma Lenz spezifiziert worden. Die Dokumentation kann man auf deren Webseite herunterladen, weswegen ich hier nicht nochmals alles erklären möchte. Folgendes sei jedoch verraten: Physikalisch handelt es sich um ein Halb-Duplex RS485 Bus mit 62,5 Kilobit Bitrate.

Logisch sind die Daten wie bei RS232 kodiert, jedoch mit 9 Datenbits. Dies führt dazu, dass keine Standard RS485 zu Virtual-COM USB Adapter verwendet werden können (die Erfahrung musste ich erst machen). Sowohl Windows als auch Linux unterstützen keine virtuellen COM Schnittstellen mit 9 Datenbits – eine Lösung musste her.

Auf zur Lösung…

Eine mögliche Lösung bestand darin den gekauften Adapter in seine Einzelteile zu zerlegen und auf einem neuen Aufbau wieder zu verwenden. Das XpressNet Gateway-Projekt war geboren!

Basis bildet hier wieder einmal ein AVR ATmega1284P Mikrocontroller der Firma Atmel, welcher zwei UART-Schnittstellen besitzt. Diese schaufeln gemäß einem Gateway die Daten von der einen Schnittstelle zur anderen und zurück. Das neunte Datenbit wird transparent von der Firmware heraus gefiltert und entsprechend der Flusskontrolle berücksichtigt. Daten an die Zentrale müssen nämlich innerhalb von 80 µs in einem von der Zentrale vorgegeben Zeitslot gesendet werden – was für den PC machbar, aber nicht einfach zu bewerkstelligen wäre. Dieses Bit kommt dementsprechend am PC nie an. D.h. das Gateway löst das Problem, dass Windows und Linux keine serielle Übertragung mit 9-bit beherrschen. Damit ist ein vollwertiges PC-Interface von mir erschaffen worden!

Hinweis an die Elektronik-Freaks:
Ich habe noch ca. 10 unbestückte, aber 1A geätzte und voll funktionsfähige Platinen übrig. Bei Interesse gebe ich die gerne ab (auch kostenlos)!

Schaltplan und Layout

Folgend ist der Schaltplan und das Layout aufgeführt. Diese haben folgende Merkmale:

  • 16 Mhz Takterzeugung via Resonator
  • Spannungsversorgung via USB
  • Mikrocontroller ist ein AVR ATmega1284P von Atmel
  • RS485 Transceiver ist ein Standardtyp: SN75176A von Texas Instruments
  • Optional kann die 120 Ohm Busterminierung via Jumper aktiviert werden
  • Optionale Debugpins für das Oszilloskop
  • In-Circuit-Programmierung via 6-Pin Stecker
  • drei Status LED für RX, TX und Power
xpressnet-usb-gateway-schematic

Schaltplan

xpressnet-usb-gateway-board

Platinenlayout

Bestückte Platine

IMG_20141107_180230

Professionell hergestellte Platine im Prototypenservice

IMG_20141108_160020

Bestückte Platine von oben

IMG_20141108_160111

Bestückte Platine von unten