El PWM es un tipo de señal de tensión que usamos en electrónica con muchos objetivos distintos y para muchas tareas distintas. Vivimos rodeados de dispositivos que usan PWM para realizar alguna operación.

Qué es PWM y cómo funciona la modulación de ancho de pulso

PWM son siglas en inglés que significan Pulse Width Modulation y que lo podemos traducir a español como Modulación de ancho de pulso. Puede ser que esto no te diga nada de momento, pero al terminar el artículo tomará todo el sentido del mundo.

La modulación de ancho de pulso está formada por una señal de onda cuadrada que no siempre tiene la misma relación entre el tiempo que esta en alto y el tiempo que está en bajo.

En la siguiente imagen vemos una señal que varía entre 5 voltios y 0 voltios. A lo largo del tiempo la señal varía entre dos valores de tensión. Durante un tiempo determinado la señal se encuentra en el nivel alto ( en este caso 5v ) y durante otro periodo de tiempo se encuentra en el segundo valor de tensión (en este caso 0v).

Señales PWM 10-40-90
Señales PWM 10-40-90

El tiempo que la señal se encuentra en el nivel alto ( 5 voltios ) lo denominamos como tiempo on ( Ton ) mientras que el tiempo que está en nivel bajo lo denominamos tiempo off ( Toff ). La suma del tiempo on y el tiempo off es el perido de la señal ( T ).

Y como en toda señal periódica, el inverso de del periodo ( 1 / T ) es la frecuencia de la señal.

¿Cómo funciona el PWM? Variando su valor de tensión entre dos valores conocidos, por ejemplo Vcc y GND en periodos concretos de tiempo y con una frecuencia fija. Estos periodos reciben nombres especiales.

Ciclo de trabajo o Duty Cycle

La variación de ancho de pulso consiste en variar los tiempo de encendido y apagado, es decir Ton y Toff. Al cambiar el valor de un PWM, en realidad se están modificando estos tiempos.

Uno de las características más importantes de una señal PWM es su ciclo de trabajo o Duty Cycle, en ingles, ya que este es el que varia en un PWM.

El ciclo de trabajo no es otra cosa que la relación entre el tiempo de encendido y el periodo o tiempo total del PWM.

(1)    \begin{equation*} DC \ = \ \frac{T_{on}}{T} \end{equation*}

Cuanto mayor sea el duty cycle, mayor tiempo estará la señal de tensión en alto, sin variar el periodo. Por consecuencia, como el periodo no varia y la suma de Ton y Toff, si el tiempo de encendido aumenta, el tiempo de apagado disminuye.

En la siguiente animación puedes ver como varia el duty cycle al variar el tiempo de encendido.

PWM - Pulse Width Modulation
PWM – Pulse Width Modulation

Este es el motivo por el cual se llama modulación de ancho de pulso, porque literalmente se varia el ancho del pulso de nievel alto.

Normalmente el valor de ciclo de trabajo se expresa en porcentaje y para ello solo debemos multiplicar por 100 a la ecuación (1).

(2)    \begin{equation*} DC \ = \ \frac{T_{on}}{T} \ \cdot 100 \end{equation*}

Cuando el ciclo de trabajo es 90%, como en la siguiente imagen, la señal está en nivel alto durante el 90% del periodo.

PWM 90%
PWM 90%

Cuando el ciclo es de 20%, como en la siguiente imagen, la señal estará el 20% del tiempo en nivel alto y el 80% en nivel bajo.

PWM 20%
PWM 20%

Para que sirve el PWM

Hasta ahora sabemos que el PWM es una señal que varia el ancho de su pulso en función del parámetro que denominamos ciclo de trabajo. De lo que no hemos hablado todavía es sobre para que sirve la modulación de ancho de pulso en la práctica.

Lo cierto es que al variar el duty cycle de una señal PWM, lo que estamos haciendo es variar su tensión media y esta es la clave por la cual usamos tanto el PWM. Cunado una señal media de tensión atraviesa ciertos componentes electrónicos, puede hacer que su comportamiento cambie. Por ejemplo, los LED, los motores de corriente continua o ventiladores, incluso altavoces y zumbadores.

Si tenemos un LED conectado a un microcontrolador, podemos variar el brillo con el que se enciende el LED variando la señal PWM a la que se sometemos.

LED resistencia controlado por PWM
LED resistencia controlado por PWM

Si le enviamos una señal de 100% de ciclo de trabajo, el LED se encenderá con todo su potencia óptica y por tanto con todo su brillo. Si lo conectamos a una señal del 50% de duty cycle, el LED se encenderá con la mitad de su brillo.

Otra opción puede ser controlar la velocidad de un motor de corriente continua, por ejemplo los que usan algunos ventiladores de PC, aunque se puede usar con cualquier motor de corriente continua tal y como vimos en un tutorial anterior sobre controlar un motor de corriente continua con PWM.

Cuando varía el ciclo de trabajo, varía la velocidad ya que varia la tensión media en el bobinado del motor. Con un ciclo de trabajo de 100%, el motor girará a la máxima velocidad. Al reducir el ciclo de trabajo, se reducirá la velocidad.

Otro clásico es enviar una señal PWM que varia su duty cycle a un altavoz o zumbador para generar sonidos y melodías de manera sencilla y rápida. Un ejemplo puedeser cuando tocamos la Marcha Imperial en el tutorial sobre sensores capacitivos con Arduino.


Qué es PWM y para que sirve - Una explicación sencilla y detallada

Como crear o generar una señal PWM

Como siempre, existen muchas alternativas a la hora de generar una señal PWM. Una de las más clásicas es usar un microcontrolador.

SI decides usar un microcontrolador, existen dos posibilidades, que no exista ninguna librería disponible que lo haga, o que si si exista. Si no existe, el PWM lo puedes crear usando un temporizador del microcontrolador.

Otra alternativa puedes ser usar el clásico Arduino para generar la señal de modulación de ancho de pulso. En Arduino la señal de PWM la generamos mediante el uso del método analogWrite(); En el siguiente ejemplo leemos la señal de una entrada analógica la convertimos en una señal de 0 a 255 y la enviamos a la salida PWM.

int value = 0;

void setup() {
pinMode(6,OUTPUT);
}

void loop() {
value = analogRead(0);
value = map(value, 0, 1024, 0, 255);
analogWrite(6, value);
}

Las salidas PWM en Arduino pueden tomar valores entre 0 y 255 (8 bits) que corresponden con 0 y 100% respectivamente.

Una tercera posibilidad es usar el clásico pero imbatible 555. Y es que con él podemos generar una señal PWM usando un esquema como el siguiente.

señal pwm con 555
señal pwm con 555 – Click para ampliar

Si te has quedado cualquier duda, dejala abajo en los comentarios. Y si quieres seguir leyendo, a lo mejor te interesa como crear una señal analógica con Arduino usando PWM y un filtro paso bajos.

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en www.enriquegomez.me