laboratorio de comando con el motor paso a paso nema

Dependencies:   mbed

main.cpp

Committer:
fabeltranm
Date:
2019-02-25
Revision:
0:5e6b543c1179

File content as of revision 0:5e6b543c1179:

#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);


}