LAB #9: Stepper Motors: No Late Lab Reports Will Be Accepted

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

CS/ECE 5780/6780 Lab #9

Spring 2008
Little

LAB #9: Stepper Motors

Lab writeup is due to your TA at the beginning of your next scheduled lab. Don’t put this off to the last
minute! There is pre-lab work to complete before the start of the next lab. NO LATE LAB REPORTS
WILL BE ACCEPTED.

1 Objectives
• Gain experience with stepper motor control.

• Demonstrate a practical application of the 6812 timer system.

2 Reading
• Read Section 8.6 on stepper motors.

3 Background
In this lab, you will be designing an interface to a stepper motor. The stepper motor kit is available in
the lab for checkout, but you should not need to check it out until you are ready to demonstrate your
program. To control the stepper motor, you will need to generate the correct output at the specified period
as specified by commands input from your keypad. To do this it is suggested that you use output compare
7 (OC7) although you use any method you like. If you use OC7, you likely will want to start with your Lab
7 code.
Your program supports six commands. Note that ’n’ is any digit 0-9.

1. 1*nnnnn# - set the period in µs for full steps or half-steps.

2. 2*nnnnn# - set number of steps to complete before stopping. 0 steps indicates that the motor should
run continuously.

3. 3* - forward or clockwise mode.

4. 4* - backward or counter-clockwise mode.

5. 5* - full-step iterations.

6. 6* - half-step iterations.

For example, to set the period to 100 µs I would enter ’1*100#’. You can select reasonable defaults for
the mode of operation. The defaults should be clearly specified as a comment in your code.
If you are using OC7, you can tie OC7 to other port T pins (PT7 through PT3) using the OC7M control
register. All solutions will control the stepper motor using PT7 through PT4. To control the stepper motor,
you should output the following patterns in sequence to create half-steps:
Lab #9, Page 2

• %1010

• %1000

• %1001

• %0001

• %0101

• %0100

• %0110

• %0010

To move forward in half-steps, you will cycle through these patterns in the order shown. To move
backward, you will cycle through these patterns in the reverse order. To move in full-steps, you will
output every other pattern. PT3 or the LCD should be used to produce a “heartbeat” to show your device
is working. The “heartbeat” is a periodically changing signal which could be as simple as blinking an LED.

4 Prelab
1. Write the C code. If you choose to use OC7 the pseudocode for this handler is below:

TC7 += step_period
if (step_count == 0)
OC7D = 0
else
choose next step pattern index i (for half or full, fwd or backward)
update OC7D with next pattern
step_count--

5 Lab Tasks
1. Add LEDs with resistors to pins PT7 through PT4 and PT3 if you are using it for the “heartbeat”
signal.

2. Test each of the six commands, and verify that your code produces the patterns expected on the
LEDs.

3. Capture the patterns that you see on the oscilloscope and include these plots in your writeup.

4. After you demonstrate your stepper motor controller to your TA, check out a stepper motor kit and a
DB25 connector cable. Plug the DB25 connector into the stepper motor kit and connect pins 2-5 to
PT7, 6, 5, 4 (respectively) of your 6812 circuit. You can leave the LEDs in place to verify operation.
Connect one of the DB25 ground pins (11, 12, or 25) to the ground rail of your circuit. Hook up 12V
across the +12V and GND terminals of the stepper motor kit. Specify a long period (65536) and
verify that the 12V (24 step) motor steps appropriately each time a new pattern is driven on PT4-7.
Lab #9, Page 3

5. Demonstrate all six commands to your TA. Demonstrate clockwise and counterclockwise rotations
of precisely 90 degrees. Experiment with the motor control in order to answer the writeup questions.

6. Remove the 12V power and connect pins 6-9 of the DB25 connector to PT7,6,5,4 of your 6812
circuit. Supply 9V across the +9V and GND terminals of the stepper motor kit. Specify a long period
and verify that the 9V (400 step) motor steps appropriately each time a new pattern is driven on
PT4-7. (It may be difficult to see the individual steps.)

7. Demonstrate the six commands to your TA. Demonstrate clockwise and counterclockwise rotations
of precisely 90 degrees. Experiment with the motor control in order to answer the writeup questions.
With the motor turning at its fastest speed, try to stop the motor by hand.

8. Modify your circuit in order to drive the motor with a constant pattern %1000. Try to turn the motor
by hand.

6 Writeup
1. Include a printout of your final program and your HP Benchlink capture file.

2. Describe any problems you encountered.

3. Answer the following questions.

(a) What is the fastest update frequency each of the motors could support without dropping steps?
(b) How does the motor behave when driven faster than it can handle?
(c) Can the motors support faster halfstep update rates than full-step rates? If so, why would this
be the case?
(d) When driving the motors at their highest speeds, do you notice any effects of inertia when
switching the direction of rotation?
(e) What is the effect of reversing the order of the stepper motor control pins (i.e., swapping PT7
with PT4, and PT6 with PT5)? You can answer this by experiment, or by analyzing the stepper
patterns.
(f) Is it harder to stop the 9V stepper motor when it’s turning, or to turn it when it’s holding its
position? Suggest a reason why this would be the case.

You might also like