Arduino PWM: Modulación por ancho de pulsos

8
14192

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.

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.

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.

0 0 votes
Article Rating
Suscríbete
Notify of
guest

8 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Carlos ll
Carlos ll
6 years ago

Son los pines 9 10 11 del arduino uno en el codigo.
El del video corresponde al 8 9 10 del arduino mega

Antony García González
Antony García González
6 years ago
Reply to  Carlos ll

Los pines PWM son los que tienen el símbolo ~

alvaro
alvaro
6 years ago

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?

hiddenotebook rules
hiddenotebook rules
8 years ago

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

Antony García González
Antony García González
8 years ago

Gracias

jose maria
jose maria
10 years ago

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
[email protected]

antonygarciagonzalez
9 years ago
Reply to  jose maria

Estoy tratando de construir un detector de cruce por ceros para lograr eso