You are on page 1of 48

ME 4447/6405

October 29th, 2009

By:
Val Tocitu
Jason Kulpe
Alexandre Mariuzza
Presenter: Val Tocitu
Introduction and definitions
Types of PWM
Methods of generation
Characteristics of PWM
Applications and examples
Implementation on the HCS12

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 2
What is it?
Output signal alternates between on and off within
specified period
Controls power received by a device
The voltage seen by the load is directly proportional
to the source voltage

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 3
Definitions
Duty Cycle: on-time / period
Vlow is often zero

VAVG DVHI (1 D)VLOW

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 4
Types of Pulse Width
Pulse center fixed, edges modulated
Leading edge fixed, tailing edge modulated
Tailing edge fixed, leading edge modulated
Pulse Width constant, period modulated

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 5
Types of Pulse Width

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 6
Analog Generation of PWM
Analog PWM signals can be made by combining a
saw- tooth waveform and a sinusoid

PWM output is
formed by the
intersection of
the saw-tooth
wave and
sinusoid

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 7
Digital Methods of Generating PWM
Digital: Counter used to handle transition
Delta : used to find the PWM at a certain limit
Delta Sigma: used to find the PWM but has advantage of
reducing optimization noise

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 8
Applications to DC Motors
The voltage supplied to a DC motor is proportional
to the duty cycle
Both brushed and brushless motors can be used
with PWM
Both analog and digital control techniques and
components are available

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 11
Three Phase AC motors with PWM
3 different AC currents at
different phases
Phase: 120 degrees apart
Creates constant power
transfer
Rotating magnetic field
Pulses substitute for AC
current

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 12
Space Vector Modulation
Used for three-phase AC motors
Convert DC current to AC current
Gates turned on/off at different intervals
3 PWM created

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 13
Motor Control Diagrams

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 14
Advantages of PWM
average value proportional to duty cycle, D
low power used in transistors used to switch
the signal
fast switching possible due to MOSFETS
and power transistors at speeds in excess
of 100 kHz
digital signal is resistant to noise
less heat dissipated versus using resistors
for intermediate voltage values

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 15
Disadvantages of PWM
Cost
Complexity of circuit
Radio Frequency Interference
Voltage spikes
Electromagnetic noise

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 16
Presenter: Jason Kulpe

Introduction and definitions


Types of PWM
Methods of generation
Characteristics of PWM
Applications and examples
Implementation on the HCS12

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 17
Applications of PWM
In the past, motors were controlled at intermediate
speed by using resistors to lower delivered power
Electric stove heater
Lamp dimmers
Voltage regulation convert 12 volts to 5 volts by
having a 41.7% duty cycle
Sound production: PWM controlled signals give
sound effects similar to a chorus
Power transfer: PWM used to reduce the total
power given to a load without relying on resistive
losses
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 18
PWM used with D/A conversion
commonly used in toys
lowpass filter smooths out transients from harmonic effects
frequency values of harmonics doesnt change, but the
amplitude does, which adjusts the analog output signal

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 19
PWM used to transmit data
in telecommunications
clock signal is found inside PWM signal
more resistant to noise effects than binary data alone
effective at data transmission over long distance transmission lines

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 20
Frequency of the PWM
Signal
Lower Limits Upper Limits
1. Must be at least 10 times higher 1. If too high the inductance of the
than the control system frequency motor causes the current drawn to
2. Higher than 20kHz audible be unstable
frequency of sounds to avoid 2. MOSFET transistor generates heat
annoying sound disturbances, during switching
caused by magnetostriction 3. Limited by resolution of controller
3. If too low the motor is pulsed, not 4. Eddy currents generated in
continuous, because the motors electromagnetic coils which lead to
inductance can not maintain the adverse heating
current 5. Heat losses in electromagnetic
4. Inverse of frequency should be materials is proportional to
much less than the motor/load time frequency squared
constant
5. Higher error from ripple voltages

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 22
Example: PWM with 555 Timer
Potentiometer is
used to adjust
the duty cycle

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 23
Example: Specifying circuit elements

Requirements
1. Maxon EC-16 brushless motor,
Time constant = 8.75 ms
1
8.5 ms f 117 Hz
f
2. Want to avoid audible frequencies
f 20 kHz
3. PID control loop running at 150 Hz
f 10 150 Hz
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 24
Example: Specifying circuit elements

This circuit has a


PWM frequency
according to:

1.44
f
R1C1

Check constraints
Set f to 25 kHz to add in a factor of safety
117 Hz
Choosing C1 to be 100 nF, R1 is 576 ~ 500
f 20 kHz
1.5 kHz
Recalculating with these values f = 28.8 kHz
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 25
Matlab can do PWM!

The procedure works similar


to the generation of analog
PWM using a sinusoid and
saw-tooth wave
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 26
Where can I buy a PWM controller?
Texas Instruments
Digikey
Mouser Electronics

H
Critical Velocity Motor Control
BIGGER
SMALL

U
Texas Instruments
TAS5508B
G
8-Channel Digital Audio
PWM Processor
64 pin chip, max 192 kHz 18 kHz frequency 120 amps, used for
E
frequency Continuous 28 amps hybrid vehicles
$7.25 $55.95 $469.00
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 27
Presenter: Alex Mariuzza

Introduction and definitions


Types of PWM
Methods of generation
Characteristics of PWM
Applications and examples
Implementation on the HCS12

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 28
PWM Implementation
The signal is outputted
through Port P
Six Channels
Dedicated Chip

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 29
PWM Module
Each channel has a
dedicated counter
Programmable duty
and period
Independently
adjustable clock,
polarity, and
alignment

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 30
PWM Module- Other Features
8-bit and 16-bit resolution supported
Two PWM channels can be concatenated together
Four source clocks (A, SA, B, SB)
Emergency Shutdown
Some changes take a complete cycle to be implemented
Modes of Operation:
Normal: everything is available
Wait: Low-power consumption and clock disabled
Freeze: Option to disable clock is available

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 31
PWM Configuration
Configured through
specific registers
Registers are located from
$00E0 to $00FE
There are repeated
registers (ex. 0013-0017)

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 32
PWM Enable Register

Located at $00E0
Code Warrior variable: PWME
Set PWMEx to 0 to disable the channel
Set PWMEx to 1 to enable it
Channel is activated when bit is set
If 16-bit resolution used, then PWME4/2/0 are deactivated

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 33
PWM Polarity Register

Located at $00E1
Code Warrior variable : PWMPOL
Set PPOLx to 0, signal goes from low to high
Set PPOLx to 1, signal goes from high to low

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 34
PWM Clock Select Register

Located at $00E2
Code Warrior variable : PWMCLK
Set PCLK5/4/1/0 to 0 to use clock A
Set PCLK5/4/1/0 to 1 to use clock SA
Set PCLK3/2 to 0 to use clock B
Set PCLK3/2 to 1 to use clock SB

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 35
PWM Prescaler Register

Located at $00E3
Variable: PWMPRCLK
Used to prescale clocks A and B

Bus Clock Frequency


Presclarer
Resolution PWM Frequency
Bus Clock Frequency
N
(2 1) PWM Frequency
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 36
PWM Scale A Register

Located at $00E8
Code Warrior variable: Clock A Frequency
Clock SA Frequency
PWMSCLA 2 PWMSCLA
Store a hexadecimal value
in order to change the clock
frequency of SA
Note: if set to $00,
PWMSCLA is set to 256

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 37
PWM Scale B Register

Located at $00E9
Code Warrior variable: Clock B Frequency
Clock SB Frequency
PWMSCLB 2 PWMSCLB
Store a hexadecimal value
in order to change the clock
frequency of SA
Note: if set to $00,
PWMSCLB is set to 256

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 38
PWM Center Align Register

Located at $00E4
Code Warrior variable: PWMCAE
Set CAEx to 0 for left align signal
Set CAEx to 1 for center align signal
Note: can only be set when channel is disabled

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 39
Signal Alignment
Signal changes when counter
is equal to period register
In the center aligned mode,
the PWM counter goes from a
down-count to a up-count to
down-count, etc.
In the left aligned mode, the
PWM counter is a up-counter
and rests to zero when it
overflows

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 40
PWM Control Register

Located at $00E5
Code Warrior variable: PWMCTL
Set CONxy to 0 to keep PWM channels separate (8-bit)
Set CONxy to 1 to concatenate PWM channels x and y together (16-
bit).
Channel y determines the configuration
x becomes the high byte and y becomes the low byte
Bits PSWAI and PFRZ set either wait or freeze mode
Changes only occur when channels are disabled
Pulse Width Modulation - Val Tocitu,
10/29/2009 Jason Kulpe, Alex Mariuzza 41
PWM Counter Register

Located at $00EC through $00F1


Code Warrior variable: PWMCNTx
One per channel
It tracks the cycle counts
It can be read
If written to, the count is reset to $00 and a up-count starts

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 42
PWM Period Register

Located at $00F2 through $00F7 Left-Aligned:


Variable: PWMPERx PWM Source Frequency
PWMPERx
Store a hexadecimal value to limit PWM Signal Frequency
maximum value of counter
Changes occur when: Center-Aligned:
Current period ends PWM Source Frequency
PWMPERx
Counter is written to 2 PWM Signal Frequency
Channel is disabled

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 43
PWM Duty Register

Located at $00F8 through $00FD


Code Warrior variable: PWMDTYx
Store a hexadecimal value to control when signal changes
Changes occur when:
Current period ends
Counter written to
Channel is disabled
Duty Cycle PWMPERx
Polarity = 0: PWMDTYx PWMPERx -
100
Duty Cycle PWMPERx
Polarity = 1: PWMDTYx
10/29/2009 100 44
PWM Shutdown Register

Located at $00FE
Code Warrior variable: PWMSDN
PWMENA: Enables and disables emergency shut down
PWMIF (Interrupt flag): Set when an input is detected in pin 5
PWMIE (Interrupt Enable): Enables and disables CPU interrupts
PWMRSTRT: Resets the counters
PWMLVL (Shutdown Output Level): Determines if output is high
or low when shutdown
PWM5IN (Input Status): Reflects status of pin 5
PWM5INL: Determines active level of pin 5 45
How it all works
Clock A, SA, B, or SB

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 46
Example
8 106
Desired Signal: Prescaler 8 3.91 4 PWMPRCLK $02
(2 1) 8 103
8 kHz PWM signal
8 106
Duty Cycle of 30%
4 2 106
PWMPER1 250 $FA
Left Aligned 8 103 8 103
Channel 1 30 250
PWMDTY1 250 - 175 $AF
Low High 100
8-bit channel
PWMCLK $00
PWMCAE $00
PWMPOL $00
PWMCTL $00
PWME $02

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 47
Assembly Code
PWME EQU $00E0
PWMPOL EQU $00E1
PWMCLK EQU $00E2
PWMPRCLK EQU $00E3
PWMCAE EQU $00E4
PWMCTL EQU $00E5
PWMPER1 EQU $00F3
PWMDTY1 EQU $00F9

ORG $1000
LDAA #$00
STAA PWMCLK ; Sets source clocks to clock A
STAA PWMPOL ; The signal goes from low to high
STAA PWMCTL ; Makes all channels 8-bit
STAA PWMCAE ; Signals are left aligned
LDAA #$FA
STAA PWMPER1 ; Sets the period to 250 clock cycles
LDAA #$AF
STAA PWMDTY1 ; Makes the duty cycle equal to 30%
LDAA #$02
STAA PWMPRCLK ; Sets the prescaler to 4
STAA PMWE ; Enables and starts channel 1

10/29/2009 48
C Code
#include <hidef.h> /* common defines and macros */
#include <mc9s12c32.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE mc9s12c32

// Set up chip in expanded mode


MISC = 0x03;
PEAR = 0x0C;
MODE = 0xE2;

//Set up PWM Registrer


PWMCLK = 0; // Sets source clocks to clock A
PWMPOL = 0; // The signal goes from low to high
PWMCTL = 0; // Makes all channels 8-bit
PWMCAE = 0; // Signals are left aligned
PWMPER1 = 250; // Sets the period of the signal to 250 clock
PWMDTY1 = 175; // Makes the duty cycle equal to 30%
PWMPRCLK = 2; //Sets the prescaler to 4
PMWE = 2; //Enables and starts channel 1
.

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 49
REFERENCES
http://en.wikipedia.org/wiki/Pulse-width_modulation
http://www.netrino.com/Embedded-Systems/How-To/PWM-Pulse-Width-Modulation
Cetinkunt, Sabri. Mechatronics. Hoboken, NJ: Wiley, 2006. Print.
http://www.jimfranklin.info/microchipdatasheets/00538c.pdf
http://www.allaboutcircuits.com/vol_6/chpt_6/9.html
http://www.dprg.org/tutorials/2005-11a/index.html
http://www.4qdtec.com/pwm-01.html
http://skywalker.cochise.edu/rgill/ch02elec.ppt
http://pcbheaven.com/wikipages/PWM_Modulation/
Matlab 2009 online documentation
http://www.epanorama.net/links/motorcontrol.html#ac
MC9S12C Family, MC9S12GC Family Reference Manual, (pp. 347-382)

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 50
Questions?

Pulse Width Modulation - Val Tocitu,


10/29/2009 Jason Kulpe, Alex Mariuzza 51