Nicht adressierbarer RGB-LED-Streifen-Audiovisualisierer - Gunook
Nicht adressierbarer RGB-LED-Streifen-Audiovisualisierer - Gunook
Anonim
Image
Image

Ich habe seit einiger Zeit einen 12-V-RGB-LED-Streifen um meinen TV-Schrank herum und er wird von einem langweiligen LED-Treiber gesteuert, mit dem ich eine von 16 vorprogrammierten Farben auswählen kann!

Ich höre viel Musik, das motiviert mich, aber das Licht macht einfach nicht die richtige Stimmung. Um das zu beheben, habe ich beschlossen, das Audiosignal, das an meinen Lautsprecher über AUX (3,5-mm-Klinke) gesendet wurde, zu verarbeiten und den RGB-Streifen entsprechend zu steuern.

Die LEDs reagieren auf die Musik basierend auf der Größe von Bass (Low), Treble (Mid) und High.

Der Frequenzbereich – Farbe ist wie folgt:

Niedrig – Rot

Mittel – Grün

Hoch – Blau

Dieses Projekt beinhaltet eine Menge DIY-Zeug, da die gesamte Schaltung von Grund auf neu gebaut wurde. Dies sollte ziemlich einfach sein, wenn Sie es auf einem Steckbrett einrichten, aber ziemlich schwierig, es auf eine Platine zu löten.

Lieferungen

(x1) RGB-LED-Streifen

(x1) Arduino Uno/Nano (Mega wird empfohlen)

(x1) TL072 oder TL082 (TL081/TL071 sind auch in Ordnung)

(x3) TIP120 NPN-Transistor (TIP121, TIP122 oder N-Kanal-MOSFETs wie IRF540, IRF 530 sind auch in Ordnung)

(x1) 10kOhm Potentiometer linear

(x3) 100kOhm 1/4 Watt Widerstände

(x1) 10uF Elektrolytkondensator

(x1) 47nF Keramikkondensator

(x2) 3,5-mm-Audioanschluss – weiblich

(x2) 9V Batterie

(x2) 9-V-Batterie-Schnappverbindung

Schritt 1: Die Arten von RGB-LED-Streifen verstehen

Die Arten von RGB-LED-Streifen verstehen
Die Arten von RGB-LED-Streifen verstehen

Es gibt zwei grundlegende Arten von LED-Streifen, die "analoge" Art und die "digitale" Art.

Bei analogen Streifen (Abb. 1) sind alle LEDs parallel geschaltet und wirken so wie eine riesige dreifarbige LED; Sie können den gesamten Streifen auf jede gewünschte Farbe einstellen, aber Sie können die Farben der einzelnen LEDs nicht steuern. Sie sind sehr einfach zu bedienen und relativ günstig.

Die Streifen vom Typ Digital (Abb. 2) funktionieren auf andere Weise. Sie haben einen Chip für jede LED, um den Streifen zu verwenden, müssen Sie digital codierte Daten an die Chips senden. Dies bedeutet jedoch, dass Sie jede LED einzeln ansteuern können! Aufgrund der zusätzlichen Komplexität des Chips sind sie teurer.

Wenn Sie Schwierigkeiten haben, die Unterschiede zwischen den analogen und digitalen Streifen physisch zu erkennen,

  1. Analog-Typ verwendet 4 Pins, 1 gemeinsames Plus und 3 Minus, d.h. einen für jede RGB-Farbe.
  2. Digital-Typ verwenden 3 Pins, Plus, Daten und Masse.

Ich werde die analogen Streifen verwenden, weil

  1. Es gibt sehr wenige bis keine Instructables, die lehren, wie man einen musikreaktiven analogen Streifen macht. Die meisten von ihnen konzentrieren sich auf den digitalen Typ und es ist einfacher, sie dazu zu bringen, auf Musik zu reagieren.
  2. Ich hatte einige analoge Streifen herumliegen.

Schritt 2: Verstärken des Audiosignals

Verstärken des Audiosignals
Verstärken des Audiosignals
Verstärken des Audiosignals
Verstärken des Audiosignals
Verstärken des Audiosignals
Verstärken des Audiosignals

Das Audiosignal, das über die Audiobuchse ausgegeben wird, ist

ein analoges Signal, das innerhalb von +200mV und -200mV schwingt. Dies ist nun ein Problem, da wir das Audiosignal mit einem der analogen Eingänge von Arduino messen möchten, da die analogen Eingänge des Arduino nur Spannungen zwischen 0 und 5 V messen können. Wenn wir versuchten, die negativen Spannungen im Audiosignal zu messen, würde der Arduino nur 0 V lesen und wir würden am Ende den unteren Teil des Signals abschneiden.

Um es zu lösen, müssen wir die Audiosignale verstärken und versetzen, so dass sie in einen Bereich von 0-5V fallen. Idealerweise sollte das Signal eine Amplitude von 2,5 V haben, die um 2,5 V schwingt, so dass seine minimale Spannung 0 V und seine maximale Spannung 5 V beträgt.

Verstärkung

Der Verstärker ist der erste Schritt in der Schaltung, er erhöht die Amplitude des Signals von etwa + oder - 200 mV auf + oder - 2,5 V (idealerweise). Die andere Funktion des Verstärkers besteht darin, die Audioquelle (das Ding, das das Audiosignal in erster Linie erzeugt) vor dem Rest der Schaltung zu schützen. Das ausgehende verstärkte Signal bezieht seinen gesamten Strom vom Verstärker, sodass jede später in der Schaltung auf ihn wirkende Last von der Audioquelle (in meinem Fall das Telefon / iPod / Laptop) nicht "gefühlt" wird. Tun Sie dies, indem Sie einen der Operationsverstärker im TL072- oder TL082-Paket (Abb. 2) in einer nicht invertierenden Verstärkerkonfiguration einrichten.

Das Datenblatt des TL072 oder TL082 sagt, dass es mit +15 und -15V betrieben werden sollte, aber da das Signal nie über + oder -2,5V verstärkt wird, ist es in Ordnung, den Operationsverstärker mit etwas niedrigerem zu betreiben. Ich habe zwei in Reihe geschaltete Neun-Volt-Batterien verwendet, um eine + oder - 9-V-Stromversorgung zu erzeugen.

Verdrahten Sie +V (Pin 8) und –V (Pin 4) mit dem Operationsverstärker. Verdrahten Sie das Signal von der Monobuchse zum nicht invertierenden Eingang (Pin 3) und verbinden Sie den Massestift der Buchse mit der 0V-Referenz Ihrer Spannungsversorgung (bei mir war dies die Verbindung zwischen den beiden 9V-Batterien in Reihe). Verdrahten Sie einen 100kOhm-Widerstand zwischen dem Ausgang (Pin 1) und dem invertierenden Eingang (Pin 2) des Operationsverstärkers. In dieser Schaltung habe ich ein 10kOhm-Potentiometer verwendet, das als variabler Widerstand verdrahtet ist, um die Verstärkung (den Betrag, den der Verstärker verstärkt) meines nicht invertierenden Verstärkers einzustellen. Verdrahten Sie diesen 10K-Linear-Taper-Poti zwischen dem invertierenden Eingang und der 0V-Referenz.

DC-Offset

Die DC-Offset-Schaltung besteht aus zwei Hauptkomponenten: einem Spannungsteiler und einem Kondensator. Der Spannungsteiler besteht aus zwei 100k-Widerständen, die in Reihe von der 5V-Versorgung des Arduino gegen Masse geschaltet sind. Da die Widerstände den gleichen Widerstandswert haben, beträgt die Spannung an der Verbindungsstelle zwischen ihnen 2,5 V. Dieser 2,5-V-Übergang ist über einen 10uF-Kondensator mit dem Ausgang des Verstärkers verbunden. Wenn die Spannung auf der Verstärkerseite des Kondensators ansteigt und abfällt, bewirkt dies, dass sich die Ladung kurzzeitig ansammelt und von der Seite des Kondensators, die mit dem 2,5-V-Übergang verbunden ist, abgestoßen wird. Dies führt dazu, dass die Spannung am 2,5-V-Übergang nach oben und unten schwingt, zentriert um 2,5 V.

Verbinden Sie wie im Schaltplan gezeigt die negative Leitung eines 10uF-Kondensators mit dem Ausgang des Verstärkers. Verbinden Sie die andere Seite der Kappe mit der Verbindung zwischen zwei 100k-Widerständen, die zwischen 5V und Masse in Reihe geschaltet sind. Fügen Sie außerdem einen 47nF-Kondensator von 2,5 V zu Masse hinzu.

Schritt 3: Zerlegen des Signals in eine Summe stationärer Sinusoide - Theorie

Zerlegen des Signals in eine Summe stationärer Sinusoide - Theorie
Zerlegen des Signals in eine Summe stationärer Sinusoide - Theorie

Das Audiosignal, das über eine beliebige 3,5-mm-Buchse gesendet wird, befindet sich im

Bereich von 20 Hz bis 20 kHz. Es wird mit 44,1 kHz abgetastet und jeder Abtastwert wird auf 16 Bit codiert.

Um die elementaren Grundfrequenzen, aus denen das Audiosignal besteht, zu zerlegen, wenden wir die Fourier-Transformation auf das Signal an, die das Signal in eine Summe stationärer Sinuskurven zerlegt. Mit anderen Worten, die Fourier-Analyse wandelt ein Signal aus seinem ursprünglichen Bereich (oft Zeit oder Raum) in eine Darstellung im Frequenzbereich um und umgekehrt. Die direkte Berechnung aus der Definition ist jedoch oft zu langsam, um praktikabel zu sein.

Die Abbildungen zeigen, wie das Signal im Zeit- und Frequenzbereich aussieht.

Hier ist der Fast Fourier Transform (FFT)-Algorithmus ziemlich nützlich!

Per Definition, Eine FFT berechnet solche Transformationen schnell durch Faktorisieren der DFT-Matrix in ein Produkt von wenigen (meist null) Faktoren. Als Ergebnis gelingt es, die Komplexität der Berechnung der DFT von O(N2), die entsteht, wenn man einfach die Definition von DFT anwendet, auf O(N log N) zu reduzieren, wobei N die Datengröße ist. Der Geschwindigkeitsunterschied kann enorm sein, insbesondere bei langen Datensätzen, bei denen N in die Tausende oder Millionen gehen kann. Bei Vorliegen von Rundungsfehlern sind viele FFT-Algorithmen viel genauer als die direkte oder indirekte Auswertung der DFT-Definition.

Einfach ausgedrückt bedeutet dies nur, dass der FFT-Algorithmus ein schnellerer Weg ist, um die Fourier-Transformation eines beliebigen Signals zu berechnen. Dies wird in der Regel bei Geräten mit geringer Rechenleistung verwendet.