5.6.2020 - Poti und so einige Zappelei

Tchja, es hat sich einiges getan: Zunächst einmal wartete seit dem 28.5. noch der Austausch eines Kurzhubtasters durch den originalen Fahrtaster: Obschon beide Bauteile geometrisch und haptisch äußerst unterschiedlich sind, so sind sie doch elektrotechnisch mehr oder weniger identisch: Sie schließen einen Stromkreis – im Falle des Fahrtasters den sehr simplen Stromkreis zwischen dem GND-Pin (man würde landläufig sagen "Minus") und dem Pin 2.


Am Sonntag bin ich dann abends endlich dazu gekommen: Vor dem Fahrtaster befindet sich direkt unter der Abdeckplatte sein zugehöriger Kontakt. Sämtliche Kontakte der Hebelbank sind mit M5-Schrauben versehen, an denen mittels einer Öse, zweier Unterlegscheiben und einer Mutter die Kabel angeschlossen werden. Um möglichst wenig nachhaltig zu beschädigen (wer weiß...!), habe ich hier einfach die bestehenden Kabel abgeschraubt und zwei eigene Drähte (aus dem großen Modellbahnkasten ;-) ) relativ provisorisch festgeklemmt. Diese Drähte hab ich einfach direkt rausgeführt, hinterm Fahrpult auf der Standplatte vom Monitor den Arduino hingelegt und die zwei Drähte an die besagten Pins angeschlossen. Nicht erläutert werden muss, dass natürlich softwareseitig ein paar triviale Dinge erledigt werden mussten (Treiber, noch ein Bugfix, Plugin konfigurieren...). Aber DANN hat es tatsächlich geklappt: Sobald man den realen Fahrtaster nun herniederdrückt, beginnt das virtuelle Schaltwerk zu arbeiten, schließen die virtuellen Hauptschütze hörbar und das Fahrzeug setzt sich in Bewegung! :-D



Es folgten wieder ein paar Tage, an denen ich keine Zeit hatte, am Pult zu arbeiten, aber vorgestern war es wieder so weit: Nun sollte es natürlich weitergehen!


Insgesamt gibt es momentan vier "Baustellen": Einerseits möchte man natürlich mit den Funktionen vorankommen – nun kann man fahren, bremsen hingegen nur per Tastatur! Also ist der Bremsschalter als nächstes an der Reihe. Gleichzeitig müssen aber die Provisorien in Schach gehalten werden. Ich muss mich darum kümmern, dass der Arduino irgendwo drann befestigt wird, Kabel etwas sinnvoller verlegt und mit den Kontakten verbunden werden usw.. Das Dritte ist das experimentelle Ausloten der nächsten Kategorien, namentlich der Leuchtmelder und des Tachos, und schließlich soll die Gesamtkonstruktion natürlich weiter wachsen, z.B. soll die Holzbalken auch mal etwas Farbe bekommen und auch der Bildschirm soll nicht ewig auf einem Wasserkasten stehen. :-)


Nun ging es aber erstmal dem Bremsschalter an den Kragen, damit man nach erledigter Arbeit wenigstens mal ein bisschen fahren kann. :-) Der eine Teil des Fahrschalters war Fleißarbeit, aber erstmal sollte der "experimentelle" Teil erfolgen, nämlich das Poti über einen analogen Eingang in den Arduino führen. Nun ja, experimentell... ;-) Vorne sind die drei zugehörigen Kabel (braun, weiß und grün) ziemlich fest mit dem Poti verbunden. Diese drei verlaufen dann aber in einem gemeinsamen Schlauch durch das Pult bis zu dessen Rückseite und mündeten in eine Buchse. Da mir dieser Ort sehr entgegenkam, hab ich die drei Kabel dort durchgekniffen und in eine Lüsterklemme geschraubt.


 


Die nächste Frage war, welche Ader wo am Poti angeschlossen ist. Um dies zu ermitteln, benutzte ich ein Widerstands-Messgerät. Dazu ein ganz klein wenig Theorie: Ein Poti hat drei Anschlüsse. Zwischen zweien befindet sich ein fester Widerstand und der dritte stellt eine Art "Schleifer" dar, den man je nach Einstellung zwischen den anderen beiden Anschlüssen hin und her bewegen kann. Wird der Schleifer in Richtung des ersten Anschlusses geschoben, dann wird der Widerstand zwischen jenem und dem Schleifer immer niedriger und 0, wenn der Schieber ganz am ersten Anschlag ist. Gleichermaßen wird der Widerstand gegenüber dem zweiten Anschluss immer höher und erreicht den Betrag des gesamten Widerstands, wenn er am Anschlag ist.


Schließt man die beiden erstgenannten Anschlüsse nun am Arduino an die Pins GND ("Minuspol") und 5V ("Pluspol") und den Schleifer-Anschluss an einen der Analog-Eingang-Pins, dann "zieht" man diesen mittels des Potis "Richtung" GND oder 5V. Dies wird vom Arduino umgesetzt in einen Wert zwischen 0 und 1023, der dann abgegriffen und verarbeitet werden kann.


Und wie weiß ich nun, welches Kabel an welchem Anschluss liegt? Nun, zunächst habe ich einfach den Bremsschalter auf E2 gestellt, d.h. der Schleifer des Potis sollte sich nicht an einem der Anschläge befinden, sodass sich in beide Richtungen ein gewisser Widerstand einstellt; zum unteren Anschluss hin sollte er etwas kleiner sein (weil die Bremsstufe ja noch unter der Mitte ist), zum oberen hin etwas größer. Beide Widerstände zusammen sollten dann in der Summe den festen Widerstand ergeben. Mit dem Widerstandsmessgerät ergaben sich folgende Werte: Zwischen grün und weiß lag etwa 1kΩ, zwischen grün und braun ungefähr 400Ω und zwischen weiß und braun etwa 600Ω. Bewegte man nun den Bremsschalter, blieb der Widerstand zwischen grün und weiß konstant, die anderen beiden variierten. Das bedeutete nach obiger Logik also: Der feste Widerstand beträgt 1kΩ und liegt zwischen grün und weiß an. Der braune Anschluss bewegt sich Richtung grün, wenn die Bremskraft zurückgenommen wird, und Richtung weiß, wenn er erhöht wird. Also: Weiß kommt an "5V", grün an "GND" und braun an den Analog-Eingangs-Pin.


Um es kurz zu machen: Nach Anschluss an den Arduino und Integration in das bestehende Programm kamen tatsächlich wie erwartet die entsprechenden Zahlenwerte heraus, die genau die Position des Bremsschalters wiedergaben – stufenlos! :-) Allerdings nur innerhalb des E-Brems-Bereiches. Was aber insgesamt am meisten Zeit kostete und nicht sehr aufregend war, war das ganze Drumherum: Einerseits habe ich mit Lüsterklemmen eine Art provisorische Sammelschiene jeweils für GND gebastelt, dann die alten Kabel von den Kontakten des Bremsschalters (für die anderen Stufen) abgeschraubt, diese mit GND-Drähten angeschlossen (besonders viel Popelei, da ich die Drähte von Kontakt zu Kontakt durchgeschleift habe) und dann die Kontakte für "E-Bremse" (grün, Pin 4) und "Fahren" (blau, Pin 3) an den Arduino angeschlossen. Das Programm auf dem Arduino musste nun mit der Intelligenz versehen werden, sowohl die Raste des Bremsschalters (momentan "Fahren", "E-Bremse" oder "Abschluss") als auch die genaue Position des Schalters im Falle des E-Bremsens über die Schnittstelle ans Plugin zu schicken. Dieses wiederum musste nun auch mit dem virtuellen Bremsschalter verbunden werden, wobei die Zahlenwerte vom Poti noch so skaliert werden mussten, dass genau die Stellungen von E1 bis E4 korrekt übertragen werden.


   


Leider noch nicht fehlerlos (der Bremsschalter "zappelt" auf den E-Bremsstufen noch herum, aber nicht "potimäßig"!) aber dennoch: Seit dem kann man den Zug per Fahrpult Fahren und (elektrisch) Bremsen! :-D :-D