Autor Tema: ¿Cómo medir la fase entre 2 señales?  (Leído 7886 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
¿Cómo medir la fase entre 2 señales?
« en: 22 de Abril de 2010, 17:54:16 »
Hola

Estoy haciendo unos cálculos de defasamiento de señales por retraso de un amplificador operacional, es decir, cuánto se tarda en procesar la señal.

En MATLAB escribí un algoritmo haciendo uso del Slew Rate de la datasheet del ampop y de las características de entrada de mi señal.

http://img684.imageshack.us/img684/5941/retraso.png


La señal azul es la señal ideal que debería salir del ampop y la señal roja es la señal que sale cuando el slew rate es de 0.3V/us. Cuento con ambas señales en arreglos y puedo hacerles lo que sea.

Lo que necesito es saber cuánto tiempo (s) o grados (°) la señal roja está defasada de la azul. En la escuela me enseñaron que usando la correlación cruzada puedo saberlo, pero ese cálculo entrega otro arreglo de muestras y no sé cómo extraer el tiempo o grados del mismo.

¿Qué puedo hacer en MATLAB para conocer cuánto tiempo está defasada? Gracias.  :mrgreen:

Manualmente podría simplemente contar cuántas muestras hay entre los cruces por cero de las señales, pero quisiera aplicar alguna ecuación más elegante.

http://img249.imageshack.us/img249/4818/defasa.png
« Última modificación: 22 de Abril de 2010, 18:04:51 por migsantiago »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #1 en: 22 de Abril de 2010, 18:14:01 »
Como dato extra, las señales son de 11kHz muestreadas a 1Msps.  :P

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #2 en: 22 de Abril de 2010, 18:22:18 »
Creo haber encontrado la solución...

http://www.dsprelated.com/groups/audiodsp/show/701.php

... pero la explicación sólo dice que es para 2 señales senoidales. A ver qué pasa...

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #3 en: 22 de Abril de 2010, 19:12:46 »
Una mejor explicación:

http://www.mathworks.co.jp/matlabcentral/newsreader/view_thread/256986

Citar
Subject: How to find the phase difference between two sigal with same frequency?

From: Kevin J. McCann

Date: 12 Aug, 2003 05:18:01

Cross correlation and look for the lag. Here is a little code:

Código: [Seleccionar]
% xcorr demo
%
% The signals
t = [0:127]*0.02;
f = 1.0;
s1 = sin(2*pi*f*t);
s2 = sin(2*pi*f*(t-0.35)); % s1 lags s2 by 0.35s
subplot(2,1,1);
plot(t,s1,'r',t,s2,'b');
grid
title('signals')
%
% Now cross-correlate the two signals
%
x = xcorr(s1,s2,'coeff');
tx = [-127:127]*0.02;
subplot(2,1,2)
plot(tx,x)
grid
%
% Determine the lag
%
[mx,ix] = max(x);
lag = tx(ix);
hold on
tm = [lag,lag];
mm = [-1,1];
plot(tm,mm,'k')
hold off
% Note that the lag is only as close as the time resolution.
% i.e. actual = -0.35, calculated = -0.34
S = sprintf('Lag = %5.2f',lag);
title(S)

Creo que ya funciona. Siguiendo este método el retraso que me da es de -5us  :mrgreen:

http://img714.imageshack.us/img714/2758/lagk.png

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #4 en: 22 de Abril de 2010, 19:21:12 »
Solucionas tan rápido tus problemas que no das tiempo siquiera a responder  :D :D :D

Bueno, recuerda darle las gracias a migsantiago y a migsantiago por haberte ayudado  :D :D :D
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #5 en: 22 de Abril de 2010, 19:53:45 »
Muy bueno que lo hayas encontrado rápido, voy a probarlo, a más de uno nos va a ser útil.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #6 en: 22 de Abril de 2010, 22:27:01 »
jajaj

Disculpen, es que estuve 4 horas sin energía eléctrica ni internet (sólo batería de laptop) y el foro era lo primero que quería visitar. Ya después buscando en google apareció la respuesta.  :oops:

De todas formas queda aquí por si a alguien más le sirve.

Ah y tengo el algoritmo de la correlación cruzada para no usar Matlab  ;-) Si les falta se los envío  :mrgreen:

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3171
Re: ¿Cómo medir la fase entre 2 señales?
« Respuesta #7 en: 22 de Febrero de 2012, 18:25:29 »
Ah y tengo el algoritmo de la correlación cruzada para no usar Matlab  ;-) Si les falta se los envío  :mrgreen:

Pasó mucho tiempo, pero ¿Tienes por ahí el algoritmo de correlación cruzada? ¿Sirve para un PIC?

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡