Program for driving bipolar stepper motor model 17HA0403-32N. Motor can be driven in wave, full step, and half step modes in clockwise and anticlockwise directions.

Dependencies:   mbed

Fork of LVHB Stepper Motor Drive by NXP

Committer:
nmoorthy2001
Date:
Tue Sep 20 09:22:36 2016 +0000
Revision:
1:48b0212c91e9
Parent:
0:d14cf1e75576
KL25Z Program for driving bipolar stepper motor model 17HA0403-32N. Motor can be driven in wave, full step, and half step modes in clockwise and anticlockwise directions.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nmoorthy2001 1:48b0212c91e9 1 /*
nmoorthy2001 1:48b0212c91e9 2 Written by Moorthy Muthukrishnan
nmoorthy2001 1:48b0212c91e9 3 KL25Z program for driving bipolar stepper motor
nmoorthy2001 1:48b0212c91e9 4 Stepper motor model 17HA0403-32N
nmoorthy2001 1:48b0212c91e9 5 Driver board using L293D H-bridge driver IC
nmoorthy2001 1:48b0212c91e9 6 Note:
nmoorthy2001 1:48b0212c91e9 7 ULN2003-based drivers work well for unipolar stepper motors
nmoorthy2001 1:48b0212c91e9 8 but did not work with the bipoar stepper motors.
nmoorthy2001 1:48b0212c91e9 9
nmoorthy2001 1:48b0212c91e9 10 IN1A = Coil A+ IN1B = Coil B+
nmoorthy2001 1:48b0212c91e9 11 Y = coil 3 Orange = coil 4
nmoorthy2001 1:48b0212c91e9 12 Red = common
nmoorthy2001 1:48b0212c91e9 13
nmoorthy2001 1:48b0212c91e9 14 A Variable named mode is used to select the mode of operation of the stepper motor.
nmoorthy2001 1:48b0212c91e9 15 wave drive mode = 0
nmoorthy2001 1:48b0212c91e9 16 full step mode = 1
nmoorthy2001 1:48b0212c91e9 17 half step mode = 2
nmoorthy2001 1:48b0212c91e9 18
nmoorthy2001 1:48b0212c91e9 19 A variable named dir is used to define the direction of rotation
nmoorthy2001 1:48b0212c91e9 20 direction dir = 0 anticlockwise
nmoorthy2001 1:48b0212c91e9 21 direction dir = 1 clockwise
nmoorthy2001 1:48b0212c91e9 22 */
bdbohn 0:d14cf1e75576 23
bdbohn 0:d14cf1e75576 24 //Libraries needed
bdbohn 0:d14cf1e75576 25 #include "mbed.h"
bdbohn 0:d14cf1e75576 26
nmoorthy2001 1:48b0212c91e9 27 #define DLY 0.1 // DLY 1s
bdbohn 0:d14cf1e75576 28
bdbohn 0:d14cf1e75576 29 //Input pins on Eval Board
nmoorthy2001 1:48b0212c91e9 30 DigitalOut IN1A(PTB8); // Pin IN1A input to EVAL board (FRDM PIN Name)
nmoorthy2001 1:48b0212c91e9 31 DigitalOut IN1B(PTB9); // Pin IN1B input to EVAL board (FRDM PIN Name)
nmoorthy2001 1:48b0212c91e9 32 DigitalOut IN2A(PTB10); // Pin IN2A input to EVAL board (FRDM PIN Name)
nmoorthy2001 1:48b0212c91e9 33 DigitalOut IN2B(PTB11); // Pin IN2B input to EVAL board (FRDM PIN Name)
nmoorthy2001 1:48b0212c91e9 34 Serial pc(USBTX,USBRX);
bdbohn 0:d14cf1e75576 35
nmoorthy2001 1:48b0212c91e9 36 //variable
nmoorthy2001 1:48b0212c91e9 37 static int mode = 0;
nmoorthy2001 1:48b0212c91e9 38 static int dir = 0;
bdbohn 0:d14cf1e75576 39
nmoorthy2001 1:48b0212c91e9 40 void wave_anticlockwise(void);
nmoorthy2001 1:48b0212c91e9 41 void fullstep_anticlockwise(void);
nmoorthy2001 1:48b0212c91e9 42 void halfstep_anticlockwise(void);
bdbohn 0:d14cf1e75576 43
nmoorthy2001 1:48b0212c91e9 44 void wave_clockwise(void);
nmoorthy2001 1:48b0212c91e9 45 void fullstep_clockwise(void);
nmoorthy2001 1:48b0212c91e9 46 void halfstep_clockwise(void);
bdbohn 0:d14cf1e75576 47
nmoorthy2001 1:48b0212c91e9 48 void motor_idle(void);
bdbohn 0:d14cf1e75576 49
bdbohn 0:d14cf1e75576 50 int main()
bdbohn 0:d14cf1e75576 51 {
nmoorthy2001 1:48b0212c91e9 52
nmoorthy2001 1:48b0212c91e9 53 // enter mode in the following line
nmoorthy2001 1:48b0212c91e9 54 // 0 for wave drive, 1 for full step, 2 for half step
nmoorthy2001 1:48b0212c91e9 55
nmoorthy2001 1:48b0212c91e9 56 mode = 0;
bdbohn 0:d14cf1e75576 57
nmoorthy2001 1:48b0212c91e9 58 //enter dir = 0 for anticlockwise rotation, dir = 1 for clockwise rotation
nmoorthy2001 1:48b0212c91e9 59 dir = 1;
bdbohn 0:d14cf1e75576 60
nmoorthy2001 1:48b0212c91e9 61 pc.printf("\n\r");
nmoorthy2001 1:48b0212c91e9 62 pc.printf("****** Stepper Motor starting ******* \n\r");
nmoorthy2001 1:48b0212c91e9 63 pc.printf("Mode = %d Direction = %d \n\r", mode, dir);
bdbohn 0:d14cf1e75576 64
nmoorthy2001 1:48b0212c91e9 65 while (true)
bdbohn 0:d14cf1e75576 66 {
nmoorthy2001 1:48b0212c91e9 67 if (dir == 0)
bdbohn 0:d14cf1e75576 68 {
nmoorthy2001 1:48b0212c91e9 69 pc.printf("Motor in anticlockwise rotation\n\r");
nmoorthy2001 1:48b0212c91e9 70 // wave drive
nmoorthy2001 1:48b0212c91e9 71 if (mode == 0)
nmoorthy2001 1:48b0212c91e9 72 {
nmoorthy2001 1:48b0212c91e9 73 wave_anticlockwise();
nmoorthy2001 1:48b0212c91e9 74 }
nmoorthy2001 1:48b0212c91e9 75
nmoorthy2001 1:48b0212c91e9 76 // full step
nmoorthy2001 1:48b0212c91e9 77 else if (mode == 1)
nmoorthy2001 1:48b0212c91e9 78 {
nmoorthy2001 1:48b0212c91e9 79 fullstep_anticlockwise();
nmoorthy2001 1:48b0212c91e9 80 }
nmoorthy2001 1:48b0212c91e9 81
nmoorthy2001 1:48b0212c91e9 82 // half step
nmoorthy2001 1:48b0212c91e9 83 else if (mode == 2)
nmoorthy2001 1:48b0212c91e9 84 {
nmoorthy2001 1:48b0212c91e9 85 halfstep_anticlockwise();
nmoorthy2001 1:48b0212c91e9 86 }
nmoorthy2001 1:48b0212c91e9 87 else
bdbohn 0:d14cf1e75576 88 {
nmoorthy2001 1:48b0212c91e9 89 pc.printf("Invalid mode, Motor idle \n\r");
nmoorthy2001 1:48b0212c91e9 90 motor_idle();
nmoorthy2001 1:48b0212c91e9 91 }
nmoorthy2001 1:48b0212c91e9 92 }
nmoorthy2001 1:48b0212c91e9 93
nmoorthy2001 1:48b0212c91e9 94 else if (dir == 1)
nmoorthy2001 1:48b0212c91e9 95 {
nmoorthy2001 1:48b0212c91e9 96 pc.printf("Motor in clockwise rotation \n\r");
nmoorthy2001 1:48b0212c91e9 97 // wave drive
nmoorthy2001 1:48b0212c91e9 98 if (mode == 0)
nmoorthy2001 1:48b0212c91e9 99 {
nmoorthy2001 1:48b0212c91e9 100 wave_clockwise();
bdbohn 0:d14cf1e75576 101 }
nmoorthy2001 1:48b0212c91e9 102
nmoorthy2001 1:48b0212c91e9 103 // full step
nmoorthy2001 1:48b0212c91e9 104 else if (mode == 1)
nmoorthy2001 1:48b0212c91e9 105 {
nmoorthy2001 1:48b0212c91e9 106 fullstep_clockwise();
nmoorthy2001 1:48b0212c91e9 107 }
nmoorthy2001 1:48b0212c91e9 108
nmoorthy2001 1:48b0212c91e9 109 // half step
nmoorthy2001 1:48b0212c91e9 110 else if (mode == 2)
nmoorthy2001 1:48b0212c91e9 111 {
nmoorthy2001 1:48b0212c91e9 112 halfstep_clockwise();
nmoorthy2001 1:48b0212c91e9 113 }
nmoorthy2001 1:48b0212c91e9 114
nmoorthy2001 1:48b0212c91e9 115 else
bdbohn 0:d14cf1e75576 116 {
nmoorthy2001 1:48b0212c91e9 117 pc.printf("Invalid mode, Motor idle \n\r");
nmoorthy2001 1:48b0212c91e9 118 motor_idle();
nmoorthy2001 1:48b0212c91e9 119 }
nmoorthy2001 1:48b0212c91e9 120
nmoorthy2001 1:48b0212c91e9 121 }
nmoorthy2001 1:48b0212c91e9 122
nmoorthy2001 1:48b0212c91e9 123 else
nmoorthy2001 1:48b0212c91e9 124 {
nmoorthy2001 1:48b0212c91e9 125 pc.printf("Invalid direction, Motor idle \n\r");
nmoorthy2001 1:48b0212c91e9 126 motor_idle();
nmoorthy2001 1:48b0212c91e9 127 }
nmoorthy2001 1:48b0212c91e9 128
nmoorthy2001 1:48b0212c91e9 129 }
nmoorthy2001 1:48b0212c91e9 130 }
bdbohn 0:d14cf1e75576 131
nmoorthy2001 1:48b0212c91e9 132 // function for wave drive in anticlockwise direction
nmoorthy2001 1:48b0212c91e9 133 void wave_anticlockwise()
nmoorthy2001 1:48b0212c91e9 134 {
nmoorthy2001 1:48b0212c91e9 135 pc.printf("Motor in wave drive \n\r");
nmoorthy2001 1:48b0212c91e9 136
nmoorthy2001 1:48b0212c91e9 137 //State8
nmoorthy2001 1:48b0212c91e9 138 IN1A = 1; //coil A +, coil B 0
nmoorthy2001 1:48b0212c91e9 139 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 140 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 141 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 142 wait(DLY);
nmoorthy2001 1:48b0212c91e9 143
nmoorthy2001 1:48b0212c91e9 144 //State6
nmoorthy2001 1:48b0212c91e9 145 IN1A = 0; //coil A 0, coil B -
nmoorthy2001 1:48b0212c91e9 146 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 147 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 148 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 149 wait(DLY);
nmoorthy2001 1:48b0212c91e9 150
nmoorthy2001 1:48b0212c91e9 151 //State4
nmoorthy2001 1:48b0212c91e9 152 IN1A = 0; //coil A -, coil B 0
nmoorthy2001 1:48b0212c91e9 153 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 154 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 155 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 156 wait(DLY);
nmoorthy2001 1:48b0212c91e9 157
nmoorthy2001 1:48b0212c91e9 158 //State2
nmoorthy2001 1:48b0212c91e9 159 IN1A = 0; //coil A 0, coil B +
nmoorthy2001 1:48b0212c91e9 160 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 161 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 162 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 163 wait(DLY);
nmoorthy2001 1:48b0212c91e9 164 }
nmoorthy2001 1:48b0212c91e9 165
nmoorthy2001 1:48b0212c91e9 166 // function for full step in anticlockwise direction
nmoorthy2001 1:48b0212c91e9 167 void fullstep_anticlockwise()
nmoorthy2001 1:48b0212c91e9 168 {
nmoorthy2001 1:48b0212c91e9 169 pc.printf("Motor in full step \n\r");
nmoorthy2001 1:48b0212c91e9 170
nmoorthy2001 1:48b0212c91e9 171 //State7
nmoorthy2001 1:48b0212c91e9 172 IN1A = 1; //coil A +, coil B -
nmoorthy2001 1:48b0212c91e9 173 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 174 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 175 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 176 wait(DLY);
nmoorthy2001 1:48b0212c91e9 177
nmoorthy2001 1:48b0212c91e9 178 //State5
nmoorthy2001 1:48b0212c91e9 179 IN1A = 0; //coil A -, coil B -
nmoorthy2001 1:48b0212c91e9 180 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 181 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 182 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 183 wait(DLY);
nmoorthy2001 1:48b0212c91e9 184
nmoorthy2001 1:48b0212c91e9 185 //State3
nmoorthy2001 1:48b0212c91e9 186 IN1A = 0; //coil A -, coil B +
nmoorthy2001 1:48b0212c91e9 187 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 188 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 189 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 190 wait(DLY);
nmoorthy2001 1:48b0212c91e9 191
nmoorthy2001 1:48b0212c91e9 192 //State1
nmoorthy2001 1:48b0212c91e9 193 IN1A = 1; //coil A +, coil B +
nmoorthy2001 1:48b0212c91e9 194 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 195 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 196 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 197 wait(DLY);
nmoorthy2001 1:48b0212c91e9 198
nmoorthy2001 1:48b0212c91e9 199 }
nmoorthy2001 1:48b0212c91e9 200
nmoorthy2001 1:48b0212c91e9 201 // function for half step in anticlockwise direction
nmoorthy2001 1:48b0212c91e9 202 void halfstep_anticlockwise()
nmoorthy2001 1:48b0212c91e9 203 {
nmoorthy2001 1:48b0212c91e9 204 pc.printf("Motor in half step \n\r");
bdbohn 0:d14cf1e75576 205
nmoorthy2001 1:48b0212c91e9 206 //State8
nmoorthy2001 1:48b0212c91e9 207 IN1A = 1; //coil A +, coil B 0
nmoorthy2001 1:48b0212c91e9 208 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 209 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 210 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 211 wait(DLY);
nmoorthy2001 1:48b0212c91e9 212
nmoorthy2001 1:48b0212c91e9 213 //State7
nmoorthy2001 1:48b0212c91e9 214 IN1A = 1; //coil A +, coil B -
nmoorthy2001 1:48b0212c91e9 215 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 216 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 217 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 218 wait(DLY);
nmoorthy2001 1:48b0212c91e9 219
nmoorthy2001 1:48b0212c91e9 220 //State6
nmoorthy2001 1:48b0212c91e9 221 IN1A = 0; //coil A 0, coil B -
nmoorthy2001 1:48b0212c91e9 222 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 223 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 224 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 225 wait(DLY);
nmoorthy2001 1:48b0212c91e9 226
nmoorthy2001 1:48b0212c91e9 227 //State5
nmoorthy2001 1:48b0212c91e9 228 IN1A = 0; //coil A -, coil B -
nmoorthy2001 1:48b0212c91e9 229 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 230 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 231 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 232 wait(DLY);
nmoorthy2001 1:48b0212c91e9 233
nmoorthy2001 1:48b0212c91e9 234 //State4
nmoorthy2001 1:48b0212c91e9 235 IN1A = 0; //coil A -, coil B 0
nmoorthy2001 1:48b0212c91e9 236 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 237 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 238 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 239 wait(DLY);
nmoorthy2001 1:48b0212c91e9 240
nmoorthy2001 1:48b0212c91e9 241 //State3
nmoorthy2001 1:48b0212c91e9 242 IN1A = 0; //coil A -, coil B +
nmoorthy2001 1:48b0212c91e9 243 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 244 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 245 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 246 wait(DLY);
nmoorthy2001 1:48b0212c91e9 247
nmoorthy2001 1:48b0212c91e9 248 //State2
nmoorthy2001 1:48b0212c91e9 249 IN1A = 0; //coil A 0, coil B +
nmoorthy2001 1:48b0212c91e9 250 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 251 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 252 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 253 wait(DLY);
nmoorthy2001 1:48b0212c91e9 254
nmoorthy2001 1:48b0212c91e9 255 //State1
nmoorthy2001 1:48b0212c91e9 256 IN1A = 1; //coil A +, coil B +
nmoorthy2001 1:48b0212c91e9 257 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 258 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 259 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 260 wait(DLY);
nmoorthy2001 1:48b0212c91e9 261 }
nmoorthy2001 1:48b0212c91e9 262
nmoorthy2001 1:48b0212c91e9 263 // function for wave drive in clockwise direction
nmoorthy2001 1:48b0212c91e9 264 void wave_clockwise()
nmoorthy2001 1:48b0212c91e9 265 {
nmoorthy2001 1:48b0212c91e9 266 pc.printf("Motor in wave drive \n\r");
nmoorthy2001 1:48b0212c91e9 267
nmoorthy2001 1:48b0212c91e9 268 //State2
nmoorthy2001 1:48b0212c91e9 269 IN1A = 0; //coil A 0, coil B +
nmoorthy2001 1:48b0212c91e9 270 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 271 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 272 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 273 wait(DLY);
nmoorthy2001 1:48b0212c91e9 274
nmoorthy2001 1:48b0212c91e9 275 //State4
nmoorthy2001 1:48b0212c91e9 276 IN1A = 0; //coil A -, coil B 0
nmoorthy2001 1:48b0212c91e9 277 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 278 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 279 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 280 wait(DLY);
nmoorthy2001 1:48b0212c91e9 281
nmoorthy2001 1:48b0212c91e9 282 //State6
nmoorthy2001 1:48b0212c91e9 283 IN1A = 0; //coil A 0, coil B -
nmoorthy2001 1:48b0212c91e9 284 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 285 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 286 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 287 wait(DLY);
nmoorthy2001 1:48b0212c91e9 288
nmoorthy2001 1:48b0212c91e9 289 //State8
nmoorthy2001 1:48b0212c91e9 290 IN1A = 1; //coil A +, coil B 0
nmoorthy2001 1:48b0212c91e9 291 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 292 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 293 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 294 wait(DLY);
nmoorthy2001 1:48b0212c91e9 295 }
nmoorthy2001 1:48b0212c91e9 296
nmoorthy2001 1:48b0212c91e9 297 // function for full step in clockwise direction
nmoorthy2001 1:48b0212c91e9 298 void fullstep_clockwise()
nmoorthy2001 1:48b0212c91e9 299 {
nmoorthy2001 1:48b0212c91e9 300 pc.printf("Motor in full step \n\r");
bdbohn 0:d14cf1e75576 301
nmoorthy2001 1:48b0212c91e9 302 //State1
nmoorthy2001 1:48b0212c91e9 303 IN1A = 1; //coil A +, coil B +
nmoorthy2001 1:48b0212c91e9 304 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 305 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 306 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 307 wait(DLY);
nmoorthy2001 1:48b0212c91e9 308
nmoorthy2001 1:48b0212c91e9 309 //State3
nmoorthy2001 1:48b0212c91e9 310 IN1A = 0; //coil A -, coil B +
nmoorthy2001 1:48b0212c91e9 311 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 312 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 313 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 314 wait(DLY);
nmoorthy2001 1:48b0212c91e9 315
nmoorthy2001 1:48b0212c91e9 316 //State5
nmoorthy2001 1:48b0212c91e9 317 IN1A = 0; //coil A -, coil B -
nmoorthy2001 1:48b0212c91e9 318 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 319 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 320 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 321 wait(DLY);
nmoorthy2001 1:48b0212c91e9 322
nmoorthy2001 1:48b0212c91e9 323 //State7
nmoorthy2001 1:48b0212c91e9 324 IN1A = 1; //coil A +, coil B -
nmoorthy2001 1:48b0212c91e9 325 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 326 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 327 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 328 wait(DLY);
nmoorthy2001 1:48b0212c91e9 329 }
bdbohn 0:d14cf1e75576 330
nmoorthy2001 1:48b0212c91e9 331 void halfstep_clockwise()
nmoorthy2001 1:48b0212c91e9 332 {
nmoorthy2001 1:48b0212c91e9 333 pc.printf("Motor in half step \n\r");
bdbohn 0:d14cf1e75576 334
nmoorthy2001 1:48b0212c91e9 335 //State1
nmoorthy2001 1:48b0212c91e9 336 IN1A = 1; //coil A +, coil B +
nmoorthy2001 1:48b0212c91e9 337 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 338 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 339 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 340 wait(DLY);
nmoorthy2001 1:48b0212c91e9 341
nmoorthy2001 1:48b0212c91e9 342 //State2
nmoorthy2001 1:48b0212c91e9 343 IN1A = 0; //coil A 0, coil B +
nmoorthy2001 1:48b0212c91e9 344 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 345 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 346 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 347 wait(DLY);
nmoorthy2001 1:48b0212c91e9 348
nmoorthy2001 1:48b0212c91e9 349 //State3
nmoorthy2001 1:48b0212c91e9 350 IN1A = 0; //coil A -, coil B +
nmoorthy2001 1:48b0212c91e9 351 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 352 IN2A = 1;
nmoorthy2001 1:48b0212c91e9 353 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 354 wait(DLY);
nmoorthy2001 1:48b0212c91e9 355
nmoorthy2001 1:48b0212c91e9 356 //State4
nmoorthy2001 1:48b0212c91e9 357 IN1A = 0; //coil A -, coil B 0
nmoorthy2001 1:48b0212c91e9 358 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 359 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 360 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 361 wait(DLY);
nmoorthy2001 1:48b0212c91e9 362
nmoorthy2001 1:48b0212c91e9 363 //State5
nmoorthy2001 1:48b0212c91e9 364 IN1A = 0; //coil A -, coil B -
nmoorthy2001 1:48b0212c91e9 365 IN1B = 1;
nmoorthy2001 1:48b0212c91e9 366 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 367 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 368 wait(DLY);
nmoorthy2001 1:48b0212c91e9 369
nmoorthy2001 1:48b0212c91e9 370 //State6
nmoorthy2001 1:48b0212c91e9 371 IN1A = 0; //coil A 0, coil B -
nmoorthy2001 1:48b0212c91e9 372 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 373 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 374 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 375 wait(DLY);
nmoorthy2001 1:48b0212c91e9 376
nmoorthy2001 1:48b0212c91e9 377 //State7
nmoorthy2001 1:48b0212c91e9 378 IN1A = 1; //coil A +, coil B -
nmoorthy2001 1:48b0212c91e9 379 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 380 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 381 IN2B = 1;
nmoorthy2001 1:48b0212c91e9 382 wait(DLY);
nmoorthy2001 1:48b0212c91e9 383
nmoorthy2001 1:48b0212c91e9 384 //State8
nmoorthy2001 1:48b0212c91e9 385 IN1A = 1; //coil A +, coil B 0
nmoorthy2001 1:48b0212c91e9 386 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 387 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 388 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 389 wait(DLY);
nmoorthy2001 1:48b0212c91e9 390 }
bdbohn 0:d14cf1e75576 391
nmoorthy2001 1:48b0212c91e9 392 void motor_idle()
nmoorthy2001 1:48b0212c91e9 393 {
nmoorthy2001 1:48b0212c91e9 394 //State0
nmoorthy2001 1:48b0212c91e9 395 IN1A = 0; //coil A 0, coil B 0
nmoorthy2001 1:48b0212c91e9 396 IN1B = 0;
nmoorthy2001 1:48b0212c91e9 397 IN2A = 0;
nmoorthy2001 1:48b0212c91e9 398 IN2B = 0;
nmoorthy2001 1:48b0212c91e9 399 wait(DLY);
nmoorthy2001 1:48b0212c91e9 400 }
bdbohn 0:d14cf1e75576 401
bdbohn 0:d14cf1e75576 402