laboratorio de comando con el motor paso a paso nema

Dependencies:   mbed

Revision:
0:5e6b543c1179
--- /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);
+
+
+}
+
+