¿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:

PWM al 50%

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):

duty cycle de un 10% Arduino

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:

pines pwm en 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:

PlacaPines PWM
Arduino UNO R33,5,6,9,10 y 11
Arduino UNO R43,5,6,9,10 y 11
Arduino Leonardo3,5,6,9,10, 11 y 13
Arduino Mega R32-13 y 44-46
Arduino Due2-13
Arduino Nano3,5,6,9,10 y 11
Arduino Micro3,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.

sígueme en instagram

Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).

No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso