Mediante una salida digital podemos controlar un dispositivo (un LED, un motor…), de forma que pueda estar encendido o apagado. Pero, ¿Qué ocurre si queremos modificar el brillo de dicho led o si, por ejemplo, queremos modificar la velocidad de rotación de un motor?
La salida de Modulación por Ancho de Pulsos o PWM (Pulse Width Modulation) nos permite hacer justamente esto: tener una salida proporcional.
La técnica consiste en generar una salida de pulsos digitales (0-5V) de frecuencia fija, pero en la que podemos modificar el «factor de servicio», esto es, el tiempo en el que dicha señal se enecuentra a nivel alto
En la siguiente figura se muestran varios ejemplos de una salida PWM.
En la placa Arduino UNO los terminales 3, 5, 6, 9, 10 y 11 pueden ser configuradas como salidas PWM, para ello seleccionaremos el modo en la ventana de Configuración.
En la pestaña PWM podemos regular manualmente el nivel de cada salida. Esto lo podemos realizar en forma de porcentaje (de 0 al 100%) o en cuentas (de 0 a 255), para tener una mayor similitud con los parámetros de la programación de Arduino.
También tenemos la posibilidad de controlar la salida PWM 3 de forma automática con el nivel de una entrada analógica. En este caso, el rngo de entrada analógica de 0 a 1023 cuentas, se transforma linealmente en la salida PWM de 0 a 255 cuentas.
Importante: Una salida PWM puede controlar directamente un LED o similar sin problemas. En el caso de querer variar la velocidad de un motor (o similar), es necesario interponer un driver de potencia entre la salida PWM de la placa Arduino UNO y el propio motor.