Estoy creando un prototipo de un dispositivo de adquisición de datos que se interconecta con 64 entradas discretas; 32 analógicas y 32 digitales (configurables por el usuario como medición ON / OFF o medición de frecuencia / trabajo). Estoy apuntando a una frecuencia de muestreo máxima de 1000Hz por canal, por lo que 64,000 muestras por segundo en todo el dispositivo.
Actualmente estoy haciendo prototipos con un dispositivo Linux integrado genérico basado en ARM (Raspberry Pi, Beaglebone, etc.). Las entradas analógicas se leen y se serializan mediante ADC basados en SPI, las entradas digitales se interconectan directamente con los GPIO del dispositivo y se leen a través de sysfs.
Estoy descubriendo que el tiempo para medir los 64 canales dentro de un sistema operativo Linux basado en GUI es demasiado largo y presenta enormes cantidades de jitter (el tiempo de ejecución de una muestra única de los 64 canales puede variar desde < 1 ms a ~ 10ms). Actualmente estoy experimentando con diferentes enfoques de subprocesos, pero creo que el problema principal es tratar de ejecutar lecturas sensibles al tiempo dentro de un entorno sin RTOS.
Como tal, estoy contemplando la introducción de un microcontrolador DAQ dedicado en el diseño, que se interconectará con las 64 entradas, almacenará las lecturas intermedias en un búfer y luego pasará los datos de forma rutinaria al sistema operativo (a través de una de las velocidades estándar altas). interfaces).
Mis preguntas son las siguientes:
- ¿Hay algún punto que continúe con el enfoque de adquisición basado en Linux para un requisito de 64 cps? Incluso si pudiera administrar la frecuencia de muestreo, creo que el temblor todavía haría insostenible esta opción.
- Si el enfoque del microcontrolador es correcto, ¿puede recomendar una marca / modelo?