[go: up one dir, main page]

0% found this document useful (0 votes)
115 views16 pages

EE 109 Unit 10 - Pulse Width Modulation

Pulse width modulation (PWM) controls the duty cycle of digital outputs to produce average analog voltages or power levels. It is commonly used to control devices like motors, dim LEDs, and set power levels in appliances. Microcontrollers generate PWM signals using timers and control registers to count up to a threshold value that determines the pulse width. Setting the pulse width modulates the average output voltage or power.

Uploaded by

Emin Kültürel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
115 views16 pages

EE 109 Unit 10 - Pulse Width Modulation

Pulse width modulation (PWM) controls the duty cycle of digital outputs to produce average analog voltages or power levels. It is commonly used to control devices like motors, dim LEDs, and set power levels in appliances. Microcontrollers generate PWM signals using timers and control registers to count up to a threshold value that determines the pulse width. Setting the pulse width modulates the average output voltage or power.

Uploaded by

Emin Kültürel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

1

EE 109 Unit 10 - Pulse Width


Modulation
2

Power
• Recall (or learn) that Power is a measure of:
– Energy per unit time
• In an electronic circuit, P = I * V
– Power = Current & Voltage (each may be varying w/ time)
• A circuit that draws a constant 2 mA of current at a constant 5V would
consume 10 mW
• Since voltage and current may change rapidly, it is often helpful to
calculate the average power

• Just sum the total power and divide by the total time
1s 1s
5V Average Power
.5s .3s
I = 1A = (1*5*.8)/2 = 2W
0V
3

Output Devices
• What do the following have in common?
– Servo motor that can rotate to any angle w/in 180 degrees
– Light dimmer
– Oven or microwave with various power levels
• They are controlled by Pulse Width Modulation (PWM)
– Usually a 3-pin interface: Power (Vcc), GND, PWM Signal
4

Duty Cycle
• A pulse is just a short window of time when a signal is
'on'
• We could repeat the pulse at some regular period, T
• We define the duty cycle as
Duty Cycle % = (ON Time / T) * 100
T T T T
5V
Duty Cycle T/2
= 50%
0V
T
5V
Duty Cycle
= 25%
0V
T/4
5

Power & Duty Cycle


• When we light up an LED we 5V
often just turn a PORTxx output
'on' and leave it 'on' 0V
– This supplies the maximum power PORTxx 'on' constantly
possible to the LED
i + V1 -
• We could pulse the output at PORTXX
R1
some duty cycle (say 50%) at a uC

+ VLED -
Vs
fast rate
– Fast so that the human eye can't
detect it flashing
– Average power would be ½ the T T
original always 'on' power
5V
– Result would be a 'dimmer' LED T/2
glow
0V
PORTxx 'on' 50% of time
6

In-Class Activity
• Write a program with a loop that turns on the LED
(PORT B5) for x milliseconds and then turns it off for
100-x milliseconds
– Initially set x = 100
– Now set x = 50
– Now set x = 20
– Now set x = 10
– Now set x = 2
• Notice result may be non-linear
• A similar tactic is used in your microwave oven when
you want to cook something at 80%, 70%, etc. power.
7

PWM
• Modulation refers to changing a value based on some signal
(i.e. changing one signal based on another)
• Pulse width modulation refers to modifying the width of a
pulse based on another signal
• It can be used to transform one signal into another
– Example below of
sine wave represented
as pulses w/ different
widths
• Or it can just be used
to alter average power
as in the last activity
8

Simple Digital-To-Analog
• Connecting a PWM output to a resistor-capacitor circuit
as shown causes the voltage at Vc to "integrate" the
digital PWM signal (charge the capacitor)
– Analogy: Imagine you have a leaky bucket (i.e. capacitor) and
you want to produce a variable level (i.e. analog voltage, Vc)
of water by only turning the hose (digital output) on or off

5V
VPWM
0V
5V
Vc
0V
9

Servo Motors
• Many embedded systems use servo
motors to move or rotate mechanical
devices
• Most servo motors use some form of
pulse width modulation to control the
direction and speed of their rotation
• 2 Kinds
– Standard servo motors: can only rotate
through a certain arc (usually 180 degrees)
– Continuous: can keep spinning round and
round while pulses are provided
10

Standard Servo Motor


• Pulse width determines angle (position) of servo motor
• Must continue to give pulses for the duration of time it takes
to rotate to the desired position
• No pulses = stay put
Full left 20 ms 20 ms

Pulse width = 750us


Centered 20 ms 20 ms Do an Internet search
for Standard Servo
Motors & try to find
the appropriate pulse
Pulse width = 1500us width for each
position
Full right 20 ms 20 ms

Pulse width = 2250us


11

Continuous Servo Motors


• Pulse width determines speed & direction of rotation
• Controlled via PWM (Pulse Width Modulation)
– Short pulse = Rotate one direction
– Medium pulse = Stop
– Long pulse = Rotate other direction

20 ms 20 ms 20 ms

Pulse Width = 1000 us = Pulse Width = 1500 us = Pulse Width = 2000 us =


Full Speed Clockwise Stopped Full Speed Counter-
Clockwise
12

Implementing PWM
• Can use delays or timers to make your own pulse
signals
• Most microcontrollers have hardware to
automatically generate PWM signals based on the
contents of some control registers
• Many microcontrollers use the Timers to also serve
as PWM signals
– Recall the timer module gave us a counter that would
increment until it hit some 'modulus' (MAX) count which
would cause it to restart and also generate an interrupt
13

Using Timers for PWM


• For PWM we can use that counter to just count 0 to some
MAX count making the:
– PWM output = '1' while the count < threshold (OCRxx) and
– PWM output = '0' when the count >= threshold (OCRxx)
time time
MAX MAX
(255) (255)

OCRxA

OCRxB

0 0

PWM Output 1 PWM Output 2


14

PWM Control Registers


• In this slide packet we will use the 8-bit Timer/Counter0 rather
than the 16-bit Timer/Counter1
• Refer to Timer Slides w/ following additions
• Set WGM0[2:0] bits for Fast PWM mode as opposed to CTC
• Timer/Counter0 can produce two PWM outputs on Arduino pins
D5 and D6, each with its own threshold value, so you need to pick
which one you want to use
– Bits COM0A[1:0] and threshold register OCRA control operation of output
D6 (PORTD6)
– Bits COM0B[1:0] and threshold register OCRB control operation of output
D5 (PORTD5)

See datasheet, textbook or other documentation for further


explanation
15

PWM Control Registers


• Set WGM bits for PWM mode [usually COM0 COM0 COM0 COM0 - - WGM WGM
A1 A0 B1 B0 01 00
Fast PWM mode] as opposed to CTC
• Pick COM0?[1:0] for desired waveform TCCR0A Reg.
Timer/Counter0 Control Register
• Still need to pick a prescaler to slow
down the clock FOC FOC - - WGM CS02 CS01 CS00
0A 0B 02
• Set OCRA or OCRB to the desired
threshold which will effectively control TCCR0B Reg.
the duty cycle of the PWM output Timer/Counter0 Control Register

CS0 Prescaler COM0?1, Output Compare pin WGM01, WGM02=0 WGM02=1


[2:0] COM0?0 (assume WGM02=0) WGM00 (Ignore )

010 Clk / 8 00 Don't use Pin 00 Normal Unused


(Counter)
011 Clk / 64 01 Don't use Pin
01 Phase Phase Correct
Correct PWM PWM
100 Clk / 256 10 Set Pin on CTR=0x00, Clear
(Top=OCRA)
pin on match=OCR?
101 Clk / 1024 10 CTC (Timer) Unused
11 Clear Pin on CTR=0x00, Set
pin on match=OCR?
11 Fast PWM Fast PWM
(Top=255) (Top=OCRA)
16

Exercise
• Try to use PWM to make your LED glow at
various brightness levels similar to what you
did earlier with normal digital I/O

You might also like