S88-Tastatur
Einleitung
-
Es gibt auf der Modellbahn eine Reihe von Zubehör und bewegten Objekten,
diese sollen oft sowohl automatisch als auch durch einen lokalen Taster ausgelöst werden.
Dieses Zubehör wird per Decoder gesteuert, die automatisierte Auslösung übernimmt der
Computer. Der manuelle Tastendruck muß nun auch über den Computer geleitet werden,
hierzu habe ich einen extrem einfachen S88-Rückmeldebaustein entworfen,
welcher entweder acht direkt angeschlossene Taster oder eine kleiner Zehnertastatur abfrägt,
entprellt und mit einstellbarer
Haltezeit am s88-Bus ausgibt.
Auch die Rückmeldung eines Boosterausfalls kann damit einfach erfolgen.
Die Schaltung ist als kleine Platine nur mit einem ATtiny2313 aufgebaut und damit *sehr* preiswert. Das S88-Interface ist entweder als Stiftleiste oder mit mit Netzwerkkabeln gemäß der Norm S88-N anschließbar.
Schaltung
Der Schaltplan ist relativ einfach: die gesamte Logik wird mit Hilfe eines ATtiny2313 abgebildet. Dieser läuft mit einem internen Takt von 8MHz. C1 ist ein Abblockkondensator mit 100nF
Der S88-Anschluß erfolgt mit Hilfe des USI (Universal Serial Interface), das ist ein Schieberegister auf dem Chip. Dieses Schieberegister wird in den S88-Datenstrom eingefügt. Der Anschluß nach außen kann in der Norm S88-N oder alternativ mit 6 Stiften erfolgen.
Zusätzlich ist noch ein optionaler IR-Empfänger vorgesehen, damit können Befehle von einer Fernbedienung eingelesen werden. Hierzu wird die Samplingtechnik verwendet.
Der Anschluß der Taster erfolgt mittels eines 16-poligen Flachbandkabels, das ist immer abwechselnd GND - Taste belegt. Man kann daher einfach das Kabel in Paare spleißen und so z.B. Taster auf einem Stellpult anschließen. Die Taster schalten jeweils gegen Masse, der notwendige Pullup wird innerhalb des Attiny durch Programmierung realisiert. Es ist keinerlei Schutzbeschaltung vorgesehen, man darf also nur Taster oder Optokopplerausgänge anschließen, keinesfalls irgendwelche Rückleitungen vom Gleis, diese würden den Prozessor zerstören.
Layout
Anschluß
-
Die Verbindung zum S88 Bus erfolgt einfach mit Netzwerkabeln in der Norm S88-N (5V). An J22 (S88-Output) wird die
Leitung Richtung Zentrale angesteckt, an J21 weitere S88-Module.
Wenn ein Lesetakt von S88-Bus erkannt wird, dann wird ganz kurz die LED angesteuert - diese
leuchtet dadurch bei anliegendem Lesetakt schwach. Wenn eine Taste betätigt wird, so wird
diese von der Software entprellt und mit einer Haltezeit von etwa 1s auf den S88-Bus ausgegeben.
Solange eine Taste betätigt ist, wird die LED voll angesteuert, damit ist eine direkte Kontrolle
des Tasters und der Verbindung zum Taster möglich.
-
Anschluß von Standardtastern oder Optokopplerausgängen
Der Baustein kann 8 Taster einlesen, diese sind jeweils gegen GND zu schalten. GND ist jeweils paarweise am Stecker angelegt, so dass recht einfach durch Spleißen des Flachbandkabels die Taster angeschlossen werden können, z.B. Taster 1 muß zwischen Ader 1 und 2 des Kabels angeklemmt werden. Auch ein Einzelanschluß mit Stiften (wie auf PC-Motherboards üblich) ist möglich.
Der Baustein belegt in diesem Fall 8 Rückmelderadressen, Jumper 1 ist nicht gesteckt.Anschluß Taster GND 1 2 Key 1 S88 Melder 1 GND 3 4 Key 2 S88 Melder 2 GND 5 6 Key 3 S88 Melder 3 GND 7 8 Key 4 S88 Melder 4 GND 9 10 Key 5 S88 Melder 5 GND 11 12 Key 6 S88 Melder 6 GND 13 14 Key 7 S88 Melder 7 GND 15 16 Key 8 S88 Melder 8 - Anschluß von Magnetfeldsensoren
Neben der Steckleiste für Taster ist eine Stiftleiste für 5V vorgesehen. Hier kann man jeweils mittels 3-poligen Bergstiftstecker direkt einen Hallsensor anschließen. Es ist auch gemischter Anschluß Standardschalter und Hallsensor möglich. -
Anschluß einer Minitastatur (Matrix)
Der Baustein kann eine kleine Zehnertastur einlesen - diese sind oft recht preiswert zu erstehen. Z.B. kostet die im folgenden beschreibene Tastatur bei www.pollin.de 0,95 Euro.
Die Tastatur hat 12 Tasten, diese sind in 2 Spalten zu 5 bzw. 7 Zeilen organisiert. Es sind also 9 Leitungen erforderlich: 8 Leitungen werden von Standardstecker verwenden, zusätzlich wird die Anschlußleitung des IR-Empfängers verwendet (dieser darf dann natürlich nicht bestückt sein).
Zur Ansteuerung dieser Tasten werden die Abfragepulse von Prozessor erzeugt.
Der Baustein belegt in diesem Fall 16 Rückmelderadressen, davon sind allerdings nur die untersten 12 Adressen belegt, wegen der leichteren Zuordnung in der PC-Software ist die Länge des Bausteins aber auf 16 eingestellt. Jumper 1 ist gesteckt.Anschluß Zehnertastatur Samwell n.c. 1 2 Pin 2 n.c. 3 4 Pin 6 n.c. 5 6 Pin 7 n.c. 7 8 Pin 8 n.c. 9 10 Pin 9 n.c. 11 12 Pin 10 n.c. 13 14 Pin 11 n.c. 15 16 Pin 12 Verbindung IR-Receiver Pin 1
Die Tasten sind dann wie folgt den S88-Meldeadressen zugeordnet:
Tastenbelegung Zehnertastatur Samwell Taste 1 2 3 4 5 6 7 9 0 Cv C^ S88-Melder 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16
An den Baustein können entweder Standardtaster oder eine Tastatur von Pollin angeschlossen werden. Dies wird durch den JUMPER 1 unterschieden.
Erläuterungen zur Software
- Tasten einlesen:
Alle Zustände von Ports, an denen Taster angeschlossen werden können, werden von der Einleseroutine in einen Vektor geschrieben. Dieser Vektor wird dann mit Hilfe einer Statusmaschine bitweise bearbeitet. Damit wird Entprellen in beide Schaltrichtungen und zusätzlich ein Memory von einer Sekunde für den aktivierten Zustand realisiert. Solange der Ausgangsvektor (current_message) der Statusmaschine gedrückte Tasten anzeigt, wird die lokale LED zur Kontrolle angesteuert. - Übergabe an den S88 Bus:
Der S88-Bus wird über die USI-Schnittstelle des Prozessors verwaltet. Diese Schnittstelle bietet 8 Bits, welche mit einem externen Takt geschoben werden. Am Ende des Schiebens erfolgt ein Interrupt (USI_OVERFLOW).
Damit die Bitlänge des Moduls frei programmierbar ist, wird jedoch die Schnittstelle so programmiert, das bei jeder Clockflanke ein Interrupt erfolgt. Bei steigender Flanke wird das eingetaktete Bit wird in ein Schieberegister (shift_reg) innerhalb der SW übernommen, bei fallender Flanke wird das nächste ausgebende Bit in den Ausgangsbuffer gelegt. Die Länge des Softwareregisters wird mittels der Variable shift_size festgelegt. Damit kann diese Routine gleichermaßen für Rückmeldelängen von 4 bis 32 Bit verwendet werden.
Bei jedem Interrupt erfolgt ein kurzes Ansteuern der LED, damit läßt sich der Ausleseprozess kontrollieren. - Jumper:
kein Jumper 8-fach Rückmelder, direkt JUMPER 1: Pollin Keyboard JUMPER 2: RC5 Empfänger JUMPER 1+2: 4x4 Matrixtastatur
Unterlagen
Weiter zu:
- zurück zur allgemeinen Hauptseite OpenDCC
Erläuterungen zum S88-Bus S88-N: Verdrahtungsnorm mit Netzwerkkabeln
Hauptseite OpenDecoder
Erläuterung RC5-Empfängersoftware
Erläuterung RC5-Code der Fernbedienung
extern: S88 Logger