
Un'interessante analizzatore di spettro audio in tempo reale basato su un PIC18F4550. Questo progetto è stato pubblicato sulla pagina web di waitingforfriday.com e prevede la costruzione di un analizzatore di spettro audio in tempo reale (real-time audio spectrum analyser). Alla base di tale sistema troviamo un microcontrollore PIC18F4550 ad 8-bit.
L’intera routine di analisi dello spettro, una 16-bit Fast Fourier Transformation (FFT), è stata scritta completamente in linguaggio C. I risultati di tale analisi vengono poi riprodotti da un LCD grafico 128x64.
Come primo passo bisogna riadattare il segnale audio. Il convertitore analogico-digitale da 10-bit del PIC18F4550 può digitalizzare segnali che variano da 0 a 5V. Il segnale audio risulta di 1V picco-picco mediato a zero.
Waitingforfriday.com suggerisce quindi di sommare al segnale tempo-variabile dell’audio una tensione continua di 2.5V di offset. Il segnale prodotto risulta quindi mediato a 2.5V, come in foto.
L’operazione di spostamento del punto comune viene effettuata da un amplificatore operazionale LM386-1, aggiungendo all’uscita un filtro RC (passa-basso) con una frequenza di taglio di 10KHz.
Di seguito l'intero schema circuitale firmato waitingforfriday.com:
Il firmware del PIC18F4550 si divide in 4 parti principali:
ADC Sampling:
L’ADC esegue un loop intero in circa 32mS con una routine di sampling di circa 50uS.
16-bit FFT:
Routine puramente matematica trovata sul web.
Calcolo del valore assoluto
La FFT produce ben 32 numeri complessi che devono essere rielaborati per ottenerne il valore assoluto.
La Fast Fourier Trasformation e il calcolo del valore assoluto impiegano per un loop completo ben 70mS
LCD:
L’ultima parte è invece dedicata a visualizzare i valori assoluti sul display grafico con un aggiornamento pari a 45mS.
Ogni barra grafica visualizza un certo range di frequenze:
1 : 312.5 - 625
2 : 625 - 937.5
3 : 937.5 - 1250
4 : 1250 - 1562.5
5 : 1562.5 - 1875
6 : 1875 - 2187.5
7 : 2187.5 - 2500
8 : 2500 - 2812.5
9 : 2812.5 - 3125
10 : 3125 - 3437.5
11 : 3437.5 - 3750
12 : 3750 - 4062.5
13 : 4062.5 - 4375
14 : 4375 - 4687.5
15 : 4687.5 - 5000
16 : 5000 - 5312.5
17 : 5312.5 - 5625
18 : 5625 - 5937.5
19 : 5937.5 - 6250
20 : 6250 - 6562.5
21 : 6562.5 - 6875
22 : 6875 - 7187.5
23 : 7187.5 - 7500
24 : 7500 - 7812.5
25 : 7812.5 - 8125
26 : 8125 - 8437.5
27 : 8437.5 - 8750
28 : 8750 - 9062.5
29 : 9062.5 - 9375
30 : 9375 - 9687.5
31 : 9687.5 - 10000

Appassionatao di PIC, è da tempo che cercavo un progetto di un’analizzatore di spettro come questo, magari con anche interfaccia USB. Interessante!! Interessante anche il sito http://www.waitingforfriday.com dal quale possono essere tratti altri progetti utilizzanti sempre i microcontrollori della serie PIC18F…di certo, con un DSP poteva essere esteso il range di frequenza del segnale d’ingresso, ma è l’aspetto didattico che conta!
trovo interessante soprattutto vedere come si implementa nua FFT a livello software.
Se si unisce questo analizzatore di spettro ad un equalizzatore grafico a 31 bande (le stesse dell’analizzatore) e a un microfono con risposta lineare tra 20Hz e 20kHz si può realizzare un perfetto sistema di taratura per l’impianto di diffusione di un piccolo home studio o un project studio.
La catena audio sarebbe:
– rumore bianco generato dalla daw (pc, registratore multitraccia, ecc.)
– uscita della daw in ingresso nell’equalizzatore
– uscita dell’equalizzatore in ingresso ai monitor
– microfono piazzato nel punto d’ascolto che raccoglie ciò che è emesso dai monitor
– uscita del microfono nell’ingresso dell’analizzatore di spettro
Il rumore bianco è caratterizzato dall’avere ampiezza costante su tutto lo spettro quindi, in condizioni normali l’analizzatore dovrebbe visualizzare tutte le bande uguali tendenti, come altezza, agli 0dB; qualsiasi deviazione da questa condizione deriva dalla modifica del segnale apportata dai monitor, dalla stanza di ascolto e dal microfono (se non ha risposta lineare nello spettro dell’udibile).
Attraverso l’equalizzatore è possibile enfatizzare o attenuare le frequenze deviate fino a ricondurre tutte le bande dello spettro alla linearità.
Spero di essere stato chiaro 🙂
ma si può fare il porting verso un altro PIC con minori numero di uscite, 32 bande sono davvero tante, sarebbe anche interessante farne uno a 16 canali stereo per gli impianti HI-FI.
Certo… Questi tuoi consiglio sono molto utili per realizzare un progetto di qualità!
in parole più semplici può essere definito un equalizzatore?!? no vero
Hai perfettamente ragione, grazie della correzione. 🙂
non è un equalizzatore,
un equalizzatore è un dispositivo che filtra il suono o segnale,
questo dispositivo permette solo di visualizzare lo spettro di frequenza.
il progetto citato come l’intero sito.
Grazie per la segnalazione!
gaetech45
Quale sarebbe l’utilita di analizzatore di spettro?
alcuni installatori di impianti audio per discoteche analizzano l’impianto installato facendo le necessarie correzioni tramite equalizzatore. Ho visto usarli da installatori della Klipsch.
Realizzato da un mio alunno completo di PCB e programmazione usando un programmatore JDIM home made. Il ragazzo è entusiasta perché il funzionamento è ottimo.
ne consiglio la realizzazione anche a scopo didattico, è ottimo per capire come si agisce e ragiona nella gestione di segnali analogici con i PIC, vederne il risultato e vedere cosa si può fare di non banale con un PIC rende l’alunno (interessato) concretamente consapevole delle potenzialità di questi dispositivi.
Grazie della segnalazione!
Partire da circa 312.4 (prima banda) come limite inferiore rende la visualizzazione poco utile visto che anche nei più scarsi analizzatori cioè a 10 bande , si parte da almeno 30 HZ.
Come si può fare, fermo restando le 31 bande, a partire da 30Hz e non da 312Hz centrando le bande su 1/3 di ottava?