INHOUDSOPGAWE:

MSP430 Breadboard Audio Spectrum Analyzer: 6 stappe
MSP430 Breadboard Audio Spectrum Analyzer: 6 stappe

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 stappe

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 stappe
Video: MSP430 Breadboard Audio Spectrum Analyser 2024, November
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

Hierdie projek is op mikrofoon gebaseer en benodig minimale eksterne komponente. Daar word 2 x LR44-muntselle gebruik sodat die hele struktuur in die omgewing van 'n 170 tie-point mini-broodbord kan werk. ADC10, Timer 'n Onderbreking van LPM-ontwaking, TimerA PWM soos uitvoer, knoppie gebruik, heelgetal rekenkunde word gebruik en gedemonstreer.

Kenmerke

  • 8 bis heelgetal FFT 16 monsters by 500Hz skeiding
  • toon 8 amplituden van 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K nie-lineêr
  • gedeeltelike logaritmekaart om amplituden aan te toon, beperk omdat die resolusie vir 8 bis FFT verminder is
  • TLC272 een -fase mikrofoon versterk by 100x keer 100x wins (u kan met 2 fases ervaar)
  • kieslys opsionele opsionele Hamming venster
  • spyskaart pas die helderheid van 4 vlakke aan
  • spyskaart pas 8 vlakke monster tempo / reaksie tyd aan
  • 2 x LR44 -muntsel "aan boord" aangedryf

Stap 1: Verkry onderdele

Die volgende is wat nodig is vir hierdie projek

  • MSP430G2452 (die ekstra chip van TI Launchpad G2, of enige 4K 20 -pins MSP430G -reeks MCU)
  • 'n 170-tie-point mini-broodbord of perf-bord vir voorversterkerkonstruksie
  • TLC272 Dubbele op-amp
  • mini elektret mikrofoon
  • 47k (optrek), 100k, 2 x 10k, 1k weerstande
  • 1 x 0.1uF
  • springdrade
  • dubbele ry manlike penkop om te gebruik vir batteryhouer
  • 2 x LR44 muntstuk battery

Stap 2: Beplan komponente se uitleg

Die projek word gebou op 'n 170 minipapier met 'n bindpunt. Die uitleg van komponente is soos hieronder getoon. Dit is veral opmerklik dat die 8x8 LED -matriks bo -op die MSP430 MCU geplaas moet word. Afgesien van komponente, is daar ook verbindingsdrade wat met '+------+' karakters uitgebeeld word.

G V + Gnd (uitleg in 1 stadium) ONS GEBRUIK HIERDIE UITLETING + ====================================== =================+ c0 ………… c7 | MIC……. + -----++-+…. | r0 o o o o o o o o | o || o + ----- [100k] --------------- +….. | r1 X o o o o o o o |. +--------------+-+. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o o |…… |.. | b6 a7 | | c0 en r1 deel dieselfde speld en sal nie wys nie. +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| *moontlike aansoek om c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | dit sal b6 vir 32khz xtal -klok vrystel | | | TLC272 | | | | | | | uit - + 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-knoppie+ -----------------+

ons gebruik slegs een fase van die TLC272

Stap 3: Montering

Vergadering
Vergadering
Vergadering
Vergadering

U kan begin om komponente te plaas op grond van die broodborduitleg. Aangesien dit ASCII -kuns is, is dit miskien nie baie duidelik nie. U kan in hierdie stap met die foto's koppel om alle verbindings te identifiseer.

Sorg moet gedra word om die IC -skyfies te plaas. Daar is gewoonlik 'n punt op een van die hoeke om pen 1 van 'n toestel aan te dui.

Ek het CAT5 -ethernetkabels gebruik en dit is baie maklik om aan broodbordprojekte te werk. As u ou CAT5 -kabels het, kan u dit oopsny, en daar is 6 gedraaide drade binne. Hulle is perfek vir broodborde.

Stap 4: Stel firmware op en laai dit

Die bronkode is gewoonlik op my github -bewaarplekke.

Vir hierdie spesifieke projek word die enkele C -bronlêer nfft.c saamgevoeg in my opslagplek vir broodbordversamelings. Jy benodig net nfft.c

Ek gebruik mps430-gcc om die firmware saam te stel, maar dit moet goed gaan met TI CCS. U kan alle probleme met die installering van IDE's of samestellers vermy deur na TI CCS -wolk te gaan, 'n webgebaseerde IDE. Dit sal selfs die firmware na u teikenapparaat aflaai.

Dit is 'n voorbeeld om 'n opdrag saam te stel met skakelaars

msp430 -gcc -Os -Muur -funksie -afdelings -fdata -afdelings -fno -inline -klein -funksies -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- afdelings -I/energia -0101E0016/hardware/msp430/cores/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Ek gebruik 'n TI Launchpad G2 as programmeerder om die MCU te programmeer.

Stap 5: Verstaan die stroombaan

Verstaan die stroombaan
Verstaan die stroombaan
Verstaan die stroombaan
Verstaan die stroombaan

Die stroombaanskema word hieronder aangebied

MSP430G2452 of soortgelyk, benodig 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 gain, bandwydte tot 17Khz

* ons gebruik slegs een fase van die TLC272

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | optrek (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (sien broodborduitleg) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | matriks | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

LED -ry

Die LED -matriks bestaan uit 8 x 8 elemente. Hulle word aangedryf deur 15 GPIO -penne. Dit is vermenigvuldig met 8 rye en 8 kolomme. Aangesien daar slegs 15 penne is nadat ons 1 pen vir ADC -invoer gebruik het, het die multiplexing ry 1 en kolom 0 wat 'n enkele pen deel. Dit beteken dat die spesifieke LED in ry 1 en kolom 0 nie kan brand nie. Dit is 'n kompromie, want daar is net nie genoeg GPIO -penne om alle LED -elemente aan te dryf nie.

Klankopname

Klank word vasgelê via die ingeboude kondensormikrofoon op die Educational BoosterPack. Aangesien mikrofoonseine klein is, moet ons dit versterk tot 'n vlak wat die msp430 ADC10 kan gebruik met 'n redelike resolusie. Ek het 'n tweestadige versterker vir hierdie doel gebruik.

Die op-amp-versterker bestaan uit twee fases, elk met ongeveer 100x wins. Ek het die TLC272 aangeneem, aangesien dit ook 'n baie algemene deel is en dit werk met 3V. Die winsbandwydte van ongeveer 1,7 Mhz beteken dat ons vir ons wins van 100x slegs kan waarborg dat dit goed sal werk (dws die wins behou wat ons wil hê) onder 17Khz. (1,7 MHz / 100).

Oorspronklik is ek van plan om hierdie spektrumanaliseerder tot 16-20Khz te laat meet, maar uiteindelik het ek gevind dat ongeveer 8Khz goed genoeg is om musiek te wys. Dit kan verander word deur die LM358 te vervang met iets met klankwaarde en die monsterneming te verander. Soek net die versterkingsbandwydte van die op-amp wat u kies.

Steekproefneming en FFT

Die FFT -funksie wat gebruik word, is die 'fix_fft.c' -kode wat baie projekte aangeneem het, en dit dryf al 'n paar jaar op die internet. Ek het 'n 16 -bis weergawe en 'n 8 -bis weergawe probeer. Uiteindelik het ek besluit oor die 8 -bis weergawe, net soos vir my doel; ek het geen groot vooruitgang op die 16 -bis weergawe gesien nie.

Ek het nie 'n goeie begrip van die FFT -meganisme nie, behalwe dat dit 'n tyddomein na frekwensie -domeinomskakeling is. Dit beteken dat die tempo (tyd) van die klankmonsters, nadat dit aan die FFT -berekeningsfunksie toegedien is, die frekwensie van die amplitude wat ek kry, beïnvloed. Deur die tempo aan te pas by klankmonsters, kan ek die frekwensieband as gevolg hiervan bepaal.

Timer A 0 CCR0 word gebruik om die monstertyd te behou. Ons bepaal eers die tellings wat ons nodig het om die bandfrekwensie te bereik (stem ooreen met ons DCO -kloksnelheid van 16Mhz). dws TA0CCR0 ingestel op (8000/(BAND_FREQ_KHZ*2))-1; waar BAND_FREQ_KHZ vir my 8 is. Dit kan verander word as u 'n beter op-amp het en / of dit anders wil wees.

Frekwensiebande en amplitude -skaal

Die firmware verwerk 16 bande in een sweep, en die opname -tydsberekening lewer 'n skeiding van 500Hz tussen hierdie banke. Die LED -matriks bestaan uit 8 kolomme en sal slegs 8 bande / amplitudes vertoon. In plaas daarvan om elke twee bande te vertoon, word 'n nie-lineêre frekwensiebandlys gebruik om die meer dinamiese frekwensiebande (in terme van musiek) aan te toon. Die lys bevat 500Hz -gapings aan die lae kant, 1KHz -gapings in die middelbande en 1.5Khz -bande in die hoogtepunte.

Die amplitude van individuele bande word afgeskaal tot 8 vlakke, wat verteenwoordig word deur die aantal horisontale 'kolletjies' op die LED-matriksvertoning. kolletjies. 'N Soort logaritmiese skaal word gebruik, aangesien dit ons persepsie van klankvlakke die beste voorstel.

Daar is 'n ingeboude AGC-logika en die spektrumanaliseerder sal probeer om die amplitudevlakke af te skaal as daar verskeie piekvlakke in die vorige siklusse opgespoor is. Dit word gedoen met 'n vergelykingstabel met 'n glylyn.

Stap 6: Gebruik die toestel

  • Kort druk in die vertoningsmodus loop deur geen kolletjie, een punt, 2 kolletjies en 3 kolletjies.
  • Lang druk gaan na die instellingsmodus, en daarna met lang druk deur die spyskaart.
  • Spyskaartitems siklusse deur 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
  • In die opstellingsmodus 'Hamming Window', druk kort druk deur, sonder om te druk, 1, 2, 3, 3 druk, lang druk druk op die instelling.
  • In die 'Dimmer' -opstellingsmodus druk kort druk deur die beskikbare helderheidsvlakke van 0 tot 3, terwyl lang druk die instelling bevestig.
  • In die opstellingsmodus 'Sampling / Refresh rate', kort druk deur die beskikbare verversingssnelhede van 0 tot 7, 0 beteken geen vertraging nie, lang druk bevestig die instelling.
  • Multipleksering van LED -segmente bevat tydvertragings om die helderheidsverskille vir individuele rye te vergoed.

Aanbeveel: