Arduino-Schaltungen im Modellbau

Im Bereich des Modellbaus (z.B. Modell-Eisenbahnen) können viele Schaltungen realistische Effekte aus dem Städtebau mit dem Arduino und ein paar LEDs simuliert werden, um so eine lebendige Modell-Landschaft zu schaffen. Im diesem Beitrag werden einige Schaltungen und deren Programmierung mit anpassungsfähigen Arduino-Librarys gezeigt.

Modell-Eisenbahn
Quelle: Bild von naturfreund_pics auf Pixabay

In den folgenden Beispielen wird jeweils immer ein Arduino Uno verwendet, jedoch kann auch recht leicht ein Arduino Nano, ATtiny85 oder ESP32 verwendet werden. Je nachdem müssen die Anschlüsse, Libraries bzw. die Sketche auf den entsprechenden Mikrocontroller angepasst werden.

Die hier zur Verfügung gestellten Libraries können auch beliebig kombiniert werden, sofern nicht gleiche Pin-Belegungen verwendet werden. Somit kann für mehrere Simulationen nur ein Mikrocontroller verwendet werden.

Verkehrs-Ampel

Für eine einfache Simulation einer PKW-Verkehrsampel genügen schon drei verschiedenfarbige LEDs und ein wenig Programmierung für den Arduino, um die Simulation zu starten.
Eine etwas aufwendigere Simulation kann man in dem Beitrag Arduino-Ampelschaltung finden.

Verwendete Bauteile

Aufbau der Schaltung

Schaltplan für die Ampel-Simulation
Abb.: Schaltplan für die Ampel-Simulation

Programmierung

Um die Ampel-Simulation zum Laufen zu bekommen, wird die folgende Library heruntergeladen und dann in der Arduino-IDE direkt als .zip-Datei eingefügt. Dann kann das folgende Beispiel direkt ausprobiert werden.

Library TrafficLights laden [2,8 kB]
#include <TrafficLights.h>

TrafficLights tl = TrafficLights(8, 9, 10);

void setup() {}

void loop()
{
    tl.update();
}
Video: Demo der Ampel-Simulation (1,53 MB).

Häuserbeleuchtung

Häuserbeleuchtung im Modellbau mit Arduino
Quelle: Bild von Vlad Vasnetsov auf Pixabay

Verwendete Bauteile

Aufbau der Schaltung

Will man ein Haus mit einer oder zwei LEDs beleuchten, so ist die max. Stromstärke, die der Arduino verkraftet durch den Vorwiderstand nicht überschritten. Verwendet man allerdings etliche LEDs, die mehrere Häuser gleichzeitig beleuchten sollen, so empfiehlt sich der Einsatz von einem Transistor, um den Arduino nicht zu überlasten oder gar zu zerstören.

Schaltplan für die Häuserbeleuchtung
Abb.: Schaltplan für die Häuserbeleuchtung
Schaltplan für die Häuserbeleuchtung mit Transistor
Abb.: Schaltplan für die Häuserbeleuchtung mit Transistor

Programmierung

Der Sketch für die Häuserbeleuchtung ist recht einfach, denn es wird neben dem Pin für die LED nur ein Zeitinterval (in s) für die aktive Leuchtzeit und ebenfall für die Dunkelzeit benötigt. Zusätzlich gibt man noch an, ob der anfängliche Zustand an oder aus sein soll. (Will man die Häuserbeleuchtug abhängig vom Umgebungslicht machen, so ist die Programmierung für Strassenbeleuchtung gut geeignet.

Library HouseLighting laden [2,7 kB]
#include <HouseLighting.h>

HouseLighting h = HouseLighting(/* ledPin */ 8, /* timeOn */ 5, /* timeOff */ 5, /* initialState */ 0);

void setup() {}

void loop()
{
    h.update();
}

Strassenbeleuchtung

Verwendete Bauteile

Aufbau der Schaltung

Die Simulation einer Straßenleuchtung sind eigentlich nur beliebig viele LEDs (meist: weiß), die allerdings nur dann erleuchten sollen, wenn das Umgebungslicht eine gewisse Intensität unterschreitet. Dies wird mit einem lichtabhängigen Widerstand (LDR) realisiert. Auch hier gilt beim Einsatz von mehreren LEDs wieder, dass man am besten wie bei der Häuserbeleuchtung mit einem Transistor arbeiten sollte. In diesem Beispiel werden vier weiße LEDs mit je einem 1kΩ-Vorwiderstand verwendet, was kein Problem für den Arduino darstellt.

Schaltplan für die Straßenbeleuchtung
Abb.: Schaltplan für die Straßenbeleuchtung (es können beliebig viele LEDs parallel geschaltet werden; hier Vorwiderstände nicht vergessen!)

Programmierung

Library StreetLighting laden [2,7 kB]
#include <StreetLighting.h>

StreetLighting sl = StreetLighting(/* ledPin */ 9, /* ldrPin*/ A0, /* sensorOn */ 700, /* sensorOff */ 650);

void setup() {}

void loop()
{
    sl.update();
}
Video: Demo der Straßenbeleuchtungs-Simulation (730 kB).

Baustelle

Verwendete Bauteile

Aufbau der Schaltung

Auf einer (Straßen-)Baustelle werden zur Umleitung von PKW oft Lauflichter verwendet. Auch sieht man hin und wieder das gleißende Licht eines arbeitenden Schweißers. Diese beiden Effekte werden hier mit LEDs nachempfunden.

Schaltplan für die Baustellen-Simulation
Abb.: Schaltplan für die Baustellen-Simulation (Schweißlicht und Lauflicht können auch separat voneinander verwendet werden, da es sich um unterschiedliche Libraries handelt)

Programmierung

Library WeldingLight laden [2,7 kB]
Library ChaseLight laden [2,7 kB]

Für jeden Effekt wird eine eigene Library zur Verfügung gestellt, so dass sie unabhängig voneinander genutzt werden können.

#include <ChaseLight.h>
#include <WeldingLight.h>

ChaseLight cl = ChaseLight(8, 9, 10, 11, 12, 13);
WeldingLight wl = WeldingLight(6);

void setup() {}

void loop()
{
    cl.update();
    wl.update();
}
Video: Demo der Baustellen-Simulation (1 MB).

Leuchtturm

Für die Simulation eines Leuchtturm können man eine LED in einem Turm wirklich kreisen lassen, jedoch wäre hierbei ein Motor involviert, der v.a. bei kleineren Modelllandschaften wertvollen Platz verbraucht und u.U. sogar zu hören ist. Eine andere Möglichkeit wäre ein Kreis aus x LED, welche dann in der Form eines Lauflichts nacheinander leuchten. Die sparsamste Möglichkeit wird hier gezeigt, denn sie benötigt nur eine einzige LED und hat jedoch den Nachteil, dass das Licht des simulierten Leuchtturms nur in eine Richtung strahlt. Daher sollte der Leuchtturm nicht im Zentrum der Anlage stehen.

Verwendete Bauteile

Aufbau der Schaltung

Schaltplan für die Leuchtturm-Simulation
Abb.: Schaltplan für die Leuchtturm-Simulation

Programmierung

Library LightHouse laden [2,7 kB]
#include <LightHouse.h>

LightHouse lh = LightHouse(6);

void setup() {}

void loop()
{
    lh.update();
}
Video: Demo der Leuchtturm-Simulation (1 MB).

Blaulicht

Diese Art von Kennleuchten sind schon im Beitrag Blaulicht-Simulationen in verschiedenen Variationen beschrieben worden, jedoch wird hier ein einfaches Wechsel-Blaulicht in einer Library für den Arduino verpackt, damit dies auch einfach parallel zu den anderen Simulationen gestartet werden kann.

Verwendete Bauteile

Aufbau der Schaltung

Schaltplan für die Blaulicht-Simulation
Abb.: Schaltplan für die Blaulicht-Simulation; da jeweils immer nur eine LED gleichzeitig aufleuchtet, reicht ein Vorwiderstand aus.

Programmierung

Library VehicleLight laden [2,7 kB]
#include <VehicleLight.h>

VehicleLight vl = VehicleLight(5, 6);

void setup() {}

void loop()
{
    vl.update();
}
Video: Demo der Blaulicht-Simulation (550 kB).

(Lager-)Feuer

Feuersimulationen basieren meist auf flackernden LEDs, von denen im Beitrag Flackerndes Licht mit LEDs und Flackerndes Licht mit LEDs II. schon einige Varianten vorgestellt wurden. Um möglichst wenige Platz zu verbrauchen, wir hier eine Simulation mit zwei verschiedenfarbigen LEDs (gelb und rot) verwendet.

Verwendete Bauteile

Aufbau der Schaltung

Schaltplan für die Feuer-Simulation
Abb.: Schaltplan für die Feuer-Simulation

Programmierung

Library Fire laden [2,7 kB]
#include <Fire.h>

Fire f = Fire(6, 9);

void setup() {}

void loop()
{
    f.update();
}
Video: Demo der Feuer-Simulation (650 kB).

Bahnübergang & Schranke

Für einen Bahnübergang mit Schranken werden auf beiden Seiten ein rotes Licht (je eine LED) und zwei Servo-Motoren für die Schranken verwendet. Als Auslöser für den Bahnübergang wird eine Lichtschranke mit Infrarot-LED und entsprechendem Sensor benutzt.

Bahnübergang
Quelle: Bild von Erich Westendarp auf Pixabay

Verwendete Bauteile

Aufbau der Schaltung

LED1 bildet mit P1 die Lichtschranke, die an einer geeigneten Stelle in der Landschaft positioniert wird. Löst die Lichtschranke aus, so werden die beiden Servos so verstellt, dass die Schranken sich schließen können, während LED2 und LED3 dies blinkend anzeigen. Die Servos sollten mit einer externen Gleichstromquelle versorgt werden, denn der recht hohe Stromfluss kann den Arduino zerstören. Je nach Bauart der Schranken kann auch nur ein einziger Servo verwendet werden.

Schaltplan für den Bahnübergang mit Schranke
Abb.: Schaltplan für den Bahnübergang mit Schranke

Programmierung

In der Library Crossing werden im Constructor fünf Werte angegeben. Diese sind irLedPin (Anschluss für die IR-LED), irSensorPin (Anschluss für die Fotodiode), ledPin (Anschluss für die roten Warnlichter), servoPin (Steuerungsanschluss für den/die Servo(s)) und openTime (Zeit in Sekunden, wie lange die Schrank geschlossen ist und dann wieder öffnet).
Damit der Servo für die Schranke(n) die richtigen Positionen einnimmt, muss die Werte in setServoValues(min, max) selbst ausprobieren, denn diese sind pro Servo-Fabrikate etwas unterschiedlich.

Library Crossing laden [2,9 kB]
#include <Crossing.h>

Crossing cr(7, A0, 3, 9, 5);

void setup()
{
  cr.setServoValues(900, 2400);
}

void loop()
{
  cr.update();
}
Video: Simulation von Bahnübergang und Schranke mit Arduino
zurück