Manera simple de determinar la diferencia de fase I/Q (positiva o negativa) sin usar FFT

Tengo un sensor Doppler con canales I/Q para detectar objetos en movimiento. También necesito detectar la dirección de movimiento del objeto. Debido a la potencia limitada y la memoria flash de mi MCU, no puedo pagar las funciones FFT(), atan() o sqrt().

Para determinar la dirección de movimiento del objeto, se debe determinar la diferencia de fase entre I y Q (positiva o negativa). Y los siguientes métodos son los que conozco:

  1. FFT
  2. correlación x
  3. atán(I/Q)
  4. busque la pendiente positiva de la señal I y Q y determine el cambio de fase

Los primeros 3 métodos, no puedo pagarlos debido al límite de MCU. El último es muy sensible al ruido.

¿Existen otras formas sencillas de determinar si la diferencia de fase entre I/Q es negativa o positiva?

¿Has considerado el venerable MC1496?
¡termina una línea con 2 espacios para mantener los saltos de línea!
Hola @jonk, lamentablemente no puedo elegir qué MCU puedo tener.
El MC1496 no es un MCU, es un IC independiente que actúa como un mezclador y puede detectar la fase (aunque no es muy obvio en la hoja de datos)

Respuestas (2)

'... el último es muy sensible al ruido'

Todos son sensibles al ruido, el filtrado reduce el ruido. Algunos métodos tienen filtrado 'oculto' en ellos. Por ejemplo, FFT procesa una gran cantidad de datos y luego usa solo un contenedor de frecuencia, que es un filtro implícito. Si utiliza datos filtrados para su estimación de búsqueda de pendiente, entonces será más robusto contra el ruido.

Considera esto. Cuando la pendiente de un canal tenga la misma polaridad que el valor del otro, la rotación será en un sentido, y cuando sean de polaridad opuesta, en el otro.

¿Cómo determinas si dos valores tienen la misma polaridad? Multiplícalos. Un resultado positivo y ambos son + o ambos -, y viceversa . O haga la lógica XOR en sus signos, lo que sea más rápido para las instrucciones de hardware que tiene a mano.

Así que prueba esto. Calcule la pendiente I en In por (In-1 - In+1), multiplique por el valor Q Qn y acumule la respuesta. Repita para los siguientes ns tantas veces como sea necesario para reducir el ruido a niveles razonables. El signo del número acumulado indica la polaridad de la rotación.

Hola Neil_UK Probé tu sugerencia y parece funcionar muy bien. Ocasionalmente, no funciona tan bien como usar FFT (ocasionalmente da la dirección incorrecta mientras que FFT da la dirección correcta), pero supongo que la razón es la que mencionaste: no apliqué un filtro en las señales I/Q, mientras que FFT usa una especie de filtro mediante el uso de un contenedor de frecuencia. Sin embargo, todavía no entiendo cómo funciona. ¿Por qué el signo del valor acumulativo muestra si la fase I es anterior o posterior a la fase Q?
@bienle esboza una señal I y Q, ya sea con liderazgo y 'computadora de juego' para algunos puntos, siguiendo mi algoritmo. O bien hará clic por usted, o no lo hará. Ponerlos en una hoja de cálculo es una forma más rápida de ejecutar el algoritmo con visibilidad completa punto por punto para ver lo que está sucediendo. Debo señalar que solo estoy haciendo uso de la mitad de la información, por lo que el ruido será más alto de lo necesario. Si ejecuta el algoritmo tanto en I como en Q (sustituya I por Q y -Q por I), obtendrá 3dB de mejor señal a ruido.
Esbocé un par de señales I/Q y seguí su algoritmo paso a paso, ahora puedo entender cómo funciona. También traté de usar toda la información como sugeriste y muestra los 3dB mejor como mencionaste. Gracias @Neil_UK

Si está generando una señal en la frecuencia de referencia, debería ser fácil generar una señal en cuadratura. Si uno multiplica la señal entrante por la referencia en fase y promedia el tiempo del resultado, y simultáneamente multiplica la señal entrante con la señal de cuadratura y promedia el tiempo de ese resultado, obtendrá un par de señales que se moverán "alrededor de un círculo". " cada vez que la señal devuelta gana o pierde un ciclo. Si observa la polaridad del producto en cuadratura cada vez que el producto en fase cambia de polaridad, incrementa un contador cuando la nueva polaridad en fase coincide con la polaridad en cuadratura y disminuye el contador cuando no lo hace, debería obtener un ruido relativo. -recuento resistente (si el ruido hace que se observe un flanco ascendente falso, lo que provoca un incremento falso,

Hola @supercat, no estoy seguro de haber entendido bien tu sugerencia. Según tengo entendido: 1.) calcule el producto acumulativo de la señal I (cumProI) y el producto acumulativo de la señal Q (cumProQ). 2.) Siempre que cambie la polaridad (o el signo) de cumProI, incremente el contador si sign_of_cumProI == sign_of_cumProQ, de lo contrario disminuya el contador. Al final, el valor del contador mostrará el número de pendientes positivas/negativas. Es correcto ?
@bienle: Eso suena bien.