Control de Motor a Pasos con Arduino UNO.

 

Los motores paso a paso son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos.

La característica principal de estos motores es el hecho de poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar desde 90° hasta pequeños movimientos de tan solo 1.8°, es decir, que se necesitarán 4 pasos en el primer caso (90°) y 200 pasos para el segundo caso (1.8°), para completar un giro completo de 360°.

Estos motores poseen la habilidad de poder quedar enclavados en una posición o bien totalmente libres. Si una o más de sus bobinas están energizadas, el motor estará enclavado en la posición correspondiente y por el contrario quedará completamente libre si no circula corriente por ninguna de sus bobinas.

A continuación se muestra como realizar la conexión física de un motor a pasos en conjunto con un microcontrolador Arduino Uno y un circuito integrado ULN2003A para llevar a cabo el funcionamiento del motor en 4 posiciones distintas, cada una de ellas de 90 grados.

 

Material:

  • Microcontrolador Arduino UNO (Puede ser tambien Arduino MEGA)
  • Circuito integrado ULN2003A
  • Motor a Pasos Unipolar de 5 o 6 hilos
  • Protoboard
  • Cable para conectar componentes
  • Fuente de Alimentación

Diagrama de conexión para funcionamiento de motor a pasos: 

En este diagrama se muestra la forma de conectar el circuito con cada uno de los componentes necesarios. Cabe señalar que la conexión puede variar dependiendo del modelo de cada motor para lo cual basta con identificar sus cables comunes y conectarlos a la línea de alimentación del circuito.

Diagrama de MPP Unipolar_bb

Diagrama interno del circuito integrado ULN2003A

Este diagrama muestra los pines de entradas, salidas del integrado que nos permite incrementar el voltaje que se le suministra al motor. Para mayor información acerca de este integrado se recomienda revisar su datasheet en la siguiente liga. http://www.ti.com/lit/ds/symlink/uln2003a.pdf

uln2003a

Código de control

Recuerden guardar el código con la extensión .ino para que pueda funcionar correctamente el Sketch en el IDE de Arduino.

/Control de MOTOR a Pasos en Secuencia Normal (2 bobinas activadas por cada paso) para 4 estaciones

int motorPin1 = 8; // Pines del Motor
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 3000; // DelayTime determina la espera entre uno y otro paso
int delayTime1 = 100; // DelayTime1 determina la velocidad de giro entre uno y otro paso
int count = 0;

void setup()
{
pinMode(motorPin1, OUTPUT); // Configuración de los Pines como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
//Control de MOTOR a Pasos en Secuencia Normal (2 bobinas activadas por cada paso) para 4 estaciones

int motorPin1 = 8; // Pines del Motor
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 3000; // DelayTime determina la espera entre uno y otro paso
int delayTime1 = 100; // DelayTime1 determina la velocidad de giro entre uno y otro paso
int count = 0;

void setup()
{
pinMode(motorPin1, OUTPUT); // Configuración de los Pines como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}

void loop()
{

for (count = 0; count < 3; count++) // Aqui en el for es donde se manipulan los grados que se desean asignar al motor
{

// Los pines se activan en secuencia de las manecillas del reloj

// Punto A (Primero)
digitalWrite(motorPin1, HIGH); //cafe – A
digitalWrite(motorPin2, LOW); //negro – B
digitalWrite(motorPin3, LOW); //morado – C
digitalWrite(motorPin4, HIGH); //naranja – D
delay(delayTime1); // Un micro segundo de espera

// Punto B (Segundo)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
} //End For}//End Loop/////////

// Punto C (Tercero)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime1);

// Punto D (Cuarto)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);

} //End For

delay(delayTime); // Se espera 3 segundos despues de cada paso y al iniciar la secuencia

}//End Loop

5 thoughts on “Control de Motor a Pasos con Arduino UNO.

    1. Hola, si puedes usarlo. La diferencia entre el ULN2003 y el ULN2803 es que el primero trae 7 entradas y salidas, en cambio el segundo trae 8.
      Saludos

  1. BUEN DIA:

    PEDÍ UN ARDUINO UNO CON CNC SHIELD SIN EMBARGO SOY NUEVO EN EL TEMA, NO SE COMO CONFIGURAR LAS SALIDAS EN LA PC. ESTOY HACIENDO UNA FRESADORA CNC Y LA VOY A CONTROLAR CON ARDUINO UNO ( QUE COMO DIJE TIENE INCLUIDA UNA TARJETA QUE DICE CNC SHIELD).
    ESTOY ESTUDIANDO EL PROGRAMA DE MACH3 Y ARTCAM QUE SON PARA GENERAR EL CODIGO G Y EL DISEÑO QUE QUIERA.

    ESPERO HABERME DADO A ENTENDER Y AGRADECERIA SI ME DICEN DE ALGUN TUTORIAL PASO A PASO DIGAMOS QUE DESDE QUE LO RECIBO. DISCULPEN MI IGNORANCIA PERO LAS GANAS DE SALIR ADELANTE NO SE ME QUITAN. DEJO MI MAIL borisavila001@gmail.com

Leave a Comment

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

*