S88-Tastatur

Einleitung

    s88 Tastatur 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

    Schaltplan S88 Tastatur
    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

    Bestückungsseite Lötseite Bauteile

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.

    An den Baustein können entweder Standardtaster oder eine Tastatur von Pollin angeschlossen werden. Dies wird durch den JUMPER 1 unterschieden.
  • 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 

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 Jumper8-fach Rückmelder, direkt
    JUMPER 1:Pollin Keyboard
    JUMPER 2:RC5 Empfänger
    JUMPER 1+2:4x4 Matrixtastatur

Unterlagen

Weiter zu: