TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: migsantiago en 22 de Abril de 2010, 17:54:16

Título: ¿Cómo medir la fase entre 2 señales?
Publicado por: migsantiago 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
(http://img684.imageshack.us/img684/5941/retraso.th.png) (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
(http://img249.imageshack.us/img249/4818/defasa.th.png) (http://img249.imageshack.us/img249/4818/defasa.png)
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: migsantiago en 22 de Abril de 2010, 18:14:01
Como dato extra, las señales son de 11kHz muestreadas a 1Msps.  :P
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: migsantiago 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...
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: migsantiago 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
(http://img714.imageshack.us/img714/2758/lagk.th.png) (http://img714.imageshack.us/img714/2758/lagk.png)
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: Gonzalo_BlackHawk 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
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: pablomanieri 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.
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: migsantiago 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:
Título: Re: ¿Cómo medir la fase entre 2 señales?
Publicado por: micro_pepe 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.