Scale Beleuchtung mit Arduino

Scale Beleuchtung mit Arduino

Das schönste Modell wird noch schöner, wenn es mit einer Beleuchtung versehen wird, die dem Vorbild möglichst nahe kommt.

Lies, wie Du Dein Modell mit wenigen Teilen und geringen Kosten mit einer realistischen Beleuchtung ausstatten kannst.

Es gibt verschiedene Bausätze zu kaufen, die natürlich funktionieren, diese sind aber nicht ganz billig und oft auch nicht so einfach anpassbar. Mit etwas Geschick und geringen Programmierkenntnissen lässt sich so etwas für wenige Euro selbst bauen.

Als Basis hierfür dient ein Arduino Board. Diese sind auch als Nachbau (ATmega 328 Chip V3) unter 5€ im Internet zu bekommen. Aufgrund seiner geringen Größe empfehle ich ein Nano Board. Dies passt z.B. problemlos noch zusätzlich in 450er Hubschrauber. Außerdem lässt es sich über einen Mini-usb Port bequem mit PC oder Mac verbinden.

Als Beispiel nehme ich eine Beleuchtung für einen EC-135 Rettungshubschrauber. Dieser bekommt die folgende Beleuchtung:

  • 2 weiße Strobolichter, 1 je Seite
  • 1 blinkende Positionslampe auf der Heckflosse
  • 1 blinkende Positionslampe im Rumpf
  • 1 grünes Dauerlicht rechts
  • 1 rotes Dauerlicht links

Damit die Beleuchtung gut wirkt, darf sie nicht zu dunkel ausfallen. Auch, wenn das Modell tagsüber durch die Sonne fliegt, sollen die Lampen sichtbar sein. Ich empfehle daher high-power LEDs von 1 Watt Leistung. Diese gibt es in unterschiedlichen Größen bei den gängigen Versandhäusern für Elektronikteile. Das ist hinreichend Hell und zieht nicht zu viel Strom.
Ein weiterer wichtiger Punkt ist die richtige Blinkfrequenz. Hier kommen die Vorteile des Arduino Boards zum Tragen, da es per IDE in einer Java-artigen Programmiersprache programmiert werden kann und von der Hardware abstrahiert.

Für unser Beispiel müssen wir 6 LEDs ansteuern. Das Nano Board hat genügend Ausgänge. Davon können an den pins 3, 5, 6, 9, 10 und 11 auch analoge Signale ausgeben. Die analogen Signale werden noch nützlich, dazu später mehr. Jeder Ausgang kann mit einem max. Strom von 40mA belastet werden. Das reicht natürlich nicht, um LEDs mit einer Leistung von einem Watt zu betreiben. Abhilfe schafft ein Transistor Array Array, das zwischen Ausgang des Boards und LEDs plus Vorwiderstand geschaltet wird. Ich habe einen ULN 2003L verbaut. Dieser lässt sich direkt auf das Nano Board löten und kann sogar noch einen Landescheinwerfer ansteuern. Fertig aufgebaut, sieht die Schaltung in etwa so aus:

  • Ausgang 3: linkes konstantes grünes Licht
  • Ausgang 4: oberes Anti-Kollisionslicht (rot)
  • Ausgang 5: weißes Strobolicht an der Seite
  • Ausgang 6: rechtes konstantes rotesLicht
  • Ausgang 7: weißes Strobolicht an der Seite
  • Ausgang 8: unteres Anti-Kollisionslicht (rot)
  • Ausgang 2: optionale ein weißer Landescheinwerfer

 

Programmierung des Arduino Boards

Die Programmierung des Boards ist sehr komfortabel. Benötigt wird eine < a href="https://www.arduino.cc/en/Main/Software">die Arduino IDE. Diese ist nahezu selbsterklärend und sehr gut beschrieben. Nähere Informationen finden sich sehr gut auf der Arduino Webseite.

Ein fertiges Programm könnte wie folgt aussehen

int KONSTR=3;                        //linke Konstantlicht (grün)                                 
int ACL1 = 4;                           //oberes Anti Collision Light (ACL)
int Sl1 = 5;                              //linkes Strobe Light (SL)
int KONSTL=6;                        //rechte Konstantlicht  (grün)
int Sl2 = 7;                              //rechtes Strobe Light (SL),ok
int ACL2 = 8;                           //unteres Anti Collision Light (ACL),ok

int KONST_LIGHT_FADE=70;           
 
const int sequence = 1000;         
unsigned long time_passed = 0;     
unsigned long diff = 0;            

void setup() {
  pinMode(ACL1, OUTPUT);
  pinMode(ACL2, OUTPUT);
  pinMode(Sl1, OUTPUT);
  pinMode(Sl2, OUTPUT);
  pinMode(KONSTL,OUTPUT);
  pinMode(KONSTR,OUTPUT);
  analogWrite(KONSTL, KONST_LIGHT_FADE);
  analogWrite(KONSTR, KONST_LIGHT_FADE);
}

void loop() {
  
  diff = millis() - time_passed;   
  if (diff > sequence) {           
    time_passed = millis();        
  }
  
  if (diff < 50) {
    digitalWrite(Sl1, HIGH);
    digitalWrite(Sl2, HIGH);
  }
  else if (diff < 100) {
    digitalWrite(Sl1, LOW);
    digitalWrite(Sl2, LOW);
  }
  else if (diff < 150) {
    digitalWrite(Sl1, HIGH);
    digitalWrite(Sl2, HIGH);
  }
  else if (diff < 200) {
    digitalWrite(Sl1, LOW);
    digitalWrite(Sl2, LOW);
  }
  else if (diff < 250){
    digitalWrite(ACL1,HIGH);
  }
  else if (diff < 450){
    digitalWrite(ACL1,LOW);
  }
  else if (diff < 600) {}
  else if (diff < 750) {
    digitalWrite(ACL2, HIGH);
  }
  else if (diff < 850) {
    digitalWrite(ACL2, LOW);
  }
}

Im Wesentlichen besteht es aus einer Endlosschleife, in der sich die verstrichene Zeit seit Programmstart gemerkt wird. Eine Blinksequenz dauert in diesem Beispiel 1000 Millisekunden. Anschließend wird innerhalb dieses Intervalls geprüft, welche blinkende LEDs angesteuert werden soll. Das Strobolicht ist beispielweise 50ms an, dann 50ms aus, dann ms aus, dann 50ms an, dann 800ms aus. Danach geht die Schleife von vorne aus. Die Anticollision-Lights funktionieren entsprechend.

Eine kleine Besonderheit ist in diesem Fall bei dem roten und grünen Dauerlichtern. Da ich in der Heckflose meines EC 135 sehr wenig Platz habe, sind dort die kleinsten 1W LEDs verbaut, die ich finden konnte. Bei einer Fläche von ca. 1mm² und einem Watt Leistung entsteht dort sehr viel Wärme. Platz für einen Kühlkörper, der eigentlich auf die LEDs drauf müsste, habe ich dort nicht. Abhilfe schafft es, wenn die LED eben nicht dauerhaft leuchtet, sondern es für das Auge nur so aussieht, die LED also sehr schnell blinkt. Erreicht wird das, indem ein analoges PWM Signal an dem Pin ausgegeben wird. Der Wert 70 führt im Prinzip dazu, dass die LED nur 30% der Zeit leuchtet. 70% kühlt sie wieder ab. Ich habe damit einen guten Kompromiss aus Intensität und Wärmeentwicklung erreicht. Auch bei Sonne, sind die Lampen sehr gut sichtbar.

Viel Spaß damit, Anregungen und Verbesserungen immer gerne!

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.