# Analizador de espectro con PIC



## EzEkieL (Jul 27, 2009)

Segun don nyquist, para cubrir el rango de frecuencia audible se debería samplear a 40KHz. (me gustaría hacerlo a 44100 como las placas de audio) Lamentablemente mis conocimientos actuales llegan hasta ahi no mas.

Obviamente usar un PIC... tal vez el 16F873.






Los invito a colaborar con cualquier aporte, yo estoy dispuesto a ir ensayandolos a todos en multisim y mplab. Una vez listo hacer el PCB.

No les parece mas lindo poner eso de vumetro? que una linea de leds que prenden a media asta dando un aspecto no muy agradable. 

Saludos


----------



## lucassiglo21 (Jul 27, 2009)

si, a mi tambien me gustaria hacer esto, habria que ver de como se hace el algoritmo fft


----------



## EzEkieL (Jul 27, 2009)

Perfecto Lucas... Tambien eh visto que lo hacen con DFT (Discrete Fourier Transform) peeero, que es en si? yo tengo una vaga idea, sin embargo creo que debemos saber bien que es eso antes de meter mano en algun algoritmo 

Alguien nos da una mano explicandonos que es FFT y DFT ?


----------



## lucassiglo21 (Jul 27, 2009)

yo tengo menos idea que vos
se lo que hace, hay que obtener los armonicos de una serie de muestreos de una determinada onda, ahora, como hacer eso ni idea


----------



## Chico3001 (Jul 27, 2009)

La transformadorrmada de furier solo se aplica a ecuaciones matematicas en señales que se repiten con el tiempo, cosa practicamente imposible en una aplicacion de la vida real, asi que algun matematico encontro una solucion para poderlo aplicar en sistemas "discretos" asumiendo que la forma de onda se repetiria en algun momento en el infinito, con esto nacio la transformadorrmada discreta de fourier

La transformadorrmada rapida de fourier es una adaptacion para que un microprocesador pueda hacer el calculo de forma rapida y precisa en el analisis de señales, practicamente todas las aplicaciones que requieren de una transformadorrmada usan la transformadorrmada rapida

http://es.wikipedia.org/wiki/Transformada_rápida_de_Fourier


----------



## lucassiglo21 (Jul 27, 2009)

y como se aplica eso a un software de un pic?


----------



## Chico3001 (Jul 27, 2009)

Microchip tiene la nota de aplicacion 542 que dice como implementar la transformadorrmada rapida de fourier en un PIC

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011084


----------



## EzEkieL (Jul 27, 2009)

Estoy en lo cierto si digo que transformadorrmada de Fourier es lo mismo, o similar, a la busqueda binaria?

La busqueda binaria, segun tengo entendido, conciste mas o menos en ir dividiendo en dos un grupo de N elementos, e ir quedandose por el grupo que SI tiene nuestra posicion de interes. Asi hasta obtener un grupo de 2 elementos y por ultimo obtener nustra posicion deseada. Este proceso reduce las cantidades de "preguntas" al minimo que debo hacer para encontrar la posicion deseada.

Ahora lo que no logro entender, es como se aplica el proceso de FFT , DFT ( si es valido tambien busqueda binaria ) a buscar los armonicos de una señal de audio.

Mi cerebro sigue pensando que hay aplicar filtros, y sobre estos filtros averiguar la magnitud.

Filtros digitales?


----------



## soschorni (Jul 27, 2009)

Yo todabia no entiendo como funciona un pic jajaj... es algo que me supera, me pongo a pensar como funcionan y ni atras ni pa delante. Me descargue el manual del PIC16f84 y no entiendo ni J.
Si alguien me puede explicar lo basico del pic, y algunas funciones y todo eso, tengo mucha caeza para pensar el programa para flashearlo. Lo unico que necesito es alguien que me de el empujon.


----------



## EzEkieL (Jul 27, 2009)

soschorni dijo:
			
		

> Yo todabia no entiendo como funciona un pic jajaj... es algo que me supera, me pongo a pensar como funcionan y ni atras ni pa delante. Me descargue el manual del PIC16f84 y no entiendo ni J.
> Si alguien me puede explicar lo basico del pic, y algunas funciones y todo eso, tengo mucha caeza para pensar el programa para flashearlo. Lo unico que necesito es alguien que me de el empujon.



Yo tengo un libro en castellano, que ahora ahora no me acuerdo bien el nombre, pero explica re bien todo.
Ni bien llego a mi casa te paso el nombre asi te lo bajas. Seguro debe estar por ahi dando vueltas.


----------



## Chico3001 (Jul 27, 2009)

soschorni dijo:
			
		

> Yo todabia no entiendo como funciona un pic jajaj... es algo que me supera, me pongo a pensar como funcionan y ni atras ni pa delante. Me descargue el manual del PIC16f84 y no entiendo ni J.
> Si alguien me puede explicar lo basico del pic, y algunas funciones y todo eso, tengo mucha caeza para pensar el programa para flashearlo. Lo unico que necesito es alguien que me de el empujon.



Intenta leer estos temas:

https://www.forosdeelectronica.com/f24/asm-desde-0-asm-desde-cero-16898/
https://www.forosdeelectronica.com/f24/curso-completo-microcontroladores-pic-10113/
https://www.forosdeelectronica.com/f24/curso-programacion-c-microcontroladores-pic-10796/


----------



## pepilve (Jul 27, 2009)

le dejo 2 links sobre FFT

http://cactus.fi.uba.ar/6617/clases/fft.pdf

http://ipdps.cc.gatech.edu/1996/PAPERS/S19/HE/HE.PDF

El primero es la clase que se preparo un profesor mio para explicar el algortimo FFT, la idea era implementarlo en VHDL, el segundo es un paper sobre radix 2^2 para implementar la FFT.
Me parece mas facil la radix2 que es la se implementa en el primer link. Siempre tene en cuenta que la cantidad de puntos que tenes que tomar para implementar radix2 debe ser potencia de 2.
Saludos


----------



## lucassiglo21 (Jul 27, 2009)

voy a investigar eso


----------



## EzEkieL (Jul 29, 2009)

Ayer estaba hablando con un ing. Electronico amigo y me dijo:
"Yo tambien estaba armando eso, estube 1 semana con la rutina de DFT... es bastante lio. Al otro dia me baje la implementacion AN542 lo adapte.. y en 1 dia lo tenia andando. jajaja. Usa eso que anda perfecto, con un micro a 20MHz podia hacerle muestreos alrededor de 40ms" 

Estoy hasta las manos con el laburo.
Lo voy a tener que postergar un tiempito.
Saludos.


----------



## Fhrozen (Oct 7, 2009)

Tios, y que paso con el proyecto, parecia interesante pero nadie lo sigue.
Bueno de mi parte tuve revisando un poco la FFT y la TDF y buscando en mis cuadernos viejos encontre q la la FFT sirve para determinar los coeficiente de la TDF, luego comence a aplicar un poco de matematica y toda esa vaina, y me tope con un gran dilema, yo solo quiero determinar la TDF para ciertas frecuencias ( las 10 de un espectrograma o 20 ya hasta 30) pero en la parte de la TDF solo se determina k y k no recuerdo como relacionarlo con f en tiempo continuo, aparte de eso encontre q la mejor forma para hacer un espectrograma es con la TF de tiempo reducido pero ya ahi entra un poco de wavelets y no se si el procesador sera capaz de eso, 

Bueno si alguien tiene algo un poco mas definido y por ahi talvez uno codigo para determinar la amplitud de una frecuencia, de una senial muestreada (audio) se los agradeceria muxo

Fhrozen


----------



## ori69g (Feb 10, 2010)

bueno yo estuve haciendo hace un buen tiempo un analizador 
q ya lo termine, acordadodeme utilice el 16f877a q en su tiempo fue muy bueno 
pero creo q en un determinado tiempo se quedo muy escazo de memoria y de velocidad, lo mejore implementando un 18f4550 mucho mejor pero aun no me convencio, despues implemente un dspic 30f q ese si es para hombres muy bueno la verdad, y con una pequea ventaja q ya tiene la trasformada de fourier ademas un tiempo de oscilacion muy superioir es decir excelente para esta aplicacion
se los dejo a su consideracion dspic


----------



## Tratante (Sep 10, 2010)

Hola?... se puede?

Me interesa el tema que estan desarrollando; primero las definiciones...

"Los analizadores de eléctricos utilizan generalmente la transformada rápida de Fourier (FFT) como método para transformar una forma de onda determinada, en sus componentes dentro del espectro de frecuencias." (wikipedia)

Dudas

- Que ancho de banda deberia cubrir?
- Que tipo de acondicionamiento requiere la señal a analizar?
- Tasa de muestreo de la señal?
- Representacion del espectro en tiempo real?
- Como debe mostrar el espectro analizado? Matriz de leds, display LCD
- Es necesario conocer el proceso matematico FFT o nos buscamos algun algoritmo ya implementado?

Saludos


----------



## Tratante (Sep 13, 2010)

Bien, pienso que este tema esta interesante para desarrollarlo, quien mas lo sigue?

Saludos


----------



## DSP (Sep 13, 2010)

A mi tambien me interesa. Y segun lo que leo, se trata de un analizador de espectro para audio y doy las siguientes sugerencias:

- Que ancho de banda deberia cubrir?    R= 20Hz a 20kHz
- Que tipo de acondicionamiento requiere la señal a analizar?  R= No estoy seguro
- Tasa de muestreo de la señal?     R= 44100 Hz
- Representacion del espectro en tiempo real?   R= Si
- Como debe mostrar el espectro analizado? Matriz de leds, display LCD     R= Matriz de leds
- Es necesario conocer el proceso matematico FFT o nos buscamos algun algoritmo ya implementado?   R= De preferencia conocer el processo para comprender lo que se haga.

Son mis sugerencias.
No soy experto en procesamiento digital, pero estoy dispuesto a colaborar con algoritmos y circuitos.
¿Que dicen ustedes?


----------



## Tratante (Sep 14, 2010)

Hola DSP

He estado pensando y creo que deberiamos optar por un display LCD, el espectro resultante creo que necesita un poco de resolucion, con matriz de led limitariamos en mucho la presentación. Me gustaria conocer tu opinion.

He estado leyendo algunos articulos sobre FFT y parece ser que a mayor numero de muestras se logran mejores resultados; si muestreamos a 44100hz necesitaremos una buena cantidad de memoria en donde guardar los datos, se guardan en formato radix (esto aun no lo he estudiado), en un segundo de muestreo obtendremos 44,100 valores; aplicar el algoritmo FFT y mostrar el resultado en el exhibidor y repitir nuevamente.

tareas a desarrollar (sugerencia):

1. Describir a manera de algoritmo el proceso FFT para entenderlo
2. Diseñar el acondicionador de una señal de audio, es decir, hacerl un circuito basado en amplificador operacional para que la señal tenga los niveles utiles para ser procesada por un proceso DAQ (A/D)
3. Analizar los datos obtenidos y ver como se usaran en el algoritmo FFT
4. Cuanta memoria necesitamos para almacenar los datos?
5. Se necesita memoria temporal para los calculos?
6. Analizar los PIC en el mercado, de acuerdo a sus prestaciones, seleccionar uno que permita realizar el proceso de FFT

Que mas?

Saludos


----------



## Beamspot (Sep 14, 2010)

Un par de consejos:

1º - Usar un número de muestras que sean potencia de 2 (1024-2048-4096).
2º - Usar coma fija y no flotante.
3º - Olvidarse de los PIC de 8 bits y empezar con un dsPIC, o mejor, ARM cortex M3. El STM32 ya tiene librerías de FFT.
4º - No pasar de 1024-2048 muestras.
6º - Aprender a programar seriamente, empezando por cosas sencillas. No se empiezan las casas por el tejado.


----------



## DSP (Sep 14, 2010)

Tratante: ok. estoy de acuerdo. Utilizemos una lcd grafica. En cuanto al micro a utilizar, creo que debemos aceptar que es necesario utilizar dspic u otro micro mas potente. En lo personal solo he llegado hasta los pic18, pero me parece buen momento para avanzar otro peldaño hacia los dsp (que ironia "DSP" no ha utilizado DSPs solo simulaciones en matlab!! jeje). Me gustaria, si alguien tiene experiencia en procesamiento digital, nos recomendara un micro facil de conseguir y adecuado. Me viene en mente la Beagle board y así mato varios pajaros de un tiro.

Beamspot: gracias por los consejos, solo tengo una duda: ¿no se te hace poco 2048 muestras para procesar audio? Con respecto a Aprender a programar seriamente, Creo que estoy consciente de la complejidad que estamos abordando, pero convoco a superarla con un buen trabajo en equipo.

Voy a investigar sobre diferentes opciones de los micros.
Ojala y se unan mas compañeros.

Saludos a todos


----------



## Tratante (Sep 14, 2010)

Que tal DSP, beamspot

Si consideran que los temas a desarrollar estan mas o menos completos es cosa de tomar alguno (el que gusten) y empezar.

beamspot, aun no sabemos si el algoritmo es complicado, si gustan voy analizando el procedimiento FFT y elaboro el algoritmo en español estructurado. De ahi podremos juzgar el tipo de microprocesador requerido.

Como ven si vamos elaborando un documento para que vaya tomando forma este proyecto?

Saludos


----------



## Beamspot (Sep 15, 2010)

La Beagel board, o similares (como la IGEP) llevan un ARM grande con DSP incluido. El funcionamiento interno del DSP viene que ni al pelo para los algoritmos típicos de FFT.

Por otro lado, estoy haciendo testeo de sonido con FFT's sobre 8196 puntos con un PC, y necesito dicha resolución para calcular con precisión la frecuencia de los picos. Pero para la representación gráfica, con 1024 puntos tenemos una escala de 512 frecuencias, que ya ocupa una buena parte de la pantalla de un monitor normal.

Una buena lectura es el 'numerical c receipes', gratuito en inglés por la red, donde hay implementaciones de FFT en C, aunque no me acaban de convencer. El algoritmo en sí no es excesivamente complicado, pero tiene muchos cálculos a realizar dentro de un bucle, y eso es algo que suele enlentecer mucho las rutinas, ya que los micros habituales no están muy pensados para este tipo de operaciones.

Aún así, para el manejo real de la FFT, hace falta algo más de procesado sobre los resultados de la FFT pura. Ésta devuelve números complejos que generalmente se suelen convertir a módulo (lo normal es expresarlo en dB) y fase (grados). Eso implica el uso de logaritmos y arcotangentes, ambos cálculos muy pesados para la CPU. Además, según mi experiencia, un filtrado mínimo sobre el resultado es importante para una buena reproducción gráfica, así como para cierto tipo de trabajo/procesado.

En mi caso, uso una ventana de Hamming sobre los datos en bruto, y un filtrado del módulo por Savitzky-Golay. 16 bits, ya que 8 no son suficientes. Representación en dB.

De todo ello, rápidamente deducí que hace falta un micro de 16 o más bits para poder trabajar cómodamente. El uso de múltiples acumuladores para mantener el índice, los contadores y los demás valores dentro del micro sin acceder a RAM acelera el proceso. Unidades MAC son fenomenales y aún más ventajosas.

Realizar un documento es español con todas esta partes claramente separadas y explicadas puede ser interesante y formativo.


----------



## Tratante (Sep 16, 2010)

Que tal...

Encontre un algoritmo escrito en C++, me di a la tarea de convertirlo a VB.net; le hice ajustes menores a la parte de la visualizacion.

Se los dejo para que lo vayan analizando, si tiene algun falla avisenme para revisarlo.

El original escrito en C++ esta en howtofft_src.zip
El convertido a VB.Net esta en FFTnet.zip

Saludos

Hola

Encontre este interesante articulo, es importante que lo lean.

http://www.piclist.com/techref/microchip/fft/picspect.htm

Saludos

Algo mas... despues de leer este articulo aprendan este apellido; LACOSTE


----------



## Tratante (Sep 23, 2010)

Creo que el tema quedo en el olvido  =(

Si alguien lo sigue avise por favor.

Saludos


----------



## DSP (Sep 24, 2010)

Lo siento tratante, no me he podido dar el tiempo necesario pero, si que me interesa.
Este fin de semana me pongo otra vez en frecuencia. saludos


----------



## DSP (Sep 29, 2010)

Hola compañeros. Revise los archivos que pusiste tratante. Al parecer, el algoritmo no es tan complicado. Y si un pic17 sirve, ¿porque no utilizar un PIC18F452? Lo que me preocupa es que consecuencias se pueden tener al utilizar un ADC de 10 bits para audio. En lo personal, no requiero tanta resolucion en el analizador de espectro. Quisiera empezar con algo sencillo.
¿que opinan?


----------



## Beamspot (Sep 29, 2010)

Si lo que pretendes es hacer un analizador de espectro que mire unas pocas frecuencias discretas (pongamos 16, 32, 64) y donde el valor no necesite ser de 16 bits, no deberías tener muchos problemas.


----------



## DSP (Sep 30, 2010)

> Si lo que pretendes es hacer un analizador de espectro que mire unas pocas frecuencias discretas (pongamos 16, 32, 64)



Realmente en eso pense en un principio (unas 16 bandas), incluso pense en hacerlo por medio de filtros pasabanda FIR o IIR, pero, sea cual sea el algoritmo, ya empeze a armarme un circuito con un pic18f452 y estoy pensando en ponerle una memoria ram de 32k por si fuera necesario. Tambien veo como opcion consegur un ADC serial de audio con interfaz i2s. O mejor aun, hacer pruebas con las dos opciones. Mi idea es ir de menor a mayor.

Por cierto, alguien sabe donde conseguir ADCs de audio en Mexico?


----------



## Beamspot (Sep 30, 2010)

Cuidado con el I2S. Creo que hacer ambas cosas con un pic18f (es decir, usar el I2S y la FFT a la vez) no va a ser posible. Así mismo, cuidado con la FFT: ésta es lineal en frecuencia y amplitud, mientras que en audio se suele trabajar en logarítmico.

Para 16 bandas a frecuencias repartidas logarítmicamente igual te sale más a cuenta un banco de filtros IIR (creo que hay uno muy bueno que 'cuesta poco' en términos de computación, pero no recuerdo el nombre) que una FFT.

Para usar I2S, igual te conviene otro micro más grande que tenga el I2S por HW. No se si los dsPIC los tienen. Seguro que los AT91SAM7 (ARM7TDMI, algo no muy nuevo) sí que los tienen, así como potencia de cálculo de sobras, pero eso ya son 'palabras mayores', nada sencillos (lo sé porque he trabajado con estos últimos, el AT91SAM7S64 y el AT91SAM7X256).


----------



## vicente0013 (Oct 2, 2010)

Hola a todos me integro a este post, muy interesante e leido cada una de las opiniones de los señores y se me hace muy interesante, me gustaria aportar algo a este post pero estoy todabia en frecuencia con ustedes, pero creo *QU*e ahi muchas formas de hacer un FFT pero depende la aplicacion es la herramienta pero no esta de mas empezar por algo sencillo como dice un compañero,, seguire atento a este tema y cualquier cosa que descubre sin lugar a dudas lo publicara, yo actualmente estoy en desarrollo de proyectos y me topo con un proyecto *QU*e ahi *QU*e aplicar la FFT y pues a investigar a parte *QU*e me gusta me pagan que buen trabajo no creen, a*QU*i andamos saludos... ing. electroni*C*a


----------



## Tratante (Oct 13, 2010)

Hola a todos

En el material que envie se tiene codigo (ver la liga insertada) y un articulo de la revista Circuit Cellar en donde se comenta la realizacion del proyecto.

Este LACOSTE es un tipo avanzado y creo que su proyecto gano un reconocimiento.

Revisenlo con calma, solo es cosa construir, quizas adaptar el codigo para que corra en algun otro procesador; en realidad tiene todo, captura el sonido que se analizará, obtiene las frecuencias involucradas y las muestra en un monitor VGA sin mas circuito que el mismo PIC.

Manos a la obra.

Saludos cordiales


----------



## nicolas8702 (Feb 28, 2011)

hola a todos este era el  foro que necesitaba ya que tambien me encuentro desarrollando  un analizador de espectro con un pic segun  lo que he leido  aqui lo que hacia falta era pasar la fft  en terminos de seno y coceno para poder aplicarla a un pic jeje bueno yo tengo un algoritmo en matlab que me gustaria que vieran  ya esta en senos y conenos solo queda aplicarlo a un pic  no se si alguno puede probar esto de todos modos ahi les  subo el archivo para que lo prueben esta hecho en matlab y corre bien ojo para que salga bien vacno coloquenle una fracuencia de mustreo 10 veces mayor a la frecuencia a mirar


----------



## Beamspot (Mar 1, 2011)

Mucho me temo que los PIC no pueden ejecutar el Matlab.

En mi opinión, el procesado matemático con microcontroladores, aunque sean 'grandes', es muy, pero que muy diferente de lo que se hace en los PC's. En primer lugar, hay que evitar todo cálculo supérfluo (como senos y cosenos), y poner todas las constantes en una tabla precalculada. En segundo lugar, mirar de trabajar en 'coma fija' si es posible, o mejor incluso con 'enteros' (que en realidad, son lo mismo), tratar de reducir las divisiones, y dejar para lo mínimo imprescindible, la coma flotante y cualquier otra operación diferente de sumar, restar, o multiplicar.

Y ante la duda o el más mínimo atisbo de problema, ir a parar a algo como los Cortex M3, o mejor aún, los nuevos Cortex M4 con extensiones en coma flotante y añadidos DSP por HW. Aunque con un PIC de 8 bits se pueden hacer cosas, realizar este tipo de cálculos empieza a requerir micros más poderosos (dsPIC, ARM's, etc).


----------



## cristian_elect (Mar 1, 2011)

Con el algoritmo split radix se puede en un pic eso se vio en el foro todopic.
Con un atmega es mas rapido con 16 muetras lo realiza en 1.78ms a 8MHZ.


----------



## nicolas8702 (Mar 1, 2011)

bueno ps yo estoy pasando el algoritmo a un pic18 ylo voy a montar a ver que tan rapido es aa y por sierto beamspot lo de las costantes es una buena idea si esta cosa funciona les comentare


----------



## renedenix (Mar 3, 2011)

Conozco algo del tema, primero tienes que tomar una porcion de la onda, quiza como decian 1024 muestras en 8, 10 o mas bits
Luego, es una simple solucion de un sistema de 1024 equaciones lineales con 1024 incognitas, allí es donde tenemos que expresar la onda como una suma vectorial de 1024 vectores ortogonales, donde cada uno aporta un valor a la onda, luego sigo, tengo que irme


----------



## Mrjaniitho (May 17, 2011)

hola... soy nuevo aca... estoy interesado en realizar un analizador de especto en una matriz de 10x5
si me ayudan...


----------



## fernandob (May 17, 2011)




----------



## asherar (May 19, 2011)

Eso vendria a ser un analizador analógico no ? 
Pero, como lo conectás al Pic, fer ?


----------



## fernandob (May 19, 2011)

a mi me dio la impresion de que era aire comprimido......no se si lo malinterprete.
pero me parecen bolillas de tergopor o algo asi y abajo mangueras que le tiran aire comprimido.

hablando de aire comprimido..... vieron los videos de FESTO ?? 

igual, a lo que iba yo con ese video es que mas que hacer un analizador de espectro (otro mas !!! ) que un poco mas lo sacan por 2 mangos de un desarme de otra cosa, pueden pensar mas que en el lio de hacer el analizador en ver como presentan con "otra cosa" .......algo mas imaginativo.
se que son lindisimas las pantallas con las barras moviendose.......
pero bueno, a veces uno puede sorprenderse con imaginacion.


----------



## gord16 (May 19, 2011)

si quieren hacerlo con pic pero a la vez con lm391x visiten esta pagina:http://www.sergiosarmiento.com.ar/


----------



## fernandob (May 19, 2011)

que lindo en verdad.........pero un desconche de laburo .......meses y meses de laburo para hacer eso......hay que tener la chispa suprema para dedicar ese tiempo .


----------



## nicolas8702 (Jul 14, 2011)

hola siguiendo el foro he logrado hacer un algoritmo para la fft en un dspic30f4013 el analizador funciona aunque es un poco lento ya que hay algunas partes del codigo que se pueden remplazar con constantes  como lo son el calculo de aux1 y aux2 (mirar el programa) estas se pueden colocar como constantes en la ram lo que agilizaria muchisimo el proceso ,  aun no hago esto de sacar como constantes pero aqui les dejo el programa , el circuito funciona con una lcd grafica con chip ks0108 ahi en el programa se especifican los pines que se utilizan para conectar dicha lcd espero sirva el aporte

aqui esta el programa , esta compilado en c30


----------



## jcristhian_1 (Sep 3, 2011)

Aqui otro analizador de espectro con GLCD el programa esta hecho en Microbasic DSPIC y usa un glcd de 128x64 KS107/8, el codigo es un codigo de ejemplo del mikrobasic, el espectro se muestra en la mitad izquierda de la pantalla, las conexiones son como en la figura


----------



## bondadoso (Sep 20, 2011)

en labview se puede implementar fft y su inversa de forma sencilla, mi interes es hacer un pequeño osciloscopio con analizador de espectro, de unos 8 mhz con un adc externo y un pic32 y comunicacion ethernet 100mps. en un tiempo les posteare los avances.


----------



## nicolas8702 (Oct 1, 2011)

me parece rebueno tu proyecto bondadoso yo estoy haciendo un proyecto parecido este es un osiloscopio que toma muestras de 5Mhz con un adc externo de 8bits con un dspic y un pic18 implementando una ram externa que es lo que me ha dado problemas ¿alguien ha manejad una ram paralela si saben como avisan por fa?

un saludo


----------



## RockKaiser2 (Oct 2, 2011)

Saludos compañeros! Tengo una situación para plantear, que de solucionarse, podría significar un gran avance pionero en el uso de LabVIEW y adquisición de datos!

Resulta que estoy realizando un proyecto de grado en el cual debo tomar una señal de audiofrecuencia con el ADC (AN0) del PIC18F4550, enviarlo por USB BULK TRANSFER a la PC, donde LabVIEW toma el dato mediante el subVI picusb.vi, y de ahí le aplica el Análisis espectral para así poder observar las componentes frecuenciales de la señal adquirida.

A continuación, el problema:







Como se observa en la figura de arriba, se adquiere la señal con el subVI picusb.vi, y el dato es convertido en decimal, y mientras se grafica dicho dato en una Waveform Chart (este mismo se podría tomar como componente para el Y array en el Build Waveform)

Por otra parte, el dato en formato U8 array pasa por un módulo que convierte de binario a digital, y luego hago el intento de pasarlo de digital a analógico, pero sólo sale un array de Y.

Ahora, el único problema que queda antes del análisis espectral es el hecho de que no he logrado hasta ahora construir la waveform necesaria para hacer el análisis espectral. Por otra parte, también he fallado en agregar el resto de los componentes al Build Waveform, de tal manera de reconstruir la señal de audio adecuadamente...

Alguno en este foro sabe cómo lograr el análisis espectral?

Sólo esto me falta para terminar definitivamente el proyecto. Una vez terminado, postearé! Ya que yo mismo he sufrido un calvario buscando ayuda con respecto a este problema!

Adjunto al mensaje en un .rar:

    Programación del PIC en PIC-C
    Esquemático del circuito en Proteus
    Driver del dispositivo USB BULK TRANSFER
    subVI picusb.vi
    VI del proyecto


Gracias por tomarse el tiempo!


----------



## ccano89 (Oct 26, 2011)

Hola quiero realizar algo similar pero en vez del tipico analizador de espectro, mover unos ventiladores con las distintas frecuencias del audio alguien me podria ayudar?
Gracias


----------



## alberthchurata (Dic 1, 2012)

alguien puede ayudarme mi programa esta en C30 y me sale este error

c:\program files\microchip\mplab c30\bin\bin\..\bin/pic30-coff-ld.exe Error: Not enough memory for stack (32 bytes needed, 20 bytes available)

como lo puedo solucionar?

gracias.



hola nicolas8702

intente correr tu programa y me surge eel  error anteriormente mencionado, como podria solucionarlo.


----------



## nicolas8702 (Dic 1, 2012)

que extraño mira que lo he descargado y a mi me corre perfectamente pero bueno que version del c30 tienes y del mplab? sin embargo el error que te sale es por falta de memoria, si estaas corriendo el mismo programa es raro pero si modificaste el encabezado procura que el programa tome las librerias de la carpeta y no del mplab


----------



## alberthchurata (Dic 4, 2012)

gracias por contestar nicolas pense q*UE* nunca nadie lo haria, bueno la version de mi MPLAB 8.88 y el C30 es el MPLAB C30 - V3.31,y nada me sigue saliendo errores lo de la memoria ya lo solucione ahora el error q*UE* me sale es el siguiente se presenta al cofigurar los FUSES y en cuanto asi cambie algo de la cabezar pues no no cambie nada, LO DESCARGUE LO COMPILE Y NADA NO SALE ya compre el dspic 30f4013 tengo mi glcd 128x64(kso 108)

FUSES error 
glcd.c:11: error: 'ICS_NONE' undeclared here (not in a function)

glcd.c:11: error: 'ICS_NONE' undeclared here (not in a function)
In file included from glcd.c:41:
CONTROLGLCD.H:72:1: warning: "NDecimas" redefined
glcd.c:17:1: warning: this is the location of the previous definition
In file included from glcd.c:41:
CONTROLGLCD.H: In function 'GLCD_PIXEL':
CONTROLGLCD.H:336: warning: operation on 'x' may be undefined
CONTROLGLCD.H:337: warning: operation on 'x' may be undefined
CONTROLGLCD.H:348: warning: operation on 'data' may be undefined
CONTROLGLCD.H:348:36: warning: multi-line comment
CONTROLGLCD.H:353: warning: operation on 'data' may be undefined
CONTROLGLCD.H: At top level:
CONTROLGLCD.H:612: warning: missing braces around initializer
CONTROLGLCD.H:612: warning: (near initialization for 'ARIAL[0]')
CONTROLGLCD.H:672:56: warning: multi-line comment
CONTROLGLCD.H:710: warning: missing braces around initializer
CONTROLGLCD.H:710: warning: (near initialization for 'COMIC[0]')
CONTROLGLCD.H:770:56: warning: multi-line comment
CONTROLGLCD.H: In function 'GLCD_TEXT':
CONTROLGLCD.H:814: warning: pointer targets in assignment differ in signedness
In file included from glcd.c:42:
USART.H: In function '_U1RXInterrupt':
USART.H:44: warning: passing argument 4 of 'GLCD_TEXT' from incompatible pointer type
glcd.c: At top level:
glcd.c:52: warning: return type of 'main' is not 'int'
glcd.c: In function 'main':
glcd.c:64: warning: pointer targets in passing argument 1 of 'putsUART1' differ in signedness
glcd.c:181:4: warning: no newline at end of file
Halting build on first failure as requested.
----------------------------------------------------------------------
Release build of project `C:\Users\ALBERTH\Desktop\FOROS DE ECLECTRONICA GLCD_FFT_DSPIC30F4013\ADC_ GLCD_FFT_DSPIC30F4013\GLCD.mcp' failed.
Language tool versions: pic30-as.exe v3.31, pic30-gcc.exe v3.31, pic30-ld.exe v3.31, pic30-ar.exe v3.31
Tue Dec 04 13:37:49 2012
----------------------------------------------------------------------
BUILD FAILED

nicolas8702 

#define FCY 30000000UL
#include <libpic30.h>


----------



## alberthchurata (Dic 4, 2012)

hola nicolas he estado dándole vueltas al por que de los errores, 
y si el problema es la versión de mi MPLAB y mi C30,
la pregunta es ¿cual es la versión en la que tu tienes el proyecto?
¿me las podrías mandar tanto para el mplab como para el c30 para yo poder descargarlas?
te lo agradezco.


----------



## nicolas8702 (Dic 4, 2012)

bueno mira yo creo que el error es por la version del mplab por que ese fuse lo utilizo para debuggear el dspic con el pickit 2 aunque ahi esta configurado para no usarlo pero sin embargo se me hace extraño debe ser que tu version del mplab no usa ese fuse o es automatico


----------



## alberthchurata (Dic 6, 2012)

Hola a todos.
¿Alguien podría ayudarme a resolver el siguiente  problema?
Paso a explicar. He estado trabajando con los dspic exactamente con los  de la familia  dspic30f4013
y 4011 compilador c30 de mplab, el  problema  que  surge es que una vez ya compilado mi programa
(fft + glcd + dspic)  me genera el file .HEX  hasta ahí todo bien, ahora al momento de  quemarlo en el dspic
me sale un mensaje donde me indica "que el archivo que  intento grabar es posible que no sea un archivo  .HEX"
Bueno muy a-pesar  de eso me permite quemar(grabar), "exitosa" 
Pero al momento de alimentar  el circuito y verlo funcionar sale cualquier cosa, menos lo que programe.
Supuestamente hice un analizador de espectros.
Mi pregunta es. ¿Por qué es qué me sale qué "es posible que no sea un archivo .HEX"?


----------



## alberthchurata (Dic 7, 2012)

hola jcristhian_1 quería consultarte algo en que versión de mikrobasic for dspic esta tu código
por que pude descargar la versión v 5.0 y al momento de compilar elimina varias variables como tmrP, Rer etc y la verdad no-sé como evitar eso.

 "101:15 H-11 Hint: Variable 'tmpR (WriteData)' has been eliminated by optimizer fft4013.dbas" 

101:15 H-11 Hint: Variable 'tmpR (WriteData)' has been eliminated by optimizer fft4013.dbas

101:15 H-11 Hint: Variable 'tmpR (WriteData)' has been eliminated by optimizer fft4013.dbas

101:15 H-11 Hint: Variable 'tmpR (WriteData)' has been eliminated by optimizer fft4013.dbas


----------



## djstigma (Ago 25, 2014)

hola se que el tema es viejo pero talves les sirva 
http://www.instructables.com/id/100-LED-10-band-Audio-Spectrum-atmega32-MSGEQ7-wit/
http://www.baldengineer.com/projects/msgeq7-simple-spectrum-analyzer/

saludos


----------



## nicolas8702 (Ago 25, 2014)

Hola a todos ya hace rato ando desconectado de este tema pero les comento que ya hace un año habia logrado implementar la fft en el dspic es realmente sencillo tento en c como en asembler buenk yo lo implemente de las dos formas y en algunos dias lo subire


----------



## djstigma (Ago 27, 2014)

nicolas8702 dijo:


> Hola a todos ya hace rato ando desconectado de este tema pero les comento que ya hace un año habia logrado implementar la fft en el dspic es realmente sencillo tento en c como en asembler buenk yo lo implemente de las dos formas y en algunos dias lo subire



ok amigo eso seria genial


----------



## nicolas8702 (Ago 27, 2014)

Bueno les pido un poco de paciencia por si me demoro en subirlo


----------



## LudCa (Mar 24, 2016)

nicolas8702 dijo:


> Bueno les pido un poco de paciencia por si me demoro en subirlo



Hola Nicolas, estoy siguiendo el tema y  me interesaria ver tu implementacion de la fft en el dspic. 
Espero que lo tengas guardado en alguna parte y no haber llegado tarde!
Saludos


----------

