Dándole caña a los motores paso a paso

Motores paso a pasoOfú! Estaba mirando y hace ya tiempo que no me pongo con la protoboard a pinchar algunos componentes. Hoy te voy a explicar cómo mover un motor paso a paso. Que parece que, como se mueven, hacen más ilusión que los leds.

Hay motores de todos los tipos pero los que más me gustan son los motores paso a paso. A ver, cada uno sirve para una cosa pero los paso a paso lo que hacen es moverse según pasos. Entonces si mueves tantos pasos puedes saber si has dado una vuelta completa y así saber en qué posición andas. ¿Cómo lo hacen esto? Con cuatro imanes. El norte y sur y el este y oeste. Lo que hacen es encenderse y apagarse en una secuencia determinada de manera que por atracción con el imán, se vaya moviendo.

Dentro de estos motores están los unipolares y los bipolares. Digamos que la diferencia básica entre ambos son los cables. Resulta que ambos tienen bobinas dentro. Una bobina sería un cable de cobre enrollado: no tiene mucho misterio, lo que pasa es que al meterle corriente generan un campo magnético, y eso es lo que se aprovecha en los motores paso a paso.

Así, los unipolares tienen los dos extremos de cada bobina y además una conexión a lo que se llama común cada una. Este común es el voltaje en sí. 5 Voltios en nuestro caso. Entonces, hay seis cables (aunque pueden haber 5 si comparten el cable de común). Los bipolares son más dejados, y lo que hacen es que tienen cuatro cables, dos de una bobina y dos de otra. Claro, lo que pasa es que cada uno necesita de unos componentes que le ayuden. pero eso te lo enseño luego en cada caso particular.

L293D, ULN2003, Motor unipolar, motor bipolar, Arduino y protoboard

Hablemos del movimiento. Bueno, te he dicho que los imanes se van encendiendo en una secuencia. Ésta puede ser un imán cada vez que seria un paso completo. Luego pueden encenderse de dos en dos, de manera que es lo mismo pero la fuerza que tiene el motor es doble. Lo que pasa es que también consume más.

Luego está lo que se llama movimiento de medio paso, que viene a ser una mezcla de ambos. Para pasar al doble de movimientos lo que se hace es encender un imán cada vez, pero para pasar de uno a otro se encienden los dos a la vez. Se enciende el 1, luego el 1 y el 2, luego solamente el 2…vaya, te haces una idea.

Elijas la opción que elijas, si ves que el motor se vuelve loco y no hace bien el movimiento o gira hacia un lado y de repente a otro, fíjate en que los cables estén bien conectados y las secuencias correctamente programadas. Esto último en Arduino no es necesario, porque alguien creó una librería que lo hace todo. En otros microcontroladores tendrías que crearte una serie de tablas para saber que bobina encender en cada momento para el giro. Con Arduino es fácil, ¡pero atento a los pines que pones en el programa y su orden!

Motores paso a paso unipolares

El motor paso a paso más típico al empezar es este (imagen de Lauri Rantala protegida con CC BY):

28BYJ-48

El 28BYJ-48 es un motor pequeño que puede solventar algunas cosas mediante engranajes. Pero no tiene demasiado par. El par diríamos que es la fuerza que tiene..en realidad es la fuerza que tiene por un desplazamiento, el momento. Pero para ti digamos que es la fuerza que tiene el motor cuando, mientras se mueve, lo coges de la punta. eso que notas sería el par.

Pues este motor tiene poco par y además, a más velocidad menos par. Es decir, que tendrá más fuerza si va lento que si va rápido. Así que como busques algo rápido y con fuerza…esta no es tu opción. De hecho, ha dado la casualidad que no sé por donde para este motor, pero intento contarte lo que sé y hasta donde me da la memoria 😉

La cosa es que si buscas stepper motor en cualquier página como ebay o alguna china lo que encontrarás es este motor con una placa, la cual contiene un integrado. Es tan común comprar este motor que los vendedores ya saben que necesita una controladora para el motor y lo venden junto. De hecho, el motor tiene un plástico blanco con los cables ya puestos correctamente, así solo tienes que enganchar la hembra en el macho que suelen poner en la placa y ya funciona.

La placa esta no es más que un integrado llamado ULN2003, los pines macho para conectar con el motor y unos pines para enganchar la señal que viene de Arduino (suelen ser machos normalmente). ¿Y que es el ULN2003? Es un integrado que tiene en su interior transistores Darlington. Nada, es solamente un par de transistores puestos de una manera especial que hace que den más corriente. Así, las órdenes que enviamos desde Arduino se multiplican en corriente y se envían al motor que ya puede funcionar. Sino digamos que el motor solamente notaría un leve cosquilleo cuando Arduino le ordenase moverse.

ULN2003

Eso que ves es el esquema del integrado. En este caso los números son canales, la B indica entrada y la C salida. Esto significa que tu conectas en 1B el primer cable que viene de Arduino y en 1C conectas el primer cable del motor. Es importante saber que , en el motor, el color azul es el 1, el rosa el 2, el amarillo el 3 y el naranja el 4. El color rojo se guarda para el común, es decir, va conectado al pin COM y a la vez a 5 Voltios. Por otra parte, el pin ‘E’ va conectado a GND, según dicen las especificaciones. Para ver esto más claro te dejo esta página dónde hay una imagen de cómo conectarlo y además tiene el código. Ese código es muy grande, así que ahora con los motores bipolares te enseño la librería esa famosa que existe en Arduino 😉

Motores paso a paso bipolares

Después de tanto cable llegamos a los motores bipolares. Estos solo tienen 4 cables, un par para cada bobina. Bueno, pues con esto de las impresoras 3D y tal los motores que más populares se han hecho son los nema17. Son un poco más caros pero son más grandes, más rápidos y más potentes. ya te digo que si los pones lentos, hay tanto par ahí, que la mesa retumba.

Aunque el nombre nema17 parezca algo súper estándar que vas a la tienda y sólo hay nema17. Es mentira. Cada tienda tiene un nema17. Lo jodido es que cada uno tiene una fuerza, unas medidas y que da igual que sean todos nema17. El 17 sirve para saber que son más grandes en tamaño que el nema 15 o el 13. Pero nada más. El par varia en cada fabricante y si estás haciendo algo específico te va a tocar hacer cálculos de cuánto par necesitas y empezar a buscar quién te lo ofrece y a qué precio. Ya te digo, no son baratos. 12€ el motor es algo común, aunque yo he encontrado por 7€ comprando bastantes 😉

Bueno, para este tipo de motores necesitarás el integrado L293D que contiene cuatro semi-puentes en H. Un puente en H son como 4 interruptores puestos en forma de H que según están abiertos o cerrados un motor de continua se movería a un lado o a otro. Pero vamos, eso interesa en otro tipo de motores. A nosotros nos interesa porque aumenta la corriente de Arduino tanto que nos permite mover los nema17 a nuestro gusto.

L293

Como ves, aquí hay bastantes más pines. Los 1,2EN y 3,4EN son los ENABLE. Es decir, para que el motor funcione ambos deben de recibir una señal de 5 Voltios (Esto es todo digital así que es o 0 o 5 Voltios). ¿Y qué utilidad tiene esto? Pues que te permite tener apagado un motor. Imagínate que estás utilizando tres motores. Si todos tienen el enable activado lo que pasa es que los tres consumen corriente. Y si la consumen se van a mover con menos garbo, además de que si tienes sensores o leds les va a llegar menos. mejor activar el motor que vas a utilizar cada vez.

1A, 2A, 3A y 4A son las entradas. Lo que viene de Arduino y que es lo que maneja los motores. Así que los 1Y, 2Y, 3Y y 4Y son las salidas, los cables del motor bipolar. En el medio tienes los pines 4, 5, 12 y 13 que van conectados a GND y los Vcc pues ya sabes, es la alimentación. Yo los conecto a 5 Voltios pero el Vcc2 acepta hasta 36 Voltios, el Vcc1 solamente acepta 5 Voltios. Digamos que uno es la alimentación que se les dará a los motores y el otro es la alimentación del integrado. Por eso la diferencia.

Así que conectando, quedaría una cosa así:

circuito motor paso a paso bipolar

Como puedes ver, he elegido los pines digitales 8, 9, 10 y 11 para enviar el movimiento a hacer desde Arduino al L293D que ya se encargará de hacerlo funcionar. El código a utilizar sería este:

#include <Stepper.h>

Stepper stepper(400, 8,9,10,11);

void setup() { 
  stepper.setSpeed(30);    
}

void loop() {       
  stepper.step(10);
  delay(1000);
}

Como ves, he cargado en la primera línea la librería y luego he definido una variable que se llama stepper y es del tipo Stepper (significa paso a paso en inglés) y le he pasado el número de pasos que tiene mi motor (son 200 pero un día me di cuenta que poniendo 400 iba mejor, así que así lo dejo xD) y los pines en orden por los que enviaré la información. Esto de en orden es muy importante: el 8 será el que envie a 1A y el 11 el que envie a 4A. En cuanto a los pasos, cadamotor tiene los suyos, es recomendable que busques cuántos tiene el tuyo en la caja dónde te lo vendieron.

Y nada, luego cargo la velocidad que quiero en el setup y muevo 10 pasos cada vez. Tu puedes mover todos los que quieras. Misterio tiene poco.

Opt In Image

Ya está bien de motores, ¡por favor!

Bueno, he llegado a mi fin pero antes de despedirme tengo que decirte algo: ¡Cuidado que se calienta! Después de un rato con el L293D puedes notar cómo aquello toma temperatura. No lo toques o te quemarás. Yo deshice el plástico de una protoboard jugando demasiado con el motor. Así que al loro por si huele a chamusquina.

Espero que te haya servido, que me lo compartas con los iconos tan chu-chu-chulis que tienes ahí abajo y que me des ánimos en los comentarios para que continúe con mi ardua batalla. ¡Nos vemos!

[Total:14    Promedio:4.4/5]

Déjame un comentario que en el fondo soy buen chaval

  1. Responder

    • Responder

  2. sera

    Responder

  3. Responder

    • Responder

  4. Responder

    • Responder

  5. Cristian

    Responder

    • Responder

Deja un comentario