Problema que se resolvió: 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 constante pero con un define .
main.cpp
00001 #include "mbed.h" 00002 00003 /***************************************************************************** 00004 generar un programa que controle por el puerto serial el sentido de giro del motor nema, 00005 y el número de pasos. en este caso dejar la velocidad constante pero con un define . 00006 00007 por medio de la comunicacion serial el comando es 00008 00009 | | | | 00010 | INITCMD | sentido | N_pasos | 00011 | 0xff | 0x00- 0x01 | 0x00 - 0xff | 00012 00013 para enviar los comandos usar el programa Coolterm http://freeware.the-meiers.org/ 00014 00015 # para el motor nena se configurar el driver drv8825: 00016 # 00017 # 00018 # <------period 4us min--------> 00019 # <-1.9us min -> <-1.9us min -> 00020 # _____________ _____________ 00021 # ____| |______________| |___________ signal step 00022 # ____ ____ 00023 # _| |________________________| |____________________ dir modex 1-cw 0ccw 00024 # <-> min 650ns <-> min 650ns 00025 # 00026 *****************************************************************************/ 00027 00028 00029 Serial command(USBTX, USBRX); 00030 DigitalOut stepper_step(PB_4); 00031 DigitalOut steppeer_dir(PB_5); 00032 00033 /*INGRESE LA CONFIGURACION DE LOS MOTORES*/ 00034 00035 #define INITCMD 0xFF 00036 #define VELOCITY 5 ///en micro segundos 00037 00038 // definición de las variables globales 00039 00040 uint8_t sentido_motor; // variable almacena el sentido de giro de motor en leer_datos() 00041 uint8_t N_pasos; // varable almacena el numero de pasos que se mueve el motor en leer_datos() 00042 00043 00044 // definición de las funciones 00045 void setup_uart(); 00046 00047 void mover_steper_nema(uint8_t sentido, uint8_t num_pasos); 00048 00049 void leer_datos(); 00050 00051 00052 00053 int main() { 00054 00055 setup_uart(); 00056 //command.printf("inicio de programa"); 00057 while(1){ 00058 leer_datos(); 00059 mover_steper_nema(sentido_motor, N_pasos); 00060 } 00061 } 00062 00063 00064 00065 void setup_uart(){ 00066 command.baud(115200); 00067 } 00068 00069 00070 00071 void leer_datos(){ 00072 while(command.getc()!= INITCMD); 00073 sentido_motor=command.getc(); 00074 N_pasos=command.getc(); 00075 00076 } 00077 00078 /* 00079 void mover_steper_nema(uint8_t sentido, uint8_t num_pasos){ 00080 00081 uint32_t dpulse=0; 00082 00083 /* complementar el código necesario */ 00084 00085 if (sentido == 1) 00086 { 00087 steppeer_dir = 0; 00088 } else if (sentido == 0) 00089 { 00090 steppeer_dir = 1; 00091 } 00092 /*esperar 650 nsegundo*/ 00093 00094 /* complementar el código necesario */ 00095 00096 while ( num_pasos != 0) 00097 ( 00098 stepper_step = 1; 00099 wait_us(VELOCITY); 00100 stepper_step = 0; 00101 wait_us(VELOCITY); 00102 num_pasos --; 00103 } 00104 00105 00106 }
Generated on Mon Aug 15 2022 23:05:10 by
1.7.2