Cuprins:
- Pasul 1: Achiziționați piese
- Pasul 2: Planificați aspectul componentelor
- Pasul 3: Asamblare
- Pasul 4: Compilați și încărcați firmware-ul
- Pasul 5: Înțelegeți circuitul
- Pasul 6: Utilizarea dispozitivului
Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Acest proiect este bazat pe microfon și necesită componente externe minime. Se folosesc 2 celule de monedă LR44, astfel încât să pot avea întreaga structură care funcționează în limitele unei mini panouri de legătură de 170. ADC10, TimerA întrerupere LPM trezire, TimerA PWM ca ieșire, utilizarea butoanelor, aritmetica întregului sunt utilizate și demonstrate.
Caracteristici
- 8 biți întregi FFT 16 mostre la 500Hz separare
- arată 8 amplitudini de 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K neliniar
- hartă logaritmică parțială pentru a arăta amplitudini, limitată, deoarece rezoluția a fost redusă pentru FFT de 8 biți
- TLC272 amplificator microfon cu o singură etapă la câștig de 100x ori 100x (puteți experimenta cu 2 etape)
- meniu selectabil opțional Fereastra Hamming
- meniul reglează luminozitatea pe 4 nivele
- meniul regla 8 rate de eșantionare / timp de răspuns
- 2 x LR44 cu celule de monedă alimentate „la bord”
Pasul 1: Achiziționați piese
Următoarele sunt cele necesare pentru acest proiect
- MSP430G2452 (cipul suplimentar de la TI Launchpad G2 sau orice MCU 4K 20 pini MSP430G din seria)
- o mini-placă de perfecționare cu 170 de puncte de legătură sau o tablă de perfecționare pentru construcții pre-amp
- TLC272 Dual op-amp
- microfon mini electret
- Rezistențe 47k (pull-up), 100k, 2 x 10k, 1k
- 1 x 0,1 uF
- fire jumper
- antet cu pin masculin cu două rânduri pentru a fi utilizat pentru suportul bateriei
- 2 x baterie cu celule monede LR44
Pasul 2: Planificați aspectul componentelor
Proiectul urmează să fie construit pe o mini-placă de prindere de 170 de puncte de legătură. Aspectul componentelor este așa cum se arată mai jos. O notă specială este că matricea LED 8x8 trebuie plasată deasupra MCP MSP430. În afară de componente, există și fire de conectare jumper, reprezentate de caractere "+ ------ +".
G V + Gnd (aspect 1 etapă) UTILIZăm ACEASTA DISPOZITIE + ==================================== ================= + c0 ………… c7 | MIC……. + ----- + + - +…. | r0 o o o o o o o | o || o + ----- [100k] --------------- +….. | r1 X o o o o o o |. + -------------- + - +. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o | |…… |.. | b6 a7 | | c0 și r1 împărtășesc același pin și nu vor afișa | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | * posibilă aplicație pentru a avea c6 + c0 + r1 | | | V + | | | G b6 b7 T R a7 a6 b5 b4 b3 | | aceasta va elibera b6 pentru ceasul xtal de 32 kHz | | | TLC272 | | | | | | | afară - + G | | | + a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | | o || o o o. + - +.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o- [10k] - o……… | |. o- [1k] o o o………._. | | o ---- [10k] ----------- o……. o o | + ================================================== ==== +.1uF 100k 10k Buton ADC + ----------------- +
folosim doar o etapă a TLC272
Pasul 3: Asamblare
Puteți începe să plasați componente pe baza aspectului plăcii de calcul. Deoarece este artă ASCII, este posibil să nu fie foarte clar. Puteți asocia cu fotografiile în acest pas pentru a identifica toate conexiunile.
Trebuie avut grijă la poziționarea cipurilor IC. De obicei, există un punct pe unul dintre colțuri pentru a indica pinul 1 al unui dispozitiv.
Folosisem fire de cablu Ethernet CAT5 și sunt foarte ușor de lucrat la proiecte de panouri. Dacă aveți cabluri CAT5 vechi, îl puteți tăia și veți găsi că există 6 fire răsucite în interior. Sunt perfecte pentru panourile de prindere.
Pasul 4: Compilați și încărcați firmware-ul
Codul sursă se află de obicei în depozitele mele github.
Pentru acest proiect, fișierul sursă C nfft.c este inclus în depozitul meu de colecții de panouri. Ai nevoie doar de nfft.c
Folosesc mps430-gcc pentru a compila firmware-ul, dar ar trebui să funcționeze bine cu TI CCS. Puteți evita toate problemele legate de instalarea IDE-urilor sau compilatoarelor accesând cloud TI CCS, care este un IDE bazat pe web. Acesta va descărca chiar firmware-ul pe dispozitivul dvs. țintă.
Acesta este un exemplu de comandă de compilare cu comutatoare
msp430 - gcc -Os -Wall -ffunction-sections -fdata-sections -fno-inline-small-functions -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- secțiuni -I / energia-0101E0016 / hardware / msp430 / cores / msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c
Folosesc un TI Launchpad G2 ca programator pentru a programa MCU.
Pasul 5: Înțelegeți circuitul
Schema circuitului este prezentată mai jos
MSP430G2452 sau similar, au nevoie de 4K Flash TLC272 Dual Op-Amp, GBW @ 1,7Mhz, @ x100 gain, lățime de bandă de până la 17Khz
* folosim doar o etapă a TLC272
._.
| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1 - + | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | | _ | | | + -1 | ----. Vcc | 8- + | | | |. |. |. | ^.--- | 7 | | 16- + | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _ + / / / | | / | --- (vezi aspectul plăcii de calcul) |.1u | | | | | / _ + / | | / | ------_ + - || --- | - [1k] - + - 2 | --- + | | | | | 15 GPIO | | | | + ---------- 3 | ----- + + - | - | 6 | P1.1-P1.7 | | 8x8 | | | + -4 | Gnd + - | 5 | P2.0-P2.7 | | LED | | + | | --------------- | | | matrice | ((O)) |. | | / | | _ | | MIC | | 10k | + -20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///
Condus LED
Matricea LED este de 8 x 8 elemente. Sunt conduse de 15 pini GPIO. Sunt multiplexate cu 8 rânduri și schema de 8 coloane. Deoarece există doar 15 pini după ce folosim 1 pin pentru intrarea ADC, multiplexarea are rândul 1 și coloana 0 care împarte un singur pin. Aceasta înseamnă că LED-ul special de pe rândul 1 și coloana 0 nu poate fi aprins. Acesta este un compromis, întrucât nu există suficienți pini GPIO pentru a conduce toate elementele LED.
Captură sunet
Sunetul este capturat prin intermediul microfonului cu condensator de pe panoul educațional BoosterPack. Deoarece semnalele microfonului sunt mici, trebuie să îl amplificăm la un nivel pe care msp430 ADC10 îl poate folosi cu o rezoluție rezonabilă. Folosisem un amplificator op-amp în două trepte în acest scop.
Amplificatorul amplificator op este format din două trepte, fiecare cu o câștig de aproximativ 100x. Am adoptat TLC272, deoarece este, de asemenea, o parte foarte comună și funcționează cu 3V. Lățimea de bandă a câștigului fiind de aproximativ 1,7 MHz înseamnă că pentru câștigul nostru de 100x, putem garanta doar că va funcționa frumos (adică menținem câștigul dorit) sub 17 KHz. (1,7 MHz / 100).
Inițial intenționez să fac ca acest analizor de spectru să măsoare până la 16-20Khz, dar în cele din urmă am constatat că aproximativ 8Khz este suficient de bun pentru a arăta muzică. Acest lucru poate fi schimbat prin înlocuirea LM358 cu ceva de calitate audio și modificarea ratei de eșantionare. Căutați doar lățimea de bandă de câștig a amplificatoarelor opționale pe care le alegeți.
Eșantionare și FFT
Funcția FFT utilizată este codul „fix_fft.c” pe care îl adoptaseră multe proiecte, plutind pe internet de câțiva ani. Încercasem o versiune pe 16 biți și o versiune pe 8 biți. În cele din urmă m-am mulțumit cu versiunea pe 8 biți ca pentru scopul meu, nu am văzut un avans major în versiunea pe 16 biți.
Nu am o bună înțelegere a mecanismului FFT, cu excepția faptului că este un domeniu de timp pentru conversia domeniului de frecvență. Asta înseamnă că rata (timpul) eșantioanelor de sunet, după alimentarea funcției de calcul FFT, va afecta frecvența amplitudinii pe care o obțin ca rezultat. Prin urmare, ajustând rata la sunetul eșantionului, pot determina banda de frecvență ca rezultat.
TimerA 0 CCR0 este utilizat pentru a păstra timpul de eșantionare. Mai întâi stabilim numărul de care avem nevoie pentru a atinge frecvența benzii (corespunde ratei de ceas DCO de 16Mhz). adică TA0CCR0 setat la (8000 / (BAND_FREQ_KHZ * 2)) - 1; unde BAND_FREQ_KHZ este 8 pentru mine. Poate fi schimbat dacă aveți un op-amp mai bun și / sau doriți să fie diferit.
Benzi de frecvență și scalarea amplitudinii
Firmware-ul procesează 16 benzi dintr-o singură trecere, iar momentul de captare produce o separare de 500Hz între aceste bănci. Matricea LED este de 8 coloane și va afișa doar 8 benzi / amplitudini. În loc să afișeze una din două benzi, se folosește o listă de benzi de frecvență neliniare pentru a arăta benzile de frecvență mai dinamice (în ceea ce privește muzica). Lista conține goluri de 500Hz la capătul scăzut, goluri de 1KHz în benzile de mijloc și benzi de 1,5Khz în maxime.
Amplitudinea benzilor individuale este redusă la 8 nivele, care sunt reprezentate de numărul de „puncte” orizontale de pe afișajul matricei LED. Nivelurile de amplitudine sunt reduse printr-o hartă neliniară care traduce rezultatele FFT într-unul dintre cele 8 puncte. Se utilizează un fel de scalare logaritmică, deoarece reprezintă cel mai bine percepția noastră asupra nivelurilor sonore.
Există o logică AGC încorporată, iar analizorul de spectru va încerca să reducă nivelurile de amplitudine atunci când există mai multe niveluri de vârf detectate în ciclurile anterioare. Acest lucru se face cu un tabel de comparare a riglei glisante.
Pasul 6: Utilizarea dispozitivului
- Apăsarea scurtă a tastei în modul de afișare trece prin afișarea fără punct, un punct, 2 puncte și 3 puncte.
- Apăsarea lungă intră în modul de configurare, apăsarea lungă ulterioară se rotește prin meniu.
- Elementele din meniu se derulează prin „Opțiunea ferestrei de batere”, „Dimmer”, „Rată de eșantionare / reîmprospătare”.
- În modul de configurare „Hamming Window”, apăsările scurte trec prin cicluri fără hamming, hamming 1, hamming 2, hamming 3, apăsarea lungă confirmă setarea.
- În modul de configurare „Dimmer”, apăsările scurte parcurg nivelurile de luminozitate disponibile de la 0 la 3, apăsarea lungă confirmă setarea.
- În modul de configurare „Eșantionare / rată de reîmprospătare”, apăsările scurte parcurg ratele de reîmprospătare disponibile de la 0 la 7, 0 înseamnă nicio întârziere, apăsarea lungă confirmă setarea.
- Multiplexarea segmentelor cu led include întârzieri pentru a compensa diferențele de luminozitate pentru rândurile individuale.
Recomandat:
Fântână de dans: Arduino cu MSGEQ7 Spectrum Analyzer: 8 pași
Dancing Fountain: Arduino Cu MSGEQ7 Spectrum Analyzer: Recepția unui semnal audio și transformarea acestuia în reacție vizuală sau mecanică este foarte interesantă. În acest proiect vom folosi un Arduino Mega pentru a fi conectat la un analizor de spectru MSGEQ7 care preia semnalul audio de intrare și efectuează banda
DIY Arduino Audio Signal Spectrum Analyzer: 3 pași
DIY Arduino Audio Signal Spectrum Analyzer: Acesta este un analizor audio foarte simplu, cu moduri vizuale modificabile
CRAZY L.O.L SPECTRUM ANALYZER: 6 pași (cu imagini)
CRAZY L.O.L SPECTRUM ANALYZER: Astăzi aș dori să vă împărtășesc modul de realizare a unui analizor de spectru audio - 36 de benzi, combinând 4 LoL Shields împreună. Acest proiect nebun folosește o bibliotecă FFT pentru a analiza un semnal audio stereo, pentru a-l converti în benzi de frecvență și pentru a afișa amplitudinea acestor frecvențe
1024 eșantioane FFT Spectrum Analyzer folosind un Atmega1284: 9 pași
1024 Samples FFT Spectrum Analyzer Folosind un Atmega1284: Acest tutorial relativ ușor (având în vedere complexitatea acestui subiect) vă va arăta cum puteți face un analizor de spectru de mostre 1024 foarte simplu folosind o placă de tip Arduino (1284 Narrow) și plotterul serial. Orice fel de companie Arduino
RGB Matrix + Spectrum Analyzer: 10 pași (cu imagini)
RGB Matrix + Spectrum Analyzer: Iubesc LED-urile? Și eu! De aceea, în acest Instructable, vă voi arăta cum să creați o matrice LED RGB minunată, care se poate transforma cu ușurință într-un Analizor de spectru printr-un clic pe un buton. , dacă credeți că acest Instructable a câștigat-o, vă rugăm să votați