MSP430 Breadboard Audio Spectrum Analyzer: 6 vaihetta
MSP430 Breadboard Audio Spectrum Analyzer: 6 vaihetta
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

Tämä projekti perustuu mikrofoniin ja vaatii vain vähän ulkoisia komponentteja. Käytetään 2 x LR44-nappiparistoa, jotta voin saada koko rakenteen toimimaan 170 solmukohdan minileipälevyn rajoissa. ADC10, TimerA keskeyttää LPM-herätyksen, TimerA PWM, kuten ulostulo, painikkeiden käyttö, kokonaislukujen aritmeettinen käyttö ja esittely.

ominaisuudet

  • 8 -bittinen kokonaisluku FFT 16 -näytteet 500 Hz: n erolla
  • näyttää 8 amplitudia 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K epälineaarinen
  • osittainen logaritmikartta, joka näyttää amplitudit, rajoitettu, koska resoluutio on pienentynyt 8 -bittiselle FFT: lle
  • TLC272 yksivaiheiset mikrofonivahvistimet 100x kertaa 100x vahvistus (voit kokea 2 vaihetta)
  • valikosta valinnainen Hamming -ikkuna
  • valikko säätää 4 kirkkaustasoa
  • valikko säätää 8 tasoa näytteenottotaajuus / vasteaika
  • 2 x LR44 -nappiparisto, joka toimii "aluksella"

Vaihe 1: Osien hankkiminen

Seuraavat ovat mitä tarvitaan tähän projektiin

  • MSP430G2452 (TI Launchpad G2: n lisäsiru tai mikä tahansa 4K 20 -nastainen MSP430G -sarjan MCU)
  • 170 kiinnityspisteinen mini-leipälauta tai perf-levy esivahvistimen rakentamiseen
  • TLC272 Dual op-vahvistin
  • minielektrettimikrofoni
  • 47k (pull-up), 100k, 2 x 10k, 1k vastukset
  • 1 x 0,1 uF
  • hyppyjohtimet
  • kaksirivinen urospistoke, jota käytetään paristopidikkeessä
  • 2 x LR44 -nappiparisto

Vaihe 2: Suunnittele komponenttien asettelu

Projekti on tarkoitus rakentaa 170 tie-pisteen minileipälevylle. Komponenttien asettelu on seuraavanlainen. Erityisen huomionarvoista on, että 8x8 LED -matriisi on asetettava MSP430 MCU: n päälle. Komponenttien lisäksi on myös kytkentähyppyjohtimia, jotka on merkitty "+------+"-merkeillä.

G V + Gnd (1 -vaiheinen asettelu) KÄYTÄMME TÄTÄ ASETTELUA + ====================================== =================+ 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 o |…… |.. | b6 a7 | | c0 ja r1 jakavat saman nastan eivätkä näytä | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+| *mahdollinen sovellus, jolla on c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | tämä vapauttaa b6 32 kHz: n xtal -kellolle | | | TLC272 | | | | | | | ulos - + 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- [1 k] o o o………._. | | o ---- [10k] ----------- o……. o o | +================================================== ====+.1uF 100k 10k ADC -painike+ -----------------+

käytämme vain yhtä TLC272: n vaihetta

Vaihe 3: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Voit aloittaa komponenttien sijoittamisen leipälevyn asettelun perusteella. Koska se on ASCII -taidetta, se ei ehkä ole kovin selkeä. Voit muodostaa pariliitoksen valokuvien kanssa tässä vaiheessa kaikkien yhteyksien tunnistamiseksi.

IC -sirut on sijoitettava huolellisesti. Yhdessä kulmassa on yleensä piste, joka osoittaa laitteen nastan 1.

Olin käyttänyt CAT5 -ethernet -kaapelijohtoja ja ne ovat erittäin helppoja työskennellä leipälautaprojekteissa. Jos sinulla on vanhat CAT5 -kaapelit, voit leikata sen auki ja huomaat, että sisällä on 6 kierrettyä johtoa. Ne sopivat täydellisesti leipälaudoille.

Vaihe 4: Käännä ja lataa laiteohjelmisto

Lähdekoodi sijaitsee yleensä github -arkistoissani.

Tätä projektia varten yksittäinen C -lähdetiedosto nfft.c on yhdistetty leipälautakokoelmatiedostooni. Tarvitset vain nfft.c

Käytän mps430-gcc: tä laiteohjelmiston kääntämiseen, mutta sen pitäisi mennä hyvin TI CCS: n kanssa. Voit välttää kaikki IDE: iden tai kääntäjien asentamisen ongelmat siirtymällä TI CCS -pilveen, joka on verkkopohjainen IDE. Se jopa lataa laiteohjelmiston kohdelaitteellesi.

Tämä on esimerkki käännöskomennosta kytkimillä

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

Käytän TI Launchpad G2: ta ohjelmoijana MCU: n ohjelmointiin.

Vaihe 5: Ymmärtäkää piiri

Ymmärrä piiri
Ymmärrä piiri
Ymmärrä piiri
Ymmärrä piiri

Piirikaavio on esitetty alla

MSP430G2452 tai vastaava, tarvitaan 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 vahvistus, kaistanleveys jopa 17 Khz

* Käytämme vain yhtä TLC272: n vaihetta

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | vetäminen (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100 000 | _ | | / _+\ / / | | /| --- (katso leipälevyn asettelu) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | matriisi | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

LED -ajo

LED -matriisi koostuu 8 x 8 elementistä. Niitä ohjaa 15 GPIO -nastaa. Ne ovat multipleksoituja 8 rivillä ja 8 sarakkeella. Koska ADC -sisääntulossa on vain 15 nastaa sen jälkeen, kun olemme käyttäneet yhtä nastaa, multipleksoinnilla on rivi 1 ja sarake 0 jakavat yhden nastan. Tämä tarkoittaa, että rivin 1 ja sarakkeen 0 LED -valot eivät voi palaa. Tämä on kompromissi, koska GPIO -nastoja ei vain ole tarpeeksi kaikkien LED -elementtien ohjaamiseen.

Äänenkaappaus

Ääni kaapataan Educational BoosterPack -laitteen sisäisen kondensaattorimikrofonin kautta. Koska mikrofonisignaalit ovat pieniä, meidän on vahvistettava se tasolle, jota msp430 ADC10 voi käyttää kohtuullisella resoluutiolla. Olin käyttänyt kaksivaiheista op-vahvistinta tähän tarkoitukseen.

Op-vahvistin koostuu kahdesta vaiheesta, joista jokaisella on noin 100-kertainen vahvistus. Minulla oli omaksua TLC272, koska se on myös hyvin yleinen osa ja se toimii w/ 3V. Vahvistuksen kaistanleveys on noin 1,7 Mhz, mikä tarkoittaa sitä, että 100 -kertaisella voitollamme voimme vain taata, että se toimisi hienosti (eli säilyttää haluamamme vahvistuksen) alle 17 Khz. (1,7 MHz / 100).

Alunperin aion saada tämän spektrianalysaattorin mittaamaan jopa 16-20Khz, mutta lopulta huomasin, että noin 8Khz on tarpeeksi hyvä näyttämään musiikkia. Tätä voidaan muuttaa korvaamalla LM358 w/ jotain äänitason luokkaa ja muuttamalla näytteenottotaajuutta. Etsi vain valitsemiesi op-vahvistimien vahvistuskaistanleveys.

Näytteenotto ja FFT

Käytetty FFT -toiminto on "fix_fft.c" -koodi, jonka monet hankkeet olivat omaksuneet, ja se on kellunut Internetissä jo vuosia. Kokeilin 16- ja 8 -bittistä versiota. Lopulta päädyin 8 -bittiseen versioon tarkoituksessani, en nähnyt suurta edistystä 16 -bittisessä versiossa.

Minulla ei ole hyvää ymmärrystä FFT -mekanismista, paitsi että se on aika -alue -taajuus -alueen muuntaminen. Tämä tarkoittaa sitä, että ääninäytteiden nopeus (aika) FFT -laskutoimintoon syöttämisen jälkeen vaikuttaa tuloksena saadun amplitudin taajuuteen. Joten säätämällä taajuuden näyteäänen perusteella voin määrittää taajuuskaistan tuloksena.

Ajastinta 0 CCR0 käytetään näytteenottoajan pitämiseen. Määritämme ensin kaistan taajuuden saavuttamiseen tarvittavat lukemat (vastaa DCO -kellotaajuuttamme 16Mhz). eli TA0CCR0 asetettu arvoon (8000/(BAND_FREQ_KHZ*2))-1; jossa BAND_FREQ_KHZ on 8 minulle. Sitä voidaan muuttaa, jos sinulla on parempi op-vahvistin ja / tai haluat sen olevan erilainen.

Taajuusalueet ja amplitudin skaalaus

Laiteohjelmisto prosessoi 16 kaistaa yhdellä pyyhkäisyllä, ja sieppauksen ajoitus tuottaa 500 Hz: n eron näiden pankkien välillä. LED -matriisissa on 8 saraketta ja se näyttää vain 8 kaistaa / amplitudia. Sen sijaan, että näytettäisiin yksi joka toinen kaista, käytetään epälineaarista taajuuskaistaluetteloa dynaamisempien taajuuskaistojen näyttämiseksi (musiikin kannalta). Luettelo sisältää 500 Hz: n raot alemmassa päässä, 1 KHz: n raot keskikaistoilla ja 1,5 KHz: n kaistat korkeimmilla.

Yksittäisten kaistojen amplitudi skaalataan 8 tasolle, joita edustaa vaakasuuntaisten "pisteiden" lukumäärä LED-matriisinäytössä. pisteitä. Käytetään eräänlaista logaritmista skaalausta, koska se edustaa parhaiten käsitystämme äänitasoista.

Siinä on sisäänrakennettu AGC-logiikka ja spektrianalysaattori yrittää pienentää amplituditasoja, kun edellisissä sykleissä on havaittu useita huipputasoja. Tämä tehdään liukuvan viivaimen vertailutaulukon avulla.

Vaihe 6: Laitteen käyttö

  • Lyhyt näppäimen painallus näyttötilassa kiertää pisteettömän, yhden pisteen, 2 pisteen ja 3 pisteen näytön.
  • Pitkä painallus siirtyy asetustilaan, seuraava pitkä painallus kiertää valikon läpi.
  • Valikkokohdat vaihtuvat 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate' kautta.
  • 'Hamming Window' -asetustilassa lyhyet painallukset kiertävät ilman vasaraa, vasara 1, vasara 2, vasara 3, pitkä painallus vahvistaa asetuksen.
  • Himmennysasetustilassa lyhyet painallukset kiertävät käytettävissä olevia kirkkaustasoja välillä 0 - 3, pitkä painallus vahvistaa asetuksen.
  • 'Näytteenotto / virkistystaajuus' -asetustilassa lyhyet painallukset kiertävät käytettävissä olevat virkistystaajuudet välillä 0-7, 0 tarkoittaa, ettei viivettä ole, pitkä painallus vahvistaa asetuksen.
  • Led -segmentin multipleksointi sisältää aikaviiveitä yksittäisten rivien kirkkauserojen kompensoimiseksi.