Sisällysluettelo:

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

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 vaihetta

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 vaihetta
Video: MSP430 Breadboard Audio Spectrum Analyser 2024, Marraskuu
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.

Suositeltava: