LECCIÓN19:  Motor paso a paso.

Introducción 

Los motores paso a paso se encuentran entre un motor de CC normal y un servomotor. Tienen la ventaja de que pueden posicionarse con precisión, moverse hacia adelante o hacia atrás un 'paso' a la vez, pero también pueden girar continuamente.

 En esta lección aprenderá a controlar un motor paso a paso utilizando su Arduino y el mismo chip de control de motor L293D que usamos con el motor de CC.

 

Componentes 

 {Product:2000}{Product:256}{Product:1436}{Product:847}{Product:536}{Product:250}

Principio 

El motor paso a paso tiene cinco conductores, y esta vez usaremos ambas mitades del L293D. Esto significa que hay un montón de conexiones para hacer en la placa prototipo. El motor tiene una toma de 5 vías en el extremo. Conecte los cables del puente en las tomas para permitir que el motor se conecte a la placa prototipo.

El siguiente sketch utiliza el Monitor serie, por lo que una vez que esté instalado y en ejecución, abra el Monitor serie e introduzca una serie de 'pasos'.

Pruebe un valor de aproximadamente 500, esto debería hacer que el motor gire unos 360 grados. Introduzca -500 y volverá en la dirección inversa.

La librería Stepper.h se incluye en las distribuciones más recientes del IDE de Arduino - es posible que necesite actualizarla.

 

Procedimiento 

Paso 1: Conecta el circuito como se muestra en el siguiente diagrama (asegúrese de que los pines estén conectados correctamente o que los caracteres no se muestren correctamente):

 

Nota. En este ejercicio dejamos el cable rojo no conectado. Nuestro motor 28BYJ-48 unipolar, manejamos como bipolar y vamos a mover el motorcito mediante un sencillo H-bridge L293D. En los siguientes capítulos de nuestro curso vamos a explicar las diferencias entre motores unipolares y motores bipolares.                

 

 

Paso 2: Programa (consulta el código de ejemplo en el CD o sitio web oficial)

/*

*/

#include <Stepper.h>

int in1Pin = 12;

int in2Pin = 11;

int in3Pin = 10;

int in4Pin = 9;

Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);  

void setup()

{

  pinMode(in1Pin, OUTPUT);

  pinMode(in2Pin, OUTPUT);

  pinMode(in3Pin, OUTPUT);

  pinMode(in4Pin, OUTPUT);

  // this line is for Leonardo's, it delays the serial interface

  // until the terminal window is opened

  while (!Serial);

  

  Serial.begin(9600);

  motor.setSpeed(20);

}

void loop()

{

  if (Serial.available())

  {

    int steps = Serial.parseInt();

    motor.step(steps);

  }

}

Paso 3: Compila el programa

Paso 4: Graba el programa en la placa Uno

 

Como es de esperar, existe una librería Arduino para motores paso a paso. Esto hace que el proceso de uso de un motor sea muy fácil.

Después de incluir la librería 'Stepper', se definen los cuatro pines de control 'in1' a 'in4'. Para indicar a la librería qué pines están conectados al controlador del motor, se utiliza el siguiente comando:

 

Stepper motor(768, in1Pin, in2Pin, in3Pin, in4Pin);

 

El primer parámetro es el número de "pasos" que el motor dará para completar una revolución. El motor se puede mover paso a paso, para un posicionamiento muy preciso. A continuación, se inician las comunicaciones en serie, de modo que el Arduino esté listo para recibir comandos del monitor serie. Finalmente, el siguiente comando establece la velocidad que deseamos que se mueva el motor paso a paso, cuando posteriormente le decimos cuántos pasos rotar.

 

motor.setSpeed(10);

 

La función 'loop' es muy simple. Espera a que llegue un comando desde el Monitor serie y convierte el texto del número enviado en una variable int usando la funcion 'parseInt'.

 

void loop()

{

  if (Serial.available())

  {

    int steps = Serial.parseInt();

    motor.step(steps);

  }

} 

Serial.parseInt() devuelve el primer número entero válido del buffer serie. Para recordar un número, debe crear una variable de tipo int. A continuación, indica al motor que gire ese número de pasos.

 

Resumen del experimento 

A. Los motores paso a paso utilizan una rueda dentada y electroimanes para empujar la rueda alrededor de un "paso" a la vez.

 

 

Al proporcionar corriente eléctrica a las bobinas en el orden correcto, se hace circular al motor. El número de pasos que el motor paso a paso tiene en una rotación de 360 grados es en realidad el número de dientes del engranaje. El motor que estamos utilizando tiene 48 pasos, pero luego el motor también incorpora una caja de engranajes de reducción de 1:16, lo que significa que necesita 16 x 48 =768 pasos.

En esta lección, no usamos la conexión roja común. Esta conexión solo se proporciona si está utilizando un tipo diferente de circuito de accionamiento que no permite invertir la corriente en cada bobina.

Tener una conexión central a cada bobina significa que puede proporcionar corriente eléctrica al lado izquierdo o derecho de la bobina, y obtener el efecto de invertir el flujo de corriente sin tener que utilizar un circuito que pueda invertir la corriente.

Dado que estamos utilizando un L293D que es muy bueno para invertir la corriente, no necesitamos esta conexión común, podemos suministrar corriente en cualquier dirección a la totalidad de cada una de las bobinas.

B.Otras cosas que puedes hacer.

Intenta cambiar la función que establece la velocidad del motor paso a paso:

motor.setSpeed(20):                         

A un valor más bajo (digamos 5) cargue el sketch y observe que el motor paso a paso gira más lentamente. Ahora trate de encontrar la velocidad máxima para el motor paso a paso aumentando la velocidad por encima de 20. Después de cierto punto, usted encontrará que el motor no se mueve en absoluto. Esto se debe a que simplemente no puede mantenerse con la corriente de pulsos pidiéndole que dará un paso

Intenta desconectar los cables naranja y rosa del paso a paso. Todavía debe girar, pero se dará cuenta de que es más débil, ya que no tiene ambas bobinas trabajando para empujar el motor.