Arduino y generación de ondas

0

Estoy tratando de generar una combinación de 2 ondas con diferentes frecuencias. Por ejemplo, 1Khz y 5Khz - para que pudiera reconocerlo en mi PC usando FFT. Parece que la proeza no es posible usando arduino.

¿Alguien tuvo éxito? ¿Es posible de otra manera? físicamente posible?

¡Gracias!

    
pregunta roman

4 respuestas

3

Si 5kHz es la frecuencia más alta que necesita, entonces de acuerdo con Nyquist (algunos dicen que Shannon) necesita al menos una frecuencia de muestreo . Ese es un período de muestra de 100 \ $ \ mu \ $ s, que debería ser factible para cualquier microcontrolador moderno. Tendrá que hacer tablas de búsqueda para sus formas de onda. Todo depende de las frecuencias que desee (por ejemplo, ¿solo 1kHz y múltiplos?) Y de la forma de onda (onda cuadrada, ¿senoidal?). Tenga en cuenta que, para la frecuencia de muestreo de Nyquist, también debe tener en cuenta los armónicos . Por lo tanto, puede reconstruir un seno de 5 kHz cuando se muestrea a 10 kHz, porque no tiene armónicos más altos, pero una onda cuadrada de 5 kHz necesita bastantes armónicos para obtener una aproximación decente de la forma de onda, por lo que 10 kHz será insuficiente. br> También querrá un filtro analógico de paso bajo en la señal de salida, para filtrar el muestreo.

    
respondido por el stevenvh
1

Si solo quieres probar fft, solo usa una onda cuadrada, la frecuencia y la amplitud de los componentes son bien conocidas, y las ondas son fáciles de generar.

    
respondido por el russ_hensel
1

Recomiendo usar una tabla de búsqueda que se asigne a valores entre 0 y 2 \ $ ^ N \ $ que correspondan a las entradas en un R-2R DAC . Cuanto más grande sea \ $ N \ $, más precisa será la forma de onda pero más pines de E / S tendrá que usar. Esto se llama la resolución de un DAC.

Luego use la biblioteca de temporizadores para arduino para escribir una pequeña función que cambie periódicamente los pines de salida que son los entradas al DAC que construyes.

Alguien ya ha hecho algo similar aquí . Lo único que tendría que agregar es la interrupción del temporizador y, por supuesto, el cálculo de sus tablas de onda .

    
respondido por el NickHalden
0

No sé aurdino, pero esto es bastante fácil de hacer en los procesadores con los que trabajo. La respuesta son los temporizadores. Puede programar su GPIO para alternar a una frecuencia específica utilizando temporizadores. En los procesadores del brazo Lo usamos, lo hago todo el tiempo. El problema es que los GPIO proporcionarán un reloj cuadrado, si necesita una onda sinusoidal, etc., necesita hardware adicional.

Lo que también puedes hacer es que puedes obtener dos temporizadores usando GPIO y usar un simple o compuerta para combinar los relojes.

No preguntaste, pero si quieres que se encuentren en algún tipo de fase, no tienes más remedio que usar un hardware con temporizador avanzado, ya que con el software, obtener el bloqueo de fase exacto sería un desafío.

    
respondido por el Frank

Lea otras preguntas en las etiquetas