Fehlermeldung kopf

Selectrix Library
Info Library Hardware Download

Selectrix

Info
Die bei Selectrix verwendete Technik wurde von Doehler & Haass (D&H) entwickelt. Selectrix ist ein eingetragenes Markenzeichen der Firma Trix in Nürnberg (seit 1997 Märklin), doch wurden auch unabhängige Anbieter von Doehler & Haass lizenziert.
Selectrix ist weltweit nicht sonderlich verbreitet obwohl es gegenüber anderen Digitalsystemen durchaus Vorteile hat.

Library
(Wenn hier von "Arduino" die Rede ist, so kann man ein originales Arduinoboard verwenden oder - sehr viel preiswerter und kleiner - man baut sich das Board selbst, siehe hier.)
Um einen Arduino einfach an Selectrix (SX) anschließen zu können, kann die Library SX1 verwendet werden, die Daten vom SX-Bus lesen kann und auch Daten auf den SX-Bus schreiben kann. (Die Library basiert auf der Library von M. Blank .) An Pin 2 des Arduino wird der Takt (T0) angeschlossen, der per Interrupt den Ablauf steuert. An Pin 4 wird das Datensignal (T1) angeschlossen. Pin 12 des Arduino steuert das Schreibsignal (D).
(Obige Pinnummern gelten für den Uno und Nano. Beim ArduinoMega liegt T0 und T1 wie beim ATmega328, der Rückkanal jedoch auf Digitalport 10.)
(Wird kein Rückkanal benötigt, kann anstatt der Library SX1 die Library SX1r [r wie readOnly] benutzt werden, dann ist der Pin für den Rückkanal für beliebige Zwecke frei.)


Für den ATtiny84 liegt der Takt T0 an Digitalport 8 und das Signal T1 an Digitalport 9. Beim ATtiny85 liegen Takt T0 auf Digitalport 2 und Signal T1 auf Digitalport 4. Die Libraries für ATtiny können nur lesen, zum Schreiben sind sie bei 8MHz zu langsam - zumindest mit den hier verwendeten Libraries.

Die Library stellt folgende Funktionen zur Verfügung:
xx stellt dabei eine Variable dar.
  • xx = sx.get(nn); // liefert das Datenbyte des SX-Kanals nn.
  • xx = sx.getg(); // liefert das Gleisspannungsbit.
  • xx = sx.set(nn,d); // setzt den SX-Kanal nn auf den Wert d. Der Rückgabewert xx zeigt den Erfolg an: xx=0 ist OK, xx=1 bedeutet Fehler.
  • sx.setg(d); // setzt das Gleisspannungsbit auf den Wert d, d kann 0 oder 1 sein.
  • sx.set0(nn); // setzt die Fahrstufen der Kanäle 1 bis nn (einschl.) auf Null.
Die Library unterstützt nicht das Programmieren von Decodern.



Hardware
Schreiben bedeutet bei SX, dass die Daten von T1, die in der Zentrale mit 470 Ohm auf den Rückkanal D (=WR) gekoppelt werden, auf dem Rückkanal D überschrieben werden. Liegt T1 (und damit auch D) auf HIGH und soll daraus LOW werden, dann wird der Rückkanal D über 100 Ohm auf LOW gelegt. Die Zentrale erkennt den Spannungsabfall an Leitung D und schaltet das entsprechende Bit auf LOW. Analog geht es auch bei LOW nach HIGH. Das bedeutet aber, wenn ein Bit nicht geändert werden soll, darf die Rückleitung weder auf HIGH noch auf LOW gezogen werden.
Zur Pegelanpassung wird ein Komparator LM393 eingesetzt.

(Es könnte auch ausreichen, die Eingänge des Arduino über Widerstände von einigen kOhm - oder auch direkt - an T0 und T1 anzuschließen...)
Zu beachten ist, dass die Zentrale über den Arduino galvanisch mit der restlichen Elektronik verbunden wird. Bei Bedarf sind daher (schnelle!) Optokoppler einzusetzen.



Download
Download der Library SX1 (Modifizierte Library SX)
Download der .cpp und .h Dateien für SX1, SX1r, SX1attiny85 und SX1attiny84