Paso 4: Generación de señal Pwm:
PWM (modulación de anchura de pulso) es una técnica por el cual controlamos simplemente una señal de salida digital por la conmutación y fuera muy rápidamente, variando la anchura de la duración de encendido/apagado, se le dará el efecto de variar la tensión de salida.
Vout = Ton /(Ton+Toff) * Vin
Período de tiempo (T) = Ton + Toff
Así que Vout = Ton / T * Vin
Donde Ton/(Ton+Toff) * 100 o tonelada /T * 100 se llama ciclo de trabajo
Ver el gráfico de ejemplos anteriores (he tomado de la Página Web de Arduino) para una mejor comprensión.
PWM permite una salida digital proporcionar una gama de niveles de potencia diferentes, similares a la de una salida analógica.
El mejor ejemplo es diluyendo un LED con diferente intensidad de luz. Esto puede hacerse por arduino, utilizando la función analogWrite().
Como Analog pin de salida es 8 bits podemos obtener máximo 2 ^ 8 = 256 o un rango de valores entre 0 y 255.
Enviar el valor 255, el LED de entrada produce 100% ciclo de trabajo, que se traduce en plena potencia en un perno PWM.
Enviar que el valor mínimo de 0, a la entrada del LED produce 0% ciclo de trabajo, que se traduce en no poder en un perno PWM.
En Arduino hay 6 pines PWM (3,5,6,9,10 y 11)
Usé el pin 6 (timer 0) para generar la señal PWM. Reloj de Arduino tiene máxima frecuencia de 16MHz, esto se puede reducir utilizando el prescaler. Por defecto pin Arduino PWM tienen prescaler = 64.
Así que PIN -6, obtengo un PWM de frecuencia 976,5625 Hz por defecto. Pero esta frecuencia es bastante alta para la carga de la batería. Así que decidí reducir esta frecuencia a un más bajo uno (61,035 Hz) seleccionando el valor divisor 1024.
Nota: Utilicé esta frecuencia porque encontré ese controlador de carga PWM máxima disponible en el mercado tienen frecuencia 25/50/100 Hz. No tengo mucha experiencia en este campo. Si alguno tiene buena experiencia en carga de la batería, por favor, comentarios sobre la selección de la frecuencia correcta para PWM. Por lo que se modifico mi código.
Cómo cambiar el frequncy Arduino PWM:
Puede ajustar la frecuencia PWM cambiando un valor del registro. El registro asociado a esto es TCCR0B.
Seleccionando tres reloj seleccionar Bits de TCCR0B registro podemos fijar el prescaler adecuada.
¿Estás pensando que es difícil? No muy es muy sencillo sólo tiene que colocar el código de línea dado fuelle en parte de su programa void setup(). Todo está hecho. Comprobar esto comprobando el código de ejemplo se descolora en el IDE de Arduino, generará 61Hz.
TCCR0B = TCCR0B & 0b11111000 | 0 x 05 ; escala 1024
Para que más detalles ajustar la frecuencia PWM Pulse aquí