Lightcontroller, 3-Kanal Lichtorgel und Beat Lichtwechsel mit 8051

Schemas und Bauanleitungen Für Lichtorgeln gibt es zuhauf, wie z.B. dieses Projekt mit dem Arduino. Spannend ist die Ausgangslage, alles in Software in einen 8051 zu implementieren. Um das Audiosignal direkt von einem Kopfhörerausgang oder via Vorverstärker von einem Mikrofon zu verwenden, braucht es aber schon ein bisschen Rechenpower, insbesondere da ja hohe Frequenzen eine andere Lampe ansteuern sollen als tiefe Frequenzen. Hohe Frequenzen sind etwa Becken vom Schlagzeug oder ein Rassel Tamburin. Diese enthalten Frequenzen von 5kHz und höher. Damit nun eine Lampe auf solche Frequenzen reagiert, muss die Abtastrate des A/D Wandlers mindestens doppelt so gross sein, also 10kHz betragen. Und je nach verwendeter Filtertechnik, auch schon mal 20kHz oder mehr. Die CD Abtastrate ist ja nicht umsonst auf 44kSPS festgelegt worden (SPS=Samples per Second, Messungen pro Sekunde).

Hardware

Ausgesucht wurde ein Mikrocontroller von Silicon Labs aus der 8-Bit Universal Bee Serie, in diesem Fall der EFM8UB20F32GA im QFP-48. Dieser hat alles nötige integriert und läuft mit dem internen 48MHz Oszillator mit 48MIPS. Etwas einfacher zum Löten wäre einer im QFP-32 Gehäuse. In diesem Fall war aber entsprechendes Prototypenmaterial vorhanden. Verwendet man Simplicity Studio von der Silicon Laboratories Webseite, kann man das relativ einfach mit dem Konfigurator einstellen.

Die Hardware soll möglichst einfach sein. Verwendet wurde deshalb ein 74HCT14 um die 3.3V Signale des Mikros auf 5V zu heben und zu invertieren. Damit kann man dann direkt einen Power-MOSFET ansteuern, welcher die Lampen steuert. Man muss nicht unbedingt den 30N06 nehmen. Wichtig ist, dass die Gate-Threshold Spannung unter 4.5V liegt, damit er vom 74HCT14 gesättigt wird. Die Lampen sind farbige 2-Watt 12V LEDs, 6 Stück parallel = 12W pro Kanal. Die 3 Kanäle sind Rot für tiefe Frequenzen, Grün für mittlere Frequenzen und Blau für hohe Frequenzen.

Der Lightcontroller hat verschiedene Modi: 3-Kanal Lichtorgel, Beat-Lichtwechsel, Stroboskop und wenn keine Musik läuft ist es ein  langsamer Farbstimmungswechsel.

Man kann die Hardware auch auf 6 Lampen erweitern z.B. 3 für die Lichtorgel und 3 für den Beat-Lichtwechsel. Der hier vorgestellte Prototyp hat aber nur 3 Lampen und ein Modus-Schalter. Der Freak wird hier bestimmt seine Fantasie walten lassen und vielleicht nebst der 3-Kanal Lichtorgel auf einen 6-Kanal Beat-Lichtwechsel erweitern oder auch andere Funktionen implementieren wie Lauflicht, Farb-Stimmungswechsel, Stroboskop usw. Sie ultimative Idee wäre anhand der Amplitudenänderungen der 3 Kanäle auf die Art der Musik zu schliessen und entsprechende Modi automatisch zu wählen.

Prototyp

Ein paar Bilder vom Prototyp




Software Konfiguration

Entwickelt wurde der Prototyp mit Simplicity Studio von der Silabs.com Webseite.

Die Ausgänge für die Lampen der Lichtorgel sind konfiguriert als Push-Pull mit 8-Bit ~1kHz PWM, der PCA Clock beträgt 250kHz. Für den Beat-Lichtwechsel bräuchte es nicht unbedingt PWM Ausgänge, es gibt sowieso nur insgesamt 5 PWM Ausgänge.

Die Referenzspannung ist auf 1.2V eingestellt. Somit kann das Signal 1.2Vpp betragen, oder abgekoppelt +/- 600mVDC bzw. 420mVeff.

Der A/D Wandler triggert mit Timer 1 mit einer Frequenz von 43.96kHz (4MHz/91). Dies ermöglicht einen sauberen Filter für die hohen Töne. Der SAR Clock ist auf 4MHz eingestellt um eine genügend schnelle Wandlung zu erhalten.

Der Oszillator ist auf 48MHz eingestellt.

Software Blockdiagramm

Eine Übersicht der Signale und Komponenten in der Software:

Der Fifo wird benötigt da die Software nicht alles 44000 mal pro Sekunde rechnen kann. Der 2. filter läuft nur mit 7333 SPS (1/6 von 44k) und die meisten anderen Komponenten sogar nur mit 100 SPS. Diese benötigen aber länger als 1/44000 Sekunden und so stauen sich manchmal ein paar A/D Samples im Fifo, welche danach abgearbeitet werden. Dies garantiert dass alle Samples durch den Filter laufen und auch die Filtergüte entsprechend garantieren.

Die Level Messungen sind im Prinzip einfache Peak-Werte z.B. if(HighLevel < HighPass) HighLevel = HighPass;. Danach werden sie innerhalb von 100ms auf 0 reduziert mit: if(HighLevel > 0) HighLevel--;. Die Intervallzeit ist demnach 100ms / 256 = 0.39ms. Die Level benötigen auch einen Offset so dass sie Lampen nicht schon vom Rauschen leuchten sondern relativ hart erst ab einem bestimmten Level einschalten. So ist der optische Effekt besser. Ausserdem gibt es einen fixen Multiplikator vor jeder Level Messung da die unterschiedlichen Frequenzen unterschiedliche Amplituden aufweisen.

Vom Low-Level Signal wird auch der Eingangspegel angepasst so dass insbesondere das Signal für den Beat optimal ist.

Der Beat-Filter ist nochmal ein Tiefpass mit einer Grenzfrequenz von 3.5Hz. Danach wird aus dem Differenzialsignal der Nulldurchgang getriggert, allerdings mit einer Hysterese so dass es nicht mehrere gleichzeitige Wechsel gibt. Ein Sequenzer generiert dann mit den RGB-Lampen verschiedene Farben.

Software Audio Filter Technik

Die verwendete Software-Filtertechnik ist in einem separaten Dokument beschrieben.

Software Source Code

Geplant ist, den Light-Controller in den Raspberry-PI Pico zu implementieren und dann den Software Source Code mit zu veröffentlichen.

Lichtorgel Demo Video

Wird das Video online abgespielt, kann es sein, dass Bild und Ton zeitlich nicht genau passen. Am Besten das Video nach ca. 10 Sekunden vom Anfang an neu abspielen ohne den Player zu schliessen. So sind die Daten im Cache und werden flüssig abgespielt.

Für die Lichtorgel eignen sich Musikstücke, welche deutliche Hoch-, Mittel- und Tiefton-Rhythmen enthalten. Ausgesucht wurde Higher Love von Steve Winwood. Die flackernden LEDs zu filmen ist nicht einfach da die Kamera geblendet wird. Deshalb liegt das Gerät und beleuchtet indirekt die Rückwand.

Beat-Lichtwechsel Demo

Für den Beat-Lichtwechsel eignet sich am Besten Musik im Disco-Stil. Diese hat meist einen deutlichen Takt, welcher mit einer Bass-Drum regelmässig ertönt. Ausgesucht wurde Dopamine von Purple Disco Machine.

Es funktioniert aber auch mit anderer Musik wie hier nochmal Steve Winwood. Das Licht wechselt dann auch mal zwischen dem Takt, oder bleibt mal stehen. Dieses "Stolpern" hat durchaus auch seinen Reiz da es ja auch im Takt ist.

© 2022-2024 by Stefan Ludescher