Cuprins:

MSP430 Breadboard Audio Spectrum Analyzer: 6 pași
MSP430 Breadboard Audio Spectrum Analyzer: 6 pași

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 pași

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 pași
Video: MSP430 Breadboard Audio Spectrum Analyser 2024, Noiembrie
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

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

Asamblare
Asamblare
Asamblare
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

Înțelegeți circuitul
Înțelegeți circuitul
Înțelegeți circuitul
Î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: