Inhaltsverzeichnis:

Tanzender Brunnen: Arduino mit MSGEQ7 Spectrum Analyzer - Gunook
Tanzender Brunnen: Arduino mit MSGEQ7 Spectrum Analyzer - Gunook

Video: Tanzender Brunnen: Arduino mit MSGEQ7 Spectrum Analyzer - Gunook

Video: Tanzender Brunnen: Arduino mit MSGEQ7 Spectrum Analyzer - Gunook
Video: Tanzender Brunnen _ Dancing fountain 2024, November
Anonim
Tanzender Brunnen: Arduino mit MSGEQ7 Spectrum Analyzer
Tanzender Brunnen: Arduino mit MSGEQ7 Spectrum Analyzer

Sehr interessant ist der Empfang eines Audiosignals und dessen Umwandlung in eine visuelle oder mechanische Reaktion. In diesem Projekt verwenden wir einen Arduino Mega, der an einen Spektrumanalysator MSGEQ7 angeschlossen wird, der das Eingangsaudiosignal nimmt und eine Bandpassfilterung daran durchführt, um es in 7 Hauptfrequenzbänder aufzuteilen. Der Arduino analysiert dann das analoge Signal jedes Frequenzbandes und erstellt eine Aktion.

Schritt 1: Ziele des Projekts

In diesem Projekt werden 3 Betriebsarten diskutiert:

  1. LEDs sind mit digitalen PWM-Pins verbunden, um auf die Frequenzbänder zu reagieren
  2. LEDs sind mit digitalen Pins verbunden, um auf die Frequenzbänder zu reagieren
  3. Pumpen sind über Motortreiber mit dem Arduino Mega verbunden und reagieren auf die Frequenzbänder

Schritt 2: Theorie

Theorie
Theorie
Theorie
Theorie

Wenn wir über den MSGEQ7 Spectrum Analyzer IC sprechen, können wir sagen, dass er über interne 7 Bandpassfilter verfügt, die das Eingangsaudiosignal in 7 Hauptbänder aufteilen: 63 Hz, 160 Hz, 400 Hz, 1 kHz, 2,5 kHz, 6,25 kHz und 16 kHz.

Der Ausgang jedes Filters wird unter Verwendung eines Multiplexers als Ausgang des IC gewählt. Dieser Multiplexer hat Selektorleitungen, die von einem internen Binärzähler gesteuert werden. Wir können also sagen, dass der Zähler von 0 bis 6 (000 bis 110 in binärer Form) zählen sollte, damit jeweils ein Band passieren kann. Das macht klar, dass der Code des Arduino in der Lage sein sollte, den Zähler zurückzusetzen, sobald er den Zählerstand 7 erreicht.

Wenn wir einen Blick auf den Schaltplan des MSGEQ7 werfen, sehen wir, dass wir einen RC-Frequenztuner verwenden, um die interne Uhr des Oszillators zu steuern. dann verwenden wir filternde RC-Elemente am Eingangs-Audiosignal-Port.

Schritt 3: Verfahren

Verfahren
Verfahren

Laut der Quellseite (https://www.baldengineer.com/msgeq7-simple-spectrum-analyzer.html) können wir sehen, dass der Quellcode die Ausgaben als sich wiederholende PWM-Signale behandelt. Wir können einige der Codezeilen ändern, um unseren Zielen zu entsprechen.

Wir können feststellen, dass wir, wenn wir eine Stereobuchse haben, den Eingangswiderstand und den Kondensator auf den zweiten Kanal verdoppeln können. Wir versorgen den MSGEQ7 über den Arduino VCC (5 Volt) und GND. Wir werden den MSGEQ7 mit dem Arduino-Board verbinden. Ich bevorzuge es, den Arduino Mega zu verwenden, da er PWM-Pins hat, die für das Projekt geeignet sind. Der Ausgang des MSGEQ7 IC ist mit dem analogen Pin A0 verbunden, der STROBE ist mit Pin 2 des Arduino Mega verbunden und der RESET ist mit Pin 3 verbunden.

Schritt 4: Betriebsarten: 1- LEDs als PWM-Digitalausgänge

Betriebsarten: 1- LEDs als PWM-Digitalausgänge
Betriebsarten: 1- LEDs als PWM-Digitalausgänge

Entsprechend dem Quellcode können wir die Ausgangs-LEDs an die Pins 4 bis 10. anschließen

const int LED_pins[7] = {4, 5, 6, 7, 8, 9, 10};

Dann können wir feststellen, dass die LEDs mit der Stärke jedes Frequenzbandes tanzen.

Schritt 5: Betriebsarten: 2- LEDs als digitale Ausgänge

Image
Image
Betriebsarten: 3- Pumpen als digitale Ausgänge
Betriebsarten: 3- Pumpen als digitale Ausgänge

Wir können die Ausgangs-LEDs an beliebige digitale Pins anschließen.

const int LED_pins[7] = {40, 42, 44, 46, 48, 50, 52};

Dann können wir feststellen, dass die LEDs bei der Stärke jedes Frequenzbands blinken.

Schritt 6: Betriebsarten: 3- Pumpen als digitale Ausgänge

Betriebsarten: 3- Pumpen als digitale Ausgänge
Betriebsarten: 3- Pumpen als digitale Ausgänge

In diesem letzten Modus werden wir das L298N-Motortreibermodul mit den Ausgängen des Arduino verbinden. Dies ermöglicht uns, den Betrieb der Pumpe basierend auf dem Ausgang des MSGEQ7-Spektrumanalysators zu steuern.

Die Motortreiber ermöglichen es uns bekanntlich, den Betrieb der angeschlossenen Motoren oder Pumpen basierend auf dem generierten Signal vom Arduino zu steuern, ohne dass der Arduino Strom nimmt, sondern die Motoren direkt von der angeschlossenen Stromquelle mit Strom versorgt.

Wenn wir den Code als Rohquelle ausführen, funktionieren die Pumpen möglicherweise nicht richtig. Dies liegt daran, dass das PWM-Signal niedrig ist und für den Motortreiber nicht geeignet ist, die Motoren oder Pumpen zu betreiben und einen geeigneten Strom zu liefern. Aus diesem Grund empfehle ich, den PWM-Wert zu erhöhen, indem die analogen Messwerte von A0 mit einem Faktor größer als 1,3 multipliziert werden. Dies trägt dazu bei, dass das Mapping für den Motortreiber geeignet ist. Ich empfehle 1.4 bis 1.6. Außerdem können wir die PWM auf 50 bis 255 umstellen, um sicherzustellen, dass der PWM-Wert geeignet ist.

Wir können die LEDs zwar mit den Ausgängen für die Motortreiber verbinden, aber die LEDs blinken nicht mehr so gut wie zuvor, da die PWM-Werte erhöht wurden. Ich schlage daher vor, sie mit den digitalen Pins 40 bis 52 verbunden zu lassen.

Schritt 7: Kontakte

Es freut mich sehr, Rückmeldungen von Ihnen zu hören. Bitte zögern Sie nicht, meinen Kanälen beizutreten auf:

YouTube:

Instagram: @simplydigital010

Twitter: @simply01Digital

Empfohlen: