OpenDCC - Zentrale für DCC - Xpressnet-Adapter

Einleitung

    Mit Xpressnet™ lassen sich Eingabegeräte, PC-Interfaces und stationäre Decoder bzw. Rückmelder verbinden. Viele handelsübliche Eingabegeräte (u.a. auch die Multimaus von Roco) basieren auf diesem Bus. Mit dem nachfolgend beschriebenen Adapter lassen sich Xpressnetgeräte an OpenDCC anschließen.

Schaltung des Adapters


    Die Schaltung besteht aus zwei Teilen:
  • Stromversorgung:
    Xpressnetgeräte brauchen einen Stromversorgung von 12V. Diese wird mittels eines üblichen Längreglers aus der Versorgung der OpenDCC-Zentrale gewonnen. Laut Spec darf ein Xpressnet-Client 20mA Strom entnehmen. Bei ausgedehnten Xpressnet Installationen ist dieser Regler fallweise zu kühlen oder es müssen die 12V mit einem leistungsfähigem Netzteil extern erzeugt werden. In diesem Fall darf die Sicherung F1 nicht bestückt werden. SJ1 bleibt normalerweise offen, nur wer es gerne ohne Sicherung mag, kann SJ1 schließen ...
  • RS485 Empfänger und Sender:
    Xpressnet wird im Halbduplex über eine RS485 Verbindung übertragen. Baudrate ist 62,5kBaud, es werden 9Bit ohne Parity mit einem Stopbit übertragen. Der Baustein Max485 (oder Max481) übernimmt die Daten von der seriellen Schnittstelle des Prozessors und wandelt sie in das differentielle R485 Signal um. Eine LED zeigt die Senderichtung an.
    Sollte die Schaltung als reiner Empfänger benutzt werden, so ist durch Schließen der Lötbrücke SJ2 der Empfänger dauerhaft freizuschalten. (SJ2 bleibt normalerweise offen) Als Sende-Empfangschip eignet sich Max485 oder auch LTC485. Empfohlen ist auf alle Fälle die Verwendung eines flankenbegrenzten (slew rate limited) tranceivers, dieser hilft bei Störstrahlproblemen und bei Reflexionen.

    Ich habe bei Tests mit verschiedenen Transcievern festgestellt, daß die differentiellen RS485 Leitungen ev. einen undefinierten Zustand einnehmen, wenn weder Zentrale noch Slave senden. Zur Abhilfe empfiehlt sich Biasing, also ein Pullup von 1k5 gegen 5V auf der Leitung A und ein Pulldown von 1k5 auf der Leitung B. Auch sollte ein sog. fail-safe Transceiver verwendet werden.

Layout

    Bestückungsseite Lötseite
    Der Adapter ist 18 x 82 mm groß. Das Layout der RJ12-Buchse ist sowohl für SMD als auch für Durchsteckmontage geeignet. Ab V1.3 kann auch der RS485-Baustein wahlweise als DIL8 oder als SO8 bestückt werden.

Einbau und notwendige Änderungen an der Zentrale


    Der Adapter ist so konzipiert, dass er auf die Steckstifte für JP1 und JP2 sowie der Bootschnittstelle aufgesteckt werden kann. Einzig die Stromversorgung (+15V) des Längsreglers für Xpressnet muß mit einer separaten Leitung vom Stromversorgungsstecker der Zentrale nachverdrahtet werden. Ich verwende lange Stifte (für Wire-Wrap), um den notwendigen Leiterplattenabstand von 20mm zu erreichen. Eine Alternative (speziell wenn schon kurze Stifte in der Platine verlötet sind) ist die Verwendung von zwei miteinander verlöteten Buchsenleisten (z.B. reichelt BL 2X10G 2,54).
    Die Xpressnet-Schnittstelle ist dann direkt von der Rückwand her zugänglich, hierzu muß ein entsprechender Ausschnitt erstellt werden.

    Notwendige Änderungen:
    Um die erforderliche zweite serielle Schnittstelle zu erhalten, muß der Prozessor Atmega32 von OpenDCC durch einen Atmega644P ersetzt werden. Wichtig ist der Suffix P (Picopower), nur dieser Typ enthält zwei USARTs.
    Natürlich muß dieser neue Prozessor mit der entsprechenden Software geladen werden.

    Für die Installation in der Anlage empfehlen sich Einbausteckdosen.

Test, erstes Einschalten

    Nach dem Bestücken alles nochmal genau optisch kontrollieren und Flußmittelreste mit Alkohol abwaschen.

    Nun wird zum ersten Mal Spannung angelegt, dabei wird die Ausgangsspannung am Adapter kontrolliert. Erst danach dürfen Eingabegeräte angeschlossen werden. Die Roco multiMaus® meldet Err13, wenn sie keine Verbindung zur Zentrale hat.

Links

Ergänzende Infos zum RS485-Standard

    Der reinen Lehre gemäß erfolgt der Energietransport entlang einer Leitung am besten, wenn diese Leitung konstante Impedanz hat und am Ende mit dieser Impedanz abgeschlossen ist. Ist die Leitung am Ende offen, so kommt zu einer Reflexion der Energie und das Datenbit wird wieder zurück entlang der Leitung übertragen. Bei beidseitig offenen Leitungen kann das dann sogar eine zeitlang hin- und her pendeln. Leider erkennen RS485-Transceiver, welche in der Mitte angeschlossen sind, in so einem Fall nur Datensalat! Die nachfolgenden Betrachtungen gelten auch für CAN, das ist elektrisch recht ähnlich.
    RS485 läuft am besten, wenn man eine lineare Struktur ohne Verzweigungen aufbaut und diese an beiden Enden mit 120Ohm abschließt. Leider ist dieser optimale Fall manchmal nicht erreichbar, manchmal auch aus Unkenntnis heraus nicht erreicht. Darum im Folgenden eine Übersicht über die technischen Möglichkeiten und Faustregeln zur Netzauslegung:

    1. Lineare Anordung anstreben: lineare Anordung ist unbedingt zu bevorzugen, auch wenn das Kabel dafür scheinbar einen Umweg machen muß. RS485 kann in linearer Anordung problemlos mehrere 100m überbrücken, es wird dadurch nicht langsamer oder störanfällig - im Gegenteil.
    2. An beiden Enden mit 120 Ohm abschließen.
    3. Sollten sich einzelne Blindäste (Stubs) nicht vermeiden lassen (wie z.B. zu Handreglern), so sind diese möglichst kurz zu gestalten und nicht abzuschließen. Wenn die Reflexion innerhalb der Anstiegszeit des Sendesignals auftritt, so wird sie quasi aufgesogen. Daraus folgt: Die doppelte 'elektrische Länge' muß kleiner als die Anstiegszeit der verwendeten RS485-Treiber sein (siehe unten). Die 'elektrische Länge' erhält man überschlägig mit 6ns / m. D.h. ein 2 Meter langes Handreglerkabel bringt 24ns als doppelte 'elektrische Länge'. Das heißt, für ein solches Netz müssen RS485-Bausteine mit einer Anstiegszeit von >24ns verwendet werden (und zwar bei allen Busteilnehmern!).
    4. Anstiegszeiten üblicher RS485-Bausteine:
      ChipAnstiegszeitRateVCCBemerkung
      LT1785A 800ns250kBit 5VSlew Rate Limited, sehr großes t(enable)
      Max3483E 740ns250kBit3,3VSlew Rate Limited
      Max483 740ns250kBit5VSlew Rate Limited
      Max3075E 400ns500kBit3,3V
      TI SN65HVD22400ns500kBit5V
      TI SN65HVD12170ns1MBit3,3V
      TI SN75176A 65ns5MBit5VDer 'Urahn'
      TI SN65HVD2140ns5MBit5V
      Max3486E 28ns 2,5MBit3,3V
      TI SN65HVD1120ns10MBit3,3V
      Max485 15ns 2,5MBit5V
      ST3485E 12ns 12MBit 3,3Vverbaut in Roco Multimaus™
      Bemerkungen:
      • Die slew-rate-limited Bausteine mit einer Anstiegszeit von über 700ns erlauben den einwandfreien Betrieb von nur einseitig abgeschlossenen Netzen bis 60m Ausdehnung, auch Stubs sind kein Problem. Die sollten die bevorzugte Wahl für Xpressnet (hat ja nur 62.5kBaud) sein. (Ich habe mal ein Netz mit 100m und mehreren Abgängen in Spice simuliert, die Kurvenform sieht an jeder Stelle noch akzeptabel aus.)
      • Bausteine mit einigen 'zig ns Anstiegszeit sind noch recht gut für Modellbahn geeignet, Handregler-Stubs werden noch gut toleriert, aber das Netz insgesamt sollte linear und abgeschlossen sein.
      • Ist der ST3485E wirklich für ein RS485-Netz mit Stubs geeignet?