Licht ins Modell - Drehlicht

Die Idee

Drehlichter werden auf Fahrzeugen und Flugzeugen zur Gefahrensignalisation verwendet. Basierend auf dem Arduino-Board wollte ich ein Drehlicht entwickeln, dass einem Original annähernd nahekommt. Der Hauptunterschied zum Original liegt in der Erzeugung der Rotationsbewegung des Lichtes. Richtige Drehlichter haben eine zentrale Glühbirne um die ein Hohlspiegel rotiert. Beim Modell behilft man sich gerne, in dem man einige LEDs im Kreis anordnet und als eine Art Lauflicht ansteuert.

Bei dem hier vorgestellten Typ handelt es sich um ein Zweistrahldrehlicht, wo der Strahl auf zwei Seiten entgegengesetzt abgestrahlt wird. Inspiriert durch kommerzielle Produkte wurden folgende Eckdaten festgelegt:


Das Funktionsprinzip ist einfach. Die LEDs werden zeitlich versetzt linear von 0 auf 100% Helligkeit hochgefahren und in gleicher Weise wieder auf 0% abgesenkt. Während die eine LED seine Helligkeit verringert, steigert die nachfolgende LED die ihre. So entsteht der Eindruck, dass sich das Licht quasi nahtlos weiterbewegt. Einen wesentlichen Anteil am realistischen Eindruck haben Art und Anordnung der LEDs. Acht LEDs stehen im 45 Grad Winkel zueinander. LEDs mit einem Leuchtkegel von mehr als 45 Grad Öffnungswinkel sind besser geeignet als LEDs mit lediglich 20 Grad . Ein schmalerer Leuchtkegel wird in weiterer Entfernung unbeleuchtete Bereiche zurücklassen und somit den Effekt unterbrechen. Am besten sind kleine PowerLEDs wie die Luxeon Rebel mit deren kugelförmigen Abstrahlcharakteristik. Für diese Leistung muss aber zwingend noch eine Leistungsstufe vorgeschalten werden. Kühlung unbedingt beachten.


Software

Für die PWM der LEDs wird aktuell ein Timerinterrupt mit 0.5ms Intervall verwendet. Ein Zähler startet mit 0 und wird mit jedem Interrupt um Eins erhöht. Ist der Zähler kleiner als die geforderte LED-Helligkeit (LEDxDutyCycle) wird die LED eingeschalten. Überschreitet der Zähler beim nächsten Interrupt diesen Wert, erlöscht die LED. Erreicht der Zähler das programmierte Maximum (20), wird der Zähler auf Null gesetzt und ein PWM-Zyklus startet von neuem.

Der Plan, die Helligkeit in 1% Schritten zu steuern scheiterte wegen Timingproblemen. Die Programmlänge der Interruptroutine ergibt sich konkret aus der Anzahl separat angesteuerter LEDs und den Plausibilitätschecks. Dauert die Verarbeitung zu lange, unterbricht sie das freilaufende Hauptprogramm immer mehr und führt damit zu Störungen. Da die Interruptroutine auch das Timing des Hauptprogramm steuert, sind zudem Interferrenzen aufgetreten. Als ersten Schritt habe ich die Anzahl der Helligkeitsstufen auf zwanzig reduziert. Das sollte für einen optisch weichen Helligkeitsverlauf noch ausreichen. Im Gegenzug konnte der Intervall der Interruptroutine ebenso um den Faktor fünf verlängert werden, Die Störungen im Hauptprogramm sind damit behoben. Diese Software lässt sich auch sehr gut in reinem Assembler programmieren.

Hardware

Weil die Hardware so einfach ist, habe ich kein Schema hinzugefügt. Es genügen vier normale I/O-Ausgänge eines ATMEL Prozessors. Je I/O Port werden die zwei, sich gegenüberliegenden LEDs angeschlossen. Ob in Serie oder parallel spielt keine grosse Rolle. Meine Ansteuerung arbeitet mit positiver Logik. Alle LEDs werden auf der Kathode zusammengefasst und mit einem 100 Ohm Widerstand gegen Masse geschalten. Ist zwar Quick&Dirty, aber ausreichend fürs Prinzip.

Natürlich sind im Bascom Programm die entsprechenden I/O Ports Euren Erfordernissen anzupassen. Auch sollte der Timer passend eingestellt werden.

Videos

Drehlicht: langsam / schnell

Â