Selbstgelötet:
SELECTRIX SX-MiniZentrale zum Schalten und Melden.
Der Einstieg in die digital gesteuerte Modelleisenbahn ist keine Sache
für das "Taschengeld"-Budget. Egal welches System man wählt, der Start-
Aufwand ist nicht unerheblich. Der Hobbyelektroniker hat aber Chancen mit
geringem Aufwand im Bereich Schalten und Melden tätig zu werden.
Weil die Basiskosten für gedruckte Schaltungen bei ca. 60.- € für 100 qcm
liegen versuche ich Lösungen vorzuschlagen, die auf preiswerten
Laborkartenzuschnitten realisiert werden können. Dies gelingt solange die Anzahl
der Bauelemente niedrig ist und das "Design" keine Rolle spielt.
Tastaturen, Text- und Grafikanzeigen, Gehäuse und Berührungsschutz stellen
für den Eigenbauer Herausforderungen dar, die schnell zur Bewertung
"Lohnt sich nicht" führen. Auch die hochintegrierten Lösungen, die man für
Decoder- "Winzlinge" braucht, stehen im Hobbybereich nicht zur Verfügung.
Ausdrücklich will ich davor warnen die Gefahren im Umgang mit Netzspannung
zu unterschätzen. Sicherheit geht vor !! Auch die eigene !! Deshalb lasse ich
die
Hände vom Netzgerätebau und benutze preiswerte, CE-geprüfte Massenartikel.
Mein Motto: Hochspannung ist ab 24 Volt ! Finger weg!
Digital Fahren ist ein ganz anderes Thema als digital Schalten. Insbesondere
dann,
wenn der Steuerstand NICHT der PC ist, sondern Fahrpulte und Handgeräte
verwendet werden sollen.
Minimalaufwand funktioniert aber in der Kombination PC-Stellwerk und
Servoantriebe.
DCC-, Motorola- und Analog-Lokomotiven fahren auch über Selectrix-Servo-Weichen.
Das SX-Protokoll:
Die SX-Zentrale hat als 5-poligen Anschluß eine DIN-Buchse 180 Grad mi9t der
Belegung:
1 Takt,
TTL-Pegel, 5V
2 Masse, GND
3 +20 Volt DC
4 Daten zu den Geräten, TTL-Pegel, Innenwiderstand
ca. 100 Ohm
5 Daten zur Zentrale,
TTL-Pegel, Innenwiderstand ca. 470 Ohm
Das Taktsignal ist eine Rechteckspannung, 10µSek. Low, ca. 40µSek. High und
dient zur Synchronisation aller Teilnehmer.
CH1 zeigt das Taktsignal, CH2 das Datensignal, Trigger ist der Start eines
Synchronblocks, der mit 3 Takten Low-Signal (156µs) beginnt.
In einem Synchblock werden 8 x 12 = 96 Bit gesendet. Die ersten 12 Bit sind
der Synchron und Adressteil in folgender Codierung:
Bit 1 Low Sync
2 Low Sync
3 Low Sync
4 High Trennbit
5 "Gleisbit" =
High, wenn Spannung am Gleis
6 High Trennbit
7 Gruppenadresse
invertiert Bit 3 akt. Hi = 8
8 Gruppenadresse
invertiert Bit 2 akt. Hi = 4
9 High Trennbit
10 Gruppenadresse invertiert
Bit 1 akt. Hi = 2
11 Gruppenadresse invertiert
Bit 0 akt Lo = 0 ( Gruppenadr. 14, inv. 2 )
12 High Trennbit
Als Dauer für diese Impulsfolge werden 644µs angezeigt. Der theoretische
Sollwert sind 12 x 50µs = 600. Dieser Timingfehler stört nicht, weil die Bus-
Teilnehmer mit den Taktflanken gesteuert werden und nicht mit der Dauer.
In den folgenden 12-Bit-Gruppen werden die Daten von 7 Adressen gesendet.
Die Codierung ist :
Bit 1 D0 LSB auf dem TRIX HandyControl Taste 1 (
13 akt. Lo )
2 D1
( 14 akt. Hi )
3 Trennbit High
( 15 )
4 D2
( 16 akt. Lo )
5 D3
( 17 akt. Lo )
6 Trennbit High
7 D4
8 D5
9 Trennbit High
10 D6
11 D7
12 Trennbit High
Die Adressenreihenfolge im Bitstrom:
Das SELECTRIX-System definiert in der Ur-Form 112 Adressen die in 16 jeweils
96-Bit
gesendet werden. Die Reihenfolge spielt für die NUR empfangenden Teilnehmer, wie
meine Servodecoder, keine Rolle, sie ist aber wichtig für diejenigen Adressen,
die
an die Zentrale eine Meldung absetzen wollen. Die Rückmeldung erfolgt nämlich
bitsynchron, ohne Adressangabe!
Zu jeder der 16 Gruppenadressen gehören 7 Unteradressen die wie folgt festgelegt
sind:
Gr. 00 96, 80, 64, 48, 32, 16, 00
Gr. 01 97, 81, 65, 49, 33, 17, 01
Gr. 02 98, 82, 66, 50, 34, 18, 02
...
Gr. 15 111, 95, 79, 63, 47, 31, 15
D.h. das erste gesendete Datenbit ist LSB von Adresse 96, das letzte MSB von
Adresse 15.
ACHTUNG: Die Gruppennummer wird invertiert gesendet! Adresse 00 = 15 = 0xFF
Der Rückschreibe-Mechanismus:
Dabei kommt die Hardware ins Spiel, nämlich die Innenwiderstände der
Datenleitungen.
Der Datenausgang des Steuer-IC ist über 470 Ohm mit der Rückleitung verbunden
(SX-Pin5)
und über 100 OHM mit der Datenleitung (SX-Pin4). Solange also kein "externer"
Teilnehmer
die Rückleitung verändert, haben beide Leitungen gleiches Potential. Die
Zentrale "hört"
auf der Rückleitung zur Zentrale mit. Dazu ist der SX-Pin5 mit einem
Spannungskomparator
verbunden, der als Vergleichswert ca. 2,5 Volt verwendet. Das ist notwendig,
weil die
"Schreibleitung" der Geräte einen Innenwiderstand von ca.100 Ohm hat. Die
Spannung
der Rückleitung wird also durch den Spannungsteiler 470 / 100 Ohm bestimmt, wenn
die
Signalzustände unterschiedlich sind und beträgt 0.9 V bzw. 4.1 V. 0.9 Volt
würden am
TTL-Eingang nicht als Lo erkannt, deshalb der Schwellenwert 2.5 Volt.
Der "Auftrag" ein Bit im Speicher der Zentrale zu ändern wird also erkannt, wenn
die
Datenleitung und die Rückleitung "ungleich" sind, das Datenbit wird "getoggelt"
und im
folgenden Ausgabezyklus mit geändertem Zustand gesendet.
Das funktioniert aber nur, wenn die Zentrale und der Teilnehmer adress- und
bitsynchron
sind, d.h. auf dem selben Bit der selben Adresse "fummeln".
Schaltungsaufbau:
Herz der Zentrale ist ein ATMEL AtMega8, der neben ausreichendem SRAM auch eine
USART-Schnittstelle beinhaltet mit der das SELECTRIX-Interface zum PC realisiert
wird.
Der Analogkomparator dient zum "Mithören" auf der Rückleitung, die
Referenzspannung
liegt an AIN0, Pin12. Die "Innenwiderstände" 470 bzw. 100 Ohm 6k8 für den Reset
und
ein 5Volt Regler vervollständigen die "Minizentrale".
MiniZentrale mit SUB-D 9 für Interface
Bauteilanordnung auf Lochrasterplatine 100 x
38 mm
Verlötet
Opa zittert schon ein wenig, beim Löten, und sehen kann er auch nicht besonders
gut !
Die Programmbeschreibung:
Die vorbesetzten Datenfelder AdrDat und Syndat werden beim Reset ins SRAM
kopiert.
In den Synchron-Adress-Daten sind die Trennbits enthalten, im Datenteil werden
sie
dynamisch eingefügt.
Timer 0 arbeitet mit Systemclock 8Mhz / 8 = 1 µs pro Tick und erzeugt beide
Taktzeiten.
Zu Beginn der 10µs Lo-Takt wird die Datenleitung geschaltet.
Die Rückmeldeleitung wird in der Hi-Zeit des Taktes geprüft. Wenn das akt. Byte
vollständig bearbeitet ist wird es ins SRAM zurückgeschrieben.
Details liefern die Kommentare.
Das Programm enthält auch den Code für die serielle Kommunikation:
Wenn die Zentrale nur am SX-Bus betrieben wird, z.B. in Verbindung mit einem
ControlHandy sollten die drei Echozeilen wirksam sein, und/oder der USART
Interrupt nicht freigegeben sein.
Das Assembler-Quell-Programm gibt's hier: SX-Zentrale-2.asm
Schaltskizze mit Ser.Com da:
MiniZentraleSchaltplan
Steinhart Winfried, im Juni 2007
Hinweise zur Inbetriebnahme:
Die Minizentrale erzeugt das SX-Bussignal aus
den vorbesetzten Datenfeldern
AdrDat:
Dort sind die Daten aller 112 Adressen definiert, die beim Programmstart ins
SRAM
übernommen werden und im SX-Format auf die Datenleitung gelangen.
Das funktioniert OHNE SerCom und PC.
Für die Erstinbetriebnahme und Funktionskontrolle sind diese "Startdaten"
durchaus
nützlich, weil sie z.B. mit dem SX-Monitor dargestellt werden können und die
Kontrolle
der Adressinhalte leicht fällt. Für den Betrieb an einer Anlage ist dies aber
ungeeignet
wenn nicht über die serielle Verbindung zu einem geeigneten Stellwerksprogramm
"vernünftige" Daten übertragen werden. Solche Stellwerksprogramme können
meistens
den letzten Anlagenzustand, sprich die aktuellen Adressinhalte, abspeichern und
beim
Neustart an die Zentrale übertragen.
Beim Stellen "von Hand", z.B. mit dem TRIX ControlHandy, ist dieser "Luxus"
nicht
vorhanden, d.h. die am SX-Bus angeschlossenen Decoder erhalten die Daten wie
im Programm definiert. Ein mühsames Geschäft, die Anlagengrundstellung jedesmal
für alle Decoder neu einzutippen.
Aber eine "Grundstellung" für bestimmte Adressen in das Datenfeld eintragen ist
eine relativ einfache Übung.