Hallo zusammen !
Na, offenbar stehen ja Aussentemperatur und Bastel-Motivation in einem reziproken Verhältnis.

Sägearbeiten in der Badehose sehen ja auch doof aus, vor allem, wenn man die Bikini-Figur noch nicht erreicht hat.

Viel ist in den letzten Wochen nicht passiert. Und on top, hänge ich auch mit der Berichterstattung etwas hinterher….
Am Schreibtisch das Steuerungs-Zeugs noch ein wenig weiter zu entwickeln, geht aber immer. Auch mit Sonnenhut.
Achtung: jetzt kommt wieder ein kleiner Exkurs:
Elektrik – Teil II. Elektrik-Uninteressierte mögen bitte sofort den Rückwärtsknopf ihres Browsers drücken.
Ich gebe es ja zu: ich finde es genauso witzig an dem Elektrik-Kram zu basteln, wie mit Farbe herum zu klecksen. Als vor vielen Jahren der Trend aufkam, man müsse die Modellbahn über den PC steuern, habe ich nur die Augenbrauen hochgezogen. Blödsinn. Was soll das

Heute finde ich das spannend – allerdings nicht mit dem fertigen industriellen Zeugs. Auch da ist Selbstbau angesagt.

Und ja: ich mag diese kleinen, grün/blauen Arduino-Biester.

Und nein: ich nehme sie nicht ins Bett mit.
Irgendwann soll es ja nicht nur ein Segment sein, sondern mehrere. Warum also nicht schon einmal die Nagelprobe mit mehreren Arduinos machen

Das Foto zeigt schon fast die Verdrahtung für die ganze spätere Anlage. Fast ? Genau, es kommt noch ein Vierter dazu, habe ich beschlossen. In jede Ecke der Anlage einer.
Und siehe da: ich habe mal wieder ein paar Anfängerfehler eingefangen…..
RX parallel funktioniert perfekt. Alle lesen mit, was der Laptop so sendet. Jeder holt sich die für ihn passenden Informationen raus. Das Protokoll ist simpel. Es gilt der Grundsatz: nur was einfach ist, hat eine gewisse, winzige Rest-Chance überhaupt zu funktionieren.
Es macht meines Erachtens auch richtig Sinn, für die Weichenstellung nicht nur links oder rechts zu übertragen. Da alle Antriebe über Servos laufen, übertrage ich jeweils den Endwinkel. Es ist sehr viel einfacher am Laptop in irgendeiner Header-Datei den Eintrag für den Winkel zu ändern, als mühsam an der Mechanik herum zu fummeln – und daran zu scheitern.

So müssen die Servos nicht doof gegen den Anschlag arbeiten, unsinnig Strom ziehen und vor Ärger brummen.
Die TX-Ausgänge parallel ist so eine Sache. Arduino kennt kein open drain - zumindest weiss ich nichts davon.

D.h. wenn er nichts sendet, liegt TX auf +5V. Wenn nun alle auf HIGH liegen, kann der letzte kleine Rechner auf TX nun gegen GND takten, was er will. Es wird nichts übertragen. Tja, hätte ich eigentlich vorher wissen können. Lerneffekt 1: wer vorher denkt geniest Vorteile !
Manchmal bringt Nachdenken aber dann doch etwas Gutes hervor – unerwartet, damit konnte ja nun wirklich niemand rechnen. Vielleicht war es auch nur ein glücklicher (zufälliger) Geistesblitz. Die Lösung ist einfach.

Eine kleine Diode und schon kann die Leitung vom Arduino nicht mehr „hochgezogen werden“ (damit „open drain“). Ein „HIGH“ braucht es aber dann schon noch. Das erledigt ein 4k7 Widerstand als Pull-Up (d.h. 1mA Strombelastung beim Senden). Passt. Nun kann munter (natürlich nacheinander) gegen GND getaktet werden.
Die UART-Schnittstelle läuft völlig problemlos und auch stabil / störungsfrei. Die parallele Leitung für den Fahrstrom ist schnurzegal. Das passt zu meinen bisherigen Erfahrungen mit der UART – sehr stabil, auch bei langen ungeschirmten Leitungen. O.k., ich übertrage auch mit 9600 baud sehr gemächlich. Hab es ja nicht eilig.
Über TX läuft die Rückmeldung für die Gleisüberwachung. Auch da ist das Protokoll wieder simpel. Es ist zwar eigentlich reine Verschwendung, aus einem Bit einen Character (Byte) zu machen. Aber es hat Charme, wenn man den empfangenen String unverarbeitet, „naked and native“ auf dem Bildschirm mitlesen kann. Insofern gibt´s auch keine Nullen und Einsen, sondern nur Selbsterklärendes. Das erleichtert die Fehlersuche. Läuft das Protokoll eben eine Millisekunde länger. Paah, das macht bei meinem Alterungsprozess den Kohl auch nicht mehr fett.
Die Arduinos halte ich dumm (entsprechend kurz ist der Sketch)

- hier denkt der Chef.

Alle bekommen die gleiche Software. Die Kodierung erfolgt extern über ein paar Drahtbrücken an den analogen Eingängen. Die kleinen Biester sind eigentlich nur Wasserträger und setzen das was hereinkommt willenlos um bzw. melden deren Eingänge einfach nur zurück. Die Protokolle kann man sicher auch ganz anders machen. Mir war wichtig: keep it simple & stupid.

Da braucht man nichts verschlüsseln. Klartext lesen ist wichtiger, denn CIA und KGB werden sich kaum dafür interessieren. Der Mossad noch weniger. Ausserdem ist die UART-Schnittstelle abhörsicher.
Eingebaut sieht das dann so aus. Fliegende Verdrahtung. Einverstanden, nicht schön, aber funktionabel.

Es liegen hier aber auch bereits die Leitungen für die beiden benachbarten Segmente auf (für die das Baumaterial noch im Laden ist). Ich möchte nicht in jedem Segment so ein Ding montieren. Das ist übertrieben – auch wenn die Biester weniger als eine vernünftige Pizza kosten. So gesehen ist die Verdrahtung doch sehr harmlos.
Das Foto entspricht ungefähr dem, was auf dem Schaltplan zu sehen ist. Besetzmeldung mittels antiparalleler Dioden und Optokoppler. Übrigens genügt hier ein Strom von ca. 5mA zwischen den Gleisen, damit die Schaltung anspricht. Perfekt ! Auch der erste Servos ist zu sehen. Dazu komme ich später noch……
Doch hier lauert schon der nächste Lerneffekt. Die Strippen für den Gleisstrom mit dem Flachbandkabel zu bündeln, war keine brennende Idee.

Tatsächlich gibt es kapazitive Einkopplungen und zum Teil Falschauslösung der Besetztmeldung. Der interne Pull-Up im Arduino ist mit ca. 20k doch recht hoch. Also habe ich die beiden Litzen für das Gleis neu verlegt mit etwas Abstand zum Flachbandkabel. Zur Sicherheit bekam der Eingang der Besetztmeldung noch einen kleinen externen Pull-Up von 2k2. Diese 2mA Stromverschwendung gönne ich mir – habe PV auf dem Dach.

Der verbesserte Schaltplan sieht dann so aus:
Das Zeugs funktioniert nun und ist bereit für den Roll-Out. Ich verspreche auch, dass es im nächsten Beitrag dann wieder etwas mit Klebstoff oder Farbe, jedenfalls mit schmutzigen Fingern gibt.
Stoffel