Autor Tema: Que levanten la mano los que tienen osciloscopio  (Leído 158506 veces)

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

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #150 en: 27 de Octubre de 2004, 09:43:00 »
Sisco, no tires las muestras impares. Inviértelas y las consideras también en la curva. A ver qué sale.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #151 en: 27 de Octubre de 2004, 11:31:00 »
si funciona nocturno  ,  pero a un maximo de 10Msps con un dspic a 20MIPS .
La idea es llegar a 100Msps con dos canales y a 200Msps con un canal . entonces la unica manera ya que el pic no llega a mas seria utilizar un super pic a 400mhz por lo menos ó coger las muestras con hardware un externo . Despues representarlo con pic .

Siii , jorge . Cuca ha tenido una gran idea en enbarrancarse con este proyecto , ya que seguro que sale un osciloscopio a la altura de un profesional por 4 duros .
Y lo pasamos de coña con los tortazos que nos damos con las patillas smd. invasor . Ademas no se que hariamos sin la ayuda de  Elena que es como una hermana  , que digo hermana ..... UNA MADRAZAAAA .

Alaaa.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #152 en: 27 de Octubre de 2004, 14:03:00 »
Entendido, pues seguiré a la escucha con atención.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #153 en: 27 de Octubre de 2004, 19:19:00 »



Os habíais con tanto exito y al final pasa lo que pasa... que pos han en la copa jajajajaja

Saludos!! y perdón si molesta... es que encontré estos caretos y no me podía resistir...
Saludos desde Huelva (ESPAÑA)

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #154 en: 28 de Octubre de 2004, 00:34:00 »
Muy buenos caretos has encontrado Alberto , muy buenosss .desquiciadoMuchas risas

Muestra triangular complementando las lecturas impares (Amplitud de los semiciclos iguales) .



Muestra triangular complementando las lecturas impares (Amplitud de los semiciclos desiguales) .



Tambien que da bien , pero tiene este problema . Si la amplitud no es simetrica se distorsiona muchisimo .

He encontrado esto . No se si se puede deducir algo .

http://www.educatorscorner.com/media/Exp66.pdf


Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #155 en: 28 de Octubre de 2004, 03:19:00 »
Ah, muy bueno, Cuca!!Muchas risasMuchas risasMuchas risasMuchas risasMuchas risas
Yuuuuujuuuuuuuu, Siiiiscoooooo


jeje. Bueno, ya.
Voy a leer el pdf.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #156 en: 28 de Octubre de 2004, 03:26:00 »
Creo que Sisco se reserva al día 21 para contestar a este par de impertinentes...Muchas risas

Bueno... el pdf. Tiene muy buena pinta... Esta noche lo ojearé con más detenimiento y simularé con algunas frecuencias en el Matlab, a ver que resulta.

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #157 en: 29 de Octubre de 2004, 06:32:00 »
Hola!!! aquí la "madraza" ... (vamos anda ya... eso no me lo dices a la cara, eh, que podrías ser mi papí... Giño

Vamos a ver chicos, he estado estudiando los pdf de ayer y mirando cosas sobre analizadores lógicos y bla bla. habría que ver cómo se podría conseguir la señal de entrada a partir de las muestras que te da el ADC. En principio la frecuencia de muestreo creo está bien como la pones, haciendo caso al señor shannon o a su amiguete Nyquist. Ahora lo suyo sería tratar esas muestras usando las transformadas de Fourier.
Vale, me he liado la manta a la cabeza con el señor fourier y el C de mis amores.. (??), y después de estar ayer toda la tarde extrujándome las neuronas con las fórmulas... loco , no se si habré hecho un código decente o igual es una caca de vaca. ya me diréis, chicos:

AH! es código C, o algo así, pero faltan cosas, vale? en realidad lo he programado en fortram (ya veis... del jurásico que es una) y ha funcionado bastante decente, pero no he probado a plotear los resultados y verlos gráficamente. A ver si lo puedes traducir a C de verdad.

Codigo:

/* Programilla para calcular la transformada de fourier iterando a "NFou" puntos,
entre las frecuencias f1 y f2, con una muestra formada por N puntos.

Aquí habría que poner los includes, etc, para las librerías de funciones matemáticas
y esas cosas mariposas.
*/


/*
función principal y tal (normalmente en C esto se pone al final, pero yo soy muy
chula y lo pongo aquí, hala.)
******************************************************************/

int main (char *arg[] )
{
// Variables
  int N; /* número de muestras leídas por el ADC, N>1 claro.... avispao*/
  double f1, f2; /* rango de frecuencias, inicial f1 y final f2 (en Hz) */
  int Nfou; /* número de puntos de iteraciones de Fourier. Vamos a calcular la
transformada en cada uno de esos puntos.*/
  double deltaf; /* incremento de frecuencia*/
  double mps; /* muestras por segundo */

  int i, n; /* índices para los contadores */
  double Omega; /* Omega = 2*Pi*f*T estos son cosas del fourier este...*/
  double deltaOmega; /* incremento de Omega */
  double *q; /* un punterillo para ir guardando los resultados de los cálculos.*/
  double Qreal, Qimag; /* coordenada X y coordenada Y que van a configurar la
curva transformada, .... Sisco, Cuca, esto habría que plotearlo, no?*/

 /*supongo que el argumento de entrada es un vector de caracteres, que serán los
parámetros para configurar los cálculos de adquisición de datos, osea:*/
/*(ah! hay que pasar los caracteres a números enteros y reales, según convenga)*/

  f1 = atof( arg[1] ); //frecuencia inicial
  f2 = atof( arg[2] ); //frecuencia final
  Nfou = atoi( arg[3] ); //puntos de iteración
  N = atoi( arg[4] ); //número de muestras
  mps = atof( arg[5] ); //velocidad de muestreo


  if( N < 2 )
  {
    //NOOOOO ¡¡N debe ser mayor!!, hombre porfavóooo....
    exit( -1 );
  }

  /* ahora ya podemos leer dato a dato. Podemos tomar los datos de un fichero
externo, o de donde sea... yo voy a suponer que entra directamente en una
posición del array, vale? por ejemplo arg[6], entra como por arte de magia*/

  for( n = 0; n < N; ++n )
  {
   // pues eso...  hay que tomar cada dato del arg[6] con este bucle  y cargarlo en
un puntero o un buffer o como se quiera
  }

  /* preparar en memoria un array bidimensional de tamaño N */
  q = (double *)malloc( N * sizeof(double) );

  //calcular el incremento de frecuencia  
  deltaf = (f2-f1)/((double)(Nfou-1));
  //calcular omega (fourier y sus cositas...)
  Omega = 2.0 * M_PI * f1 / mps;
  deltaOmega = 2.0 * M_PI * deltaf / mps;

// ahora ya podemos calcular la transformada para cada iteración
  for( i = 0; i < Nfou; ++i )
  {
    funcionFT( N, q, Omega, &Qreal, &Qimag );
    Omega += deltaOmega; //se va incrementando omega
  }
 
  free( q ); //liberar la memoria, antes de hacer esto habría que dibujar los datos en
la LCD
  return( 0 );
}

/*****************************************************************
**
esta función calcula la transformada para cada iteración
para calcular los cosenos y los senos, he utilizado aproximación de suma de
polinomios. Esto lo he medio copiado de un libro (qué morro).
*/

void funcionFT( int N, double *q, double Omega, double *Qr, double *Qi )
{
  int n;
  double C0, S0; /* cos(Omega) & sin(Omega) */
  double T0, T1, T2; /* polinomios tipo I */
  double U0, U1, U2; /* polinomios tipo II*/
  double Cn, Sn; /* cos(n*Omega) & sin(n*Omega) */

  C0 = cos(Omega);
  S0 = sin(Omega);
  T0 = 1.0;
  T1 = C0;
  U0 = 1.0;
  U1 = 2.0*C0;

  /* para los dos primeros órdenes*/
  *Qr = q[0] + q[1]*T1;
  *Qi = q[1]*S0*U0;

  C0 *= 2.0;
  for( n = 2; n < N; ++n )
  {
    T2 = C0*T1 - T0;
    T0 = T1;
    T1 = T2;
    U2 = C0*U1 - U0;
    U0 = U1;
    U1 = U2;
    Cn = T2;
    Sn = S0*U0;
    *Qr += q[n]*Cn;
    *Qi += q[n]*Sn;
  } /* el resto de los órdenes hasta llegar a N */
} /* se acabó la funcionFT*/




Ya me diréis, pedorros. Giño

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #158 en: 29 de Octubre de 2004, 08:04:00 »
Elena... tango que salir ahora mismo... y este finde estaré algo liado.
Pero no me quiero perder este embrollo.
A ver, como dije, estoy ahora estudiando potencia... Y casualidad... Fourier. Análisis de Fourier, que no se si tendrá algo que ver con lo que hicistes... ya te digo que ni tengo tiempo de verlo.
Tienes por ahí la formula tal cual para verla?

Bueno... me voooooy!!!
Saludos desde Huelva (ESPAÑA)

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #159 en: 29 de Octubre de 2004, 08:07:00 »
Sí, Cuca, claro! pero tendrá que ser el lunes, mejor dicho el martes! que el lunes es festivo. Me tengo que ir yo también ahora pispo!!!
Byyyyeeee

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #160 en: 31 de Octubre de 2004, 04:09:00 »
Haver si boy pillando y pasando a limpio .

Existes varias formas de obtener las muestras de una señal .

Una , es cogiendo  muestras a una frecuencia muchisimo mayor que la de entrada.
Con esto se consigue representar la entrada con mucha preción y en tiempo real , que es lo que hacemos hasta ahora .



Si es necesrio representar entradas de una frec superior a de muestreo y solo será valido para  señales repetitivas .

Se puede usar interpolación , y se reconstruye a partir de muestras presentes y pasadas .



Usando el teorema de Nyquist .

Una sinusoide puede ser reconstruida correctamente si se muestrea en por menos de dos veces su frecuencia. ( Esto ya nos lo ha expicado Elena Giño ) Esta regla se conoce como el teorema de Nyquist.  La violación del teorema de Nyquist conduce a la reconstrucción incorrecta de las señales designadas típicamente el aliasing .
 
Otra es usando la tranformada de Furrier .

Puede ser demostrado que cualquier señal continua verdadera se puede expresar como suma infinita de sinusoides cargadas.  Este sistema de sinusoides se llama una serie de Fourier. (Aqui ya me pierdo).

Elena , es que tu nos traes unas galaxias de adelanto , yo no logro digerir este programita todabia , mas que nada lo que hace . ( Aunque se puede pasar a C sin problemas )
Las formulas que pones como se aplicarian en un ejemplo practico .
Es para calcular la tranformada de Furrier ???

Mientras tanto he encontrado esto muy interesante .

An Introduction to the Sampling Theorem
http://www.web-ee.com/primers/files/AN-236.pdf

Fourrier series approximation (Sin desperdicio)Vacilando
http://www.jhu.edu/%7Esignals/fourier2/index.html

El problema es saver como aplicarlo.

seguimos ??

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #161 en: 02 de Noviembre de 2004, 10:28:00 »
Hola chicos,

perdonad, pero he tenido una mañanitaaaaa..... ufff... ójala me hubiera roto una pierna en el metro esta mañana y así me hubiera escapado del marrón de hoy. Enfurruñado
Bueno, vamos a lo nuestro que es lo más divertido.
Este finde he estado mirando los pdf, Sisco, que por cierto están genial (el primero mejor que el segundo), y también tu respuesta anterior. estupendo resumen. Nose yo quién está en la galaxia más lejana. EL tema está efectivamente en cómo tratar computacionalmente las transformadas del furrier este.
Tengo varias ideas, pero antes me gustaría que os quedara más claro el peazo programa, o mejor pseudoprograma del ladrillo de antes.
Resumiendo:

Suponemos que f(x) es la función que queremos visualizar con el osciloscopio CucaSiscope. La representación de esta función como suma de exponenciales, según Fourier, sería la ecuación (1).

Ahora viene otro señor, Euler, que fue muy apañao, y nos dijo que cualquier exponencial podía reprensentarse como un número real con su parte imaginaria, o sea:
einx = cos(nx) + isin(nx)
Esto se llama la identidad de Euler.

Entonces, podemos representar la función f(x) como una combinación lineal infinita de funciones de la forma cos(nx) y sin(nx). O sea, según la ecuación (2). Y los coeficientes de esta ecuación los podemos calcular como están en las ecuaciones (3) y (4)...... o sea, la leche: integrales!! Vale, que no cunda el pánico porque las integrales se pueden  aproximar también. Yo lo que he considerando es que los senos y cosenos se pueden expresar como sumas de polinomios.


A ver, sigo en el siguiente mensaje.



¿¿Qué pasa??? no se ve la imagen... ¿vosotros la veis??

Desconectado Jimmy_pop

  • PIC12
  • **
  • Mensajes: 72
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #162 en: 02 de Noviembre de 2004, 10:48:00 »
Yo sí veo la formula.

Saludos,

me incorporo puntualmente, he leído muchos posts sobretodo de los ultimos y espero poder aportaros algo.

veo que os estais peleando con el muestreo y toda la historia. Solo quisiera puntualizar un par de cosas: la freq. de nyquist, como bien decís es el doble de la freq. maxima de una señal paso-banda (es decir de una señal que ya no es ni real), pero si se apura tanto, el resultado es q las senoides de la freq. maxima de nuestra señal son visualizadas como puntos alternados.. la minima expresion de lo q se puede considerar un seno. No os extrañe por lo tanto q si usais una freq. de muestreo del valor minimo os aparezca una señal de puntos muy fea, supongo q ya lo sabreis.

por otro lado veo q os peleais sobretodo tú elena con el fourier para ver el espectro de la señal. Igual no aporto nada útil, pero si quereis ir al grano y obtener una forma de computar el espectro lo mejor q podeis hacer es buscar informacion sobre DFT (discrete fourier transformation) y FFT (fast fourier transformation), esta ultima mejor aun pq ya está optimizada para ser usada en sistemas digitales e incorpora simplificaciones de cómputo y se puede implementar como churros. Las señales discretas no-periodicas tienen espectros continuos y las señales discretas periodicas tienen espectros donde la potencia se acumula en la freq. fundamental y sus armonicos. La DFT es un muestreo del espectro que sirve para mil cosas y es extremadamente simple de computar (basta con coger un vector con muestras anteriores de la señal y realizar un producto con una matriz de constantes).


ná mas. seguiré atento vuestros progresos pq el proyecto pone muy caliente

Desconectado Jimmy_pop

  • PIC12
  • **
  • Mensajes: 72
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #163 en: 02 de Noviembre de 2004, 10:59:00 »
otro comentario: elena, las ecuaciones q tú pones solo sirven para señales periodicas y continuas.

en referencia al tema q nos mueve hay 4 formulas de transformada de fourier

clasificables así:

Fourier para señal continua
           - aperiodica
           - periodica

Fouerier para señal discreta
           - aperiodica
           - periodica

las formas aperiodicas dan un espectro continuo de -infinito a + infinito en el dominio de la frecuencia, las formas periodicas en cambio como ya decía antes la energia se concentra en la freq. fundamental y en sus armonicos, y eso se traduce en reducir la señal a una suma infinita de senos y cosenos de freq. armonicas

para el caso discreto la cosa varía un poco, pq si se cumple el teorema del muestreo y la señal original muestreada era de banda limitada la señal discreta tiene un espectro periodico con periodo en el dominio de la freq. igual a la freq. de muestreo de modo que se repite infinitamente.

finalmente la DFT y la FFT que son otra historia que es aplicable en señales discretas a las que se aplica una ventana y se obtiene el espectro del trozo de señal que se estudia con una serie de implicaciones como que te cargas ciertas frecuencias y toda una historia larga de contar.

la DFT i su version simplificada estan pensadas para ser computadas y es lo q se usa en los spectrum analyzer de la mayoria de programas de musica y en filtros y en toda clase de chismes donde salga una puta grafica del espectro.

ahora si q me retiro, buscadlo nenes que vereis q merece la pena....

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Que levanten la mano los que tienen osciloscopio
« Respuesta #164 en: 02 de Noviembre de 2004, 12:13:00 »
Sí que se ven las formulas querida Elena. Además, con tu explicación por primera vez creo que me estaba hasta enterando del tema loco. Sigue, por favor...

He estado buscando acerca de la Transformada Rápida de Fourier que comentas, Jimmy_Pop (por cierto, vaya avatar te has puesto tío) y parece que es un algoritmo bastante extendido en analizadores de expectros.

He encontrado documentación en castellano que lo intenta desgranar, aunque no he encontrado por ningún sitio el algoritmo hecho. Echadle un vistazo a esto, que tiene su miga:
http://www.pue.udlap.mx/~tesis/lep/alonso_a_jp/capitulo3.pdf