Kleine Projekte: Beleuchtung für Modell-Helikopter


Menübild

Letzte Bearbeitung: 26.07.2020

SymbolDownloads und Links
Schaltplan
Stückliste mit Empfehlungen zur Bauteilbestellung
Software für ATtiny13 mit Quelltext in Assembler vom 03.06.2008licht-v100.zip
Platinenlayout (Sprint-Layout 4.0 und GIF) vom 17.05.2008licht-layout1.zip
Platinenlayout mit Treiber-Transistoren (Eagle) vom 26.07.2020licht-layout2.zip
SymbolInhaltsverzeichnis
BeschreibungAllgemeine Informationen über die Beleuchtung
SchaltungBeschreibung der Schaltung der Beleuchtung
HardwareBilder und Hinweise zum Aufbau der Beleuchtung
SoftwareBeschreibung der Software der Beleuchtung
InbetriebnahmeInbetriebnahme der Beleuchtung
SymbolBeschreibung

Besonders bei Einsteigern sind Koaxial-Helikopter sehr beliebt. Sie bieten sogar einige Möglichkeiten für Erweiterungen, auch wenn die Bordelektronik auf den ersten Blick gar nicht so aussieht. Viele dieser 4-Kanal-Helikopter lassen sich mit einem 5. Kanal ausrüsten oder sind bereits damit ausgestattet. Dieses Projekt nutzt den zusätzlichen Kanal zur Steuerung einer Beleuchtung mit insgesamt 6 LEDs: grünes Positionslicht rechts, rotes Positionslicht links, weißes Positionslicht hinten, 2 blaue Blitzlichter und eine weiße 5mm-LED als Front-Scheinwerfer. Falls ein Proportional-Kanal zur Verfügung steht, dann lässt sich die Beleuchtung mit dem Poti am Sender in 3 Stufen aktivieren. Dabei wird zunächst das Positionslicht eingeschaltet, dann kommen die Blitzlichter hinzu und zum Schluss der Front-Scheinwerfer. Bei einem Schaltkanal kann die Beleuchtung nur komplett ein- oder ausgeschaltet werden. Auch ohne Steuerkanal ist die Beleuchtung nutzbar: Wird der Kanal-Eingang offen gelassen, dann schaltet sich die Beleuchtung ständig ein.

SymbolSchaltung

Schaltung

Die Schaltung ist sehr einfach aufgebaut und schnell erklärt: Über den Anschluss K1 wird die Schaltung an einen freien Empfänger-Ausgang (z.B. den oben erwähnten Kanal 5) angeschlossen. Vom Empfänger kommt neben dem Impulssignal auch die Spannung für unsere Schaltung. Das Impulssignal hat je nach Poti- oder Schalter-Stellung im Sender eine Breite zwischen 1ms und 2ms und wird zyklisch alle 20-22ms wiederholt. Dieses Signal wird an den Controller-Anschluss PB3 geführt und von der Software ausgewertet. Abhängig von der Impulsbreite werden dann die LED-Ausgänge PB0, PB1, PB2 und PB4 auf Low-Pegel gesetzt und die LEDs entsprechend eingeschaltet. Die Ausgänge PB0 und PB1 können mit 20mA belastet werden, deshalb habe ich die 3 Positionslichter, welche zusammen etwa 20mA benötigen und den Front-Scheinwerfer mit ebenfalls 20mA an diese Ausgänge geschaltet. Die Ausgänge PB2 und PB4 sind nur für 10mA ausgelegt und hier sind die beiden Blitzlichter angeschlossen.

Die LED-Vorwiderstände wurden für eine Betriebsspannung von +5V bemessen. Mit dieser Spannung arbeitet der Empfänger meines Koaxial-Helikopter-Modells und man kann davon ausgehen, dass dies auch für andere Modelle zutrifft. Ich habe die Widerstandswerte zunächst berechnet und dann durch Messung des LED-Stroms die Werte optimiert. Ich empfehle bei Verwendung anderer LEDs die gleiche Vorgehensweise bei der Ermittlung der richtigen Widerstandswerte. Bei der Berechnung sollte man berücksichtigen, dass nur ca. 4,5V zur Verfügung stehen. Das liegt daran, dass die Controller-Ausgänge bei voller Belastung nicht ganz nach Masse durchschalten und ca. 0,5V „verloren gehen“.

Wie bereits erwähnt, lässt sich die Beleuchtung in 3 Stufen einschalten. Diese sind in der folgenden Tabelle definiert:

Reglerstellung am SenderImpulsbreiteLichteffekt
-100% bis -50%1,0ms bis 1,25msalle Lichter sind ausgeschaltet
-50% bis 0%1,25ms bis 1,5msdie Positionslichter sind eingeschaltet
0% bis +50%1,5ms bis 1,75msdie Blitzlichter sind zusätzlich eingeschaltet
+50% bis +100%1,75ms bis 2,0msder Front-Scheinwerfer ist zusätzlich eingeschaltet

Die Tabelle zeigt die vorgegebene Einstellung. Diese kann durch Änderungen im Quelltext an die eigenen Bedürfnisse angepasst werden. Mehr Informationen sind im Abschnitt Inbetriebnahme zu finden.

Der gestrichelt eingezeichnete Anschluss K2 wird nur einmal zur Programmierung des Controllers benötigt. Damit die Programmierung reibungslos klappt, sollten keine LEDs angeschlossen sein. Es empfiehlt sich, den Controller in einem Programmiergerät oder in einer anderen Schaltung wie z.B. dem Servo-Tester zu programmieren und dann in die Schaltung direkt einzulöten. Das spart Platz und Gewicht, außerdem entfällt das Anlöten des provisorischen Programmieranschlusses.

Diese Stückliste enthält alle Bauteile für die Beleuchtung.

SymbolHardware

Für die Helikopter-Beleuchtung gibt es ein Platinenlayout, welches von Dietmar Heyer entwickelt und bereitgestellt wurde. Dieses Paket enthält das Layout als Sprint-Layout-Datei, außerdem noch das fertige Layout und den Bestückungsplan als GIF-Datei. Ein weiteres Platinenlayout wurde von Bernd Barofzky entwickelt und steht im Eagle-Format zur Verfügung. Hier wurden zusätzliche Treibertransistoren verwendet und die gesamte Schaltung mit SMD-Bauteilen realisiert.

Beleuchtung Bild 1 Dieses Bild zeigt die fertige Schaltung, welche auf einer Lochraster-Platine mit den Maßen 26mm x 15mm aufgebaut wurde. Die Platine enthält den Controller mit dem obligatorischen 100nF Kondensator und alle LED-Vorwiderstände. Oben wurde ein Servokabel angelötet, dessen Stecker später mit dem Empfänger verbunden wird. Auf der rechten Seite befinden sich die Anschlüsse für die 6 LEDs.

Beleuchtung Bild 2 So sieht die Leiterseite der Platine aus. In die freien Lötpunkte auf der rechten Seite werden später die Leitungen zu den 6 LEDs eingelötet - die rechte Reihe ist für die Anoden vorgesehen und die linke Reihe für die Kathoden. Falls man die LED-Leitungen steckbar haben möchte, dann kann man eine 6x2 Stiftleiste einlöten und die Leitungen mit entsprechenden Buchsenleisten versehen.

Für die LED-Leitungen habe ich 0,2mm Kupferlackdraht verwendet. Dieser lässt sich gut im Rumpf des Modells verlegen und ist leichter als isolierter Draht. Vor dem Einbau der LEDs wurden die Anschlüsse auf ca. 5mm gekürzt und zwei entsprechend lange Drahtstücke angelötet. Durch Festhalten der Drahtenden und Drehen der LED wird das Drahtpaar anschließend verdrillt. Danach können die LEDs in entsprechende Löcher im Rumpf gesteckt und mit Zweikomponentenkleber befestigt werden. Nach Aushärten des Klebers werden die Drähte auf die richtige Länge gebracht und an die Platine gelötet (vorher Polarität prüfen). Zum Abschluss sollten alle Drähte und die Platine mit etwas Klebeband fixiert werden.

Beleuchtung Bild 3 Dieses Bild zeigt, wo man die LEDs am Modell anbringen kann. Die Beleuchtung ist nicht unbedingt vorbildgetreu, sieht aber gut aus :-)

Bei dem hier abgebildeten E-Sky Lama 4 kann man übrigens die komplette Schaltung inklusive aller LEDs im hinteren Rumpfteil unterbringen. So lässt sich das Heckteil auch weiterhin problemlos entfernen - nur das Servokabel muss von der Elektronik-Einheit abgezogen werden.

SymbolSoftware

Die aktuelle Software v1.00 vom 03.06.2008 für den ATtiny13 enthält den kommentierten Quelltext und das fertige Hex-File. Bei der Programmierung sind unbedingt die Fuse-Bits zu beachten. Diese müssen folgendermaßen gesetzt werden:

Fuse-Bits 1 So sieht die Einstellung im AVR-Studio für den ATtiny13 der Helikopter-Beleuchtung aus.

Fuse-Bits 2 So sieht die Einstellung in PonyProg für den ATtiny13 der Helikopter-Beleuchtung aus.

Das Programm funktioniert folgendermaßen: Beim Einschalten werden zunächst die I/O-Ports, der Timer und 2 Interrupts aktiviert. Der Timer wird so eingestellt, dass er ca. alle 6,67µs zählt. Da es sich hier um einen 8-Bit-Timer handelt, wird er nach 256 Zählimpulsen (also nach ca. 1,707ms) überlaufen und wieder bei 0 beginnen. Das reicht leider nicht aus, um die Fernsteuerimpulse von bis zu 2ms Länge auszuwerten, deshalb wird bei jedem Überlauf ein Interrupt ausgelöst und dann ein Register des Controllers um 1 erhöht. Somit erweitert sich der Zählbereich auf 16 Bit. Außerdem wird bei jedem Interrupt noch geprüft, ob mindestens 18 Überläufe stattgefunden haben (entspricht einer Zeit von ca. 30,7ms). In diesem speziellen Fall wird davon ausgegangen, dass der Impuls-Eingang dauerhaft auf High-Potential liegt, also gar keine Impulse anliegen und alle Lichteffekte werden eingeschaltet.

Ein weiterer Interrupt reagiert auf Pegeländerungen am Eingang PB3 und wird bei jeder Impulsflanke am diesem Eingang ausgelöst. Wird an PB3 ein Impuls-Beginn, also ein Wechsel von Low auf High erkannt, dann löscht die Interrupt-Routine den Zählerstand des Timers und startet den Timer neu. Bei einem Impuls-Ende, also dem Wechsel von High auf Low, wird erneut ein Interrupt ausgelöst. In diesem Fall stoppt die Interrupt-Routine den Timer und holt den aktuellen Zählerstand. Dieser wird nun mit 3 Schwellwerten verglichen, die den 3 Beleuchtungsstufen entsprechen. Abhängig davon, ob der jeweilige Schwellwert überschritten wurde, werden 3 Bits in einem Register gesetzt. Das Hauptprogramm wiederum prüft ständig diese 3 Bits und steuert letztendlich davon abhängig die LEDs.

Die Ausgänge PB0 und PB1 für die Positionslichter und das Frontlicht werden bei eingeschaltetem Lichteffekt immer statisch aktiviert, die LEDs leuchten also dauerhaft. Die Ausgänge PB2 und PB4 für die Blitzlichter werden mit Impulsen geschaltet, die ungefähr so aussehen:

Blitz 1Blitzlicht 1
Blitz 2Blitzlicht 2

Zunächst erscheinen 5 Lichtblitze vom Blitzlicht 1, welche eine Dauer von 600ms haben, danach kommt eine Pause von 800ms. Anschließend wird das Blitzlicht 2 mit den gleichen Zeiten aktiv und der gesamte Vorgang beginnt von vorn. Insgesamt dauert ein kompletter Zyklus ungefähr 2,8s.

SymbolInbetriebnahme

Zunächst ist es erforderlich, die Fuse-Bits im Controller richtig zu setzen und die Software muss programmiert werden, wobei das fertig assemblierte Hex-File dafür verwendet werden kann. Falls ein Programmiergerät zur Verfügung steht, dann empfehle ich dieses. Zur Not kann man den Servotester als Programmiergerät verwenden. Ansonsten kann die Programmierung direkt in der Schaltung erfolgen, wobei der im Schaltplan gestrichelt eingezeichnete ISP-Anschluss K2 angelötet werden muss. Wichtig ist in diesem Fall, dass keine LEDs an den Controller-Ports PB0, PB1 und PB2 angeschlossen sein dürfen, da sonst der Programmiervorgang gestört werden kann. Als Stromversorgung während der Programmierung kann man einen freien Empfängerausgang oder eine beliebige Spannungsquelle mit +5V verwenden.

Wenn man mit den voreingestellten 3 Stufen zufrieden ist (siehe Tabelle weiter oben) oder wenn nur ein Schaltkanal zur Verfügung steht, dann kann die Schaltung mit dem fertigen Hex-File programmiert und in Betrieb genommen werden. Falls man die Beleuchtung in einer anderen Reihenfolge aktivieren oder die Schaltschwellen verschieben möchte, dann ist eine Änderung im Quelltext und eine anschließende Assemblierung erforderlich. Dafür wird das AVR-Studio benötigt und es muss ein neues Projekt mit der Datei HeliLicht.asm angelegt werden. Folgende Stelle im Quelltext ist wichtig:
; Folgende 3 Beleuchtungseffekte können einzeln aktiviert werden:
;
; Effekt 1 - Positionslichter - 3 LEDs (links/rechts/hinten)
; Effekt 2 - Blitzlichter - 2 LEDs
; Effekt 3 - Scheinwerfer - 1 LED
;
; Steht am Sender ein Poti für die Beleuchtung zur Verfügung, dann kann
; mit den folgenden 3 Werten die Poti-Stellung für jeden Effekt im
; Bereich von -100% bis +100% individuell festgelegt werden. -100% ent-
; spricht dem linken Anschlag, 0% entspricht der Mittelstellung und
; +100% entspricht dem rechten Anschlag:
;
.equ    effct1=        -50   ;Effekt 1 bei Stellung -50% aktivieren
.equ    effct2=        0     ;Effekt 2 bei Stellung 0% aktivieren
.equ    effct3=        50    ;Effekt 3 bei Stellung +50% aktivieren

Die Werte effct1, effct2 und effct3 müssen im Bereich von -100 bis +100 liegen. Bei positiven Werten darf kein + vorangestellt werden, da sonst die Assemblierung mit einer Fehlermeldung abgebrochen wird. Als Beispiel für die Anpassung an eigene Vorstellungen soll die folgende Tabelle dienen:

Reglerstellung am SenderLichteffekt
-100% bis -30%alle Lichter sind ausgeschaltet
-30% bis 0%die Blitzlichter sind eingeschaltet
0% bis +30%die Positionslichter sind zusätzlich eingeschaltet
+30% bis +100%der Front-Scheinwerfer ist zusätzlich eingeschaltet

Zur Realisierung müssen die 3 Werte wie folgt im Quelltext geändert werden:

.equ    effct1=        0     ;Effekt 1 bei Stellung 0% aktivieren
.equ    effct2=        -30   ;Effekt 2 bei Stellung -30% aktivieren
.equ    effct3=        30    ;Effekt 3 bei Stellung +30% aktivieren

Nach Änderung der Werte und erneuter Assemblierung kann das erzeugte Hex-File in den Controller programmiert werden.

Noch ein Hinweis: Der Controller wird durch einen internen kalibrierten Oszillator getaktet. Das bedeutet, dass die Taktfrequenz relativ genau ist, aber niemals die Genauigkeit eines Quarz-Oszillators erreicht. Es können sich also in der Praxis leichte Abweichungen von den programmierten Schwellwerten ergeben. Diese liegen allerdings in der Größenordnung von wenigen Prozent, so dass sie praktisch nicht auffallen.

Und noch ein Tipp: Zum Testen der fertig aufgebauten Schaltung kann man gut den hier vorgestellten Servotester verwenden. Auch kann dieser (wie schon erwähnt) als Programmiergerät für den Controller genutzt werden - sofern der Tester mit einer IC-Fassung und einem ISP-Anschluss aufgebaut wurde.