Autor Tema: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.  (Leído 22215 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
    Saludos a todos.   Antes que nada lamento no haber podido postear mas seguido pero he estado con mucho trabajo y ademas me mude de casa, no tenia internet etc etc.
En esta ocasion, les traigo un pequeño proyecto en el que he estado trabajando, y viendo que a pesar de que hay otros temas relacionados en el foro, no habia nada en concreto, aun...


Funciona con cualquier LCD alfanumerico.  Esta es la version 1, la version 2, incluira un control remoto para el winamp y se podra ver el nombre de la cancion en el display

    Se trata de un pequeño analizador de espectro de audio realizado con un PIC18F4525, aunque bien se puede usar el PIC18F4620 sin ningun problema.
Para tener las caracteristicas necesarias, fue necesario hacerlo en la serie 18, ya que todo el programa esta en assembler y la FFT requiere del uso del multiplicador, hacerlo en serie 16, haria interminable la FFT debido a las multiplicaciones en las operaciones mariposa.

   Otra razon sumamente importante, es el manejo y tamaño de la RAM, en la serie 16, es muy dificil implementar la FFT debido a la necesidad de apuntadores para los vectores de muestras real e imaginario, de hecho, la serie 16 solo cuenta con un solo INDF.

   Por ultimo, esta hecho en un 4525 ya que tiene casi 4kb de RAM, ademas, el ADC puede samplear hasta unos 110khz, en este proyecto, sampleo a 80khz, dos canales, asi, cada canal tiene efectivamente unos 40khz de sampleo, con lo cual el ancho de banda de audio se cubre (0 a 20 khz)

Esta hecho en un LCD 16 x 2. modelo ADM1602K-NSW-FBS, el cual lo pueden conseguir en México en este sitio    o en sparkfun
En especial, a este display que tiene un backlight blanco, le he cambiado el led por un LED RGB, de tal manera, que es posible obtener cualquier color que se desee, 8 bits por color = 16 millones de colores.


Caracteristicas:

Corre en un PIC18f4525, o PIC18F4620
12 mhz xtal en modo PLL para correr a 12 mips reales
FFT de 32 puntos en tiempo real
80k samples/seg, para tener dos canales (stereo) a 40k samples/seg cada uno.
el refresco de la pantalla es a 60FPS, de hecho, durante este tiempo, se realizan 10 FFTs completas y se obtienen sus picos
Picos de señal de audio o FFT para no perder detalles del audio
Modo lineal o logaritmico base (100) para graficacion de las muestras.

Les adjunto los diagramas, uno, es el basico, con el LCD sin modificar y el otro, viene con los pines asignados al LED RGB
El archivo *.hex lo pueden descargar mas abajo.
No importa que LCD usen, cualquier marca funciona. Si no tienen la version RGB simplemente coloquen una resistencia a positivo en el
backlight
Espero que les guste, saludos.

PD. En la medida que les agrade este post, y su participacion, subire el codigo de la FFT, en assebler puro, esta puede ser de 2 4 8 16 32 64 128 o 256 muestras, no importa, el algoritmo es universal y solo toma en cuenta el tamaño que se le especifique
Victor.

Diagrama para el modelo con modificacion del LED RGB

Mayor tamaño: http://a.imageshack.us/img691/5106/spectrumanalizerversionh.jpg


Diagrama para el modelo de LCD original

Mayor tamaño: http://a.imageshack.us/img691/5716/spectrumanalizerk.jpg
« Última modificación: 01 de Octubre de 2010, 05:28:43 por vixctor »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #1 en: 25 de Agosto de 2010, 10:43:57 »
Interesante proyecto! Felicitaciones por lo logrado!  :-/


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #2 en: 25 de Agosto de 2010, 11:14:28 »
Claro que nos interesa Vixtor!!!, al aguardo de tus comentarios, y felicitaciones por el trabajo  :mrgreen:

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #3 en: 25 de Agosto de 2010, 13:11:50 »
FFT en assembler puro... hay que verla para creerla  :shock:

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #4 en: 25 de Agosto de 2010, 13:31:59 »
Te quedo muy padre.

Interesante  8) 8)  :-/ :-/ :-/

Desconectado jhefren

  • PIC10
  • *
  • Mensajes: 42
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #5 en: 25 de Agosto de 2010, 14:25:32 »
Muchas gracias Victor

Seria bueno que hicieras un tutorial paso a paso para poder hacer una FFT de tal manera que uno pueda hacerla, puede ser una de 8 puntos o la cantidad que consideres necesarias para poder entender el proceso de la FFT dentro de los pic serie 18

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #6 en: 25 de Agosto de 2010, 14:29:07 »
FFT en assembler puro... hay que verla para creerla  :shock:

Lo mismo digo ... me imagino el pedazo de código  :shock:
El papel lo aguanta todo

Desconectado jhefren

  • PIC10
  • *
  • Mensajes: 42
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #7 en: 25 de Agosto de 2010, 14:34:49 »
Como te mencione en mi post lo primero es tratar de elegir el PIC, y en mi caso elegi el 18F4550 que es el que consegui en mi pais

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #8 en: 25 de Agosto de 2010, 18:46:02 »
   Ok, habria dos cosas pendientes entonces, preparar un tutorial acerca dela FFT, y modificar el codigo para el 4550.

jhefren: Se que el 4550 se mueve mas que estos que use, pero la vdd, no lo he usado en modo assembler, ya que este pic es para usb.  Se que tiene la memoria suficiente y los pines son casi iguales a excepcion del regulador de USB, el cual lleva un capacitor...

La pregunta entonces, es, si alguien me puede decir, si es necesario deshabilitar o cambiar algo en el pi18f4550, para que no entre en modo usb, y asi poder usar la RAM para este proposito. en modo ensamblador claro

Ahora que lo dices, estaria bien aventarme el tutorial de la FFT, tienen toda la razon, cuando la hice, me tarde semanas, la mayor parte tratando de entender de donde salian algunas coas como por ejemplo, de donde salian las muestras imaginarias, como es que va cambiando los coeficientes del twiddle factor, porque al final se tiene que hacer un shift reversal al orden de las muestras etc.   Esto no venia en los libros, ya que como muchos saben, estan llenos de formulas, sumatorias etc, pero nadie me dijo de donde salen todas esas partes, creo que, explicar una FFT de 8 muestras o de 16, seria mas ilustrativo.    La segunda parte que me tomo tiempo, fue hacer el codigo lo mas rapido y eficiente posible, de hecho, si termino ejecutandose mas rapido que los escritos por microchip o atmel.   El secreto fue hacer los calculos en 8 bits, no en 16 ni con esto del punto fijo o flotante etc.

Pero no solo fue, lo hago en 8 bits y a ver como sale, antes de hacerlo, precisamente me pregunte el porque lo hacian en 16 bits, y si era posible, tener los mismos resultados en 8 bits, la pregunta entonces fue cuantos bits de resolucion minimos eran necesarios para que funcionara, y la respuesta la encontre escondida en el proakis manolakis.   Resulta ser que hay una formula, la cual evalua la relacion señal/ruido de la funcion, si esta, es mayor a 60db para X numero de bits, la funcion funcionara con esos bits necesarios, por eso, se pudo hacer en 8 bits y funciona tan bien, que solo el error es de 1 lsb cuando hago la misma funcion vs mi HP48GX por ejemplo.

Desconectado JOJOJORGE5

  • PIC16
  • ***
  • Mensajes: 167
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #9 en: 25 de Agosto de 2010, 19:07:47 »
hola vixtor

sobre la configuracion del modulo usb pues si es que no lo inicializas tendras toda la memoria disponible y es nomas buena cantidad de memoria y puede correr a 12MIPS y el pin del regulador simplemente lo ignoras.

lo del tutorial de la fft seria muy interesante siempre quise saber como hacer esto que lograste.

ah y yo tambien tengo la hp48gx esas si que son eternas.

salu2:)

Desconectado jhefren

  • PIC10
  • *
  • Mensajes: 42
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #10 en: 26 de Agosto de 2010, 03:42:21 »
el factor twiddle es el coeficiente de la FFT 
y el shift reversal  se aplica cuando estas realizando el diezmado de la secuencia, de tal manera que si en decimal tenemos un 0001 despues el valor desplazado seria 1000 y asi con todas la secuencia

Desconectado mcpiebot

  • PIC10
  • *
  • Mensajes: 8
    • Ingeniero Maker
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #11 en: 27 de Agosto de 2010, 19:24:45 »
Es un ejemplo muy interesante de lo que con trabajo de investigación propio se puede lograr,
yo creo que mas que pedirle al buen Vixtor que modifique su codigo para que funcione en nuestros pics
o pedirle un tutorial, nos toca ponernos a investigar porque el ya nos demostró que si se puede,
entonces:

nosotros porque no vamos a poder!!

Así que toca hacer talacha y mas que escribir lineas y lineas de como lo haríamos nosotros,
toca demostrar con hechos (y código), que tenemos o no razón.

Saludos!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #12 en: 28 de Agosto de 2010, 01:22:41 »
Enhorabuena por el resultado, Vixctor, queda muy espectacular.
¿Compartirás el código fuente?
Gracias

Desconectado COMETINSONIC

  • PIC10
  • *
  • Mensajes: 7
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #13 en: 30 de Agosto de 2010, 13:29:04 »
 :shock:  wooow   que bonito te quedo  muchas felicitaciones

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Analizador de espectro de audio en LCD 16 x 2 para PIC18, terminado.
« Respuesta #14 en: 30 de Agosto de 2010, 13:38:47 »
Enhorabuena!!!
Te ha quedado estupendo!!!
Menudo trabajo matemático en assembler... :shock:
Salu2
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig