En el mercado podemos encontrar gran cantidad de motores de distintas características que nos permitirán realizar unas tareas u otras dependiendo de sus características de construcción. Un tipo clásico es el motor paso a paso y su uso se a popularizado gracias al uso de las impresoras 3D.
Un motor paso a paso se caracteriza por ser de Corriente continua, sin escobillas y que pueden ser controlados por circuitos digitales.
La clave de este tipo de motores es que podemos hacer que gire, de forma controlada, un valor concreto de grados incrementales. Mediante un pulso digital podemos conseguir que el motor gire, por ejemplo, 1.8°.
Hay que tener en cuenta que aunque sean pulsos digitales no podemos conectar directamente el motor a un microcontrolador, debemos utilizar un driver para motores paso a paso. Esto es debido a que en realidad, los motores paso a paso no se controalr por tensión, sino por corriente. Un microcontrolador no puede entregar la energía suficiente de la forma adecuada al motor.
Tipos de motor paso a paso
Existen dos tipos de motores paso a paso en función de como estén conectadas las bobinas
1.-Unipolar: Este tipo de motor se caracteriza por que todas las bobinas tienen un polo común y por tanto tendremos 5 o 6 cables. En el caso de ser 6 las bobinas están unidas dos a dos y es que existen dos comunes y cada uno de ellos corresponde a dos bobinados.
Este tipo de motores se puede controlar conectando el común (o comunes) a masa y, en el orden correcto, ir conectando y desconectando cada una de las bobinas a Vcc tal y como se ve en el siguiente diagrama de forma de onda, en el que cada linea corresponde a una bobina.
2.-Bipolar: Este motor tiene 4 cables y es que la mitad de las bobinas están conectadas de manera estratégica a dos de los cables y la otra mitad a los otros 2 cables.
¿Cómo están construidos?
Una representación básica de un motor bipolar podría ser la siguiente, en la cual se observan 4 electroimanes que forman parte del estátor (parte fija) y un imán que forma parte del rotor (zona móvil).
Te animo a que veas el vídeo para ver paso a paso como funciona el motor internamente.
¿Cómo controlarlo?
Vamos a hacerlo fácil, vamos a usar Arduino, un motor bipolar y el driver A988 de Pololu.
¡¡Atent@!!
Recuerda que antes de usar el driver debes conocer que cables corresponden a cada bobina para conectarlos correctamente y calibrar el driver.
Digamos que el driver tiene 16 pines, pero, qué no cunda el pánico, es relativamente fácil de conectar:
Pin | Descripción |
Vmot | Alimentación para los motores entre 8 y 35v. |
GND | Disponemos de dos pines GND, el primero de Vmot y el segundo de Vdd, ambas deben ser unidas entre sí. |
2A y 2B | Los pines a los que conectaremos el primer bobinado. |
1A y 1B | Pines para el segundo bobinada. |
Vdd | Alimentación para la lógica del driver, de 3 a 5v. |
Enable | Como su nombre indica permite habilitar o inhabilitar los motores. |
MSn | Pines digitales que nos permiten jugar con el microstepping. |
RESET | Posibilidad de hacer reset en el driver. |
SLEEP | Activar sleep del módulo. |
Step | Nos permite controlar los pasos que da el motor. |
Dir | Establece de forma digital la dirección de giro del motor. |
La configuración de los pines no deja de ser fácil. Como norma general se pueden obviar los pines MS1 – MS2 – MS3 puesto que internamente están conectados con resistencias pull-down que configuran el módulo en Full-step. Sin embargo si quieres profundizar más en el tema puedes analizar esta tabla:
Los pines de control que conectamos, en este caso a Arduino, serán STEP, DIR y ENABLE y los llevamos a tres pines digitales.
- STEP lo usaremos para mandar las ordenes al motor. Cada vez que enviamos un pulso, el motor girará un paso, para este ejemplo 1.8°.
- El pin DIR permite cambiar la dirección de giro del motor. Si está a nivel alto el motor gira en un sentido y si está a nivel bajo el motor gira en el sentido contrario.
- El pin ENABLE realiza precisamente lo que su nombre indica, si se encuentra a nivel bajo habilita el giro del motor, si se encuentra a nivel alto lo inhabilita.
Los pines de RESET y SLEEP los uniremos entre sí para el correcto funcionamiento del driver.
2A 2B 1A y 1B son los pines a los cuales conectaremos el motor. Uno de los bobinados del motor lo conectaremos entre 1A y 1B y el otro bobinado entre 2A y 2B.
Vcc será la alimentación de la lógica del driver y lo conectamos al pin de 5v de Arduino.
Por último tenemos Vmot que es el pin donde conectaremos la fuente de alimentación de tensión constante que alimentará a los motores y sera de una tensión comprendida entre 8 y 35v (por limitaciones del driver) y que deberemos asegurarnos que proporciona suficiente corriente para que el motor pueda funcionar con normalidad.
Añade un condensador de 100μF entre Vmot y GND para ayudar durante los transitorios de el motor paso a paso.
El código básico para Arduino y motores step
El siguiente ejemplo hace girar el motor 360 grados (200 pasos) en una dirección, cambia la dirección y gira otros 360°
/* Simple stepper motor By: Enrique Rincón Ingenieril Date: July 4th, 2016 License: This code is public domain. */ int dir = 8; int paso = 7; int enable = 6; void setup(){ //Sets as OUTPUT pins pinMode(dir,OUTPUT); pinMode(paso,OUTPUT); pinMode(enable,OUTPUT); //Enable the motor digitalWrite(enable, LOW); } void loop(){ //Set direcction digitalWrite(dir, LOW); for(int i = 0; i < 200; i++){ digitalWrite(paso, HIGH); delay(10); digitalWrite(paso, LOW); delay(10); } //Change direction digitalWrite(dir, HIGH); for(int i = 0; i < 200; i++){ digitalWrite(paso, HIGH); delay(10); digitalWrite(paso, LOW); delay(10); } delay(2000); }
Si te interesan otros tipos de motores puedes aprender a controlar un motor de corriente continua