Bin Stefan, mit 43 nicht mehr gerade der jüngste und in der Schweiz Zuhause.
Habe "noch" Null Ahnung, was das Thema Arduino anbelangt, aber für mein nächstes Projekt, wäre es eine günstige Hardware alternative. Das teure daran wird das Lernen.
Ich möchte bei meiner Modelleisenbahnanlage die 17 Weichen zukünftig über Servos/ Linearservos schalten. Das würde heissen, dass ich 3 Arduino Schaltungen aufbauen müsste.
Mich würde eure Meinung/ Machbarkeit zu meiner Idee interessieren, ob dies mit einem Arduino Nano realisierbar wäre. Wenn ihr findet, dass dies funktioniert, werde ich mich weiter mit dieser Materie auseinander setzen.
Mein Idee ist, die entsprechende Weiche über einen Tastschalter zu stellen. Ein kurzer Druck, Servo fährt von Position 0 zu 1 , wieder kurzer Druck, Servo fährt von Position 1 zu 0 zurückt.
Da der Arduino max. 6 PWM Ausgänge hat, könnten somit auch 6 Weichen angesteuert werden.
Würde die Auswahl der entsprechenden Weiche durch Spannungs- Widerstandcodierte Schalter möglich???
Der Luxus wäre noch, dass bei entsprechender auswahl der Weiche, auch gerade dessen Stellung über eine Rote und Grüne LED angezeigt würde. Servo Position 0, Grüne LED an, Position 1, Rote LED an.
Ich habe mir eine Schematische Zeichnung zu meiner Idee gemacht.
Rechne mal zusammen wieviel I/O Pins pro Weiche benötigt werden. Über den Daumen geschätzt komme ich auf vier und das könnte eng am Arduino Nano werden. Als Alternative bietet sich hierzu der Arduino Mega an.
Ich wünsche einen geschmeidigen Tag und viel Spass beim Programmieren in C++.
die übliche Servo Library ist nicht beschränkt auf PWM fähige Pins. Soll heißen, du kannst jeden Pin dafür nehmen.
Die Tasterauswertung über Widerstände muss anders aufgebaut sein, siehe den Schaltplan von @fony
Ganz verstehe ich nicht warum du die Weichenwahltasten und eine separate Stelltaste haben willst. Eigentlich ist letztere Taste "Stellung Weiche ändern" nicht notwendig.
An deiner Stelle würde ich einfach mal einen kleinen Arduino Uno R3 (!) besorgen und die ersten Schritte lernen. Wenn die ersten Weichen funktionieren kannst du dann ja einen Mega kaufen und diesen in der Anlage verwenden.
Mit einem Treiberboard mit PCA9685 (zum Beispiel dem hier: https://amzn.eu/d/hFKNThr ) sind sogar 16 Servos an einem Ardunio möglich und benötigen dank I²C nur 2 Anschlüsse. (zumindest theoretisch) sind sogar 64 PCA9685 mit jeweils 16 Servos möglich.
Solange die LEDs nur rot oder grün leuchten sollen und nicht einen dritten Zustand (aus) annehmen können müssen, benötigt eine LED auch nur einen Anschluss.
Dazu braucht man antiparallele LEDs oder ebensolche Dual-LEDs und zwei Widerstände.
(Siehe Bild)
Zwar braucht eine solche Schaltung den 1,5fachen Strom, der durch die LED fließt, aber dafür spart sie Portpins am Arduino.
Insgesamt bräuchtest du dadurch nur 2 Anschlüsse pro Servo (einen für die LEDs und einen für den Taster) plus 2 Pins für I²C.
Damit könntest du also 8 Servos an einem Arduino anschließen.
Wenn du nun für die LEDs ebenfalls PCA9685 (oder andere I²C ICs) verwendest, benötigst du nur noch die Anschlüsse für die Taster und bekommst somit 16 Weichen an einen Arduino.
Und wenn du dann noch einen der beiden verbleibenden Analoganschlüsse (A6, A7) als Eingang für einen Taster missbrauchst, passen deine 17 Weichen auch an einen Arduino Nano.
Anstelle eines Nanos verwende ich gerne einen 5V 16MHz Atmega328P Pro Mini, weil man USB ja nur selten benötigt. Für alle Pro Minis brauchst Du einUSB to TTL Serial Cable. Lötet man an die Pro Minis Steckkontakte für UART, erreicht man die im eingebauten Zustand manchmal leichter als USB vom Nano. Letztlich ist es auch eine Preisfrage.
ERGÄNZT: Das gilt auch für den MEGA2560 PRO, der viele Pins auf wenig Quadratzentimetern lötbar anbietet.
Solltest Du an Arduinos und deren Programmierung Gefallen finden, könntest Du sie per RS485 oder CAN-Bus vernetzen. Auch eine Browserseite zur Anzeige und Steuerung wäre möglich, nur mal so perspektivisch.
Die Software läuft wie bei einem Server endlos im Kreis. Logische Abläufe bekommst Du mit Schrittketten in den Griff.
Schau Dir als Programmbibliothek mal die MobaTools an, werden per Bibliotheksverwalter der Arduino-IDE installiert. Langsame Servos, Zeitgeber, Schrittmotoren und mehr.
Hier im Forum gibt es viele alte Säcke, die von der Droge Arduino nicht mehr lassen können, also willkommen Jungspund!
Alle Links sind keine Kaufempfehlung und dienen lediglich der Anschaulichkeit, besonders wo Du in CH lebst. Das gilt natürlich auch für Zollbestimmungen.
Hallo Stefan, du Jungspund
Die MobaTools, die @agmue ja schon angesprochen hat, habe ich ursprünglich für genau deinen Anwendungsfall geschrieben ( deshalb heißen Sie ja auch so: Moba=Modellbahn ). Auch wenn sie inzwischen häufig außerhalb der Moba eingesetzt werden.
Die enthalten auch eine Klasse für das Einlesen der Taster. Wenn man da eine Matrix und/oder einen Portexpander verwendet, kann man auch einiges an Pins sparen. Genau dafür gibt's auch ein Beispiel.
Solltest Du überlegen, DCC einzusetzen, habe ich dafür auch einen konfigurierbaren Zubehördecoder geschrieben, mit dem man u.a. auch bis zu 16 Servos/Weichen ansteuern kann.
Gruß Franz-Peter ( gehöre auch zu den schon angesprochenen 'alten Säcken' )
Für einen Modellbahnkollegen hatte ich vor längerer Zeit mal etwas ähnliches gebaut: mehrere DCC-Decoder, die die Weichen steuern, und einen Bedienplatz, der entsprechende DCC-Signale für die Decoder erzeugt. DCC wurde da nur genutzt, um die Stellbefehle vom Bedienpult zu den Decodern vor Ort zu übertragen. Das war eine direkte Verdrahtung, also nicht über die Gleisspannung. Da wurden auch die von @agmue bereits angesprochenen Arduino pro mini verwendet.
Du solltest auf jeden Fall eine Steuerung für eine langsame Bewegung der Servos einplanen. Ansonsten sieht das nicht schön aus, und Du könntest gleich die Standard Magnetantriebe verwenden.
Zur Machbarkeit: Arduino und Moba geht wunderbar zusammen - da kann man unendlich viel machen...
Auf meiner ehemaligen Moba hat ein einziger ATMega einen Schattenbahnhof für bis zu 45 Züge vollkommen automatisch gesteuert - und der wusste immer genau, welcher Zug gerade wo war. Nur mal so zur Machbarkeit
Mit einem Nano kann man erstaunliche Dinge tun. Bei mir kommen sie für 4- bzw. 8-fach Servodekoder zum Einsatz. Steuerbar entweder über Taster oder DCC-Protokoll.
Für die Herstückpolarisierung von Weichen können Relais verbaut werden. Beim 8-fach Dekoder über eine Erweiterungsplatine, siehe Bild.
Die Pins des Nano reichen für den 4er Dekoder incl. Relais aus, beim 8-fach Dekoder ist ein Port-Expander verbaut, der die Relais ansteuert.
Die Dekoder können auch für Form-Signale eingesetzt werden, Nachwippen in den Endstellungen inklusive sowie das kurze Pausieren in der Mitte des Stellvorgangs beim sogenannten Umgreifen .
Für die Tasterabfrage nimmt man einen analogen Pin und kann damit mehrere Taster pro Pin abfragen. Hier gibts gute Infos dazu: Tasten und Schalter an ADC-Eingabepins
Wobei ich persönlich kein so besonderer Freund von den 'analog-Tasten' bin. Früher habe ich das auch öfter gemacht, wenn man es nicht benötigt, dass mehrere Tasten gleichzeitig gedrückt werden dürfen. Kann man machen, aber meins ist es nicht. Wenn Pins gespart werden müssen, bevorzuge ich in so einem Fall einen I2C Portexpander, an dem die Tasten angeschlossen sind, gegebenenfalls auch in einer Matrix. Das ist aus meiner Sicht die bessere und flexiblere Lösung.
Gibt ja sogar ein Beispiel dazu - hatte ich in #8 schon verlinkt . Grundsätzlich dürfte das mit der analogen Variante auch gehen - hab's aber nie ausprobiert.
Das dürfte auch über einen Callback (analogRead+range based switch/case) zu realisieren sein, aber ich halte die analoge Variante für wesentlich störanfälliger im Rahmen einer Modellbahnanlage.