Introducción

  

Los motores paso a paso o también conocidos como “stepper motor”, pueden girar y detenerse con una precisión del orden de centésimas de milímetro. Esta alta precisión y su fiabilidad los destina a ser utilizados en una gran cantidad de aparatos electrónicos como por ejemplo, discos duros, impresoras, fotocopiadoras, robots, impresoras 3D, máquinas CNC, etc.

 

Un motor paso a paso es un tipo de motor que permite controlar la posición de su eje mediante la excitación las bobinas internas que posee el motor. En nuestro caso usaremos un controlador de motores paso a paso llamado “Easy Driver” junto a una tarjeta de control PICARO Arduino compatible que ejecute la mayoría del trabajo para nosotros.

  

Materiales necesarios

 

En el transcurso de este tutorial, necesitarás de distintos tipos de materiales, herramientas, tarjetas y componentes electrónicos dentro de los cuales recomendamos los siguientes:

 

  

Ensamblando la tarjeta Easy Driver a un protoboard

  

La tarjeta Easy Driver puede ser utilizada directamente en tus proyectos con motores paso a paso, pero en este caso enseñaremos como realizar pruebas con esta tarjeta montada sobre un protoboard.

El protoboard nos permitirá realizar pruebas y experimentos electrónicos, permitiéndonos conectar distintos motores, LEDs y componentes para encontrar la relación de giro, velocidad y fuerza que necesitemos implementar en nuestro proyecto.

Para realizar esta etapa del manual necesitaras los siguientes materiales:

 Nota: Se destaca que la temperatura que alcanza el cautín podria ser mayor a 370°C, por lo tanto toma las precauciones adecuadas. Si eres menor de edad, pide la ayuda de un adulto.

Lo primero que haremos será tomar la tira de pin Headers y la separaremos en 5 sectores de 2 pines y 1 sector de 3 pines.

Estos pin Headers los colocaremos sobre nuestro protoboard, como muestra la siguiente imagen:

  

EasyDriver1

  

Sobre los pin Headers colocados sobre nuestro protoboard instalaremos nuestra tarjeta Easy Driver y la acomodaremos para que quede lo más asentada posible. La siguiente imagen muestra como deberá verse nuestra tarjeta:

 EasyDriver2

 

 

Posteriormente soldaremos con nuestro cautín los pin heades en la tarjeta Easy Driver. Si esta es la primera vez que realizas una soldadura te recomendamos que primero practiques con alguna otra tarjeta en desuso, para que ganes experiencia en este tema.

 

La siguiente imagen muestra los pin Headers soldados a la tarjeta controladora de motores paso a paso:

  

EasyDriver3

 

 En la imagen anterior también se muestra que se han soldado 4 pin Headers en la sección “Motor” de la tarjeta Easy Driver. Esta parte es literalmente tu decisión, ya que puedes soldar directamente los pines de tu motor paso a paso a esta tarjeta, pero antes, debes de conocer como es la distribución de cables entre motor y tarjeta Easy Driver. Esta distribución se discutirá a continuación:

  

Conexión de Easy Driver

  

Con nuestra tarjeta ya soldada a los pin Headers, queda realizar las conexiones entre la tarjeta PICARO, el controlador de motor Easy Driver y nuestro motor paso a paso. Dependiendo de la cantidad de pines del motor paso a paso, corresponderá la conexión a realizar.

 A continuación se muestran 2 esquemas de conexionado, uno de ellos para un motor paso a paso de 4 hilos y otro para un motor paso a paso de 6 pines (modelo 17HS4002) :

Conexión para motor paso a paso de 4 hilos:

 

 

 

EasyDriverPicaro

 

 Conexión para motor paso a paso de 6 pines (modelo 17HS4002):

 

 

EasyDriverPicaro6

 

Si los colores de los cables de tu motor paso a paso no los mismos que los de las imágenes anteriores (Verde, Rojo, Azul y Amarillo), te invitamos a leer nuestro tutorial de motores paso a paso que dejaremos en este link de aquí.

Después de realizar las conexiones anteriormente mencionadas, hablaremos de la tarjeta PICARO Arduino compatible. En esta tarjeta utilizaremos, para este ejemplo, los pines digitales 2 y 3, junto al pin GND (puedes usar los pines que estimes convenientes siempre y cuando cambies el esquema de conexión).

La tarjeta PICARO se utilizará con el fin de dar una orden de movimiento del motor paso a paso. Esta orden se realiza mediante el envío de pulsos y por cada uno de estos pulsos el motor girará 1.8°. Éstas señales pueden provenir desde un computador, un microcontrolador (tarjeta PICARO) o un circuito cualquiera que entregue 2 estados, 0 volts y 5 volts. Según sean estos pulsos se realizará un giro del motor con una velocidad y sentido de giro específico.

Nuestra tarjeta Easy Driver realizará el control tanto de corriente como de voltaje para nuestro motor, junto con los datos necesarios para interpretar lo que la tarjeta PICARO está ordenando realizar y poder realizarlo en el estándar que el motor paso a paso requiera. Además, la tarjeta Easy Driver posee un potenciómetro para controlar la corriente que se dejará circular por el motor paso a paso. Si tu motor no gira correctamente, mueve este potenciómetro para entregarle una corriente adecuada y que de esta manera posea la fuerza necesaria para tu proyecto.

Como último paso conectaremos una fuente de alimentación de 12VDC/1Amp en la sección de “Entrada 12V” del Easy Driver. La corriente que debe tener tu fuente de alimentación, dependerá del motor utilizado.

  

Programación de Arduino

  

El siguiente código de Arduino no requiere de librerías externas. Lo puedes seleccionar, copiar y pegar en tu ventana de Arduino IDE y cargarlo en tu tarjeta PICARO Arduino compatible.

Existen 2 funciones en este código, en una de ellas decidiremos el número de grados que necesitamos hacer girar el motor y en la otra función deberemos indicar el número de micro pasos para hacer girar el motor (8 micro pasos son un paso de 1.8°).

Si se ingresan grados o micro pasos con números positivos el motor girara de derecha a izquierda (sentido contrario a las manecillas del reloj) y si ingresamos grados o micro pasos con números negativos giraremos el motor en reversa, de izquierda a derecha (mismo sentido de las manecillas del reloj).

También deberemos ingresar la velocidad a la cual girara el motor paso a paso. Esta velocidad puede ir desde 0.01 hasta 1, siendo 0.01 la velocidad mínima (0.01% de su capacidad) y 1 la velocidad máxima del motor paso a paso (100% de su capacidad).

Para comprender de mejor manera este código, debemos concentrarnos en las 2 funciones que se encuentran dentro del void loop() de Arduino, la primera construida con la función rotateDeg(), la cual requiere los grados y la magnitud de velocidad (de 0 a 1) a la cual quieres hacer girar el motor paso a paso.

La segunda función que se encuentra en el void loop() de Arduino, rotate(), requiere los micro pasos y la magnitud de velocidad (de 0 a 1) para hacer girar el motor paso a paso.

Ambas funciones realizaran la misma acción, solamente que una de ellas posee más definición al momento de realizar el giro del motor, nos referimos a la función rotate().

Si calculamos los micro pasos a los cuales puede girar el motor paso a paso, calcularemos que 8 micro pasos son equivalentes a 1.8°, por lo tanto, para completar 360° necesitaremos 1600 micro pasos.

A continuación dejaremos el código de programación que puedes utilizar en tu tarjeta PICARO:

 

#define DIR_PIN 2
#define STEP_PIN 3

void setup() { 
  pinMode(DIR_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT); 
}
void loop(){                  //Rotar un número especifico de grados 
  rotateDeg(360, 1); 
  delay(1000);
  rotateDeg(-360, .1);        //Reversa
  delay(1000);
  rotate(1600, .5); 
  delay(1000); 
  rotate(-1600, .25);         //Reversa
  delay(1000);
}
void rotate(int steps, float speed){ 
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);
  digitalWrite(DIR_PIN,dir); 
  float usDelay = (1/speed) * 70;
  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay);
    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
    }
} 
void rotateDeg(float deg, float speed){ 
  int dir = (deg > 0)? HIGH:LOW;
  digitalWrite(DIR_PIN,dir); 
  int steps = abs(deg)*(1/0.225);
  float usDelay = (1/speed) * 70;
  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay); 
    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
    } 
}