En este proyecto, desarrollaremos un generador de tonos usando Arduino Uno. Tendremos botones interconectados con la UNO y cada uno de ellos genera diferente intensidad de tono. La frecuencia del tono generado por la UNO es la misma en todos los internos. Es la intensidad del sonido la que cambia con cada pulsación. Esta es una de las formas más fáciles de hacer un piano con Arduino Uno. Consulte también este circuito de piano.
Los tonos se pueden aumentar hasta 20. Esto proporciona la mejor variación de tono y cambios mucho más suaves. La intensidad del tono se cambia mediante PWM (Modulación de ancho de pulso). En el siguiente gráfico se muestra un ejemplo de PWM.
En PWM, la frecuencia de la señal o el período de tiempo de la señal (Ton + Toff) es siempre constante. Sólo cambia la relación de tiempo de ENCENDIDO y APAGADO. Por ejemplo, en el segundo gráfico de la figura anterior, el tiempo de ENCENDIDO es del 80% y el tiempo de APAGADO es del 20% de la duración completa.
En el tercer gráfico, el tiempo de ENCENDIDO es del 50% y el tiempo de APAGADO es del 50% de la duración completa. Entonces, en el primer caso tenemos una tasa de trabajo del 80% y en el segundo caso tenemos una tasa de trabajo del 20%.
Con este cambio en la relación de trabajo, tenemos un cambio en Vrms (valor cuadrático medio del voltaje), cuando este voltaje se da al zumbador, hace un ruido diferente siempre que hay un cambio en la relación de trabajo.
Vamos a programar el UNO para proporcionar una señal PWM de diferente relación de trabajo para cada uno de los botones. Así que tenemos un generador de tonos a mano que genera un tono diferente con cada pulsación de botón.
Componentes requeridos
Hardware: Arduino Uno, fuente de alimentación (5v), condensador de 1000 uF, condensador de 100 nF, zumbador, botones (8 piezas).
Software: AURDINO nightly o Atmel studio 6.2
Diagrama de circuito y explicación de trabajo
El circuito del generador de tonos se muestra en el siguiente diagrama.
Para filtrar el ruido de la tensión de alimentación, los condensadores se colocan en los terminales como se muestra en el diagrama.
El PWM de Arduino Uno se puede lograr en cualquiera de los pines simbolizados como “~” en la placa PCB. Hay seis canales PWM en UNO. Sin embargo, no podemos usar los pines PWM establecidos sobre los PIN 0-7, ya que se prefieren los PIN para la interfaz de botones.
Hay una razón para seleccionar PINS 0-7 como entradas, porque los PINS 0-7 representan el PORTD del microcontrolador. Entonces, en el último caso, podemos tomar el BYTE completo de PORTD.
Ahora para obtener un PWM de relación de trabajo diferente, usaremos el siguiente comando.
analogWrite (9, VALOR); |
Desde la condición anterior, podemos obtener directamente la señal PWM en el pin correspondiente. El primer parámetro entre paréntesis es para elegir el número de pin de la señal PWM. El segundo parámetro es para la relación de trabajo de escritura.
El valor PWM de Arduino Uno se puede cambiar de 0 a 255. Con "0" como más bajo a "255" como más alto. Con 255 como relación de trabajo, obtendremos 5V en PIN9. Si la relación de trabajo se da como 125, obtendremos 2.5V en PIN9. Vamos a dividir la relación de trabajo de 0-250 entre 8 botones interconectados en PORTD de UNO. Aquí elijo 25 incrementos para cada botón, pero es tu elección.
Con eso tendremos una señal PWM cuya relación de trabajo cambia con cada botón. Dado esto al zumbador, tenemos generador de tonos. El funcionamiento de este generador de tonos basado en Arduino se explica paso a paso en el código C que se muestra a continuación.