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

Dependents:   PICCOLO_CNC1

Committer:
Stevenor1997
Date:
Tue Apr 24 04:51:31 2018 +0000
Revision:
2:7e471c76cd6b
Parent:
1:4c622abe2483
Child:
3:ec3add9f1351
lir

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 0:ea300190c1f5 8 stepmotor::stepmotor(PinName in1, PinName in2, PinName in3, PinName in4) : motor_out(in1,in2,in3,in4) {
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 0:ea300190c1f5 14
Stevenor1997 0:ea300190c1f5 15 }
Stevenor1997 0:ea300190c1f5 16
Stevenor1997 0:ea300190c1f5 17
Stevenor1997 0:ea300190c1f5 18 void stepmotor::move() {
Stevenor1997 0:ea300190c1f5 19
Stevenor1997 0:ea300190c1f5 20 switch(nstep)
Stevenor1997 0:ea300190c1f5 21 {
Stevenor1997 0:ea300190c1f5 22 case 0: motor_out = 0x1; break; // 0001
Stevenor1997 0:ea300190c1f5 23 case 1: motor_out = 0x3; break; // 0011
Stevenor1997 0:ea300190c1f5 24 case 2: motor_out = 0x2; break; // 0010
Stevenor1997 0:ea300190c1f5 25 case 3: motor_out = 0x6; break; // 0110
Stevenor1997 0:ea300190c1f5 26 case 4: motor_out = 0x4; break; // 0100
Stevenor1997 0:ea300190c1f5 27 case 5: motor_out = 0xC; break; // 1100
Stevenor1997 0:ea300190c1f5 28 case 6: motor_out = 0x8; break; // 1000
Stevenor1997 0:ea300190c1f5 29 case 7: motor_out = 0x9; break; // 1001
Stevenor1997 0:ea300190c1f5 30
Stevenor1997 0:ea300190c1f5 31 default: motor_out = 0x0; break; // 0000
Stevenor1997 0:ea300190c1f5 32 }
Stevenor1997 0:ea300190c1f5 33 wait_us(motorSpeed);
Stevenor1997 0:ea300190c1f5 34
Stevenor1997 0:ea300190c1f5 35 }
Stevenor1997 0:ea300190c1f5 36
Stevenor1997 0:ea300190c1f5 37 void stepmotor::set_speed(int speed){
Stevenor1997 0:ea300190c1f5 38 motorSpeed=speed; //set motor speed us
Stevenor1997 0:ea300190c1f5 39 }
Stevenor1997 0:ea300190c1f5 40 uint32_t stepmotor::get_speed(){
Stevenor1997 0:ea300190c1f5 41 return motorSpeed; //
Stevenor1997 0:ea300190c1f5 42 }
Stevenor1997 0:ea300190c1f5 43
Stevenor1997 0:ea300190c1f5 44 void stepmotor::step(uint32_t num_steps, uint8_t cw) {
Stevenor1997 0:ea300190c1f5 45 // funcion para mover el motor N pasos CW o CCW
Stevenor1997 0:ea300190c1f5 46 // num_steps número de paso que da el motor
Stevenor1997 0:ea300190c1f5 47 // cw =True para dirección en sentido del reloj
Stevenor1997 0:ea300190c1f5 48 // cw =False para dirección contraria de las manecillas del reloj
Stevenor1997 2:7e471c76cd6b 49 pc1.baud(9600); //programar los baudios
Stevenor1997 2:7e471c76cd6b 50 pc1.format(8,SerialBase::None,1);
Stevenor1997 1:4c622abe2483 51
Stevenor1997 0:ea300190c1f5 52 uint32_t count=num_steps ;
Stevenor1997 0:ea300190c1f5 53 while(count){
Stevenor1997 2:7e471c76cd6b 54 if (cw==1) nstep++;
Stevenor1997 2:7e471c76cd6b 55 if (cw==0) nstep--;
Stevenor1997 0:ea300190c1f5 56 if (nstep>7) nstep=0;
Stevenor1997 0:ea300190c1f5 57 if (nstep<0) nstep=7;
Stevenor1997 0:ea300190c1f5 58 move();
Stevenor1997 0:ea300190c1f5 59 count--;
Stevenor1997 0:ea300190c1f5 60
Stevenor1997 0:ea300190c1f5 61 }
Stevenor1997 2:7e471c76cd6b 62 if(cw==1) pc1.printf("Avance \n");
Stevenor1997 2:7e471c76cd6b 63 else if (cw==0) pc1.printf("Retrocedi \n");
Stevenor1997 0:ea300190c1f5 64 }