Sommario:

Analizzatore di spettro audio Breadboard MSP430: 6 passaggi
Analizzatore di spettro audio Breadboard MSP430: 6 passaggi

Video: Analizzatore di spettro audio Breadboard MSP430: 6 passaggi

Video: Analizzatore di spettro audio Breadboard MSP430: 6 passaggi
Video: Audio Spectrum Analyzer 2024, Dicembre
Anonim
Image
Image
Analizzatore di spettro audio breadboard MSP430
Analizzatore di spettro audio breadboard MSP430

Questo progetto è basato su microfono e richiede componenti esterni minimi. Vengono utilizzate 2 pile a bottone LR44 in modo da poter far funzionare l'intera struttura entro i confini di una mini breadboard a 170 punti di fissaggio. ADC10, TimerA interrupt sveglia LPM, TimerA PWM come output, uso del pulsante, aritmetica intera sono usati e dimostrati.

Caratteristiche

  • Intero a 8 bit FFT 16 campioni a separazione di 500Hz
  • mostra 8 ampiezze di 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K non lineari
  • mappa logaritmica parziale per mostrare le ampiezze, limitata in quanto la risoluzione è stata ridotta per FFT a 8 bit
  • Il microfono a uno stadio TLC272 amplifica a 100 volte il guadagno di 100 volte (puoi sperimentare con 2 stadi)
  • finestra Hamming opzionale selezionabile dal menu
  • menu regolare 4 livelli di luminosità
  • menu regolare 8 livelli frequenza di campionamento/tempo di risposta
  • 2 x LR44 a bottone alimentate "a bordo"

Passaggio 1: acquisire parti

Quello che segue è ciò che è necessario per questo progetto

  • MSP430G2452 (il chip aggiuntivo di TI Launchpad G2 o qualsiasi MCU della serie MSP430G 4K a 20 pin)
  • una mini breadboard o perf board da 170 punti di collegamento per la costruzione di preamplificatori
  • TLC272 Doppio amplificatore operazionale
  • mini microfono elettrete
  • Resistori 47k (pull-up), 100k, 2 x 10k, 1k
  • 1 x 0.1uF
  • cavi per ponticelli
  • intestazione pin maschio a doppia fila da utilizzare per il supporto della batteria
  • 2 batterie a bottone LR44

Passaggio 2: layout dei componenti del piano

Il progetto prevede la realizzazione di una mini breadboard da 170 tie-point. La disposizione dei componenti è come mostrato di seguito. Di particolare nota è che la matrice LED 8x8 deve essere posizionata sopra l'MCU MSP430. Oltre ai componenti, ci sono anche i ponticelli di collegamento rappresentati dai caratteri "+------+".

G V+ Gnd (layout a 1 stadio) STIAMO UTILIZZANDO QUESTO LAYOUT +==================================== =================+ 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 |…… |.. | b6 a7 | | c0 e r1 condividono lo stesso pin e non mostrano | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | *possibile applicazione per avere c6 + c0 + r1 | | |V+ | | |G b6 b7 T R a7 a6 b5 b4 b3| | questo libererà b6 per l'orologio xtal 32khz | | | TLC272 | | | | | | | fuori - + G| | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2| | | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | | o||o oo. +--+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o-[10k]--o……… | |. o-[1k]o oo………._. | | o----[10k]-----------o……. o o | +================================================ ====+.1uF 100k 10k Pulsante ADC +-----------------+

stiamo usando solo uno stadio del TLC272

Passaggio 3: assemblaggio

Assemblea
Assemblea
Assemblea
Assemblea

Puoi iniziare a posizionare i componenti in base al layout della breadboard. Poiché è arte ASCII, potrebbe non essere molto chiaro. È possibile associare le foto in questo passaggio per identificare tutte le connessioni.

Bisogna fare attenzione a posizionare i chip IC. Di solito c'è un punto su uno degli angoli per indicare il pin 1 di un dispositivo.

Avevo usato cavi ethernet CAT5 e sono molto facili da lavorare su progetti breadboard. Se hai vecchi cavi CAT5, puoi tagliarlo e scoprirai che all'interno ci sono 6 fili intrecciati. Sono perfetti per le breadboard.

Passaggio 4: compilare e caricare il firmware

Il codice sorgente di solito risiede nei miei repository github.

Per questo particolare progetto, il singolo file sorgente C nfft.c è raggruppato nel mio repository di raccolte breadboard. Hai solo bisogno di nfft.c

Sto usando mps430-gcc per compilare il firmware ma dovrebbe andare bene con TI CCS. È possibile evitare tutti i problemi di installazione di IDE o compilatori accedendo al cloud TI CCS, che è un IDE basato sul web. Scaricherà anche il firmware sul dispositivo di destinazione.

Questo è un esempio di comando di compilazione con opzioni

msp430--gcc -Os -Wall -ffunction-sections -fdata-sections -fno-inline-small-functions -Wl, -Map=nfft.map, --cref -Wl, --relax -Wl, --gc- sezioni -I/energia-0101E0016/hardware/msp430/cores/msp430 -mmcu=msp430g2553 -o nfft.elf nfft.c

Sto usando un TI Launchpad G2 come programmatore per programmare l'MCU.

Passaggio 5: comprendere il circuito

Capire il circuito
Capire il circuito
Capire il circuito
Capire il circuito

Lo schema del circuito è presentato di seguito

MSP430G2452 o simile, necessita di 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 gain, larghezza di banda fino a 17Khz

* stiamo usando solo uno stadio del TLC272

._.

| MSP430G2452 | Vcc | | | +---------2|ADC0 |1--+ | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (vedi layout breadboard) |.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 \|-------- | |_| | | |_| _|_ _|_ _|_ _|_ /// /// /// ///

Guida LED

La matrice LED è di 8 x 8 elementi. Sono pilotati da 15 pin GPIO. Sono multiplexati con 8 righe e 8 schemi di colonne. Poiché ci sono solo 15 pin dopo aver utilizzato 1 pin per l'ingresso ADC, il multiplexing ha la riga 1 e la colonna 0 che condividono un singolo pin. Ciò significa che il particolare LED sulla riga 1 e sulla colonna 0 non può essere acceso. Questo è un compromesso in quanto non ci sono abbastanza pin GPIO per pilotare tutti gli elementi LED.

Acquisizione del suono

Il suono viene catturato tramite il microfono a condensatore integrato nell'Educational BoosterPack. Poiché i segnali del microfono sono piccoli, dobbiamo amplificarlo a un livello che l'MSP430 ADC10 può utilizzare con una risoluzione ragionevole. Avevo usato un amplificatore operazionale a due stadi per questo scopo.

L'amplificatore operazionale è costituito da due stadi, ciascuno con un guadagno di circa 100x. Ho dovuto adottare il TLC272 in quanto è anche una parte molto comune e funziona con 3V. La larghezza di banda del guadagno di circa 1,7 Mhz significa che per il nostro guadagno di 100x, possiamo solo garantire che funzionerà bene (cioè mantenere il guadagno che vogliamo) sotto i 17 Khz. (1,7 Mhz/100).

Inizialmente avevo intenzione di far misurare questo analizzatore di spettro fino a 16-20Khz, ma alla fine ho scoperto che circa 8Khz è abbastanza buono per mostrare la musica. Questo può essere cambiato sostituendo l'LM358 con qualcosa di audio-rated e cambiando la frequenza di campionamento. Cerca solo la larghezza di banda del guadagno degli amplificatori operazionali che scegli.

Campionamento e FFT

La funzione FFT utilizzata è il codice "fix_fft.c" che molti progetti avevano adottato, da qualche anno circola in internet. Avevo provato una versione a 16 bit e una versione a 8 bit. Alla fine ho optato per la versione a 8 bit poiché per il mio scopo, non ho visto grandi progressi sulla versione a 16 bit.

Non ho una buona comprensione del meccanismo FFT, tranne per il fatto che si tratta di una conversione da dominio del tempo a dominio della frequenza. Ciò significa che la velocità (tempo) dei campioni sonori, dopo l'alimentazione alla funzione di calcolo FFT, influenzerà la frequenza dell'ampiezza che ottengo come risultato. Quindi, regolando la frequenza per campionare il suono, posso determinare la banda di frequenza come risultato.

TimerA 0 CCR0 viene utilizzato per mantenere il tempo di campionamento. Per prima cosa determiniamo i conteggi di cui abbiamo bisogno per raggiungere la frequenza di banda (corrisponde alla nostra frequenza di clock DCO di 16 Mhz). cioè TA0CCR0 impostato su (8000/(BAND_FREQ_KHZ*2))-1; dove BAND_FREQ_KHZ è 8 per me. Può essere cambiato se hai un amplificatore operazionale migliore e / o vuoi che sia diverso.

Bande di frequenza e ridimensionamento dell'ampiezza

Il firmware elabora 16 bande con una scansione e il timing di acquisizione produce una separazione di 500 Hz tra questi banchi. La matrice LED è di 8 colonne e visualizzerà solo 8 bande/ampiezze. Invece di visualizzare una banda ogni due, viene utilizzato un elenco di bande di frequenza non lineare per mostrare le bande di frequenza più dinamiche (in termini di musica). L'elenco è di intervalli di 500 Hz nella fascia bassa, intervalli di 1 KHz nelle bande medie e bande di 1,5 KHz negli alti.

L'ampiezza delle singole bande viene ridotta a 8 livelli, che sono rappresentati dal numero di "punti" orizzontali sul display a matrice di LED. I livelli di ampiezza vengono ridotti tramite una mappa non lineare che traduce i risultati FFT in uno degli 8 punti. Viene utilizzata una sorta di scala logaritmica in quanto rappresenta al meglio la nostra percezione dei livelli sonori.

C'è una logica AGC incorporata e l'analizzatore di spettro cercherà di ridurre i livelli di ampiezza quando sono stati rilevati più livelli di picco nei cicli precedenti. Questo viene fatto con una tabella di confronto con righello scorrevole.

Passaggio 6: utilizzo del dispositivo

  • La pressione breve del tasto in modalità di visualizzazione consente di scorrere la visualizzazione senza punto, un punto, 2 punti e 3 punti.
  • Premendo a lungo si accede alla modalità di configurazione, la successiva pressione prolungata ruota attraverso il menu.
  • Le voci di menu passano attraverso 'Opzione finestra di Hamming', 'Dimmer', 'Frequenza di campionamento/aggiornamento'.
  • Nella modalità di impostazione 'Finestra Hamming', pressioni brevi alternano no hamming, hamming 1, hamming 2, hamming 3, la pressione lunga conferma l'impostazione.
  • In modalità di impostazione 'Dimmer', pressioni brevi fanno scorrere i livelli di luminosità disponibili da 0 a 3, una pressione lunga conferma l'impostazione.
  • Nella modalità di configurazione 'Campionamento/frequenza di aggiornamento', pressioni brevi consentono di scorrere le frequenze di aggiornamento disponibili da 0 a 7, 0 significa nessun ritardo, una pressione lunga conferma l'impostazione.
  • Il multiplexing del segmento LED include ritardi temporali per compensare le differenze di luminosità per le singole file.

Consigliato: