pulse width modulation and motor control mark barnhill roy dong andrew kleeves micajah worden dave...
TRANSCRIPT
Pulse Width Modulationand
Motor ControlMark Barnhill
Roy DongAndrew KleevesMicajah Worden
Dave SeatonFacilitator: 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
• Speed Control• Duty Cycle• Advantages• Disadvantages
Pulse Width Modulation
• Field Magnets• Stator• DC Power Supply• Armature or Rotor• Axle• Commutator• Brushes
Brushed DC Motor
• Example here will cover MSP430– Concepts can be easily extended
How to Code PWM
• One pin has multiple functions– Set PxSEL accordingly– P2DIR |= BIT2; // set P2.2 as output– P2SEL |= BIT2; // use pin as TA1.1
– Why |= operator?
Reading the Datasheet
• Counter counts up each clock cycle• What do the different modes mean?
– CCR0 = 1000-1;
– Why minus 1?
Setting Timer Values
• 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?
Looking into ‘MSP430G2231.h‘
• We are using Timer A1.1• CCTL1 = OUTMOD_7; // reset at CCR1• ; // set at CCR0
• OUTMOD_1 sets at CCRx• OUTMOD_2 toggles at CCRx, resets at CCR0
PWM Output Modes
• We are using Timer A1.1– Recall:– TACTL = TASSEL_2 + MC_1; // SMCLK, up to CCR0
– CCR0 = 1000-1;– CCTL1 = OUTMOD_7; // reset at CCR1– ; // set at CCR0
– Now:– CCR1 = 200-1; // 20% duty cycle
– What will this do?
Setting the Duty Cycle
• 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
DACs and PWM Amplification
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 ofPWM DC Motor Control
• Is an integrator
• Adjusts the set point up to the desired value.
Ramp Control
• e(t)= Setpoint - measured• Kp, Ki and Kd must be tuned according to
desired output characteristics
PID Control
• 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
DC Motor Model
• 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
Rwdg = 1.2932 Ω
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 Ω
Motor Characterization
• 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,487.0205 rad/s).
• Using the winding resistance from before, the Back EMF is subtracted from the supply which results in: K = 0.007348 V/rad
Motor Characterization Cont.
J=0.002;b=0.00924;K=0.007348;R=1.2932;L=0.05;
step(K,[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]);
RiseTime: 0.4871SettlingTime: 0.8853 SteadyState: 0.6120 Overshoot: 1.1044
Open Loop Simulation
J=0.002;b=0.00924;K=0.007348;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)
RiseTime: 0.1788SettlingTime: 0.2168 SteadyState: 1.0000 Overshoot: 0
Kp: 20 Ki: 30 Kd: 29
PID/Closed Loop Simulation