ferney alberto beltran molina
/
00_LAB_COMMAND_STEPMOTOR_NEMA
laboratorio de comando con el motor paso a paso nema
Diff: main.cpp
- Revision:
- 0:5e6b543c1179
diff -r 000000000000 -r 5e6b543c1179 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Feb 25 22:49:23 2019 +0000 @@ -0,0 +1,102 @@ +#include "mbed.h" + +/***************************************************************************** +generar un programa que controle por el puerto serial el sentido de giro del motor nema, +y el nímero de pasos. en este caso dejar la velocidad cosntantes pero con un define . + +por medio de la comunicacion serial el comando es + +| | | | +| INITCMD | sentido | N_pasos | +| 0xff | 0x00- 0x01 | 0x00 - 0xff | + +para enviar los comandos usar el programa Coolterm http://freeware.the-meiers.org/ + +# para el motor nena se configurar el driver drv8825: +# +# +# <------period 4us min--------> +# <-1.9us min -> <-1.9us min -> +# _____________ _____________ +# ____| |______________| |___________ signal step +# ____ ____ +# _| |________________________| |____________________ dir modex 1-cw 0ccw +# <-> min 650ns <-> min 650ns +# +*****************************************************************************/ + + +Serial command(USBTX, USBRX); +DigitalOut stepper_step(PB_4); +DigitalOut steppeer_dir(PB_5); + +/*INGRESE LA CONFIGURACION DE LOS MOTORES*/ + +#define INITCMD 0xFF +#define VELOCITY 5 ///en micro segundos + +// definición de las variables globales + +uint8_t sentido_motor; // variable almacena el sentido de giro de motor en leer_datos() +uint8_t N_pasos; // varable almacena el numero de pasos que se mueve el motor en leer_datos() + + +// definición de las funciones +void setup_uart(); + +void mover_steper_nema(uint8_t sentido, uint8_t num_pasos); + +void leer_datos(); + + + +int main() { + + setup_uart(); + //command.printf("inicio de programa"); + while(1){ + leer_datos(); + mover_steper_nema(sentido_motor, N_pasos); + } +} + + + +void setup_uart(){ + command.baud(115200); +} + + + +void leer_datos(){ + while(command.getc()!= INITCMD); + sentido_motor=command.getc(); + N_pasos=command.getc(); + +} + + + +void mover_steper_nema(uint8_t sentido, uint8_t num_pasos){ + + uint32_t dpulse=0; + +/* complementar el código necesario */ + + if (sentido == 1) { + steppeer_dir = 0; + } else if (sentido == 0) { + steppeer_dir = 1; + } + /*esperar 650 nsegundo*/ + + /* complementar el código necesario */ + stepper_step=1; + wait_us(VELOCITY); + stepper_step=0; + wait_us(VELOCITY); + + +} + +