2. 2
Introduction and definitions
Types of PWM
Methods of generation
Characteristics of PWM
Applications and examples
Implementation on the HCS12
3. 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
3
7. Analog PWM signals can be made by combining a
saw- tooth waveform and a sinusoid
7
PWM output is
formed by the
intersection of
the saw-tooth
wave and
sinusoid
Analog Generation of PWM
8. 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
8
9. Applications to DC Motors
11
• 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
10. 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
12
11. 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
13
13. • 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
15
Advantages of PWM
14. 16
Cost
Complexity of circuit
Radio Frequency Interference
Voltage spikes
Electromagnetic noise
Disadvantages of PWM
15. 17
Introduction and definitions
Types of PWM
Methods of generation
Characteristics of PWM
Applications and examples
Implementation on the HCS12
Presenter: Jason Kulpe
16. • 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
18
Applications of PWM
17. • 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
19
PWM used with D/A conversion
18. 20
• 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
PWM used to transmit data
in telecommunications
19. 1. Must be at least 10 times higher
than the control system frequency
2. Higher than 20kHz – audible
frequency of sounds to avoid
annoying sound disturbances,
caused by magnetostriction
3. If too low the motor is pulsed, not
continuous, because the motor’s
inductance can not maintain the
current
4. Inverse of frequency should be
much less than the motor/load time
constant
5. Higher error from ripple voltages
Frequency of the PWM Signal
Upper Limits
Lower Limits
1. If too high the inductance of the
motor causes the current drawn to
be unstable
2. MOSFET transistor generates heat
during switching
3. Limited by resolution of controller
4. Eddy currents generated in
electromagnetic coils which lead to
adverse heating
5. Heat losses in electromagnetic
materials is proportional to
frequency squared
22
21. 1. Maxon EC-16 brushless motor,
Time constant = 8.75 ms
2. Want to avoid audible frequencies
f ≥ 20 kHz
3. PID control loop running at 150 Hz
f ≥ 10 ∙ 150 Hz
Requirements
Hz
117
5
.
8
1
f
ms
f
24
Example: Specifying circuit elements
22. 1
1
44
.
1
C
R
f
Set f to 25 kHz to add in a factor of safety
Choosing C1 to be 100 nF, R1 is 576 Ω ~ 500 Ω
Recalculating with these values f = 28.8 kHz
This circuit has a
PWM frequency
according to:
≥ 117 Hz
≥ 20 kHz
≥ 1.5 kHz
f
Check constraints
25
Example: Specifying circuit elements
23. Matlab can do PWM!
26
The procedure works similar
to the generation of analog
PWM using a sinusoid and
saw-tooth wave
24. 18 kHz frequency
Continuous 28 amps
$55.95
Where can I buy a PWM controller?
Texas Instruments
Digikey
Mouser Electronics
Critical Velocity Motor Control
Texas Instruments
TAS5508B
8-Channel Digital Audio
PWM Processor
64 pin chip, max 192 kHz
frequency
$7.25
120 amps, used for
hybrid vehicles
$469.00
SMALL
H
U
G
E
27
25. 28
Introduction and definitions
Types of PWM
Methods of generation
Characteristics of PWM
Applications and examples
Implementation on the HCS12
Presenter: Alex Mariuzza
26. PWM Implementation
The signal is outputted
through Port P
Six Channels
Dedicated Chip
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 29
29
27. PWM Module
Each channel has a
dedicated counter
Programmable duty
and period
Independently
adjustable clock,
polarity, and
alignment
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 30
30
28. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 31
31
29. PWM Configuration
Configured through
specific registers
Registers are located from
$00E0 to $00FE
There are repeated
registers (ex. 0013-0017)
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 32
32
30. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 33
33
31. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 34
34
32. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 35
35
33. PWM Prescaler Register
Located at $00E3
Variable: PWMPRCLK
Used to prescale clocks A and
B
Frequency
PWM
)
1
2
(
Frequency
Clock
Bus
Frequency
PWM
Resolution
Frequency
Clock
Bus
Presclarer
N
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 36
36
34. PWM Scale A Register
Located at $00E8
Code Warrior variable:
PWMSCLA
Store a hexadecimal value
in order to change the clock
frequency of SA
Note: if set to $00,
PWMSCLA is set to 256
PWMSCLA
2
Frequency
A
Clock
Frequency
SA
Clock
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 37
37
35. PWM Scale B Register
Located at $00E9
Code Warrior variable:
PWMSCLB
Store a hexadecimal value
in order to change the clock
frequency of SA
Note: if set to $00,
PWMSCLB is set to 256
PWMSCLB
2
Frequency
B
Clock
Frequency
SB
Clock
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 38
38
36. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 39
39
37. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 40
40
38. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 41
41
39. 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
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 42
42
40. PWM Period Register
Located at $00F2 through $00F7
Variable: PWMPERx
Store a hexadecimal value to limit
maximum value of counter
Changes occur when:
Current period ends
Counter is written to
Channel is disabled
Frequency
Signal
PWM
Frequency
Source
PWM
PWMPERx
Left-Aligned:
Frequency
Signal
PWM
2
Frequency
Source
PWM
PWMPERx
Center-Aligned:
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 43
43
41. PWM Duty Register
100
PWMPERx
Cycle
Duty
-
PWMPERx
PWMDTYx
• 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
100
PWMPERx
Cycle
Duty
PWMDTYx
Polarity = 0:
10/29/2009 44
Polarity = 1:
44
42. 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
45
43. How it all works
Clock A, SA, B, or SB
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 46
46
45. 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
48
46. 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
….
10/29/2009
Pulse Width Modulation - Val Tocitu,
Jason Kulpe, Alex Mariuzza 49
49