Turinys:

„MSP430 Breadboard“garso spektro analizatorius: 6 žingsniai
„MSP430 Breadboard“garso spektro analizatorius: 6 žingsniai

Video: „MSP430 Breadboard“garso spektro analizatorius: 6 žingsniai

Video: „MSP430 Breadboard“garso spektro analizatorius: 6 žingsniai
Video: Cranes - LED Cube 8x8x8 - Blue LED 2024, Lapkritis
Anonim
Image
Image
MSP430 „Breadboard“garso spektro analizatorius
MSP430 „Breadboard“garso spektro analizatorius

Šis projektas yra pagrįstas mikrofonu ir reikalauja minimalių išorinių komponentų. Naudojami 2 x LR44 monetų elementai, kad visa struktūra veiktų 170 raištinių mini duonos lentų ribose. Naudojamas ir demonstruojamas ADC10, „TimerA“pertraukimo LPM pažadinimas, „TimerA PWM“, kaip išvestis, mygtukų naudojimas, sveikųjų skaičių aritmetika.

funkcijos

  • 8 bitų sveikų skaičių FFT 16 mėginiai 500 Hz atstumu
  • rodo 8 amplitudes 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K nelinijinės
  • dalinis logaritmo žemėlapis, rodantis amplitudes, ribotas, nes 8 bitų FFT skiriamoji geba buvo sumažinta
  • TLC272 vienos pakopos mikrofoniniai stiprintuvai, 100 kartų didinantys 100 kartų (galite patirti su dviem etapais)
  • meniu pasirenkamas pasirenkamas Hamingo langas
  • meniu sureguliuokite 4 ryškumo lygius
  • meniu sureguliuokite 8 lygių imties dažnį / atsako laiką
  • 2 x LR44 monetos elementai, maitinami „laive“

1 žingsnis: įsigykite dalis

Toliau pateikiama informacija apie tai, ko reikia šiam projektui

  • MSP430G2452 (papildoma mikroschema iš „TI Launchpad G2“arba bet kurios 4K 20 kontaktų MSP430G serijos MCU)
  • 170 tvirtinimo taškų mini duonos lentelė arba perforatoriaus plokštė, skirta išankstinio stiprintuvo konstrukcijai
  • TLC272 Dual op-amp
  • mini elektreto mikrofonas
  • 47k (pritraukimas), 100k, 2 x 10k, 1k rezistoriai
  • 1 x 0,1 uF
  • jungiamieji laidai
  • Dvigubos eilės kištukinė antgalis, naudojamas akumuliatoriaus laikikliui
  • 2 x LR44 monetų elementų baterija

2 žingsnis: suplanuokite komponentų išdėstymą

Projektas turi būti pastatytas ant 170 susietų mini duonos lentų. Komponentų išdėstymas yra toks, kaip parodyta žemiau. Ypač svarbu pažymėti, kad 8x8 LED matrica turi būti dedama ant MSP430 MCU. Be komponentų, taip pat yra jungiamųjų jungiamųjų laidų, pavaizduotų „+------+“simboliais.

G V + Gnd (1 pakopos išdėstymas) Mes naudojame šį išdėstymą + ==================================== =================+ 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 ir r1 turi tą patį kaištį ir nebus rodomi | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| *galima programa turėti c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | tai atlaisvins b6 32 kHz xtal laikrodžiui | | | TLC272 | | | | | | | išeiti - + 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 ADC mygtukas+ -----------------+

mes naudojame tik vieną TLC272 etapą

3 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas

Galite pradėti dėti komponentus pagal duonos lentos išdėstymą. Kadangi tai ASCII menas, tai gali būti nelabai aišku. Šiame veiksme galite susieti su nuotraukomis, kad nustatytumėte visus ryšius.

Turi būti pasirūpinta IC mikroschemų išdėstymu. Paprastai viename iš kampų yra taškas, nurodantis prietaiso 1 kaištį.

Aš naudoju CAT5 eterneto kabelių laidus ir juos labai lengva dirbti su duonos plokštės projektais. Jei turite senus CAT5 kabelius, galite juos nupjauti ir pamatysite, kad viduje yra 6 susukti laidai. Jie puikiai tinka duonos lentoms.

4 veiksmas: kompiliuokite ir įkelkite programinę -aparatinę įrangą

Šaltinio kodas paprastai yra mano „github“saugyklose.

Šiam konkrečiam projektui vienintelis C šaltinio failas nfft.c yra įtrauktas į mano duonos lentų kolekcijų saugyklą. Jums tiesiog reikia nfft.c

Aš naudoju „mps430-gcc“programinės įrangos kompiliavimui, tačiau ji turėtų gerai derėti su TI CCS. Galite išvengti visų IDE ar kompiliatorių diegimo problemų, eidami į TI CCS debesį, kuris yra žiniatinklio IDE. Jis netgi atsisiųs programinę -aparatinę įrangą į jūsų tikslinį įrenginį.

Tai pavyzdys sukompiliuoti komandą su jungikliais

msp430 -gcc -Os -Wall -function -section -fdata -section -fno -inline -small -features -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- sekcijos -I/energia -0101E0016/hardware/msp430/core/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Aš naudoju „TI Launchpad G2“kaip programuotoją MCU programavimui.

5 žingsnis: supraskite grandinę

Supraskite grandinę
Supraskite grandinę
Supraskite grandinę
Supraskite grandinę

Žemiau pateikiama grandinės schema

„MSP430G2452“ar panašiai, reikia „4K Flash TLC272 Dual Op-Amp“, GBW @1.7Mhz, @x100 stiprinimas, pralaidumas iki 17Khz

* mes naudojame tik vieną TLC272 etapą

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | prisitraukimas (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10 tūkst. | | 10 tūkst. | | | / / ^ | | | | _ | | _ | 100 tūkst. | _ | | / _+\ / / | | /| --- (žr. lentos išdėstymą) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1 – P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0 – P2.7 | | LED | |+ | | --------------- | | | matrica | ((O)) |. | | / | | _ | | MIC | | 10 tūkst. | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

LED vairavimas

LED matricą sudaro 8 x 8 elementai. Juos valdo 15 GPIO kaiščių. Jie yra multipleksuoti su 8 eilutėmis ir 8 stulpelių schema. Kadangi ADC įėjimui naudojame tik 1 kaištį, yra tik 15 kaiščių, todėl multipleksavimas turi 1 eilutę ir 0 stulpelį, kurie dalijasi vienu kaiščiu. Tai reiškia, kad tam tikras 1 eilutės ir 0 stulpelio šviesos diodas negali užsidegti. Tai yra kompromisas, nes tiesiog nepakanka GPIO kaiščių, kad būtų galima valdyti visus LED elementus.

Garso fiksavimas

Garsas fiksuojamas naudojant įmontuotą kondensacinį mikrofoną „Educational BoosterPack“. Kadangi mikrofono signalai yra maži, turime jį sustiprinti iki tokio lygio, kad „msp430 ADC10“galėtų naudoti protingą skiriamąją gebą. Šiam tikslui naudojau dviejų pakopų stiprintuvą.

„Op-amp“stiprintuvas susideda iš dviejų pakopų, kurių kiekvienas padidina apie 100 kartų. Aš turėjau priimti TLC272, nes tai taip pat yra labai dažna dalis ir ji veikia su 3V. Jei padidinimo pralaidumas yra apie 1,7 MHz, tai reiškia, kad 100 kartų padidėję, mes galime tik garantuoti, kad jis gerai veiktų (t. Y. Išlaikytų norimą pelną) esant 17 kHz dažniui. (1,7 MHz / 100).

Iš pradžių ketinau šį spektro analizatorių išmatuoti iki 16-20Khz, bet galų gale radau, kad apie 8Khz yra pakankamai geras, kad būtų rodoma muzika. Tai galima pakeisti pakeičiant LM358 su garso kokybe ir pakeičiant atrankos dažnį. Tiesiog ieškokite pasirinktų operacinių stiprintuvų padidinimo pralaidumo.

Mėginių ėmimas ir FFT

Naudojama FFT funkcija yra „fix_fft.c“kodas, kurį priėmė daugelis projektų, jis jau keletą metų sklando internete. Aš išbandžiau 16 bitų ir 8 bitų versiją. Galų gale aš apsisprendžiau prie 8 bitų versijos, nes aš nemačiau didelės pažangos 16 bitų versijoje.

Aš gerai nesuprantu FFT mechanizmo, išskyrus tai, kad tai laiko domeno į dažnį domeno konvertavimas. Tai reiškia, kad garso mėginių dažnis (laikas) po to, kai jie bus naudojami FFT skaičiavimo funkcijai, turės įtakos amplitudės, kurią aš gaunu, dažniui. Taigi, sureguliuodamas dažnį pagal mėginio garsą, galiu nustatyti dažnių juostą.

Laikmatis 0 CCR0 naudojamas mėginių ėmimo laikui išlaikyti. Pirmiausia nustatome skaičių, kurio mums reikia norint pasiekti dažnių juostos dažnį (atitinka mūsų DCO laikrodžio dažnį 16Mhz). y., TA0CCR0 nustatytas kaip (8000/(BAND_FREQ_KHZ*2))-1; kur BAND_FREQ_KHZ man yra 8. Jį galima pakeisti, jei turite geresnį op-amp ir (arba) norite, kad jis būtų kitoks.

Dažnių juostos ir amplitudės mastelio keitimas

Programinė įranga apdoroja 16 juostų vienu metu, o fiksavimo laikas sukuria 500 Hz atskirtį tarp šių bankų. LED matricą sudaro 8 stulpeliai ir bus rodomos tik 8 juostos / amplitudės. Vietoj to, kad būtų rodoma kas dvi juostos, naudojamas netiesinis dažnių juostų sąrašas, rodantis dinamiškesnes dažnių juostas (muzikos požiūriu). Sąraše yra 500 Hz tarpai žemoje dalyje, 1KHz tarpai vidurinėje juostoje ir 1,5Kh juostos aukščiausiose.

Atskirų juostų amplitudė sumažinama iki 8 lygių, kuriuos parodo horizontalių „taškų“skaičius LED matricos ekrane. Amplitudės lygiai sumažinami naudojant nelinijinį žemėlapį, kuris FFT rezultatus išverčia į vieną iš 8 taškais. Naudojamas tam tikras logaritminis mastelio keitimas, nes jis geriausiai atspindi mūsų suvokimą apie garso lygius.

Yra integruota AGC logika ir spektro analizatorius bandys sumažinti amplitudės lygius, kai ankstesniuose cikluose buvo aptikta daug didžiausių lygių. Tai daroma naudojant stumdomą liniuotės palyginimo lentelę.

6 žingsnis: Įrenginio valdymas

  • Trumpas klavišo paspaudimas ekrano režimu rodomas be taško, vieno taško, 2 taškų ir 3 taškų.
  • Ilgas paspaudimas pereina į sąrankos režimą, o paskui - paspaudžiamas meniu.
  • Meniu elementų ciklai per „Hamming Window Option“, „Dimmer“, „Sampling / Refresh Rate“.
  • „Hamming Window“sąrankos režimu trumpas paspaudimų ciklas be plakimo, plakimas 1, plakimas 2, plakimas 3, ilgas paspaudimas patvirtina nustatymą.
  • „Dimmer“sąrankos režimu trumpas paspaudimas perjungia galimus ryškumo lygius nuo 0 iki 3, ilgas paspaudimas patvirtina nustatymą.
  • „Sampling / Refresh rate“sąrankos režimu trumpas paspaudimas perjungia galimus atnaujinimo dažnius nuo 0 iki 7, 0 reiškia nevėluoti, ilgas paspaudimas patvirtina nustatymą.
  • LED segmentų multipleksavimas apima laiko uždelsimą, kad būtų kompensuoti atskirų eilučių ryškumo skirtumai.

Rekomenduojamas: