Piccolo terminado

Dependencies:   mbed

Committer:
nicolas_guerrero
Date:
Wed May 30 15:55:00 2018 +0000
Revision:
0:881df5e1200a
Tercer Corte

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nicolas_guerrero 0:881df5e1200a 1
nicolas_guerrero 0:881df5e1200a 2 /******************************************************************************
nicolas_guerrero 0:881df5e1200a 3 Desarrollado por ferney beltran fbeltran@ecci.edu.co
nicolas_guerrero 0:881df5e1200a 4
nicolas_guerrero 0:881df5e1200a 5 libreria ejemplo para el motor paso a paso unipolar de 4 fases
nicolas_guerrero 0:881df5e1200a 6
nicolas_guerrero 0:881df5e1200a 7 ******************************************************************************/
nicolas_guerrero 0:881df5e1200a 8
nicolas_guerrero 0:881df5e1200a 9 //*****************************************************************************
nicolas_guerrero 0:881df5e1200a 10
nicolas_guerrero 0:881df5e1200a 11 #include "stepmotor.h"
nicolas_guerrero 0:881df5e1200a 12 #include "mbed.h"
nicolas_guerrero 0:881df5e1200a 13
nicolas_guerrero 0:881df5e1200a 14 stepmotor::stepmotor(PinName in1, PinName in2, PinName in3, PinName in4) : motor_out(in1,in2,in3,in4)
nicolas_guerrero 0:881df5e1200a 15 {
nicolas_guerrero 0:881df5e1200a 16 motor_out=0x0;
nicolas_guerrero 0:881df5e1200a 17 nstep=0;
nicolas_guerrero 0:881df5e1200a 18 motorSpeed=600;
nicolas_guerrero 0:881df5e1200a 19
nicolas_guerrero 0:881df5e1200a 20 }
nicolas_guerrero 0:881df5e1200a 21 void stepmotor::move()
nicolas_guerrero 0:881df5e1200a 22 {
nicolas_guerrero 0:881df5e1200a 23 switch(nstep)
nicolas_guerrero 0:881df5e1200a 24 {
nicolas_guerrero 0:881df5e1200a 25 case 0: motor_out = 0x1; break; // 0001
nicolas_guerrero 0:881df5e1200a 26 case 1: motor_out = 0x3; break; // 0011
nicolas_guerrero 0:881df5e1200a 27 case 2: motor_out = 0x2; break; // 0010
nicolas_guerrero 0:881df5e1200a 28 case 3: motor_out = 0x6; break; // 0110
nicolas_guerrero 0:881df5e1200a 29 case 4: motor_out = 0x4; break; // 0100
nicolas_guerrero 0:881df5e1200a 30 case 5: motor_out = 0xC; break; // 1100
nicolas_guerrero 0:881df5e1200a 31 case 6: motor_out = 0x8; break; // 1000
nicolas_guerrero 0:881df5e1200a 32 case 7: motor_out = 0x9; break; // 1001
nicolas_guerrero 0:881df5e1200a 33 default: motor_out = 0x0; break; // 0000
nicolas_guerrero 0:881df5e1200a 34 }
nicolas_guerrero 0:881df5e1200a 35 wait_us(motorSpeed);
nicolas_guerrero 0:881df5e1200a 36 }
nicolas_guerrero 0:881df5e1200a 37 void stepmotor::set_speed(int speed)
nicolas_guerrero 0:881df5e1200a 38 {
nicolas_guerrero 0:881df5e1200a 39 motorSpeed=speed; //set motor speed us
nicolas_guerrero 0:881df5e1200a 40 }
nicolas_guerrero 0:881df5e1200a 41 uint32_t stepmotor::get_speed(){
nicolas_guerrero 0:881df5e1200a 42 return motorSpeed; //
nicolas_guerrero 0:881df5e1200a 43 }
nicolas_guerrero 0:881df5e1200a 44 void stepmotor::step(uint32_t cuadrante, bool cw) {
nicolas_guerrero 0:881df5e1200a 45 // funcion para mover el motor N pasos CW o CCW
nicolas_guerrero 0:881df5e1200a 46 // num_steps número de paso que da el motor
nicolas_guerrero 0:881df5e1200a 47 // cw =True para dirección en sentido del reloj
nicolas_guerrero 0:881df5e1200a 48 // cw =False para dirección contraria de las manecillas del reloj
nicolas_guerrero 0:881df5e1200a 49 //cuadrante=cuadrante*0.199;
nicolas_guerrero 0:881df5e1200a 50 float num_steps=cuadrante*814.87;
nicolas_guerrero 0:881df5e1200a 51 uint32_t count=num_steps;
nicolas_guerrero 0:881df5e1200a 52 while(count){
nicolas_guerrero 0:881df5e1200a 53 if (cw) nstep++;
nicolas_guerrero 0:881df5e1200a 54 else nstep--;
nicolas_guerrero 0:881df5e1200a 55 if (nstep>7) nstep=0;
nicolas_guerrero 0:881df5e1200a 56 if (nstep<0) nstep=7;
nicolas_guerrero 0:881df5e1200a 57 move();
nicolas_guerrero 0:881df5e1200a 58 count--;
nicolas_guerrero 0:881df5e1200a 59 }
nicolas_guerrero 0:881df5e1200a 60 }
nicolas_guerrero 0:881df5e1200a 61 void stepmotor::matriz(bool cw)
nicolas_guerrero 0:881df5e1200a 62 {
nicolas_guerrero 0:881df5e1200a 63 uint32_t num_pasos=1;
nicolas_guerrero 0:881df5e1200a 64 while(num_pasos){
nicolas_guerrero 0:881df5e1200a 65
nicolas_guerrero 0:881df5e1200a 66 if (cw) nstep++;
nicolas_guerrero 0:881df5e1200a 67 else nstep--;
nicolas_guerrero 0:881df5e1200a 68 if (nstep>7) nstep=0;
nicolas_guerrero 0:881df5e1200a 69 if (nstep<0) nstep=7;
nicolas_guerrero 0:881df5e1200a 70 move();
nicolas_guerrero 0:881df5e1200a 71 num_pasos--;
nicolas_guerrero 0:881df5e1200a 72 }
nicolas_guerrero 0:881df5e1200a 73 }