¿Qué es PWM?
PWM son las siglas de Pulse-Width Modulation (Modulación por Ancho de Pulso).
Es una técnica utilizada para simular señales de tipo analógico utilizando medios digitales.
La modulación por ancho de pulso consiste en generar una señal de onda cuadrada con un ciclo de trabajo variable, lo que significa que la duración del pulso de la señal (el tiempo durante el cual está activa o en estado alto) se modifica, manteniendo constante la frecuencia de la señal.
Este ciclo de trabajo variable permite controlar la cantidad de potencia promedio entregada a un dispositivo. Cuando el ciclo de trabajo es alto, el promedio de potencia entregada es alto; por el contrario, cuando es bajo, el promedio de potencia disminuye.
Permite a los sistemas digitales controlar eficazmente los dispositivos analógicos encendiendo y apagando rápidamente la alimentación a intervalos diferentes sin disipar demasiada energía en forma de calor.
PWM se utiliza en microcontroladores, circuitos integrados y diversos sistemas electrónicos para proporcionar un control preciso sobre la potencia suministrada a diferentes componentes o dispositivos. Arduino es un buen ejemplo de ello, puesto que muchos de sus pines digitales están adaptados para soportar esta técnica. Al final de este artículo encontrarás toda la información necesaria para utilizar PWM en Arduino.
¿Cómo funciona PWM?
Para comprender cómo funciona PWM primero tienes que saber qué es el ciclo de trabajo, también conocido como duty cycle.
El ciclo de trabajo (duty cycle) se refiere a la proporción de tiempo durante el cual la señal está en estado alto en un ciclo completo. Se suele expresar como un porcentaje.
No te asustes, mira el siguiente gráfico y lo entenderás mejor:
T es el tiempo total del ciclo (es decir, el tiempo que está la señal en estado alto más el tiempo que está en estado bajo) y t es el tiempo en el que se encuentra en estado alto. Como puedes ver en la imagen, t es exactamente la mitad de T, por lo que el ciclo de trabajo es el 50%. Simple, ¿no?
El ciclo de trabajo y t son directamente proporcionales. Si t aumenta también lo hace el ciclo de trabajo y si disminuye t también lo hace este último.
Vamos a ver ahora cómo calcularlo matemáticamente, porque en el diagrama anterior es demasiado obvio y no siempre será así.
En una onda cuadrada, el ciclo de trabajo se calcula dividiendo el tiempo que la señal está en estado alto (t) entre el tiempo total de un ciclo (T):
duty cycle = (t / T) * 100
Al multiplicarlo por 100 obtenemos el porcentaje.
Vamos a ver un ejemplo:
Supongamos que tienes una señal digital con un ciclo de 100ns (T) y la señal se encuentra en estado alto 10ns (t):
Aplicando la formula anterior obtenemos que el ciclo de trabajo es del 10%:
duty cycle = (10 / 100) * 100 = 10%
Ahora que ya sabes qué es el ciclo de trabajo, entender cómo funciona PWM es pan comido, puesto que consiste en modificar el ciclo de trabajo aumentando o reduciendo el tiempo en el que se encuentra la señal en estado alto.
Cuando aumenta el ciclo de trabajo también aumenta la cantidad de voltaje que se suministra al componente con el que estés trabajando. Reduciendo el ciclo de trabajo consigues el efecto contrario.
Para calcular el voltaje de la señal con un ciclo de trabajo concreto puedes aplicar la siguiente fórmula:
V = (Vmax – Vmin) * (duty cycle / 100)
Vmax es el voltaje en estado alto y Vmin en estado bajo.
Si lo aplicamos al ejemplo anterior, en el que obtuvimos un ciclo de trabajo del 10%, obtenemos que el voltaje es de 0,5V:
V = (5V – 0V) * (10 / 100) = 0,5V
De esta forma puedes, por ejemplo, regular la velocidad de un motor o la intensidad con la que brilla un LED.
Usos de la modulación por ancho de pulso
La modulación por ancho de pulso (PWM) se utiliza en una amplia variedad de aplicaciones en electrónica y sistemas de control debido a su capacidad para controlar la potencia suministrada a dispositivos o componentes. Algunos de los usos más comunes de PWM incluyen:
- Control de motores: Es uno de los usos más extendidos. Permite controlar la velocidad de motores eléctricos, como en ventiladores, bombas, robots, vehículos, entre otros, variando el ciclo de trabajo para regular la velocidad y el torque del motor.
- Iluminación LED: La tecnología LED se beneficia mucho de PWM para ajustar el brillo de las luces. Al cambiar el ciclo de trabajo, se puede controlar la cantidad de luz emitida por un LED sin disipar excesivo calor.
- Fuentes de alimentación conmutadas: Se utiliza PWM para convertir la energía de una forma a otra (por ejemplo, de corriente continua a corriente alterna) y regular la cantidad de energía suministrada a un dispositivo.
- Control de temperatura: En sistemas de climatización o sistemas de refrigeración, la modulación por ancho de pulso se usa para controlar la velocidad de los ventiladores y regular la temperatura.
- Audio: En amplificadores de audio digitales, se emplea para recrear señales de audio analógicas, convirtiendo señales digitales en salidas de audio que representan niveles de voltaje.
- Electrónica de potencia: En sistemas de control de potencia, se emplea para regular la potencia suministrada a circuitos o dispositivos.
- Comunicaciones inalámbricas: En la transmisión de datos, puede usarse para modular señales y enviar información codificada.
- Robótica y automatización: En el control de diversos dispositivos en robótica y sistemas de automatización industrial, es fundamental para controlar motores, luces, brazos robóticos, entre otros.
En resumen, la versatilidad de PWM se refleja en su uso en una amplia gama de aplicaciones, donde su capacidad para controlar la potencia o la intensidad de señales es crucial para el funcionamiento eficiente de dispositivos y sistemas electrónicos.
PWM en Arduino
Pines PWM en Arduino
Todas las placas Arduino disponen de algunos pines digitales que soportan la modulación por ancho de pulso. Reconocerlos es muy fácil puesto que suelen están marcados con una virgulilla (~).
En la siguiente imagen puedes ver los pines PWM de un Arduino UNO:
De todos modos, siempre es recomendable que leas las especificaciones de la placa para identificar correctamente los pines PWM.
Te dejo a continuación una tabla en la que puedes consultar los pines digitales que soportan PWM en algunas de las placas Arduino más usadas:
Placa | Pines PWM |
Arduino UNO R3 | 3,5,6,9,10 y 11 |
Arduino UNO R4 | 3,5,6,9,10 y 11 |
Arduino Leonardo | 3,5,6,9,10, 11 y 13 |
Arduino Mega R3 | 2-13 y 44-46 |
Arduino Due | 2-13 |
Arduino Nano | 3,5,6,9,10 y 11 |
Arduino Micro | 3,5,6,9,10, 11 y 13 |
Cómo utilizar modulación por ancho de pulso en Arduino
Para ver cómo funciona PWM en Arduino vamos a ayudarnos de un LED y los pines PWM de Arduino.
Vamos a regular la intensidad con la que brilla el LED modificando el ciclo de trabajo. Es un ejemplo muy sencillo, pero muy ilustrativo y estoy segura que te ayudará a entenderlo a la perfección.
Puedes acceder al tutorial completo en el siguiente enlace:
Tutoriales de PWM con Arduino
En los siguientes tutoriales puedes ver algunas aplicaciones de PWM con Arduino:
Videotutorial
Si te quedan dudas puedes ver este vídeo en el que explico PWM de forma detallada.
No olvides suscribirte al canal para no perderte ningún vídeo.
¡Suscríbete a la newsletter y no te pierdas nada!
Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).