Analizzatore di spettro audio in tempo reale con PIC18F4550

analizzatore di spettro audio

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 128×64.

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

STAMPA

13 Comments

  1. ordigno 5 giugno 2011
  2. giuskina 12 febbraio 2011
  3. muldee 12 febbraio 2011
  4. Fabrizio87 12 febbraio 2011
  5. gaetech45 22 febbraio 2011
  6. linus 22 febbraio 2011
  7. SuperG72 13 febbraio 2011
  8. Alex87ai 11 febbraio 2011
  9. Fabrizio87 11 febbraio 2011
  10. muldee 11 febbraio 2011
  11. linus 11 febbraio 2011
  12. mingoweb 11 febbraio 2011
  13. alex_i0skk 17 marzo 2011

Leave a Reply