MOTOR

Dependencies:   mbed

Committer:
stevencastro
Date:
Thu Mar 28 23:53:29 2019 +0000
Revision:
1:8452eddc6a3e
Parent:
0:5e6b543c1179
MOTOR

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabeltranm 0:5e6b543c1179 1 #include "mbed.h"
fabeltranm 0:5e6b543c1179 2
fabeltranm 0:5e6b543c1179 3 /*****************************************************************************
fabeltranm 0:5e6b543c1179 4 generar un programa que controle por el puerto serial el sentido de giro del motor nema,
fabeltranm 0:5e6b543c1179 5 y el nímero de pasos. en este caso dejar la velocidad cosntantes pero con un define .
fabeltranm 0:5e6b543c1179 6
fabeltranm 0:5e6b543c1179 7 por medio de la comunicacion serial el comando es
fabeltranm 0:5e6b543c1179 8
fabeltranm 0:5e6b543c1179 9 | | | |
fabeltranm 0:5e6b543c1179 10 | INITCMD | sentido | N_pasos |
fabeltranm 0:5e6b543c1179 11 | 0xff | 0x00- 0x01 | 0x00 - 0xff |
fabeltranm 0:5e6b543c1179 12
fabeltranm 0:5e6b543c1179 13 para enviar los comandos usar el programa Coolterm http://freeware.the-meiers.org/
fabeltranm 0:5e6b543c1179 14
fabeltranm 0:5e6b543c1179 15 # para el motor nena se configurar el driver drv8825:
fabeltranm 0:5e6b543c1179 16 #
fabeltranm 0:5e6b543c1179 17 #
fabeltranm 0:5e6b543c1179 18 # <------period 4us min-------->
fabeltranm 0:5e6b543c1179 19 # <-1.9us min -> <-1.9us min ->
fabeltranm 0:5e6b543c1179 20 # _____________ _____________
fabeltranm 0:5e6b543c1179 21 # ____| |______________| |___________ signal step
fabeltranm 0:5e6b543c1179 22 # ____ ____
fabeltranm 0:5e6b543c1179 23 # _| |________________________| |____________________ dir modex 1-cw 0ccw
fabeltranm 0:5e6b543c1179 24 # <-> min 650ns <-> min 650ns
fabeltranm 0:5e6b543c1179 25 #
fabeltranm 0:5e6b543c1179 26 *****************************************************************************/
fabeltranm 0:5e6b543c1179 27
fabeltranm 0:5e6b543c1179 28
fabeltranm 0:5e6b543c1179 29 Serial command(USBTX, USBRX);
stevencastro 1:8452eddc6a3e 30 DigitalOut stepper_step(D12);
stevencastro 1:8452eddc6a3e 31 DigitalOut steppeer_dir(D13);
fabeltranm 0:5e6b543c1179 32
fabeltranm 0:5e6b543c1179 33 /*INGRESE LA CONFIGURACION DE LOS MOTORES*/
fabeltranm 0:5e6b543c1179 34
stevencastro 1:8452eddc6a3e 35 #define INITCMD 0xFF // Inicialisacion del comando
stevencastro 1:8452eddc6a3e 36 #define VELOCITY 5000 ///en micro segundos
fabeltranm 0:5e6b543c1179 37
fabeltranm 0:5e6b543c1179 38 // definición de las variables globales
fabeltranm 0:5e6b543c1179 39
fabeltranm 0:5e6b543c1179 40 uint8_t sentido_motor; // variable almacena el sentido de giro de motor en leer_datos()
stevencastro 1:8452eddc6a3e 41 uint8_t N_pasos; // varable almacena el numero de pasos que se mueve el motor en leer_datos(
fabeltranm 0:5e6b543c1179 42
fabeltranm 0:5e6b543c1179 43
fabeltranm 0:5e6b543c1179 44 // definición de las funciones
fabeltranm 0:5e6b543c1179 45 void setup_uart();
fabeltranm 0:5e6b543c1179 46
fabeltranm 0:5e6b543c1179 47 void mover_steper_nema(uint8_t sentido, uint8_t num_pasos);
fabeltranm 0:5e6b543c1179 48
fabeltranm 0:5e6b543c1179 49 void leer_datos();
fabeltranm 0:5e6b543c1179 50
fabeltranm 0:5e6b543c1179 51
fabeltranm 0:5e6b543c1179 52
fabeltranm 0:5e6b543c1179 53 int main() {
fabeltranm 0:5e6b543c1179 54
fabeltranm 0:5e6b543c1179 55 setup_uart();
fabeltranm 0:5e6b543c1179 56 //command.printf("inicio de programa");
fabeltranm 0:5e6b543c1179 57 while(1){
fabeltranm 0:5e6b543c1179 58 leer_datos();
stevencastro 1:8452eddc6a3e 59
fabeltranm 0:5e6b543c1179 60 mover_steper_nema(sentido_motor, N_pasos);
fabeltranm 0:5e6b543c1179 61 }
fabeltranm 0:5e6b543c1179 62 }
fabeltranm 0:5e6b543c1179 63
fabeltranm 0:5e6b543c1179 64
fabeltranm 0:5e6b543c1179 65
fabeltranm 0:5e6b543c1179 66 void setup_uart(){
fabeltranm 0:5e6b543c1179 67 command.baud(115200);
fabeltranm 0:5e6b543c1179 68 }
fabeltranm 0:5e6b543c1179 69
fabeltranm 0:5e6b543c1179 70
fabeltranm 0:5e6b543c1179 71
fabeltranm 0:5e6b543c1179 72 void leer_datos(){
stevencastro 1:8452eddc6a3e 73
fabeltranm 0:5e6b543c1179 74 while(command.getc()!= INITCMD);
fabeltranm 0:5e6b543c1179 75 sentido_motor=command.getc();
fabeltranm 0:5e6b543c1179 76 N_pasos=command.getc();
fabeltranm 0:5e6b543c1179 77
fabeltranm 0:5e6b543c1179 78 }
fabeltranm 0:5e6b543c1179 79
fabeltranm 0:5e6b543c1179 80
fabeltranm 0:5e6b543c1179 81
fabeltranm 0:5e6b543c1179 82 void mover_steper_nema(uint8_t sentido, uint8_t num_pasos){
stevencastro 1:8452eddc6a3e 83 int i = 0;
fabeltranm 0:5e6b543c1179 84
fabeltranm 0:5e6b543c1179 85 /* complementar el código necesario */
stevencastro 1:8452eddc6a3e 86 if (sentido == 1) { // configuracion despues de la lectura del comando
fabeltranm 0:5e6b543c1179 87 steppeer_dir = 0;
stevencastro 1:8452eddc6a3e 88
fabeltranm 0:5e6b543c1179 89 } else if (sentido == 0) {
fabeltranm 0:5e6b543c1179 90 steppeer_dir = 1;
stevencastro 1:8452eddc6a3e 91
fabeltranm 0:5e6b543c1179 92 }
stevencastro 1:8452eddc6a3e 93 wait_us(1);
fabeltranm 0:5e6b543c1179 94 /*esperar 650 nsegundo*/
fabeltranm 0:5e6b543c1179 95 /* complementar el código necesario */
stevencastro 1:8452eddc6a3e 96 for (i=1 ; i<=num_pasos; i++){
stevencastro 1:8452eddc6a3e 97 printf ("%x",i );
fabeltranm 0:5e6b543c1179 98 stepper_step=1;
fabeltranm 0:5e6b543c1179 99 wait_us(VELOCITY);
fabeltranm 0:5e6b543c1179 100 stepper_step=0;
fabeltranm 0:5e6b543c1179 101 wait_us(VELOCITY);
stevencastro 1:8452eddc6a3e 102 }}
fabeltranm 0:5e6b543c1179 103
fabeltranm 0:5e6b543c1179 104