Go Down

Topic: Generador formas de onda mediantePWM con frecuencia y ciclo de trabajo variables (Read 687 times) previous topic - next topic

vitxu

Un saludo a todos!

Recientemente me he interesado en esta fantastica herramienta que es arduino, y he decidido orientar su aplicación hacia el area que más me gusta, el sonido. He querido empezar por algo sencillo como es el control de un trémolo, pero como siempre pasa y además las posibilidades de este aparatito son tantas, he decidido complicarme un poco más.

Basicamente de lo que se trata es de iluminar un led conectado a una salida PWM, este led enfrentado a una LDR, digamos que "abre o cierra el grifo" del input de nuestro instrumento musical, dejando pasar todo el sonido cuando esta apagado y nada cuando se enciende. Para ello quiero usar 3 potenciometros que controlen Frecuencia (de 2 a 30Hz), Ciclo de trabajo (10- 50%) y forma de onda(este sería más un selector entre cuadrada, senoidal, triangular y diente de sierra)  

En el caso de emplear una onda cuadrada el asunto es fácil tanto para controlar la frecuencia como el ciclo de trabajo porque sólo tenemos que decirle a nuestro arduino cuanto tiempo debe estar en high y cuanto en low y cuantas veces por segundo queremos que lo haga. Mi duda surge a la hora de manejar las demás formas de onda. Por ejemplo, ojeando programas de manejo de osciladores he podido observar que para producir una onda senoidal o triangular por PWM, con un bucle for, se "mapea" un array de 256 bits en el que sube de 126 a 256 (pico alto del seno) baja de 256 a 0 (pico bajo del seno) y vuelve al origen de 0 a 126. Manejando el tiempo de repeticion tendriamos la senoidal variable en frecuencia, pero el ciclo de trabajo sería siempre del 50%.

¿Cómo podría entonces variar el ciclo de trabajo? He pensado en hacer dos bucles for, uno que mapee el semiciclo "alto" y otro que haga lo propio con el "bajo", pero aún no me aclaro bien como debería configurar los timers.

Si alguien me puede orIentar para solventar esta duda, o tiene otra posible solución, no dude en responder.

Un saludo y gracias de antemano.    

Go Up