# Pulse Width Modulation and Motor Control

## Presentation on theme: "Pulse Width Modulation and Motor Control"— Presentation transcript:

Pulse Width Modulation and Motor Control
Mark Barnhill Roy Dong Andrew Kleeves Micajah Worden Dave Seaton Facilitator: Professor Strangas

Agenda Pulse Width Modulation Brushed DC Motor How to Code PWM
DACs and PWM Amplification Back EMF Ramp Control PID Controller Motor Characterization PID Simulation

Pulse Width Modulation

Brushed DC Motor Field Magnets Stator DC Power Supply
Armature or Rotor Axle Commutator Brushes

How to Code PWM Example here will cover MSP430
Concepts can be easily extended

Reading the Datasheet One pin has multiple functions
Set PxSEL accordingly P2DIR |= BIT2; // set P2.2 as output P2SEL |= BIT2; // use pin as TA1.1 Why |= operator?

Setting Timer Values Counter counts up each clock cycle
What do the different modes mean? CCR0 = ; Why minus 1?

Looking into ‘MSP430G2231.h‘ We are using Timer A We must set TACTL
TACTL = TASSEL_2 + MC_1; // SMCLK, up to CCR0 Which clock do you want to use?

PWM Output Modes We are using Timer A1.1 OUTMOD_1 sets at CCRx
CCTL1 = OUTMOD_7; // reset at CCR1 ; // set at CCR0 OUTMOD_1 sets at CCRx OUTMOD_2 toggles at CCRx, resets at CCR0

Setting the Duty Cycle We are using Timer A1.1 Recall: Now:
TACTL = TASSEL_2 + MC_1; // SMCLK, up to CCR0 CCR0 = ; CCTL1 = OUTMOD_7; // reset at CCR1 ; // set at CCR0 Now: CCR1 = 200-1; // 20% duty cycle What will this do?

DACs and PWM Amplification
DACs are used to convert a digital signal to analog Why does a PWM signal become a steady DC value? Microprocessors can’t provide enough current to drive a motor

Back Electromotive Force (EMF)
A motor converts electrical energy to mechanical energy This conversion can go both ways If a motor is spinning it will generate electrical energy Called back emf

Example of Back EMF

Example of BEMF with a Load

Functional Block Diagram of
PWM DC Motor Control

Ramp Control Is an integrator
Adjusts the set point up to the desired value.

PID Control e(t)= Setpoint - measured
Kp, Ki and Kd must be tuned according to desired output characteristics

DC Motor Model Basic DC motor systems can be represented by this electromechanical schematic. (bottom-left) The motor speed (𝜃) as a function of input voltage (𝑉) is governed by an open loop transfer function. (bottom-right) It is helpful to characterize the motor to obtain simulations/projected results along with PID estimates for the system. 𝜃 𝑉 = 𝐾 𝐽∙𝑠+𝑏 𝐿∙𝑠+𝑅 + 𝐾 2

Motor Characterization
In order to obtain the motor parameters, basic DC machine tests must be used. To get an estimate for Rwdg : The rotor must be locked. 5 different voltages are supplied to the windings. The current is measured. Ohm’s Law: 𝑉 𝐼 =𝑅 to find average resistance Voltage (Volts) Current (Amps) Resistance (Ohms) 0.30 V 0.23 A 1.304 Ω 0.50 V 0.39 A 1.282 Ω 0.70 V 0.56 A 1.250 Ω 1.00 V 0.79 A 1.266 Ω 1.20 V 0.88 A 1.364 Ω Rwdg = Ω

Motor Characterization Cont.
Rotor speed and input voltage are directly related by the motor constant (K) in the equation: 𝐾= 𝑉 𝑆𝑈𝑃𝑃𝐿𝑌 − 𝑉 𝐵𝐸𝑀𝐹 𝜔 𝑅𝑂𝑇𝑂𝑅 = 𝑉 𝑆𝑈𝑃𝑃𝐿𝑌 − 𝐼 𝐴𝑅𝑀 ∙ 𝑅 𝑊𝐷𝐺 𝜔 𝑅𝑂𝑇𝑂𝑅 A no-load test supplying 12.0 Volts to the motor results in 830 mA drawn at a speed of ~14,200 rpm (1, rad/s). Using the winding resistance from before, the Back EMF is subtracted from the supply which results in: K = V/rad

Open Loop Simulation RiseTime: 0.4871 SettlingTime: 0.8853
SteadyState: Overshoot: J=0.002; b= ; K= ; R=1.2932; L=0.05; step(K,[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]);

PID/Closed Loop Simulation
RiseTime: SettlingTime: SteadyState: Overshoot: 0 J=0.002; b= ; K= ; R=1.2932; L=0.05; Kp=20; Ki=30; Kd=29; num_PID=[Kd, Kp, Ki]; den_LOOP=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; num_B=conv(K,num_PID); den_B=conv(den_LOOP,[1 0]); [num_SYS,den_SYS]=cloop(num_B,den_B); step(num_SYS,den_SYS) Kp: 20 Ki: 30 Kd: 29