2.1 PWM Applications
PWM is routinely used to control the speed of DC motors using an H-bridge. In this application, the duty cycle is varied between 0% and 100%, and the physical properties of the motor itself effectively average the values of the pulses such that they are interpreted as a voltage varying between stopped (0VDC) and full speed (e.g. 12VDC).
This technique has also been used to provide a brightness control mechanism for LEDs in which, by using a pulse rate faster than the LED can flash, the effective voltage (and thus brightness) can be varied by varying the PWM duty cycle.
These are examples of PWM being generated by an MCU for use by a device. In a reversal of this notion, there are some sensors that produces PWM to convey the value of its current analog reading to an MCU. By using PWM for this application, there is no need for the MCU to use an ADC module for measuring the duty cycle.
While these are examples of encoding of analog information, PWM can also be used to encode digital information. SAE protocol J1850-PWM (used in intra-vehicle networks) defines an encoding where a single bit 0 is represented by a (nominal) 33% duty cycle, and a bit 1 by a 66% duty cycle.
Most of the Atmel AVR microcontroller product line are capable of generating PWM signals using one or more timers.