ENGR 6806 – Motor Control Prepared By: Rob Collett September 15, 2004 Email: robert@engr.mun.ca Office: EN2074 Presentation Outline Introduction Motor Basics H-Bridges Using The PIC for Motor Control Motor Encoders Grounding Conclusions and Recommendations 1.0 Introduction What Not to Think… “Our team already has a motor guy… this should be good time to take a nap.” “Some of this stuff is theory… why is this guy wasting my time with that?” “I don’t have a clue what he’s talking about.” 2.0 Motor Basics Pop Quiz: A motor is like a(n)… A) Resistor B) Capacitor C) Inductor D) Crazy space-aged device we aren’t really meant to understand The Answer Is…(Not D) C) An Inductor!!… sort of… The Problem: What’s wrong with the circuit below? Well, think about it… An inductor is a short circuit at DC! This means we’ll have an infinite current! Infinite current = Infinite Speed!! Get to the Point… A motor is like a REAL inductor… not an IDEAL inductor. It has resistance! Remember this Waveform! Note how the current levels off. This will provide a steady speed. Vs Vs t i (t ) e R R LR 3.0 H-Bridge Basics H-Bridges are used to control the speed and direction of a motor. They control the motor using Power Electronics… transistors to be precise. Remember transistors for Term 4? For $1,000,000: What’s a Transistor? Transistors are electronic devices that can act as either: Amplifiers Switches We’ll be using them as switches that control the flow of power to the motor. A Closer Look at Transistors Note how Digital Logic at the Base controls Power Flow in the other two ports Controlling Motor Speed By turning our transistors (switches) ON and OFF really fast, we change the average voltage seen by the motor. This technique is called Pulse-Width Modulation (PWM). PWM Basics The higher the voltage seen by the motor, the higher the speed. We’ll manipulate the PWM Duty Cycle. The Problem with PWM… Remember our little talk about motors? Remember that motors are like inductors? Remember this waveform? What’s the Problem? If we switch our transistors too quickly, the current won’t have enough time to increase. The Solution: The period (not to be confused with duty cycle) of our PWM needs to be long enough for the current to reach an acceptable level: Direction Control using the H-Bridge The H-Bridge Chip has a “Direction Pin” that can be set using digital logic High/Low This pin enables/disables flow through the transistors The H-Bridge Chip The H-Bridge we’re using (the LMD18200) has 11 pins Some pins involve logic signals, others involve power signals, others won’t be connected Power signals = No breadboard No breadboard = Soldering H-Bridge Pins Pin 1: Bootstrap 1 (10nF cap to Pin 2) Pin 11: Bootstrap 2 (10nF cap to Pin 10) Pin 2: Output to Motor (M+) Pin 3: Direction Input (From PIC) Pin 5: PWM Input (From PIC) Pin 6: Power Supply (Vs) Pin 7: Ground Pin 10: Output to Motor (M-) Pin 4: Brake (Not Used – Connect to GND) Pin 8: Current Sense (Not connected) Pin 9: Thermal Flag (Not connected) H-Bridge Wiring (From the Lab Handout) But wait… There’s something missing! Another Problem: We’re dealing with a high voltages and currents that are being switched at high frequencies. This is going to cause spiking in our power supply… not to mention a whack of noise. Surely there must be some kind of component that prevents instantaneous changes in voltage. Of Course! Capacitors! Capacitors across the H-Bridge power supply will prevent spiking. Two parallel capacitors are recommended: 200uF 1uf (Be sure to check voltage ratings) Why two capacitors? 4.0 Using The PIC for Motor Control We’ll use the PIC to generate digital logic signals to control our H-Bridge transistors So we’ll need A digital high/low for direction output_high(PIN_A0); A PWM for speed control Setting the PWM Signal This can be tough because we need to use a timer to set the PWM frequency. We also need to figure out how to control the PWM duty cycle. This is going to take some programming! Setting up a PWM Signal Step 1: Tell the PIC we want a PWM signal: setup_ccp1(CCP_PWM); Step 2: The PIC uses a timer called “Timer2” to control the PWM frequency. We need to set this frequency: setup_timer_2(T2_DIV_BY_X, Y, Z); But what are X, Y, and Z? - See handout for example. Setting up a PWM Signal Step 3: We said before that setting the PWM Duty Cycle will set the speed of the motor. So, to start the motor, we could say: set_pwm1_duty(#); (0 < # < 100) To stop the motor, we could say: set_pwm1_duty(0); 5.0 Motor Encoders Motor Encoders allow for us to track how far our robot has travelled. The encoders count wheel revolutions using optical sensors. These sensors count notches on the Drive Shaft of the motor. Some Encoder Details… There are 512 notches on the drive shaft. There is a 5.9:1 gear ratio. (This means the drive shaft spins 5.9x faster than the wheel.) The top wheel speed is around 800rpm (using a 30V supply). Some Electrical Details… The encoders we’ll be using have 4 wires: 5V Power Supply (Red) GND (Black) Channel A a.k.a. CHA (Blue) Channel B a.k.a. CHB (Yellow) Channels A&B will give us the signals to count wheel revolutions. How Encoders Work CHA and CHB are actually square waves separated by 900. Counting Encoder Cycles So, if we know the current encoder state and the last encoder state, we can tell which direction we’re going. By counting the number of times we’ve changed states, we can tell how far we’ve gone. Just remember that there are 4 encoder states per notch! 6.0 Grounding Advice What is “Ground”? What is “Ground” on a Robot? Power Supply Grounds Batteries and Grounding Use a Grounding Panel! Attach your Panel to your Robot!! Conclusions and Recommendations Help is here if you need it. robert@engr.mun.ca EN 2074 “My robot isn’t working perfectly.” Don’t let your robot take years off your life! Good Luck!