Hallo Forengemeinde, Hier ein kleines Arduinoprojekt von mir. Eine Digitale 5-Kanal PWM Lichtorgel mit Digitaler Kanalbildung. Einfach mit einem Spannungsteiler am AO und Koppelkondensator ein Audiosignal einspeisen, und an den PWM Ausgängen die Kanäle abgreifen. Pin 13 zeigt an, wenn der Eingangs-Spannungsteiler korrekt auf null gestellt ist. Liebe Grüße Christof Rieger
Ich habe noch ein kleines Video gemacht :-) https://www.youtube.com/attribution_link?a=pvwgzk8ooCk&u=/watch%3Fv%3DiRKiKVRHoR0%26feature%3Dem-upload_owner
Sind Lichtorgeln wieder in Mode? Ich dachte, heute muss es gleich 3D-Videoprojekttion sein :-)
Danke für das Code Beispiel. Eine Lichtorgel wollte ich auch schon immer mal mit dem Arduino machen. Ich hätte dann aber keine FFT verwendet, sondern separate Bandpassfilter. Die FFT auf dem Atmega hat den Nachteil, dass sie nur kurze Signale verrechnen kann. Einen Bandpassfilter auf dem langsamen Prozessor könnte man schmalbandiger machen. Für die Lichtorgel sind denke ich nur die Bassfrequenzen relevant. Deshalb kann man die Abtastrate nach einem schnellen LP-Filter stark heruntersetzen. Damit würde dann auch die Rechengeschwindigkeit für die Bandpassfilter reichen.
@chris_ Hey coole Sache. Wo kann ich den voll funktionsfähigen Quellcode da für kostenlos herrunter laden. Ich hab das Ding desshalb programmiert, weil ich nichts kostenloses mit digitaler Kanaltrennung im Netz gefunden habe. Nur Lösungen bei denen die Kanaltrennung analog mit einem Bauteilgrab realisiert wurde und der Arduino lediglich die Umsetzung analog auf PWM machte, dass ehrlich gesagt dann auch mit ein paar Komperatoren machbar gewesen wäre.
Irgendwo hat hier im Forum schon mal jemand mit so was angefangen. Nur leider finde ich den Link gerade nicht. Aber ich bin noch auf eine andere FFT-Lichtorgel gestoßen: Beitrag "[C] AVR-Lichtorgel per FFT MEGA8 32 644"
Hallo ich beschäftige mich momentan mit dem Projekt "Lichtorgel". Ich möchte mit einer Steuerspannung von 0-5 Volt einen Dimmer ansteuern. Diesen gibt es schon. Nun habe ich den Code von Christof heruntergeladen und versucht den Dimmer mit den, über dieses Programm erzeugten, Steuerspannungen anzusteuern. Das hat auch einiger Maßen gut funktioniert... Jedoch reagiert die Lampe zum Teil nicht so schnell, wie eine LED es tun würde und der Effekt ist nicht so gut. Kann mir jemand helfen das Programm so umzuschreiben, dass es Dimmer bzw. Lampen freundlicher wird? Ich bräuchte auch nur 3 Kanäle: Bässe, Mitten und Höhen. Gruß Simon
@Simon B Ich verstehe zwar nicht, warum du dann eine digitale Lichtorgel nehmen möchtest, da wär doch eine klassische mit Thyristoren die sinnvollere Wahl. Aber versuch doch einfach ein RC-Glied an die Ausgänge zu schalten und dann auf den Dimmer gehen. Das sollte dann besser gehen. __ Arduino Pin >--| R |---o----> Dimmer in | === C | | Masse R und C müssen zu der Eingangsimpedanz des Dimmers passen. LG Christof
Hallo Christof Ich finde man ist mit einem Mikrocontroller flexibler... Der Tiefpass ist bereits vor die Dimmereingänge geschaltet. Kannst du mir sagen, wie ich deinen Code auf 3 Kanäle abändern kann (Höhen, Mitten und Bässe)? Kann man die Empfindlichkeit noch erhöhen? Also stärkere Auschläge bei schwächeren Pegeln? Danke erstmal für den Tip.:) Gruß Simon
@Simon B. Die Kanaltrennung läuft über 4 Kaskadierte 2n FFT. Es ist nicht möglich eine der Berechnungstufen zu entfernen, da die eine auf der folgenden aufbaut. Du kannst dich also nur für 3 von den 5 Kanälen entscheiden, sprich einfach 2 nicht anschließen. Das Programm enthält schon ein automatisches Gain controling. Wenn das System auf leise Passagen nicht reagiert, ist dein Eingangssignal zu schwach. Hast du vor den AO einen Spannungsteiler gesetzt und ihn so abgeglichen, das PIN 13 umschaltet. Wenn nicht, ist es klar, dass sie nicht gescheit funktioniert.
In diesen Codeteil kannst du auch noch etwas die Empfindlichkeit einstellen.
1 | //Je nach Spannungsteiler am Analogeingang kann hiermit die Referenzpannung eingestellt werden.
|
2 | //REFS1 REFS0 Voltage Reference Selection
|
3 | // 0 0 AREF, Internal Vref turned off
|
4 | // 0 1 AVCC with external capacitor at AREF pin
|
5 | // 1 0 Reserved
|
6 | // 1 1 Internal 1.1V Voltage Reference with external capacitor at AREF pin
|
7 | //ADC0 Ref 5V 8Bit in ADCH Eingang A0
|
8 | #define S_ADMUX 0<<REFS1 | 1<<REFS0 | 1<<ADLAR | 0 | 0<<MUX3 | 0<<MUX2 | 0<<MUX1 | 0<<MUX0
|
mit 11 auf REFS wird die Empfindlichkeit 4x höher.
Hallo Danke für deine schelle Antwort. Ich werde das mal probieren... Berichte dann wie es funktioniert. Ich benutze keinen einfachen Spannungsteiler, auf den das Signal über einen Kondensator gekoppelt wird. Sondern einen Addierer (weil 2 Signale: Links und Rechts) über den auch die 2,5 Volt Offset erzeugt werden. So wird das Signal dann auch noch leicht verstärkt. Gut für Geräte mit geringem Ausgangspegel:). Versorgt wird der OPV mit den 5V vom Arduino. Mal sehen wie es funktioniert. Ich wollte den Code auch noch erweitern. Entweder soll die FFT die Signale für die Dimmer erzeugen, oder ein Poti gibt die Aussteuerung vor. Dann werden alle Dimmer gleich angesteuert und man kann das Gerät auch noch als "normalen" Dimmer benutzen. Gruß Simon
@Simon B. Das könnte eng werden, wenn der OPV nur mit 5V versorgt wird. Welchen Typ willst du da verwenden ? Ein klassischer OPV mit Gegentaktendstufe kappt den maximal Vpp mindestens um 1,4V bezogen auf die Versorgungspannung. Das Signal wird dann nur von 0,7 bis 4,3 Volt reichen. Das mit dem Softwareumschalten sollte kein Problem sein. Setze einfach oben in die Berechnungsschleife eine Abfrage für einen freien PIN. Je nach Pegel läuft er in der Schleife weiter oder springt in dein Programm teil. LG Christof
Simon B. schrieb: > Ich finde man ist mit einem Mikrocontroller flexibler... > Der Tiefpass ist bereits vor die Dimmereingänge geschaltet. Kannst du > mir sagen, wie ich deinen Code auf 3 Kanäle abändern kann (Höhen, Mitten > und Bässe)? Kann man die Empfindlichkeit noch erhöhen? Also stärkere > Auschläge bei schwächeren Pegeln? > Danke erstmal für den Tip.:) > Gruß Simon Mal ein kleiner Tipp: Der Standard-Chip für Lichtorgel-Spielereien auf der Arduino-Plattform ist der MSGEQ7 Audio Analyzer Chip im DIP Gehäuse. Der Chip kann ein Audio-Stereosignal in 7 Frequenzbändern gleichzeitig analysieren, ist mit einem Arduino-Board leicht auslesbar, und viele Arduino-Bastler haben damit schon nette Sachen gemacht. Wenn Du mal was sehen möchtest, gehe zu Youtube und suche dort nach "MSGEQ7 Arduino"!
:
Bearbeitet durch User
Hi @Christof: Ja das stimmt, aber damit kann ich noch immer eine leichte Verstärkung erreichen. Zudem braucht der Controller ja nicht eine Spannung von 5Vpp :D. Ich verwende einen TLC272. @Jürgen: Habe ich mir angeguckt und würde es in Erwägung ziehen, wenn es so wie geplant nicht funktioniert. Dennoch interessant... Muss ja nicht mit dem einen Projekt aufhören.:) Hat eigentlich schon jemand von euch Erfahrung mit dem Auslesen von DMX gemacht? Würde mich mal sehr interessieren. Gruß Simon
DMX512 ist ein sehr einfaches Protokoll. Gib in die Forensuche einfach mal DMX ein. Ich glaube da wurde schon alles dikutiert. :-) LG Christof
Hallo, bei, mir funktioniert der Code nicht. Benutze einen Arduiono-Mega. Zum besseren verständniss des Codes,würde ich gerne wissen in welchem Teil der Analogeingan A0 eingelesen wird. Habe im Code nichts gefunden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.