Cristian Castro / Mbed 2 deprecated 02-Nucleo_motores

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }