Arduino: motores paso a paso

Arduino motores paso a paso

Los motores paso a paso (stepper motors) ofrecen la ventaja frente a los servos de permitir una rotación continua de precisión en ambos sentidos, más alla de los 180º que permiten los servos normales.

Su funcionamiento se basa en la activación de campos magneticos sucesivamente para obtener el movimiento del motor. Mediantes la activación de los distintos pasos se consigue que el motor gire en un sentido u otro.

El motor cuenta con cuatro bobinas, una en cada estremo (digamos norte, sur, este y oeste), que pueden activarse para mover el motor hasta esa posicion.

Para obtener más precisión se puede activar de dos en dos, para así obtener 8 pasos en lugar de 4. El siguiente array muestra todas las posiciones permitidas.

int posiciones [ 8 ][ 4 ] =
  {
    {1, 0, 0, 0},
    {1, 1, 0, 0},
    {0, 1, 0, 0},
    {0, 1, 1, 0},
    {0, 0, 1, 0},
    {0, 0, 1, 1},
    {0, 0, 0, 1},
    {1, 0, 0, 1}
  };

En este ejemplo se usa un motor 28-BYJ48 controlado por un módulo ULN2003.

Para conectarlo a arduino basta con alimentarlo mediante los pines 5V y GND, y conectar los otros 4 pines del módulo a las salidas digitales de arduino, para controlar la activación de cada una de las posiciones del motor.

void setup() 
{
// Conectado a los pines 8, 9, 10 y 11
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}

Una vez establecida la conexión basta con ir modificando la posición del motor entre las 8 opciones disponibles en el array presentado anteriormente.

// Primera posición del array
digitalWrite( 8, posiciones[0][ 0] );
digitalWrite( 9, posiciones[0][ 1] );
digitalWrite( 10, posiciones[0][ 2] );
digitalWrite( 11, posiciones[0][ 3] );

Basta con ir alternando las posiciones del array en un loop en sentido ascendente o descendente entre 0 y 7 para que el motor se mueva en una dirección u otra.

Deja un comentario

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