220 likes | 231 Views
Pulse Width Modulation and Motor Control. Mark Barnhill R oy 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
E N D
Pulse Width Modulationand 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 • Speed Control • Duty Cycle • Advantages • Disadvantages
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 = 1000-1; • 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 • 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: • 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?
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
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.
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 Rwdg= 1.2932Ω
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,487.0205 rad/s). • Using the winding resistance from before, the Back EMF is subtracted from the supply which results in: K= 0.007348V/rad
Open Loop Simulation RiseTime: 0.4871 SettlingTime: 0.8853 SteadyState: 0.6120 Overshoot: 1.1044 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)]);
PID/Closed Loop Simulation RiseTime: 0.1788 SettlingTime: 0.2168 SteadyState: 1.0000 Overshoot: 0 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) Kp: 20 Ki: 30 Kd: 29