Está en la página 1de 4

Control de Motor a Pasos con Arduino UNO.

Posted on 18 febrero, 2015 by possibleapp

Los motores paso a paso son ideales para la construccin de mecanismos en donde
se requieren movimientos muy precisos.
La caracterstica 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
pequeos movimientos de tan solo 1.8, es decir, que se necesitarn 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 posicin o
bien totalmente libres. Si una o ms de sus bobinas estn energizadas, el motor
estar enclavado en la posicin correspondiente y por el contrario quedar
completamente libre si no circula corriente por ninguna de sus bobinas.
A continuacin se muestra como realizar la conexin fsica 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 Alimentacin

Diagrama de conexin 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 sealar que la conexin puede variar dependiendo
del modelo de cada motor para lo cual basta con identificar sus cables comunes y
conectarlos a la lnea de alimentacin del circuito.

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 informacin acerca
de este integrado se recomienda revisar su datasheet en la siguiente
liga.http://www.ti.com/lit/ds/symlink/uln2003a.pdf

Cdigo de control
Recuerden guardar el cdigo con la extensin .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); // Configuracin 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,
pinMode(motorPin2,
pinMode(motorPin3,
pinMode(motorPin4,
}

OUTPUT); // Configuracin de los Pines como salida digital


OUTPUT);
OUTPUT);
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,
digitalWrite(motorPin2,
digitalWrite(motorPin3,
digitalWrite(motorPin4,
delay(delayTime1);
// Punto C (Tercero)
digitalWrite(motorPin1,
digitalWrite(motorPin2,
digitalWrite(motorPin3,
digitalWrite(motorPin4,
delay(delayTime1);
// Punto D (Cuarto)
digitalWrite(motorPin1,
digitalWrite(motorPin2,
digitalWrite(motorPin3,
digitalWrite(motorPin4,
delay(delayTime1);

HIGH);
HIGH);
LOW);
LOW);
LOW);
HIGH);
HIGH);
LOW);

LOW);
LOW);
HIGH);
HIGH);

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