¡Motores paso a paso con la biblioteca AccelStepper! Leave a comment

Comparte este Post

CONEXIONES

Esta vez estamos usando el Arduino NANO en lugar de la ONU. Dado que el NANO es básicamente una versión más pequeña de UNO (dar o quitar algunas diferencias), las conexiones serían similares, pero dado que estamos utilizando la biblioteca AccelStepper necesitamos aún menos conexiones.

El controlador fácil:

El pin 2 del NANO está conectado a STEPS
Pin 3 a DIR
y GND está conectado a un pin GND en el Arduino

* El voltaje y GND (en la parte superior del Easy Driver) están conectados a una fuente de alimentación de 12V 1A.
El motor NEMA 17 que estamos utilizando tiene un consumo máximo de amperaje de alrededor de 0.45A.

Conexiones de motor paso a paso:

Los 4 cables del paso a paso NEMA (2 por bobina) están conectados directamente a los pines del grupo Easy Driver A y B.

Una manera rápida de identificar qué cables son parte de la misma bobina es conectar dos de esos cuatro cables y si siente resistencia al intentar girar el eje del motor paso a paso, eso significa que esos 2 cables son parte de la misma bobina.

El pin del interruptor de límite NO (normalmente abierto) está conectado al pin 9 del Arduino

El pin COM (común) del interruptor está conectado a un pin GND en el Arduino

EL CÓDIGO

Como en nuestro último tutorial, queremos comenzar a buscar el stepper de inmediato en el inicio.

La forma en que funciona la biblioteca AccelStepper, es que al inicio el valor de la posición siempre es cero, luego le dice a la biblioteca que se mueva a una posición relativa a la posición cero.

Por ejemplo, si configura la posición para «mover a» a 300, y luego emite el comando «ejecutar», el paso a paso se moverá 300 pasos en el sentido de las agujas del reloj desde la posición cero.

Si después de esto, establece la posición en 350, el paso a paso se moverá en el sentido de las agujas del reloj 50 pasos, dado que ya está en la posición 300.

Entonces, la posición para moverse es relativa a la posición actual.

Un número negativo moverá el paso a paso en el sentido contrario a las agujas del reloj.

En este tutorial, estamos usando la ventana Serial Monitor para controlar los movimientos del stepper una vez que se completa el Homing.

Como siempre, para obtener más información sobre el tutorial y la explicación del código, mire nuestro video tutorial.

/ * Código de inicio del motor con AccelStepper y el monitor serial
 
 Creado por Yvan / https: // Inteligente - Bits . com
 Este código es  en el dominio público ... Puede: copiarlo, usarlo, modificarlo, compartirlo o simplemente ignóralo ! Gracias ! 

* / 

#include "AccelStepper.h" 
// Biblioteca creada por Mike McCauley en http: // www . Airspayce . com / mikem / arduino / AccelStepper / 

// Configuración de AccelStepper
 AccelStepper stepperX ( 1 , 2 , 3 ); //  1  = Interfaz de fácil manejo // NANO Pin 2 conectado al pin STEP de Easy Driver // NANO Pin 3 conectado al pin DIR de Easy Driver // Definir los pines utilizados #define home_switch 9 // Pin 9 conectado al Home Switch (MicroSwitch) 

// Variables de viaje paso a paso largo TravelX; // Se usa para almacenar el valor X ingresado en el monitor serial En t move_finished = 1 ; // Usado para verificar Si movimiento es terminado largo initial_homing = - 1 ; // Utilizado para Home Stepper al inicio


 void setup () {
    De serie . empezar( 9600 ); // Inicie el monitor serie con velocidad de 9600 Baudios
   
    pinMode (home_switch, INPUT_PULLUP);
   
    retrasar( 5 ); // Espere para EasyDriver se despierta // Establecer velocidad máxima y Aceleración de cada Steppers al inicio para buscador de blancos
   stepperX . setMaxSpeed ​​( 100.0 ); // Establezca la velocidad máxima de paso a paso (más lento para obtener una mejor precisión)
   stepperX . setAcceleration ( 100.0 ); // Establecer la aceleración de Stepper // Comience el procedimiento de Homing del Motor paso a paso al inicio

   De serie . impresión ( "Stepper es Homing ...". ); mientras (digitalRead (home_switch)) { // Haga que el Stepper se mueva CCW hasta que el interruptor es activado
     stepperX . moveTo (initial_homing); // Establezca la posición para moverse a
     initial_homing - ; // Disminuir por 1  para  siguiente movimiento Si necesario
     stepperX . correr(); // Comience a mover el paso a paso
     retrasar( 5 );
 }

   stepperX . setCurrentPosition ( 0 ); // Establecer la posición actual como cero para ahora
   stepperX . setMaxSpeed ​​( 100.0 ); // Establezca la velocidad máxima de paso a paso (más lento para obtener una mejor precisión)
   stepperX . setAcceleration ( 100.0 ); // Establecer la aceleración de Stepper
   initial_homing = 1 ; mientras ( ! digitalRead (home_switch)) { // Haga que el Stepper se mueva CW hasta que el interruptor es desactivado
     stepperX . moveTo (initial_homing);
     stepperX . correr();
     initial_homing ++ ;
     retrasar( 5 );
   }
  
   stepperX . setCurrentPosition ( 0 );
   De serie . println ( "Homing Completed" );
   De serie . println ( "" );
   stepperX . setMaxSpeed ​​( 1000.0 ); // Establecer velocidad máxima de paso a paso (más rápido para movimientos regulares)
   stepperX . setAcceleration ( 1000.0 ); // Establecer la aceleración de Stepper // Imprima las instrucciones en el monitor serie al inicio
   De serie . println ( "Introduzca la distancia de viaje (Positivo para CW / Negativo para CCW y Cero para volver a Inicio):" );
 }

 void loop () { mientras (De serie . disponible() > 0 ) { // Comprobar Si los valores están disponibles en el tampón serial

   move_finished = 0 ; // Establecer variable para control de movimiento del paso a paso
  
   TravelX = De serie . parseInt (); // Poner valor numérico de  buffer  en  TravelX  variable 
  Si (TravelX  0  || TravelX >  1350 ) { // Asegúrese de que la posición ingresada es  no más allá del HOGAR o Posición MAX
     De serie . println ( "" );
     De serie . println ( "Introduzca un valor mayor que cero y menor o igual a 1350 ....." );
     De serie . println ( "" );
   } más {
     De serie . impresión ( "Mover paso a paso a la posición:" );
     De serie . println (TravelX);
  
   stepperX . moveTo (TravelX); // Establecer nueva posición moveto de Stepper
  
   retrasar( 1000 ); // Espere 1 segundos antes de mover el paso a paso
   }
   } Si (TravelX > =  0  && TravelX  1350 ) { // Comprobar Si el Stepper ha alcanzado la posición deseada Si ((stepperX . distanceToGo () ! =  0 )) {
    
     stepperX . correr(); // Mueva a Stepper a su posición
    
   } // Si se mueve es mensaje de visualización completado en el monitor serie Si ((move_finished ==  0 ) && (stepperX . distanceToGo () ==  0 )) {
     De serie . println ( "¡TERMINADO!" );
     De serie . println ( "" );
      De serie . println ( "Introduzca la distancia de viaje (Positivo para CW / Negativo para CCW y Cero para volver a Inicio):" );
     move_finished = 1 ; // Restablecer variable de movimiento
   }
   }
 }
DESCARGAR

Copie el código de Croquis anterior que desea usar arriba en su software Arduino IDE para programar su Arduino.

Descargue la biblioteca AccelStepper creada por Mike McCauley aquí


Comparte este Post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Abrir chat
0

Tu carrito