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 doesn’t 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 motor’s 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
Recalculating with these values f = 28.8 kHz ≥ 1.5 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
Critical Velocity Motor Control

SMALL
H
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
Prescaler  8  3.91  4  PWMPRCLK  $02
 Desired Signal: (2  1)  8 103 
 8 kHz PWM signal
 8 106 
 
 Duty Cycle of 30% 2 106
PWMPER1   4    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

You might also like