Control de motores Arduino (IV). Motores Paso a Paso

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO

El segundo tipo de motores capaces de controlar su posición de forma interna, los servomotores fueron los primeros que hemos tratado en anteriores artículos, son los motores paso a paso (figura 4. Varios modelos de motores paso a paso), dispositivos ampliamente empleados en impresoras e impresoras 3D por la necesidad de controlar con precisión la posición de los cabezales e impresión en las primeras y el extrusor en las segundas.

Existen tres tipos de motores paso a paso:

  • De reluctancia variable: presenta un campo magnético variable.
  • De Imán permanente: existen también dos tipos: unipolares y bipolares, nos centraremos en el primero de ellos por ser el más sencillo y adecuado para realizar pequeños proyectos.
  • Híbridos: son una combinación de los dos anteriores.

 

Al igual que todos los motores, los motores paso a paso disponen un estator y un rotor, pero a diferencia de un motor de CC normal, el estator consta de conjuntos individuales de bobinas. El número de bobinas variará en función del tipo de motor paso a paso. El diagrama siguiente muestra un motor paso a paso de 4 polos, y el ángulo que se desplaza por paso (figura 5. Esquema eléctrico de un motor paso a paso).

En cuanto su funcionamiento, para conseguir el movimiento de rotación en uno de estos motores es necesario alimentar los distintos bobinados bajo secuencia particular, que en el caso de los motores unipolares hay tres tipos de secuencias de funcionamiento.

  1. Paso completo (figura 6. Secuencia de Paso Completo): se produce la alimentación de dos bobinados al mismo tiempo, el motor siempre avanza un paso, el par del motor es alto debido a esta doble alimentación. En la práctica, la siguiente tabla muestra con un 1, la fase que se alimenta, y con 0 la fase que no recibe tensión en cada instante.

 

Tabla 1. Secuencia de Paso completo o normal.

PASO FASE 1 FASE 2 FASE 3 FASE 4
1 1 1 0 0
2 0 1 1 0
3 0 0 1 1
4 1 0 0 1

 

  1. Wave (figura 7. Secuencia Wave): en este caso se activa una sola bobina cada vez, lo que ocasiona que el eje del motor gire hacia la bobina activa. Permite un funcionamiento más suave del motor, pero su par se ve reducido. En la práctica, la alimentación se produce en cada bobinado de la siguiente forma.

 

Tabla 2. Secuencia de alimentación Wave.

PASO FASE 1 FASE 2 FASE 3 FASE 4
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1

 

  1. Secuencia de Medio Paso (figura 8. Secuencia de Medio Paso): en este caso las bobinas se alternan de manera que en un periodo se activan dos bobinas al mismo tiempo, seguido de otro en el que solamente hay una bobina activada. El resultado que se obtiene es un paso más corto, la mitad que del paso de las secuencias anteriores). Para llevarlo a cabo, la alimentación de cada fase se lleva a cabo con la secuencia que se muestra en la siguiente tabla (1: fase alimentada, 0: fase sin carga).

 

Tabla 3. Secuencia de alimentación de Medio Paso.

PASO FASE 1 FASE 2 FASE 3 FASE 4
1 1 0 0 0
2 1 1 0 0
3 0 1 0 0
4 0 1 1 0
5 0 0 1 1
6 0 0 0 1
7 1 0 0 1
8 1 0 0 0

 

En la práctica, y en cuanto a Arduino se refiere, trataremos de realizar un ejemplo con un pequeño motor unipolar de 64 paso por vuelta el motor 28BYJ-48 (figura 9. Motor paso a paso 28BYJ-48). Para ello, existe una librería <Stepper.h> (https://www.arduino.cc/en/Reference/Stepper) que nos facilita notablemente el trabajo, e incluso, al igual que en el caso de los servomotores, también trae implementados ejemplos de partida con los que comenzar a trabajar, en este caso seleccionaremos “stepper_oneRevolution.ino” (figura 10: Acceso al ejemplo “stepper_oneRevolution.ino de la librería <Stepper.h>).

#include <Stepper.h>

const int stepsPerRevolution = 200;  // ajusta el valor de pasos para dar una vuelta

// Crea un objeto motor nuevo conectado a los pines 8-11:

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {

// fija la velocidad de giro a 60 rpm

myStepper.setSpeed(60);

// inicializa la comunicación con el puerto serie

Serial.begin(9600);

}

void loop() {

// realiza un giro completo en sentido de las agujas del reloj

Serial.println(«clockwise»);

myStepper.step(stepsPerRevolution);

delay(500);

// realiza un giro completo en sentido antihorario

Serial.println(«counterclockwise»);

myStepper.step(-stepsPerRevolution);

delay(500);

}

Cuyo esquema de conexión entre el motor y Arduino es el siguiente: (figura 11. Conexión de un motor motor 28BYJ-48):

Por último, animaros a utilizar estos dispositivos, dado que su conexión y programación no son muy complejos, nos permitirán abrir nuestro campo de trabajo a todos aquellos proyectos en los que controlar la posición sea un aspecto importante a tener en cuenta.

Robótica-Programación

Introducción a la física de partículas y observación (Muon detector)

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Para comenzar este artículo es preciso realizar una breve introducción al modelo estándar de partículas, para intentar comprender el conocimiento científico que yace detrás del proyecto que trataremos de explicar. El modelo standard (fuente CERN) figura 1. Desde la década de 1930 los descubrimientos […]

Leer más
Robótica-Programación

Python ·3D con Processing

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Hoy volvemos de nuevo a trabajar con Python, en este caso, añadimos nuevas posibilidades a una IDE que ya conocemos, Processing, además de trabajar con este lenguaje de programación realizaremos una primera animación en 3D. Para comenzar debemos añadir un nuevo modo de trabajo […]

Leer más
Robótica-Programación

Control de motores Brushlees con Arduino (III)

AUTORES:  Agustín González Redondo. M Rocío García de la Fuente. En artículos anteriores hemos trabajado el control de motores de corriente continua con Arduino, ya sea conectados directamente o mediante una tarjeta controladora, en nuestro caso TB6612FNG, y pudimos comprobar que su programación y conexiones eran moderadamente sencillas: Disponen normalmente de dos polos, uno positivo […]

Leer más
Revista