Estoy escribiendo un código Python que recupera los datos FFT que se generan en mi osciloscopio Rigol DS1102E a través de su conexión USB.
Mi problema es que no importa qué escala de tiempo establezca, no obtengo más de 10 resultados de FFT por segundo.
¿Hay algún dispositivo USB rápido que pueda producir resultados con más frecuencia? Esperaba lograr al menos 100 FFT por segundo.
Actualmente, mi osciloscopio genera 512 bins y mis formas de onda de entrada oscilan entre 100 Hz y 10 000 Hz.
Estaba pensando en usar una tarjeta de sonido para esto, pero en realidad esperaba encontrar un dispositivo "coprocesador DSP" y dejar que hiciera todo el trabajo independientemente del dispositivo en el que se ejecuta Python.
Debido a que Python no es muy rápido y al hecho de que es posible que desee monitorear varias entradas a la vez, sería difícil usar la tarjeta de sonido para la visualización FFT en vivo (especialmente en algo como una Raspberry PI)
¡¡Gracias!!
mis formas de onda de entrada oscilan entre 100 Hz y 10 000 Hz.
En serio, eso significa (por Nyquist) que una frecuencia de muestreo de 20 kHz es suficiente; probablemente desee sobremuestrear un poco, pero todo lo que esté por encima de 40 kHz es un lujo.
En otras palabras, este es el territorio de la mejor tarjeta de sonido.
Obtenga una tarjeta de sonido USB barata (<10 $), retire los condensadores de acoplamiento de la entrada del micrófono y use algún tipo de amplificador basado en opamp ajustable para llevar su señal de entrada al rango de la tarjeta de sonido. Hecho.
Sería difícil usar la tarjeta de sonido para la visualización FFT en vivo (especialmente en algo como una Raspberry PI)
¡Estás haciendo suposiciones equivocadas aquí!
Procesar esta cantidad de datos definitivamente no es un problema en nada más rápido que las calculadoras de bolsillo más baratas. Una raspberry Pi, una computadora portátil, una PC o un teléfono inteligente definitivamente funcionarán. Realmente, el esfuerzo de hacer una FFT en esta cantidad de muestras es ridículamente pequeño. Decodificar un MP3 es mucho más complicado para cualquier computadora (dato curioso: el MP3 requiere una operación bastante similar a la FFT).
No se preocupe por si Python lo ralentiza: ninguna biblioteca de Python que conozco hace la FFT en python en sí, pero confíe en FFTpack o FFTw (numpy, por ejemplo). Puede hacer FFT tan cortas (es decir, "menos de cien mil bins") a tasas de muestreo de múltiples Megamuestras por segundo en una PC normal, así que no se preocupe por la carga de trabajo que representa la FFT. En serio, ¿más de 100 transformaciones de longitud 1024 por segundo? Más como 1 millón de transformaciones por segundo, en mi experiencia . No puedo dejar de preguntarme por qué la gente piensa que eso es difícil, pero ven videos codificados en MPEG4 a pantalla completa al mismo tiempo en todos sus dispositivos.
Para demostrar lo fácil que es esto: escribí una respuesta hace un tiempo que demuestra cómo visualizar datos de audio. Si no hace todo el baile de bucle invertido, sino que simplemente selecciona su tarjeta de sonido como fuente, ya ha terminado y tiene su visualización de FFT:
También escribí un firmware mínimo hace un tiempo (no puedo encontrarlo, lo siento) que usaba una placa de evaluación Tiva-C ARM de 6 $ para convertir y enviar muestras a una PC a hasta 200kS/s a través de USB como transferencias masivas. Tendría que escribir su propio software de "controlador" de espacio de usuario para comunicarse con dicho dispositivo, pero también funcionaría. Pero no se gana mucho al hacerlo en comparación con comprar una tarjeta de sonido, a menos que de todos modos necesite usar un microcontrolador de este tipo, por ejemplo, para controlar otra cosa.
chris stratton
connor lobo
Lógica1
Lógica1
connor lobo
connor lobo
connor lobo
Lógica1
connor lobo
Lógica1
connor lobo
connor lobo
Ale..chenski
Lógica1
broma
rioraxe