Inhoudsopgave:

Dansende fontein: Arduino met MSGEQ7 spectrumanalysator - Ajarnpa
Dansende fontein: Arduino met MSGEQ7 spectrumanalysator - Ajarnpa

Video: Dansende fontein: Arduino met MSGEQ7 spectrumanalysator - Ajarnpa

Video: Dansende fontein: Arduino met MSGEQ7 spectrumanalysator - Ajarnpa
Video: Arduino Project - Christmas Light Music Sync (Using Individually Addressable LEDs and MSGEQ7) 2024, November
Anonim
Dansende fontein: Arduino met MSGEQ7 spectrumanalysator
Dansende fontein: Arduino met MSGEQ7 spectrumanalysator

De ontvangst van een audiosignaal en het omzetten in visuele of mechanische reactie is erg interessant. In dit project zullen we een Arduino Mega gebruiken om te worden aangesloten op een spectrumanalysator MSGEQ7 die het ingangsaudiosignaal opneemt en er banddoorlaatfiltering op uitvoert om het in 7 hoofdfrequentiebanden te verdelen. De Arduino analyseert vervolgens het analoge signaal van elke frequentieband en creëert een actie.

Stap 1: Doelstellingen van het project

In dit project worden 3 werkingsmodi besproken:

  1. LED's zijn verbonden met digitale PWM-pinnen om te reageren op de frequentiebanden
  2. LED's zijn verbonden met digitale pinnen om te reageren op de frequentiebanden
  3. Pompen zijn verbonden met de Arduino Mega via motordrivers en reageren op de frequentiebanden

Stap 2: Theorie

Theorie
Theorie
Theorie
Theorie

Als we het hebben over de MSGEQ7 Spectrum Analyzer IC, kunnen we zeggen dat deze interne 7 banddoorlaatfilters heeft die het ingangsaudiosignaal in 7 hoofdbanden verdelen: 63 Hz, 160 Hz, 400 Hz, 1 kHz, 2,5 kHz, 6,25 kHz en 16 kHz.

De uitvoer van elk filter wordt gekozen als de uitvoer van het IC met behulp van een multiplexer. Die multiplexer heeft selectielijnen die worden bestuurd door een interne binaire teller. We kunnen dus zeggen dat de teller van 0 tot 6 (000 tot 110 binair) moet tellen om één band tegelijk te laten passeren. Dat maakt duidelijk dat de code van de Arduino de teller moet kunnen resetten zodra deze de telling 7 bereikt.

Als we het schakelschema van de MSGEQ7 bekijken, kunnen we zien dat we een RC-frequentietuner gebruiken om de interne klok van de oscillator te regelen. dan gebruiken we filterende RC-elementen bij de ingangsaudiosignaalpoort.

Stap 3: Procedures

Procedures
Procedures

Volgens de bronpagina (https://www.baldengineer.com/msgeq7-simple-spectrum-analyzer.html) kunnen we zien dat de broncode de uitgangen behandelt als PWM-signalen die repetitief zijn. we kunnen enkele coderegels wijzigen om aan onze doelen te voldoen.

We kunnen opmerken dat als we een stereo-aansluiting hebben, we de ingangsweerstand en condensator naar het tweede kanaal kunnen verdubbelen. We voeden de MSGEQ7 van de Arduino VCC (5 volt) en GND. We zullen de MSGEQ7 verbinden met het Arduino-bord. Ik gebruik liever de Arduino Mega omdat deze PWM-pinnen heeft die geschikt zijn voor het project. De uitgang van de MSGEQ7 IC is aangesloten op analoge pin A0, de STROBE is aangesloten op pin 2 van de Arduino Mega en de RESET is aangesloten op pin 3.

Stap 4: Bedrijfsmodi: 1- LED's als PWM digitale uitgangen

Bedrijfsmodi: 1- LED's als digitale PWM-uitgangen
Bedrijfsmodi: 1- LED's als digitale PWM-uitgangen

Volgens de broncode kunnen we de output-LED's aansluiten op pinnen 4 t/m 10

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

Dan kunnen we zien dat de LED's dansen op de sterkte van elke frequentieband.

Stap 5: Bedrijfsmodi: 2- LED's als digitale uitgangen

Image
Image
Bedrijfsmodi: 3- Pompen als digitale uitgangen
Bedrijfsmodi: 3- Pompen als digitale uitgangen

We kunnen de output-LED's op elke digitale pinnen aansluiten.

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

Dan kunnen we zien dat de LED's knipperen op de sterkte van elke frequentieband.

Stap 6: Bedrijfsmodi: 3-pompen als digitale uitgangen

Bedrijfsmodi: 3- Pompen als digitale uitgangen
Bedrijfsmodi: 3- Pompen als digitale uitgangen

In deze laatste modus zullen we de L298N motor driver module verbinden met de uitgangen van de Arduino. hierdoor kunnen we de werking van de pomp regelen op basis van de output van de MSGEQ7 spectrumanalysator.

Zoals bekend stellen de motordrivers ons in staat om de werking van de aangesloten motoren of pompen te regelen op basis van het gegenereerde signaal van de Arduino zonder enige stroom van de Arduino te laten zinken, in plaats daarvan voeden ze de motoren rechtstreeks vanaf de aangesloten stroombron.

Als we de code als onbewerkte bron uitvoeren, werken de pompen mogelijk niet goed. Dat komt omdat het PWM-signaal laag is en niet geschikt is voor de motorbestuurder om de motoren of pompen te laten draaien en een geschikte stroom te leveren. Daarom raad ik aan om de PWM-waarde te verhogen door de analoge meetwaarden van A0 te vermenigvuldigen met een factor groter dan 1,3. Dit helpt de mapping geschikt te maken voor de motorbestuurder. Ik raad 1.4 tot 1.6 aan. Ook kunnen we de PWM opnieuw toewijzen op 50 tot 255 om er zeker van te zijn dat de PWM-waarde geschikt is.

We kunnen de LED's samen met de uitgangen voor de motordrivers aansluiten, maar de LED's zullen niet goed zichtbaar knipperen zoals voorheen omdat de PWM-waarden zijn verhoogd. Dus ik stel voor om ze aangesloten te houden op de digitale pinnen 40 tot en met 52.

Stap 7: Contacten

Zo blij om feedback van u te horen. Aarzel niet om lid te worden van mijn kanalen op:

YouTube:

Instagram: @simplydigital010

Twitter: @simply01Digital

Aanbevolen: