¿Cómo mostrar señales de alta frecuencia en una pantalla pequeña?

2

Estoy trabajando en un proyecto para construir un osciloscopio utilizando el Arduino Mega2560. He construido el sistema utilizando una pantalla de 128x160, y tengo dificultades para mostrar un rango de frecuencias en la pantalla.

El sistema que he desarrollado mide la señal de entrada con un retraso de 1 ms entre cada medición, haciendo esto 120 veces colocando cada lectura en una matriz. Descubrí que tengo que usar un retardo de 1 ms, ya que captura frecuencias bajas demasiado rápido y solo mostrará partes de la forma de onda. Al usar este sistema, el alcance solo mide hasta unos 400Hz antes de que Nyquist se establezca y la forma de onda se distorsione.

Mido la frecuencia (arriba a la izquierda) revisando la matriz y encontrando cuántas veces la señal cruzó 0. Para detener la señal volando por la pantalla, encuentro el primer valor cuando cruzó 0 y dibuja la señal desde allí. Solo se muestran 74 valores de la matriz 120.

¿Existe una forma matemática de la información dada de modo que si la frecuencia está por encima del 'x' cambio de demora, de manera que el sistema pueda auto-extenderse y medir hasta 100kHz y mostrar la señal en la pantalla, es posible?

    

2 respuestas

4

Este es un problema con muchos aspectos, pero como mínimo, no debe vincular la cantidad de muestras que toma a la resolución de su pantalla. En su lugar, tome muestras lo más rápido que pueda o, si tiene un filtro analógico anti-aliasing (como debería), en o por encima de la tasa de Nyquist para el ancho de banda del filtro.

Luego, cuando pinta las muestras que ha tomado en la pantalla, puede elegir cómo hacerlo. Algunas formas simples de implementar:

  • Para cada columna de la pantalla, encuentre todas las muestras que caen dentro de ese rango y llene desde el nivel mínimo hasta el nivel máximo de esas muestras. Esto evitará la creación de alias adicionales y es una técnica de visualización común en los editores de audio.
  • Dibuje todas las muestras individualmente como puntos, sin importar cuántos puntos terminen en la misma columna. Esto muestra más detalles pero requiere más interpretación por parte del usuario.

Además de evitar la creación de alias innecesarios, la separación del muestreo y la visualización también le permite implementar la captura de un solo disparo seguida de zoom / panorámica de la vista, lo que ayudará a la usabilidad de su visualización de baja resolución.

En cuanto al rango automático: una vez que haya realizado una muestra lo mejor que pueda, puede aplicar el conteo de frecuencia o cualquier otro algoritmo a esos datos para elegir un zoom inicial. Pero si muestras lentamente, ya has eliminado datos, y eso es un problema. (Es posible que tenga un problema con almacenar datos suficientes para trabajar en un amplio rango de frecuencias sin RAM externa).

Dependiendo de sus objetivos, podría ser un ejercicio interesante implementar un osciloscopio en una PC usando la entrada de la tarjeta de sonido. De esa manera, puede jugar con algoritmos de procesamiento y pintura de señales con menos restricciones de recursos; y las tarjetas de sonido USB se pueden encontrar fácilmente con una frecuencia de muestreo de hasta 192 kHz (aunque a menudo se acoplan a CA) Luego puedes tomar lo que aprendiste y descubrir cómo encajarlo en el Arduino.

    
respondido por el Kevin Reid
0

Con una resolución horizontal de 160 píxeles, desea al menos 2.5 muestras por frecuencia de onda sinusoidal máxima, dependiendo de la sincronización del disparador para evitar el alias. Eso define el número de cruces cero por captura de cuadro. Desafortunadamente, la resolución de tu píxel es baja.

pero si su ADC es al menos 2.5x más rápido que el BW del espectro de entrada, entonces es posible el rango X del rango automático si puede visualizar la escala. Sin embargo, para una precisión vertical, se necesitan 10x muestras por seno.

  

Justo lo contrario de DMM, que controla el desbordamiento, comienza con la velocidad de muestreo máxima y cuenta los cruces de cero y la velocidad de muestreo de disminución.

Recuerdo el TD autocal desplegado 4 ciclos de la fundamental. En su ejemplo, hay 4 ráfagas de 10 ciclos, por lo que 1 ráfaga de 10 ciclos podría ser ideal. El disparo es truco con diezmado, y filtrado para encontrar el fundamental.

Los primeros TEK utilizaron los PLL para suavizar la velocidad de actualización, pero capturaron la velocidad fundamental. Una pantalla simple tendrá demasiado jitter de activación.

Esta página indica una frecuencia de muestreo de 100 KHz cuando se registra en una tarjeta SD y más con un ADC externo. Valores ADC de 8 bits a 100,000 muestras por segundo. La precisión estimada es de 7.3 ENOB

enlace

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas