MOTOR

Dependencies:   mbed

main.cpp

Committer:
stevencastro
Date:
2019-03-28
Revision:
1:8452eddc6a3e
Parent:
0:5e6b543c1179

File content as of revision 1:8452eddc6a3e:

#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(D12);
DigitalOut steppeer_dir(D13);

/*INGRESE LA CONFIGURACION DE LOS MOTORES*/

#define INITCMD 0xFF    // Inicialisacion del comando 
#define VELOCITY 5000 ///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){
    int i = 0;

/* complementar el código necesario */
    if (sentido == 1) { // configuracion despues de la lectura del comando 
        steppeer_dir = 0;
    
    } else if (sentido == 0) {
        steppeer_dir = 1;
        
    }
    wait_us(1);
    /*esperar 650 nsegundo*/
    /* complementar el código necesario */
    for (i=1 ; i<=num_pasos; i++){
        printf ("%x",i );
        stepper_step=1;
        wait_us(VELOCITY);
        stepper_step=0;
        wait_us(VELOCITY);
 }}