Arduino Nano y el Motor de Pasos 28BYJ-48

» Ver más ejemplos

En este ejemplo usaremos la versión de Arduino Nano Every que viene con algunas mejoras y usa un puerto Micro USB, en lugar del Mini USB con el que suelen venir también algunas versiones clon. Probaremos el motor de pasos 28BYJ-48 y su controlador el ULN2003APG. Echar a andar un Arduino Nano y el Motor de Pasos «28BYJ-48» es fácil y te listamos todo lo que necesitas para ello:

  • Arduino Nano Every
  • Motor de Pasos 28BYJ-48
  • Controlador ULN2003APG
  • Cables de conexión Dupont (conexión hembra y macho)
  • Protoboard
  • Fuente de alimentación 5v
  • Cable Micro USB o Mini USB (dependiendo de la versión de tu Arduino)

En el siguiente diagrama te mostramos las conexiones que debes hacer entre Arduino, el controlador o driver ULN2003APG y el motor de pasos. Estamos agregando una fuente de alimentación que para mis pruebas he usado cuatro baterías AA en serie para abastecer la alimentación. Probablemente tu puedas usar otro tipo de alimentación continua y regulada de 5 volts.

Para controlar un pequeño motor de pasos con Arduino es necesario usar el controlador ULN3003APG que normalmente viene con el motor al momento de la compra. En el diagrama se muestra la conexión de pines, donde podemos ver que usamos los pines D2, D3, D4 y D5 para el control del motor y los puertos.

El código para Arduino

const int IN1 = 2;
const int IN2 = 3;
const int IN3 = 4;
const int IN4 = 5;

//Estados de activación de los pines
const int ESTADOS[8][4] = {
  {1, 1, 0, 0}, // Paso 0
  {0, 1, 1, 0}, // Paso 1
  {0, 0, 1, 1}, // Paso 2
  {1, 0, 0, 1}  // Paso 3
};

int posicion = 0;
int tiempoDeEspera = 2000;  //Tiempo de espera para entre cada paso del motor

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  digitalWrite(IN1, ESTADOS[posicion][0]);
  digitalWrite(IN2, ESTADOS[posicion][1]);
  digitalWrite(IN3, ESTADOS[posicion][2]);
  digitalWrite(IN4, ESTADOS[posicion][3]);
  delayMicroseconds(tiempoDeEspera);

//Reinicia el estado de los pines
  posicion++;
  if(posicion > 3) {
    posicion = 0;
  }
}

Explicación del Código

El bloque siguiente nos permite definir los pins de salida de datos para comunicarnos con el driver del motor de pasos:

const int IN1 = 2;
const int IN2 = 3;
const int IN3 = 4;
const int IN4 = 5;

En el siguiente segmento de código definimos un arreglo, que nos permitirá establecer los estados de activación para las fases de nuestro motor de pasos:

//Estados de activación de los pines
const int ESTADOS[8][4] = {
  {1, 1, 0, 0}, // Paso 0
  {0, 1, 1, 0}, // Paso 1
  {0, 0, 1, 1}, // Paso 2
  {1, 0, 0, 1}  // Paso 3
};

En el loop del código de Arduino, activamos o desactivamos los pins conectados al driver o manejador del motor de tal forma que el motor se moverá en una dirección:

void loop() {
  digitalWrite(IN1, ESTADOS[posicion][0]);
  digitalWrite(IN2, ESTADOS[posicion][1]);
  digitalWrite(IN3, ESTADOS[posicion][2]);
  digitalWrite(IN4, ESTADOS[posicion][3]);
  delayMicroseconds(tiempoDeEspera);

//Reinicia el estado de los pines
  posicion++;
  if(posicion > 3) {
    posicion = 0;
  }
}

Hacer que el Arduino Nano y el Motor de Pasos «28BYJ-48 comiencen a trabajar juntos es fácil, este ejemplo servirá sólo para darte una idea de funciona el motor de pasos. el código hará que el motor avance en una dirección, como te podrás dar cuenta en aplicaciones de la vida real quizá requieras secuencias de movimiento más elaboradas y a distintas velocidades. Pero si estás empezando, este pequeño ejercicio te servirá para familiarizarte con las conexiones y los principios básicos.

Más información: https://create.arduino.cc/projecthub/debanshudas23/getting-started-with-stepper-motor-28byj-48-3de8c9