Baja frecuencia presente en la forma de onda muestreada

Estoy tratando de muestrear una onda sinusoidal de 50 kHz a 200 ksps usando un ADC ADS8517 de 16 bits. Tengo un problema porque hay una señal de frecuencia más baja presente en mi señal de entrada, como se muestra:

Forma de onda de salida muestreada, el eje X es el número de muestra, el eje Y es el valor de muestra

He analizado la entrada y es una señal perfecta de 50kHz 500mV. El ADC está configurado para +/- 10 V y todos los circuitos siguen la hoja de datos. Si muestro una señal de 1kHz, obtengo:ingrese la descripción de la imagen aquí

¿Tienes un filtro anti-aliasing analógico? ¿Está seguro de que su onda sinusoidal de entrada no tiene distorsiones, es decir, no tiene armónicos significativos? Parece que algo es alias para mí.
Estoy conduciendo directamente desde el alcance en este momento, por lo que no hay filtro anti-aliasing. Podría probar uno RC simple. Parece bastante limpio.
¿Hay alguna posibilidad de que la frecuencia de muestreo de 200 kHz y la señal de 50 kHz no sean exactas, tal vez lo suficientemente bajas como para crear un alias de 50 Hz?
Lo hace en frecuencias más bajas también.

Respuestas (3)

No hay ningún componente de baja frecuencia allí, ni resolución de pantalla ni problema de muestreo.

El teorema de Shannon dice que necesita al menos 2 muestras por ciclo para representar la forma de onda con precisión, y tiene 4, por lo que la está muestreando con precisión.

SIN EMBARGO:

Dibuje una onda sinusoidal y marque 8 puntos de muestra igualmente espaciados comenzando en 0 (a intervalos de 45 grados).

Ahora imagine que la onda sinusoidal fue muestreada a 0, 90, 180 y 270 grados; resalte esas 4 muestras y tal vez conéctelas con líneas rectas. Tenga en cuenta que la amplitud máxima es la misma que la amplitud máxima de la forma de onda original.

Ahora repita con el conjunto de 45/135/225/315 grados. Resalta y une con línea recta. Esta vez, verá que la amplitud máxima es 1/sqrt(2) de la amplitud original; sin embargo, ambas representaciones son representaciones muestreadas correcta y precisamente del seno original.

(Primer set: puntos verdes, segundo set, puntos azules)ingrese la descripción de la imagen aquí

Todo lo que está viendo en el primer gráfico es este muestreo correcto que se desplaza entre estas dos formas, ya que su señal y frecuencia de muestreo no están bloqueadas con precisión en frecuencia.


La razón por la que los puntos de muestreo o una interpolación de línea recta no parecen reproducir correctamente la forma de onda original es que su espectro se extiende por encima del límite de Nyquist (Fs/2).

Si limitó correctamente la banda de la forma de onda reconstruida, con BW menor que FS/2, la dibujaría como la curva más suave posible entre los puntos (alternativamente, aplicaría un filtro de paso bajo en FS/2 con un filtro de reconstrucción, o interpolaría usando la función de Whitaker, otra forma de decir lo mismo) y esa curva suave sería, por supuesto, la onda sinusoidal original.

Entonces, ¿es básicamente el efecto de mí muestrear una onda sinusoidal a solo 4 veces la frecuencia? ¿El muestreo siempre se compensará? La señal pasa a través de un filtro IIR de paso de banda de 12º orden, se rectifica y luego se filtra por un paso bajo, pero los grumos aún están presentes.
Vea el diagrama (recién agregado) por sí mismo. Lo que está haciendo es mostrar los puntos muestreados, en lugar de reconstruir la forma de onda muestreada mediante una interpolación adecuada o un filtro analógico. (En realidad, esto era un problema grave en la medición del nivel de audio digital, en los días previos al DSP barato).
Esta es la respuesta correcta. Tomar los datos muestreados a 200kHz y ejecutar una interpolación sinc (sobremuestreo) reconstruirá perfectamente la señal original de 50k. Lo que ves en la pantalla solo indica que la forma en que interpretamos visualmente las cosas en nuestro cerebro hace que sea difícil de ver. El componente de baja frecuencia que está viendo se debe a que 50k y 200k no son exactos. Si provienen de diferentes osciladores, tal vez obtenga un muestreo de 50,01 kHz y 199,99 kHz, lo que creará este tipo de ilusión gráfica de una "frecuencia de pulsación" debido a los puntos de muestreo que se producen en diferentes puntos de la forma de onda.
Y, curiosamente, una interpolación sinc también se conoce como función de Whitaker: también es la respuesta de impulso de un filtro de paso bajo "perfecto".
Entiendo exactamente lo que quieres decir y muchas gracias. Echaré un vistazo a la interpolación sinc. Gracias de nuevo.
@BrianDrummond ¡sí! Me recuerdas a los "sobremuestreos" en los que el sobremuestreo creará picos que excedan el máximo de la señal original. Algunos chips de reproductores de CD se desbordarían en esto en lugar de recortarse limpiamente, como en MAX_INT+1 que se vuelve negativo, lo que da como resultado una señal basura.
Bueno, el reproductor de CD que construí no hizo eso <¡sonrisa!>
¡Excelente! No recuerdo qué CDP se desbordó, creo que fue un chipset SONY, pero no estoy seguro. Se ha ido por el camino del dodo ahora, así que a quién le importa;)

Necesita mostrar al menos 2 píxeles por muestra para evitar el aliasing y más para reducir el error de interpolación a un límite de error definido. Ley de Shannon.

Medí que tiene 1000 puntos de datos en 579 píxeles de imagen en lugar de 2000 a 3000 píxeles. Por lo tanto, resulta una frecuencia de solapamiento de visualización.

Modificaré mi código ahora mismo y veré cómo va. He cubierto la ley de Shannon, pero nunca se me hubiera ocurrido relacionarla con esto. Muchas gracias.
Entonces, ¿la pantalla está causando el aliasing?

Es la resolución de su pantalla la que le da la impresión de que la señal tiene un alias. Intenta enfocarte y mirar más de cerca. Mi estimación es que esto es una tormenta en una taza de té. Seguro que habrá artefactos que parezcan alias, pero así es como su pantalla maneja las cosas. Si es necesario, use un simulador y obtenga una vista alternativa de las cosas.

¿Te refieres a los tamaños de muestra?
no, se refiere a resolución horizontal