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).
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.
Ein paar Bilder vom Prototyp
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.
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.
Die verwendete Software-Filtertechnik ist in einem separaten Dokument beschrieben.
Geplant ist, den Light-Controller in den Raspberry-PI Pico
zu implementieren und dann den Software Source Code mit zu veröffentlichen.
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.
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