Necesito un dispositivo para calcular la FFT más de 100 veces por segundo (mi alcance está a 10 hz)

2

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 la escala de tiempo que establezca, no obtengo más de 10 resultados 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 alcance genera 512 bins, y mis formas de onda de entrada varían de 100 hz a 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 esté ejecutando Python.

Debido a que Python no es muy rápido y al hecho de que es posible que desee monitorear múltiples entradas a la vez, sería difícil usar la tarjeta de sonido para la visualización en vivo de FFT (especialmente en algo como un Raspberry PI)

¡Gracias!

    
pregunta Logic1

1 respuesta

1
  

mi forma de onda de entrada varía de 100 hz a 10.000 hz.

En serio, eso significa (para Nyquist) que una tasa de muestreo de 20 kHz es suficiente; probablemente desee sobreexplorar un poco, pero todo por encima de 40 kHz es un lujo.

En otras palabras, esta es la mejor tarjeta de sonido-territorio.

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 ajustable basado en opamp para que la señal de entrada entre en el 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 erróneas aquí!

El procesamiento de 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á. Realmente, el esfuerzo de hacer un FFT en esta cantidad de muestras es ridículamente pequeño. Decodificar un MP3 es mucho más fácil para cualquier computadora (hecho divertido: el MP3 requiere una operación bastante similar a la FFT).

No te preocupes si Python te ralentiza: no hay ninguna biblioteca de Python que conozca FFT en python, pero confía en FFTpack o FFTw (numpy, por ejemplo). Puede hacer esas FFT cortas (es decir, "menos de cien mil contenedores") a tasas de muestreo de múltiples Megasamples por segundo en una PC normal, así que no se preocupe por la carga de trabajo que supone la FFT. En serio, ¿100+ transformadas 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 es difícil, pero mira videos codificados en MPEG4 a pantalla completa al mismo tiempo en todos sus dispositivos.

Para demostrar lo fácil que es esto: I escribió una respuesta hace un tiempo que demuestra cómo visualizar datos de audio. Si no haces todo el baile de loopback, pero simplemente seleccionas tu tarjeta de sonido como fuente, habrás terminado y tendrás tu visualización FFT'ing:

Tambiénescribíunfirmwaremínimohaceuntiempo(nopuedoencontrarlo,losiento)queusóunatarjetadeevaluaciónARMTiva-Cde6$paraconvertiryenviarmuestrasaunaPCaunavelocidaddehasta200kS/sporUSBcomotransferenciasmasivas.Tendríaqueescribirsupropiosoftwarede"controlador" para hablar con dicho dispositivo, pero también funcionaría. Pero no hay mucha ganancia al hacerlo en comparación con la compra de una tarjeta de sonido, a menos que necesite usar un microcontrolador de todos modos, por ejemplo. para controlar otra cosa.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas