Registrar datos continuamente desde un osciloscopio

5

Tengo un pin que se está cambiando cada 100 ms por una MCU. Necesito trazar un gráfico que consista en la variación del intervalo deseado. Esa es la cantidad de veces que se alejó y se cambió durante 101 ms o 98 ms, y así sucesivamente. Intenté hacerlo con un alcance, pero la memoria parece ser limitada. Puedo capturar un máximo de 50000 líneas como csv. Incluso si reduzco la frecuencia de muestreo, no se acerca a las 4 horas de datos que necesito capturar. ¿Qué tipo de instrumento debería estar buscando? ¿Hay alguna manera fácil de lograr esto?

    
pregunta user2578666

2 respuestas

2

La transmisión continua de datos a una computadora constantemente en lugar de usar una adquisición larga probablemente será más fácil de implementar y hará uso del gran almacenamiento disponible en las computadoras. Debido a que solo necesita datos digitales, un analizador lógico USB es probablemente la opción más barata y fácil.

Un par de opciones vienen a la mente:

  1. Dependiendo de su osciloscopio, debería poder transmitir datos a una PC para analizarlos lo suficientemente rápido para que su búfer de muestra 50000 nunca se llene. Me pondría en contacto con el fabricante de su alcance y leí el manual para ver si esto es posible y, de ser así, cuál es la mejor manera de implementarlo.

  2. Use una tarjeta de adquisición de datos de National Instruments o alguna otra compañía para adquirir y analizar datos continuamente. El beneficio aquí es que puede usar un programa como Labview para facilitar la configuración y las pruebas si no tiene mucha experiencia en programación. Utilice los pines lógicos digitales, sin necesidad de utilizar la adquisición analógica.

  3. Use un analizador de lógica usb. Barato. Fácil de implementar. Incluso puede haber uno que viene con un software que puede hacer el análisis que necesita de forma inmediata.

respondido por el Mark
1

Estás describiendo un histograma de los anchos de pulso. Tanto el tiempo como el conteo estarían bien dentro de las capacidades de un modesto microcontrolador, ya sea una placa de experimentadores lista para usar, o se construirá en una placa de pruebas. Tomar una interrupción a 10 Hz apenas usaría las capacidades de un chip de $ 5. En 4 horas, un tren de pulso de 10Hz dispararía 144000 veces y si es un 10Hz sólido como una roca, su histo contará solo un contenedor que necesitaría poder acumular ese número tan grande. Eso es más grande que un int de 16 bits (necesitarías 18 bits) pero se maneja fácilmente usando largos ints (32 bits). Calcule la resolución de tiempo (tamaño de la bandeja) y la salida máxima de 1.0 ms que necesita para cuatificar y decida cuántas ubicaciones necesita. Necesitarás 4x esa cantidad de bytes para mantener el histo. Suponiendo que necesita ~ 20 contenedores, todavía está dentro de los recursos de un modesto microcontrolador.

No es una solución estándar si eso es lo que necesita, pero será mucho menos dinero que comprar un instrumento de banco. ¡Mucho más diversión, también! (A menos que necesite los datos de ayer ...)

Supongo que tiene una computadora con un puerto USB a su disposición para programar el chip, así como para recopilar los datos.

Actualización:

Organizaría la señal para interrumpir la MCU cada vez que cambia. Mantendría a uno de los temporizadores funcionando continuamente un temporizador a 1KHz (para resolución de 1 ms). En cada flanco ascendente, su ISR leería y guardaría el temporizador. En cada flanco descendente, volvería a leer el temporizador y le restaría el valor guardado para obtener el ancho del pulso. Asigne ese valor a uno de sus contadores de histograma e incremente el contador.

algo como %código% histografiará los anchos de pulso reales en mseg (en oposición a la desviación de 100 ms). Trazar un histo de desviación solo requiere volver a etiquetar el eje t.

Obviamente, elija la resolución del temporizador & Tamaños de contenedores que tienen sentido para su aplicación. Elegí cubos de 1 ms de 0 ms a [tantos como necesite], representando de -100 ms a + ?? de desviación.

    
respondido por el JRobert

Lea otras preguntas en las etiquetas