• Hallo TT-Modellbahner, schön, dass du zu uns gefunden hast.
    Um alle Funktionen nutzen zu können, empfehlen wir dir, dich anzumelden. Denn vieles, was das Board zu bieten hat, ist ausschließlich angemeldeten Nutzern vorbehalten. Du benötigst nur eine gültige E-Mail-Adresse und schon kannst du dich registrieren.
    Deine Mailadresse wird für nichts Anderes verwendet als zur Kommunikation zwischen uns.
    Die Crew des TT-Boardes

Die Elektrik

Jetzt geht's dann mal ans Eingemachte, also ein bisschen konkreter in die technischen Details. Das wird diesmal viel Textbeschreibung und ist vor allem für die technisch interessierten Leser gedacht, für andere könnte es etwas trocken werden.

Wie schon zu sehen war, wird jedes einzelne Element über 6 Kontakte mit Strom und Daten versorgt:

Kontakte.jpg


Im blauen Kreis sind die 5 Kontakte für die Programmierung des auf der Platine verbauten Mikroprozessors mittels ICSP. Verwendet wird ein PIC16F15323 vom Microchip. Ich bin in meinem Bastelleben zuerst mit MicroChip in Kontakt gekommen, deswegen diese und keine Atmel. Letzteres wäre aber mit ziemlicher Sicherheit auch gegangen. Hier hab ich übrigens grade meine ganz persönliche Chipkrise, die nächsten PICs sind lieferbar im Mai oder Juni. Aber nicht in 2022 sondern in 2023. Bis dahin kann ich also nur noch verbauen was ich im Vorrat habe, und das ist nicht mehr all zu viel.

Der entscheidende Kontakt ist aber der rot eingekreiste. Der blaue spielt da nur in so fern rein dass deswegen +U und CS (ChipSelect) genau an den beiden Positionen liegen müssen wo sie liegen. Hier gibt es jetzt also 6 Kontakte:
  • +U, die Spannungsversorgung, ich arbeite mit +5 V. Das gibt mir die Möglichkeit bei den LED 2 in Reihe zu schalten, was bei +3.3 V nicht möglich gewesen wäre
  • GND, die Masse für die Stromversorgung und als Bezug für alle Datenleitungen
  • CS - ChipSelect
  • Clk - Clock
  • DI - Data In, für Daten vom Raspberry zum Element
  • DO - Data Out, für Daten vom Element zum Raspberry (das ist die Info wenn eine Taste gedrückt oder losgelassen wird)
Wer sich auskennt wird es vielleicht schon erkannt haben, das ist eine SPI Schnittstelle (Serial Peripheral Interface – Wikipedia)
Diese ist sowohl im Raspberry als auch in dem verwendeten PIC in Hardware umgesetzt und somit ganz leicht nutzbar (naja, ganz leicht ist relativ, auch das hat einige Stunden gebraucht bis ich es am laufen hatte).

Warum SPI? Es hätte durchaus auch Alternativen gegeben. Eine erste Alternative wäre z.B. I2C gewesen, das kommt mit 2 statt 4 Datenleitungen aus. Nachteil bei I2C ist das wesentlich genauere erforderliche Timing und die festgelegte Busfrequenz. Mit SPI habe ich hingegen die Möglichkeit, bei Problemen mit Störungen auf den Datenleitungen die Übertragungsfrequenz zu verringern um störungssicherer zu werden. Eine weitere Alternative aus dem Modellbahnbereich wäre LocoNet gewesen, das kommt sogar mit 1 Datenleitung aus. Problem dabei ist aber dass "volles" Loconet mehr Schaltungsaufwand auf JEDER Einzelplatine bedingt hätte und dass die Programmierung deutlich aufwändiger wäre weil es eben nicht schon in der Hardware drin steckt.
Rein Hardwaremäßig gäbe es aber auf jeden Fall die technische Möglichkeit die Platinen so wie sie sind unter Nutzung der DI und DO Leitungen mit einer kleinen Extraschaltung auf der Bodenplatte Loconet-fähig zu machen und auch die Software dafür ist definitiv machbar, nur habe ich für mich entschieden dass ich diesen Aufwand (vorerst) nicht treiben werde.

Nun ist SPI normalerweise für die Kommunikation von (Achtung, da bin ich sprachlich altmodisch) einem Master und einer Reihe von (normalerweise einzeln per ChipSelect angesprochenen) Slaves gedacht. Ich habe aber die Situation dass ich neben dem einen Raspberry als Master eine große Zahl von Elementen als Slaves ansprechen möchte, ohne das ich die alle einzeln per jeweils eigener CS Leitung adressieren könnte. Deshalb bekommt jedes einzelne Element in seiner Software eine eigene Adresse und alle Elemente werden im Übertragungsprotokoll für das Senden über diese Adresse angesprochen.

Da es nun wahrscheinlich Grenzen gibt wie viele Slaves ein Raspberry als SPI Master direkt ansprechen kann habe ich also zwischen den Raspberry und die Einzelelemente eine Transistor-Treiberstufe (eigentlich sogar 2) gesetzt.

Treiberstufe1.jpg
Treiberstufe2.jpg


Die erste (Bild links) sitzt direkt unten am Raspberry. Gelb eingekreist zwei der Transistoren (zwei weitere sind unter dem 26er Flachbandkabel), zusätzlich ist hier die Einspeisung der Versorgungsspannung für Pult und Raspberry mit drauf. Die zweite Treiberstufe sitzt (momentan) auf der Bodenplatine, wobei die wahrscheinlich in der finalen Version von da weg ebenfalls auf eine eigene Platine wandert. Der vierte Transistor der zweiten Treiberstufe (für die DO Leitung) sitzt dann auf jedem einzelnen Element.

Der Raspberry sendet dann einen Datenstrom auf den Leitungen aus, der aus Kommando, Adresse und Datenwert besteht. Alle Elemente empfangen alle Daten, reagieren aber nur wenn sie selbst adressiert sind. Die Rückmeldedaten über die DO Leitung werden von jedem Element ebenfalls nur dann gesendet wenn das Element adressiert ist. Diese Datenübertragung bedingt, dass (anders als z.B. bei LocoNet) der Zustand der Tasten vom Master gepollt werden muss und die Elemente nicht wirklich aktiv einen Tastendruck senden können. Lediglich die Entprellung der Taster erfolgt vorab schon lokal im PIC des Elements, so dass ein echter Tastenzustand abgefragt werden kann. Bei der aktuellen Tastenanzahl bin ich aber locker noch bei einer Pollrate von deutlich über 100 Abfragen pro Sekunde so dass das Polling keinen negativ spürbaren Effekt auf die Reaktionsgeschwindigkeit des Pultes hat.

Kommentare

Es sind keine Kommentare zum Anzeigen vorhanden.

Blogeintragsinformationen

Autor
SuperJo
Read time
4 min read
Aufrufe
1.009
Letztes Update

Weitere Einträge in Anlagenbau

Weitere Einträge von SuperJo

  • Die Kommunikation
    Wieder mal so ein eher technischer Artikel, also nur für diejenigen die sich für die Details in...
  • Die reale weite (Modellbahn-)Welt
    So ein Stellpult ist ja eine schöne Bastelei, aber das muss ja in der echten Welt auch irgendwas...
  • Das Pult im Überblick
    Heute geht es mal um das Pult im Gesamtaufbau und die momentan gegebenen Möglichkeiten. So sieht...
  • Die Basis
    Bis jetzt habe ich ja die Elemente im einzelnen vorgestellt. Jetzt geht es mal um die...
  • Elementübersicht
    Heute nun mal eine Übersicht, welche Elemente es - bis jetzt - gibt. An dieser Stelle geht es...

Diesen Eintrag teilen

Zurück
Oben