esta librería sirve para el control del motor paso a paso.

Dependents:   PICCOLO_CNC1

Committer:
Stevenor1997
Date:
Tue Apr 24 15:48:13 2018 +0000
Revision:
3:ec3add9f1351
Parent:
2:7e471c76cd6b
Child:
4:8581e6927b36
se le agrego la opci?n de otro motor paso a paso y que funcionen en paralelo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Stevenor1997 0:ea300190c1f5 1 #include "Step_Motor.h"
Stevenor1997 0:ea300190c1f5 2 #include "mbed.h"
Stevenor1997 0:ea300190c1f5 3
Stevenor1997 2:7e471c76cd6b 4
Stevenor1997 2:7e471c76cd6b 5 Serial pc1(USBTX,USBRX);
Stevenor1997 2:7e471c76cd6b 6
Stevenor1997 2:7e471c76cd6b 7
Stevenor1997 3:ec3add9f1351 8 stepmotor::stepmotor(PinName in1, PinName in2, PinName in3, PinName in4,PinName in5, PinName in6, PinName in7, PinName in8) : motor_out(in1,in2,in3,in4,in5,in6,in7,in8) {
Stevenor1997 0:ea300190c1f5 9
Stevenor1997 0:ea300190c1f5 10
Stevenor1997 0:ea300190c1f5 11 motor_out=0x0;
Stevenor1997 0:ea300190c1f5 12 nstep=0;
Stevenor1997 0:ea300190c1f5 13 motorSpeed=1100;
Stevenor1997 3:ec3add9f1351 14 nstep2=7;
Stevenor1997 0:ea300190c1f5 15 }
Stevenor1997 0:ea300190c1f5 16
Stevenor1997 0:ea300190c1f5 17
Stevenor1997 0:ea300190c1f5 18 void stepmotor::move() {
Stevenor1997 0:ea300190c1f5 19
Stevenor1997 3:ec3add9f1351 20 switch(nstep2)
Stevenor1997 3:ec3add9f1351 21 {
Stevenor1997 3:ec3add9f1351 22 case 0: ms2 = 0x1; break; // 0001
Stevenor1997 3:ec3add9f1351 23 case 1: ms2 = 0x3; break; // 0011
Stevenor1997 3:ec3add9f1351 24 case 2: ms2 = 0x2; break; // 0010
Stevenor1997 3:ec3add9f1351 25 case 3: ms2 = 0x6; break; // 0110
Stevenor1997 3:ec3add9f1351 26 case 4: ms2 = 0x4; break; // 0100
Stevenor1997 3:ec3add9f1351 27 case 5: ms2 = 0xC; break; // 1100
Stevenor1997 3:ec3add9f1351 28 case 6: ms2 = 0x8; break; // 1000
Stevenor1997 3:ec3add9f1351 29 case 7: ms2 = 0x9; break; // 1001
Stevenor1997 3:ec3add9f1351 30
Stevenor1997 3:ec3add9f1351 31 default: ms2 = 0x0; break; // 0000
Stevenor1997 3:ec3add9f1351 32 }
Stevenor1997 3:ec3add9f1351 33
Stevenor1997 0:ea300190c1f5 34 switch(nstep)
Stevenor1997 0:ea300190c1f5 35 {
Stevenor1997 3:ec3add9f1351 36 case 0: motor_out = 0x10 + ms2; break; // 0001 XXXX
Stevenor1997 3:ec3add9f1351 37 case 1: motor_out = 0x30 + ms2; break; // 0011
Stevenor1997 3:ec3add9f1351 38 case 2: motor_out = 0x20 + ms2; break; // 0010
Stevenor1997 3:ec3add9f1351 39 case 3: motor_out = 0x60 + ms2; break; // 0110
Stevenor1997 3:ec3add9f1351 40 case 4: motor_out = 0x40 + ms2; break; // 0100
Stevenor1997 3:ec3add9f1351 41 case 5: motor_out = 0xC0 + ms2; break; // 1100
Stevenor1997 3:ec3add9f1351 42 case 6: motor_out = 0x80 + ms2; break; // 1000
Stevenor1997 3:ec3add9f1351 43 case 7: motor_out = 0x90 + ms2; break; // 1001
Stevenor1997 0:ea300190c1f5 44
Stevenor1997 3:ec3add9f1351 45 default: motor_out = 0x00 + ms2; break; // 0000
Stevenor1997 0:ea300190c1f5 46 }
Stevenor1997 0:ea300190c1f5 47 wait_us(motorSpeed);
Stevenor1997 0:ea300190c1f5 48
Stevenor1997 0:ea300190c1f5 49 }
Stevenor1997 0:ea300190c1f5 50
Stevenor1997 0:ea300190c1f5 51 void stepmotor::set_speed(int speed){
Stevenor1997 0:ea300190c1f5 52 motorSpeed=speed; //set motor speed us
Stevenor1997 0:ea300190c1f5 53 }
Stevenor1997 0:ea300190c1f5 54 uint32_t stepmotor::get_speed(){
Stevenor1997 0:ea300190c1f5 55 return motorSpeed; //
Stevenor1997 0:ea300190c1f5 56 }
Stevenor1997 0:ea300190c1f5 57
Stevenor1997 0:ea300190c1f5 58 void stepmotor::step(uint32_t num_steps, uint8_t cw) {
Stevenor1997 0:ea300190c1f5 59 // funcion para mover el motor N pasos CW o CCW
Stevenor1997 0:ea300190c1f5 60 // num_steps número de paso que da el motor
Stevenor1997 0:ea300190c1f5 61 // cw =True para dirección en sentido del reloj
Stevenor1997 0:ea300190c1f5 62 // cw =False para dirección contraria de las manecillas del reloj
Stevenor1997 2:7e471c76cd6b 63 pc1.baud(9600); //programar los baudios
Stevenor1997 2:7e471c76cd6b 64 pc1.format(8,SerialBase::None,1);
Stevenor1997 1:4c622abe2483 65
Stevenor1997 0:ea300190c1f5 66 uint32_t count=num_steps ;
Stevenor1997 0:ea300190c1f5 67 while(count){
Stevenor1997 2:7e471c76cd6b 68 if (cw==1) nstep++;
Stevenor1997 2:7e471c76cd6b 69 if (cw==0) nstep--;
Stevenor1997 0:ea300190c1f5 70 if (nstep>7) nstep=0;
Stevenor1997 0:ea300190c1f5 71 if (nstep<0) nstep=7;
Stevenor1997 3:ec3add9f1351 72 nstep2=7-nstep;
Stevenor1997 0:ea300190c1f5 73 move();
Stevenor1997 0:ea300190c1f5 74 count--;
Stevenor1997 0:ea300190c1f5 75
Stevenor1997 0:ea300190c1f5 76 }
Stevenor1997 2:7e471c76cd6b 77 if(cw==1) pc1.printf("Avance \n");
Stevenor1997 2:7e471c76cd6b 78 else if (cw==0) pc1.printf("Retrocedi \n");
Stevenor1997 0:ea300190c1f5 79 }