Arduino PWM: Modulación por ancho de pulsos

6
562
GARD Pro Not Registered

Antes de explicar lo que es el PWM (Pulse width modulation, modulación por ancho de pulsos), vamos a ver primero como se ve una gráfica de voltaje vs tiempo.

Cuando se trabaja con corriente directa el signo del voltaje permanece invariable en el tiempo, es decir, no cambia de signo como es el caso de la corriente alterna. O se mantiene positivo o se mantiene negativo. Cuando el voltaje directo se ha regulado, obtenemos un valor invariable en el tiempo. En el caso de Arduino el voltaje es 5 voltios en los pines digitales. Cuando programamos un Output, la gráfica de voltaje vs tiempo luce así:

Netbeans IDE

El voltaje permanece constante. No varía en el tiempo. Sin embargo, es posible dividir esa onda en ciclos de trabajo. Los ciclos de trabajo duran un tiempo determinado, por lo que una onda de voltaje puede ser dividida en cuadrados.

sin-tc3adtulo-1

El dividir el voltaje en ciclos de trabajo ofrece muchas ventajas. La información puede ser transmitida modulando la duración y la prolongación del voltaje en un ciclo de trabajo. De igual forma se puede regular la energía que se entrega a una determinada carga. Esta es la función que nos interesa en este post ya que con Arduino podemos modular el ancho de los pulsos de una señal.

GARD Pro Not Registered

Esto quiere decir que podemos reducir en determinado porcentaje la prolongación del voltaje en cada ciclo de trabajo. Digamos que decidimos enviar un pulso de 5 voltios en un 50% del ciclo de trabajo. El resultado será el siguiente:

pwm

Cabe destacar que es posible trabajar a diferentes porcentajes del total del ciclo de trabajo. Así podríamos por ejemplo reducir la luminosidad de un LED en un porcentaje de su luminosidad total y eso es lo que vamos a hacer.

Lo que haré es utilizar 4 LEDs para mostrar 3 niveles distintos de luminosidad. Los 3 LEDs necesitarán ser protegidos con resistencias. Hay que usar los pines digitales de Arduino con capacidad de utilizar PWM, es decir, aquellos que tienen el símbolo ~ a un lado.

GARD Pro Not Registered
PWM_pins
Pines PWM del Aruino UNO

Usaremos los pines 8, 9 y 10 (los pines que tienen el símbolo ~ a su izquierda son los que están habilitados para PWM). El código es el siguiente:

Subiendo este código y conectando LEDs con sus resistencias en los pines 8, 9 y 10 se obtiene lo que se muestra en el siguiente video.

Espero que les guste. Saludos.

  • alvaro

    hola buenas, necesito hacer esto pero en un tiempo de 0.002 segundos y lo mínimo que consigo es que sea de 0.01 segundos. Me podrías esplicar por que no lo consigo?

    • Antony García González

      El Arduino tiene una frecuencia fija de PWM. Habría que intentar cambiarla

  • hiddenotebook rules

    Muchas gracias esta web si que tiene información de calidad!!

    • Antony García González

      Gracias

  • jose maria

    hola estaría bien si sacases un tutorial sobre como controlar velocidad de motores de ca sin carga y poder regular la velocidad de estos motores a traves de optoacopladores y triac.
    y cargarselo al arduino mega por ejemplo. Saludos
    jomabarpe@gmail.com