En muchos casos se necesita hacer un control preciso de la tensión analógica. Por ejemplo, en el caso de un motor de contínua, la velocidad de giro es directamente proporcional a una tensión (o voltaje) aplicado.
Desde un dispositivo digital, como pueda ser un microcontrolador, no es sencillo el obtener un nivel de tensión analógico preciso. Es necesario de la utilización de dispositivos DAC, que convierten codificaciones digitales en niveles de tensión dentro de un rango.
Además la precisión alcanzada no es del todo aceptable en casos de un microcontrolador de 8 bits. Por ejemplo, si necesitamos reproducir una señal con un rango de valores de 5V, con una precisión de 8 bits, podemos tener 256 niveles diferentes de entre 0 y 5 V, o lo que es lo mismo, saltos mínimos de 5/256= 19.5 mV. El aspecto de esta señal presentará escalones como mínimo de incrementos o decrementos de 19.5mV.

El PWM, o modulación por anchura de pulsos, permite el uso de señales de dos niveles (pulsos que conmutan por ejemplo de o a 5V) para conformar ondas de cualquier aspecto de entre 0 y 5 voltios y solucionar en parte el problema de la poca precisión explicada anteriormente. El aspecto se consigue añadiendo un pequeño filtro paso bajo.
Si generamos una señal cuadrada (pulsos de duración determinada que conmutan de 0 a 5V) éstos tendrán un nivel de tensión continua que será el valor medio de los niveles. Es fácil de comprender: si tenemos durante un segundo la señal a 5 voltios y durante otro segundo 0 voltios, el nivel medio en 2 segunsdos habrá sido de 2.5 V exactos. Esto es lo que se consigue con el filtro pasobajo sobre la señal, que provoca destruir la señal con frecuencia alta, la pulsante, quedandose exclusivamente con la señal media.
Si esto lo extrapolamos a frecuencias mucho mas rápidas, del orden de decenas de kiloherzios o centenas de kilohercios podremos ir conformando señales con niveles de tensión variable, ajustando la duración del tiempo en el que esa señal permance a nivel alto, o lo que se denomina el ciclo de trabajo.
En el ejemplo explicado, el ciclo de trabajo era del 50%, puesto que la mitad de tiempo estaba a 5V y la mitad de tiempo a nivel bajo. Esto daba como resultado una señal de un 50% de nivel del máximo, los 2.5V. Si utilizamos una señal, por ejemplo, que esté el 70% a nivel alto, tendremos un nivel medio, tras el filtro, de 3.5V (0.70*5).
Por tanto, lo que se trata es de traducir el tanto por ciento del máximo de tensión que se quiere en tanto por ciento de duración de nivel alto de la señal cuadrada o pulsante. Esto se realiza sin cambiar la frecuencia de la señal consiguiendose un control sencillo del nivel de tensión.
Si por ejemplo, según la respuesta del filtro de la figura con una frecuencia de corte a 5khz, utilizamos una señal cuadrada de, por ejemplo 100 khz, esta señal quedará atenuada prácticamente al completo, pasando las componentes más bajas, que son exclusivamente las de 0 herzios, o las del la tensión media.
