Very simple operation samples of unipolar stepper motor. This code has been made to help beginners to learn the stepper motor. The history of the code shows the how to generate pulses from very basic level.

Dependencies:   mbed

Committer:
okano
Date:
Sat Jan 11 02:37:00 2014 +0000
Revision:
11:436e74a3ec7a
Parent:
6:11b35048d384
version 8 : motor control by function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 6:11b35048d384 1 // stepper motor operation sample (learn it step by step).
okano 6:11b35048d384 2 // showing how to control a unipolar stepper motor by mbed digital output ports.
okano 6:11b35048d384 3 //
okano 6:11b35048d384 4 // version 2 : 360 steps clockwise and counterclockwise rotations
okano 6:11b35048d384 5
okano 6:11b35048d384 6 #include "mbed.h"
okano 6:11b35048d384 7
okano 6:11b35048d384 8 DigitalOut motor_out0( p26 );
okano 6:11b35048d384 9 DigitalOut motor_out1( p25 );
okano 6:11b35048d384 10 DigitalOut motor_out2( p24 );
okano 6:11b35048d384 11 DigitalOut motor_out3( p23 );
okano 6:11b35048d384 12
okano 6:11b35048d384 13 #define INTERVAL 0.01
okano 6:11b35048d384 14
okano 6:11b35048d384 15 int main()
okano 6:11b35048d384 16 {
okano 6:11b35048d384 17 while(1) {
okano 6:11b35048d384 18
okano 6:11b35048d384 19 // pulse orser : "p26 -> p25 -> p24 -> p23" for 4*90(=360) steps
okano 6:11b35048d384 20
okano 6:11b35048d384 21 for ( int i = 0; i < 90; i++ ) {
okano 6:11b35048d384 22 motor_out0 = 1;
okano 6:11b35048d384 23 motor_out1 = 0;
okano 6:11b35048d384 24 motor_out2 = 0;
okano 6:11b35048d384 25 motor_out3 = 0;
okano 6:11b35048d384 26 wait( INTERVAL );
okano 6:11b35048d384 27
okano 6:11b35048d384 28 motor_out0 = 0;
okano 6:11b35048d384 29 motor_out1 = 1;
okano 6:11b35048d384 30 motor_out2 = 0;
okano 6:11b35048d384 31 motor_out3 = 0;
okano 6:11b35048d384 32 wait( INTERVAL );
okano 6:11b35048d384 33
okano 6:11b35048d384 34 motor_out0 = 0;
okano 6:11b35048d384 35 motor_out1 = 0;
okano 6:11b35048d384 36 motor_out2 = 1;
okano 6:11b35048d384 37 motor_out3 = 0;
okano 6:11b35048d384 38 wait( INTERVAL );
okano 6:11b35048d384 39
okano 6:11b35048d384 40 motor_out0 = 0;
okano 6:11b35048d384 41 motor_out1 = 0;
okano 6:11b35048d384 42 motor_out2 = 0;
okano 6:11b35048d384 43 motor_out3 = 1;
okano 6:11b35048d384 44 wait( INTERVAL );
okano 6:11b35048d384 45 }
okano 6:11b35048d384 46
okano 6:11b35048d384 47 // pulse orser : "p23 -> p24 -> p25 -> p26" for 4*90(=360) steps
okano 6:11b35048d384 48
okano 6:11b35048d384 49 for ( int i = 0; i < 90; i++ ) {
okano 6:11b35048d384 50 motor_out0 = 0;
okano 6:11b35048d384 51 motor_out1 = 0;
okano 6:11b35048d384 52 motor_out2 = 0;
okano 6:11b35048d384 53 motor_out3 = 1;
okano 6:11b35048d384 54 wait( INTERVAL );
okano 6:11b35048d384 55
okano 6:11b35048d384 56 motor_out0 = 0;
okano 6:11b35048d384 57 motor_out1 = 0;
okano 6:11b35048d384 58 motor_out2 = 1;
okano 6:11b35048d384 59 motor_out3 = 0;
okano 6:11b35048d384 60 wait( INTERVAL );
okano 6:11b35048d384 61
okano 6:11b35048d384 62 motor_out0 = 0;
okano 6:11b35048d384 63 motor_out1 = 1;
okano 6:11b35048d384 64 motor_out2 = 0;
okano 6:11b35048d384 65 motor_out3 = 0;
okano 6:11b35048d384 66 wait( INTERVAL );
okano 6:11b35048d384 67
okano 6:11b35048d384 68 motor_out0 = 1;
okano 6:11b35048d384 69 motor_out1 = 0;
okano 6:11b35048d384 70 motor_out2 = 0;
okano 6:11b35048d384 71 motor_out3 = 0;
okano 6:11b35048d384 72 wait( INTERVAL );
okano 6:11b35048d384 73 }
okano 6:11b35048d384 74 }
okano 6:11b35048d384 75 }