martes, 6 de septiembre de 2011

Analizador de Espectro de Audio con LCD 8Bit Freescale GT60

 Este es un desarrollo el cuál incluye una parte análoga y una digital.
Básicamente consiste en representar la potencia de la señal de audio separada en frecuencias, para esto necesitamos hacer un muestreo de la señal cumpliendo con el teorema del muestreo Teorema de muestreo de Nyquist-Shannon. Una señal de audio "audible"  para el oído humano se encuentra en la banda de 20Hz a 20Khz, en nuestro caso vamos a realizar un muestreo completo de dicha banda. Para esto la frecuencia mínima de muestreo debe ser 40KHz.

Utilizando un microcontrolador Freescale de la familia HCS08 (8bits) y lenguaje ANSI C, configuramos el conversor ADC interno para que tome una muestra cada 25uS (40KHz) y asi aplicar una FFT de 64 puntos en tiempo real (gracias a que el bus interno del microcontrolador corre a 20MHz), dando como resultado 32 niveles que representan las frecuencias desde 20Hz hasta 20KHz con un intervalo de 312.5Hz cada nivel. Como tenemos un display de caracteres de 16 x 2, realizamos un promedio del valor de los niveles contiguos para así obtener como resultado 16 niveles y poder representarlos como barras (caracteres personalizados en LCD de caracteres ver Tutorial).

Demos agradecimientos a Tom Roberts y Malcolm Slaney que publicaron este código de FFT en tiempo real en C el cual he ajustado para ser ejecutado en este microcontrolador.

Esquematico: (Click para agrandar)



 Video Funcionando:
Archivo S19 para grabar en el microcontrolador aqui

Archivo ZIP del código fuente del proyecto aquí
Pueden compartirlo y referenciarlo.

18 comentarios:

..:: Katte ::.. dijo...

Perdón por mi español. Que liberar el código fuente?

..:: Katte ::.. dijo...
Este comentario ha sido eliminado por el autor.
JuanFer dijo...

Hey, que buen proyecto! Felicidades, seguro es algo complejo! Soy un principiante con los micros de Freescale, será un agrado seguir tus publicaciones en este blog!

Candelectrónica dijo...

Muy pronto libero el código fuente.

cristian.henao dijo...

hola compañero, liberanos el codigo pa empezar a aprender a hacer cosas asi bien interesantes.

felicitaciones

MarcG dijo...

Mhh donde esta el tutorial para el LCD?
Es un hitachi verdad?

Gran blog

Candelectrónica dijo...

el LCD es uno con controlador Hitachi. En una próxima entrada publicaré el tutorial con librerías para el LCD.

Gustavo Fernández dijo...
Este comentario ha sido eliminado por el autor.
Gustavo Fernández dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

Hola! antes que nada felicitaciones por el proyecto :D
Queria preguntarte si el micro MC9S08GT60CFB es lo mismo y sirve para este proyecto?
Y con que programador grabaste el archivo al micro?
Saludos!

Candelectrónica dijo...

Hola!! si ese es el mismo micro. La programación la realicé con un programador depurador en tiempo real USB multilink. Lo encuentras en http://www.pemicro.com/products/product_viewDetails.cfm?product_id=15320137

O tambien te puedes fabricar un OSBDM que es OpenSource. Busca en los foros de freescale asi.

Juan dijo...
Este comentario ha sido eliminado por el autor.
Juan dijo...

Hola! Podrias postear el codigo fuente? Gracias!!

Candelectrónica dijo...

Publicado el código fuente....

chana dijo...

hola mi viejo exelente tu trabajo, me gusto mucho y quede sorprendido por la complejidad del codigo, pero esta buenisimo... un abraso y espero q publiques otros proyecto con asembler y freescale.

Mario dijo...

Como me encanta la tecnología suelo obtener las promociones para comprar distintas cosas nuevas que aparecen. De esta manera trato de obtener lo ultimo tecnológico que puedo. Hace poco pude hacerme acreedor de un samsung smart tv

Gustavo Fernández dijo...

Hola, como estas? Yo tengo un modelo de micro que es MC9S08GT60ACFBE. Me sirve igual para tu proyecto?
Saludos y felicitaciones! :D

Candelectrónica dijo...

Hola, que pena la demora de respuesta, nunca ví esta pregunta, cualquier micro de la familia HCS08 de freescale te sirve. Saludos.