Hallo Freunde der Bits, Bytes und Lötkolben,
für die Digitalos unter euch möchte ich mal die Welt der Arduinos vorstellen.
In diesem Beispiel geht um meine Weichensteuerung für Zwängle.
Meine Vorgabe war die Steuerung von Weichenstraßen mit Start- / Zieltastern. Ausschlaggebend war dabei meine verhasste DKW, bei der ich immer erst 'ne halbe Stunde überlegen muss, wie die Zungen gestellt werden müssen, um von A nach B zu kommen.
Statt eines aufwendigen analogen Aufbaus, bei dem nachträgliche Änderungen ein Horror wäre, habe ich mich also für die digitale Variante entschieden.
Hierfür sind die Mikrocontroller Arduino oder Raspberry Pi bestens geeignet. Damit können alle Arten von LED-, Servo-, (Stepper-)Motoren-, Relais-Steuerungen und noch vieles weiteres mehr umgesetzt werden. Für den Modellbahnbereich ergeben sich unendlich viele Anwendungsgebiete.
Es ist alles so einfach gehalten, dass auch Hobby-Programmierer und -Elektroniker ohne großes Fachwissen hier schnell zu Erfolgen kommen.
Meine Wahl fiel auf den Arduino Mega 2560 R3 (SunFounder) wegen seiner 50 frei programmierbaren Ein- und Ausgänge, des wahrlich günstigen Preises von etwa 18,- EUR (originale Arduino Mega kosten etwa das Doppelte als die China-Nachbauten) und der riesigen Arduino-OnlineCommunity.
Für den schnellen Einstig in die Arduino-Welt eignet sich die Seite www.arduino-tutorial.de/.
Was wird minimal benötigt?
- PC mit USB
- Arduino plus 9V-Steckernetzteil
- USB-Kabel zwischen Arduino und PC
- Arduino IDE (Programmier-Software) (kostenlos, da OpenSource-Projekt)
Zum Aufbau selbst:
- Die Weichen werden von Servos über ESUs SwitchPilot Servo angetrieben.
- Die Eingänge der SwitchPilots müssen mit potentialfreie Schalter/Taster betrieben werden, was die Verwendung von Relais hierfür notwendig macht. Ich hatte noch eine ganze Batterie von 15V-Relais herumliegen und brauchte diese hierfür auf.
- Pro Servo sind 2 Relais notwendig. Einer zum Umschalten in die eine Richtung und der andere für die andere Richtung. Bei 8 Weichen macht das 16 Relais.
Die Ausgänge des Arduino können aber nur 5V/40mA liefern (insgesamt auch nur knapp über 200mA glaub ich). Somit können die 15V-Relais nicht direkt an den Arduino angeschlossen werden.
Macht aber nix - wir nehmen einfach den Treiber-Baustein ULN2803 (intern 8 Treiber) zur Ansteuerung der Relais. Der kann bis 50V Betriebsspannung ab.
Nach ein paar Stunden war das Progrämmchen (programmiert wird in den Sprachen C oder C++) und die Schaltung entwickelt (ok - bin etwas elektronisch und programmiertechnisch beruflich vorbelastet).
(Ins Bild klicken zum Vergrößern)
Die 50 I/O-Pins sind frei als Ein- oder Ausgänge definierbar:
- 11 Pins sind als Eingänge für die Taster definiert (Pin 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52)
Die Eingänge sind im Code von mir als INPUT_PULLUP definiert und somit LOW-aktiv. D.h. im Grundzustand (Taster offen) liegen die Eingänge intern auf HIGH und die Taster schalten die Eingangspins gegen Masse (im Code deshalb Abfrage auf LOW). - 16 Pins sind als Ausgänge für die Relais definiert (Pin 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53)
Die Ausgänge des Arduino gehen zu den beiden ULN2803 (2 x 8Treiber für 16 Relais) und diese schalten die Relais, welche an +15V hängen gegen Masse.
Die Schaltung selbst ist recht simpel, hat mich aber im Aufbau doch einiges an Zeit gekostet:
Hier das Bedienpanel mit den 11 Tastern (einer fehlt noch - hatte doch glatt einen zu wenig gekauft):
Alles in ein Gehäuse eingebaut:
- Links die Relais-Platine mit den beiden ULN2803
- Links unten die Ausgänge. Per Flachbandkabel geht es weiter zu den ESU SwitchPilots.
- Rechts der Arduino Mega
Und von der anderen Seite:
Hier die Verbindung zum Bedienpanel:
Und in der Gesamtansicht:
Gleich geht's weiter...
Gruß Ralf