Modellbahn-Beleuchtung mit dem Arduino Nano

Weitere Artikel zum Thema LED-Beleuchtung

Bevor ich mich der Erläuterung der Bahnhofs-Beleuchtung widme, zunächst einmal das Video:

 

Für die Beleuchtung von Gebäudemodell auf der MoBa gibt es eine Vielzahl von Lösungen. Ich hatte selbst auch schon mit den Steuermodulen wie z.B. HERKULES von Tams Elektronik geliebäugelt. Und dann kam mein Sohn mit dem Arduino-Projekt um die Ecke, einem sehr erschwinglichen Microcontroller-Board. Ich hatte schon einiges in den üblichen Publikationen zur Modellbahn darüber gelesen. Ziel bei dieser Variante ist nun, mit möglichst wenig Aufwand und geringen Kosten eine Steuerung für ein Modellgebäude zu bauen, die zeitliche Abläufe für das Ein- und Ausschalten von LEDs ermöglicht.

Auswahl des Boards

Auf dem Markt gibt es eine Reihe von Arduino-kompatiblen Boards. Diese sind oft für kleines Geld zu haben. Die Wahl fiel auf ein Arduino Nano V3 von AZ-Delivery mit einer Board-Größe von 4,5 x 2 cm. Der Nano wird mit einem USB-Kabel an den PC zur Programmierung angeschlossen. Für einen ersten Aufbau der Schaltungen bieten sich Steckboards an, die Schraubklemmen für jeden Pin des Arduino Nano bereitstellen.

Arduino Nano
Arduino Nano

Einrichtung der IDE

Doch, bevor ich mich den einzelnen LEDs für mein Gebäude widme, will der Controller programmiert werden. Man muss glücklicher Weise keine vertieften Programmierkenntnisse haben, es erfordert aber schon etwas Grundwissen im Umgang mit dem PC.

Die Entwicklungsumgebung (integrated development environment – kurz IDE) wird auf der Aduino-Seite kostenlos zum Download angeboten:

https://www.arduino.cc/en/software

Nach dem Ausführen der Installation steht nun die DIE bereit und muss zunächst mit dem Board der Wahn verbunden werden. Hierfür sind drei Einstellungen vorzunehmen:

  1. Auswahl des verwendeten Boards – hier Arduino Nano

    Einstellen des Arduino Boards
    Einstellen des Arduino Boards
  2. Festlegung des Prozessors

    Einstellen des Prozessors
    Einstellen des Prozessors
  3. Auswahl des USB-Ports
    Zunächst muss hier geschaut werden, an welchem USB-Port des Computers der Arduino angeschlossen wurde. Dies findet man im Zweifelsfall im sog. Gerätemanager des PCs. Unter Windows 10 wird dieser im Startmenü aufgerufen.

    Geräte-Manager
    Geräte-Manager

    Die Einstellung wird also auf dem COM4 vorgenommen.

    Einstellen des Ports
    Einstellen des Ports

 

Besonderheiten der USB-Treiber

Auf verschiedenen dieser Nachbauboards ist der USB-Chipsatz CH340G verbaut, wie hier auf der Detailaufnahme des verwendeten Boards von AZ-Delivery.

CH340G Chip
CH340G Chip

Um diese Boards mit dem PC ansprechen zu können, wird ein Treiber benötigt, den man auf der Herstellerseite runterladen kann:

http://www.wch.cn/download/CH341SER_ZIP.html

Nach dem Ausführen der Installation des Treibers wir auch sofort das Board erkannt und wie ober beschrieben im Gerätemanager angezeigt. In wenigen Fällen ist auch erst ein Neustart des PCs erforderlich.

Anschlüsse des Arduino Nano

Nun möchte ich mich aber den Anschlüssen des Arduino Nano widmen. Er verfügt 13 Digitale Ausgänge, von denen 6 mit einer Pulse Width Modulation (kurz: PWM) versehen sind.

Für ein einfaches Ein- und Ausschalten von LEDs eignen sich alle dieser Ausgänge. Nur die PWM Ausgänge ermöglichen es aber eine LED über die Programmierung zu dimmen. Dafür wird nicht die Spannung des Ausgangs reduziert, sondern eine mit 500 Herz gesteuerte Pulsweitenmodulation eingesetzt, die quasi den Ausgang permanent an und ausschaltet. In der Ansteuerung wird dafür ein Wert von 0 bis 255 angegeben, wobei der Maximalwert einen Dauerstrom bedeutet.

Arduino Nano Schaltplan mit LED
Arduino Nano Schaltplan mit LED

Die Stromversorgung

Nun aber zur Frage, mit welcher Spannung der Arduino Nano betrieben wird. Es verfügt zunächst für die Programmierung am PC und auch zur Stromversorgung über einen Mini-ESB-Anschluss. Über dieses wird er mit 5 V Spannung versorgt, was auch der benötigten Spannung auf dem Board entspricht. Alternativ kann die Spannungsversorgung zwischen 5 und maximal 12 V liegen und über die Pins VON und GND eingespeist werden. Auf dem Board sorgt dann ein Spannungsregler für eine Reduzierung auf 5 V.

Auf meiner Anlage Wolkingen möchte ich neben der Lichtsteuerung über den Nano noch weitere Leuchten und Lampen betreiben. Ich habe mich daher für einen Wechselstrom-Lichttrafo entschieden. Mittels eines Festspannungsmoduls wird der Strom auf 12 V Gleichstrom angepasst und auch an den Arduino geleitet.

Festspannungsmodul
Festspannungsmodul

Die LEDs

Wie auf der Skizze der Schaltung angeben, werden die LEDs direkt an den 5 V Pins mit einem Vorwiderstand betrieben. Für das vorliegende Modell habe ich SMD LEDs in PLCC-2 Fassung verwendet. In Weiß dürfen diese mit maximal 3,2 V Spannung betrieben werden. Die Ermittlung des passenden Vorwiderstands erfolgt in einem der vielen Online-Vorwiderstandsrechnern und ergibt mindestens 100 Ohm. In der Bastelkiste fand sich der nächstgrößere Widerstand mit 150 Ohm und wurde direkt an die Anode (Pluspol) der LED angelötet. Ein Schrumpfschlauch über dem Bauteil und den blanken Kabeln verhindert nun den Kurzschluss.

LED mit Vorwiderstand
LED mit Vorwiderstand

Maximale Belastbarkeit

Jetzt wäre es ein Traum, könnte man unbesorgt jede Menge an LEDs an den 13 Pins des Arduinos anschließen. Leider muss man auf die maximale Belastbarkeit des Boards achten. Die einzelnen Pins sind mit maximal 40 mA belastbar, was in der Regel für die handelsüblichen LEDs ausreichend ist, die ca. 10 – 20 mA benötigen. Es ist zudem aber auch der Gesamtstrom an allen Pins zu beachten, der bei ca. 200 mA liegt. Wird er über den Controller selbst (ca. 10 mA) und den angeschlossenen LEDs überschritten, so droht die Zerstörung der Bauteile des Boards. Damit können ca. 9 LEDs angeschlossen werden bzw. gleichzeigt leuchten.

 

Die Programmierung

Es sind doch schon einige Schritte absolviert worden bis hierher. Es fehlt noch das passende Programm, auch Sketch genannt, um dem Microcontroller die gewünschten Anweisungen zu geben.

In der oben installierten IDE sind schon aus dem Arduino-Projekt Beispielprogramme mitgeliefert, die einen guten ersten Überblick bieten. Ein solches ist das Sketch namens Blink, welches die LED auf dem Board zum Blinken bringt, nachdem das Programm auf das Board übertragen worden ist.

Grundsätzlich bestehen Sketche aus zwei Methoden:

void setup() {

}

 

void loop() {

}

In der Methode void() werden die Initialisierungen definiert, die direkt nach dem Start des Boards ausgeführt werden. Die Methode loop() wird direkt danach ausgeführt und ständig wiederholt. Sie stellt damit die eigentliche Verarbeitung dar.

Sketch für den Bahnhof Wolkingen

Für meinen Bahnhof Wolkingen wollte ich vier LEDs für die Innenbeleuchtung installieren – zwei im Hauptteil und je eine in den beiden Seitenflügeln. Es sollte zudem das Starten der Leuchtstoffröhren erkennbar sein – ein wenig Spielerei muss sein!

Zum Beginn des Programms werden die Initialisierungen vorgenommen: Die 5 Pins mit PWM werden als Variablen deklariert. Damir kann ich später nur diese Namen verwenden, um die 6 LEDs anzusprechend.

Und in der Methode setup() definiere ich mit pinMode die PINs als Ausgabepins und setze den Wert auf LOW, wodurch die LEDs ausgeschaltet werden.

Sketch Initialisierung
Sketch Initialisierung

 

Für den Start einer der Leuchtstoffröhren habe ich mit eine kleine Unter-Routine erstellt, damit ich nicht für jede Lampe den Ablauf erneut programmieren muss. Dazu wird eine Schleife durchlaufen, die maximal dreimal ein Zündimpuls anzeigt. Diese besteht aus einem kurzen maximal hellen Aufleuchten und einer geringen Leuchtkraft in der Pause bis zum nächsten Zünden der Lampe.

Wie in der Realität sind diese Vorgänge nicht immer exakt gleich, was durch die Funktion random(), einem Zufallsgenerator, erzeugt wird.

Sketch Methode startLamp
Sketch Methode startLamp

Mit diesen Vorarbeiten lässt sich nun die Hauptverarbeitung, also der Ablauf der Beleuchtung in der Methode loop() angehen.

Mit den einzelnen Aufrufen von startLamp und einem anschließenden Warten per delay starten erst die beiden Lampen im Hauptraum und danach zeitversetzt die beiden Lampen in den Seitenflügeln.

Sketch Beispiel loop()
Sketch Beispiel loop()

Es ist vollbracht: Mit sehr wenig finanziellem Aufwand für die Bauteile (4,30 € für einen  Arduino Nano + LEDs und Widerstände) und ein wenig anfänglicher Einarbeitung in den Umgang mit dem Microcontroller ist eine individuelle und jederzeit anpassbare Steuerung der Beleuchtung in Wolkingen entstanden!

An dieser Stelle sei gesagt, dass ich keine Garantie für die Richtigkeit der Angaben und Schaltungen übernehme. Der Nachbau erfolgt auf eigene Gefahr!

Januar 2021