bclose

Mas sobre motores paso a paso

Controlando un motor unipolar como si fuera bipolar

Objetivos

 

 

    • Seguimos jugando con los motores paso a paso.
    • Diferencias entre motores unipolares y bipolares.
    • Convirtiendo un motor unipolar en bipolar.
    • Gobernando un motor bipolar con L293D H-Bridge
 
 

Material requerido.

 

  Tienda España Tienda Mexico
Kit Arduino Uno  Kit inicio UNO Kit inicio UNO
Kit Arduino MEGA Kit Inicio Mega Kit Inicio Mega

 

Motores unipolares y bipolares

 

En las dos últimas sesiones empezamos a hablar de motores pasos a paso y de la jerga que los rodea. Vimos que había motores unipolares y motores bipolares y además dijimos que según el fabricante nos puede entregar 4, 5, 6, u 8 hilos de control.

Revisando un poco lo dicho hasta ahora, si alguien que no había visto nunca un motor paso a paso, ha entendido algo será un milagro. Y francamente, viendo lo mucho que se escribe por Internet del tema, y el barullo semi interesado que pueden montarte, acabaras convenciéndote de que esto no es lo tuyo, pero no señor.

Los motores paso a paso, son una cosa sencilla, pero son muy versátiles y conviene ir pasito a pasito, porque si haces caso a todo lo que lees la cosa se puede complicar mucho, así que vamos a dedicar esta sesión recapitular un poco y demostrarte que no es para tanto.

Recuerda que un motor paso a paso se diseña para que solo se mueva un paso cada vez que excitamos una de sus bobinas (O varias según el caso) y por eso, el circuito de control, o sea nuestro Arduino, tiene que ir excitando en secuencia las bobinas del motor, y por eso tenemos que volver a las configuraciones de las bobinas porque son las que definen como puedo excitar el motor.

Pero tienes que saber algo importante, casi son todos parecidos, (solo casi). Fíjate en estas imágenes de configuraciones:

Al final vamos a tener al menos 4 bobinas, enfrentadas dos a dos (Porque si no va a costar que el motor gire), pero la cuestión es cómo saca el fabricante los hilos de las bobinas al exterior, para que podamos controlar el motor.

En el caso del de 5 hilos, primero excitamos un lado de la bobina del primer grupo y luego la media bobina del otro grupo, después vuelta  a la primera bobina, pero del otro lado y al final la que falta. Pero fíjate que el caso del motor de 5 hilos es igual que el de 6, solo que en el primero el fabricante une los dos hilos centrales.

Y el caso de 8 hilos, es casi lo mismo pero, el fabricante te entrega 8 hilos para que los gobiernes como quieras. ¿Pero… para motores y bobinas similares hay alguna diferencia en esto? Pues poco menos que no (Algo hay pero ahora pasamos de ello).

 
  • No te preocupes por ahora de esto, ya tendrás tiempo más delante de entender las pequeñas diferencias, que tienen que ver con el consumo, el par o la velocidad de giro, por ahora olvídate de todo esto.  

En la práctica eres tu quien configura la excitación de las bobinas porque parece que cuantos más opciones te ofrece el fabricante, más sofisticado es el motor (Y el precio claro, no te olvides de la pasta), pero es bien fácil convertir un motor unipolar de 8 hilos en uno 6 o de 5 y uno de 6 en uno de 5.

Vale, más o menos los motores paso a paso unipolares son poco más o menos equivalentes, pero en cambio los bipolares son muy distintos ¿No?

Vale, pues tampoco. Fíjate en el esquema que parece muy diferente:

DIferencias de configuracion

Tienes marcado en rojo el hilo que une los comunes de las dos bobinas en el motor unipolar. ¿Qué pasa si simplemente los dejas al aire sin conectar? Pues querido amigo, que acabas de conseguir un precioso motor bipolar.

Así que al final, en todo este asunto hay mucho teatro, por parte de unos que esperan cobrarte más por el Show, y porque algunos que no han entendido nada, esperan convencerte de que te dejes aconsejar por ellos que son los que más saben de esto.

Hay un tema básico en que si se diferencian los motores unipolares y bipolares, y es que con un unipolar puedes usar un par de transistores Darlington para excitar una u otra mitad de cada bobina, como hacíamos en la sesión anterior y la costumbre es usar un integrado del tipo del ULN2003A.

En cambio un motor bipolar no puede ser gobernado de ese modo, porque hay que revertir el sentido de circulación de la corriente según en qué fase estés y para eso necesitamos un viejo conocido nuestro: Un H-bridge.

 
  • Recordad que un H-Bridge es capaz de invertir la dirección de circulación de la corriente en su salida.  

Y como no queremos que nadie se quede con dudas, en esta sesión vamos a mover el motorcito que hemos visto, el 28BYJ-48, unipolar, mediante un sencillo H-bridge, el  LS293D  manejándolo como si fuera bipolar (Hoy tengo ganas de guerra, que queréis que os diga) y montaremos  un pequeño circuito para gobernarlo.

En la sesión anterior controlamos el giro y  la secuencia de fases del motor directamente, pero en esta ocasión aprovecharemos para ver que Arduino dispone de una librería para gobernar motores paso a paso, a un mayor nivel de abstracción desentendiéndonos de tan agotador trabajo.

 

Esquema del circuito

 

Coma ya vimos el H-Bridge L293D en una sesión previa, no vamos a insistir con el y os remito a la sesión correspondiente.  Recordemos que este chip tenía dos puentes H-Bridge y que en aquella sesión solo usamos uno de ellos porque era mas que suficiente para gobernar un motor de corriente continua.

La diferencia es que ahora tenemos que manejar los dos H-bridges, porque vamos a tener dos juegos de bobinas, y por ello poned un poco de cuidado con el cableado, porque vamos a conectar unos cuantos cables a la protoboard, y como ya es costumbre con uno mal puesto probablemente dejará de funcionar.

Recordad, también, que para manejar nuestro motor 28BYJ-48 unipolar, como bipolar basta con que nos olvidemos casualmente, de usar el hilo común de las bobinas que en el conector viene de color rojo y listo.

 
  • En Internet he visto varios artículos que recomendaban desmontar el motor y cortar la pista interna que da al cable rojo, o bien cortar el cable rojo.
  • Jesús, que agresivos. Yo prefiero dejar sin conectar el cable correspondiente y no estropear un motorcito que nos puede dar mucho juego manejándolo de un modo u otro según nos convenga.   

Vamos con el esquema:

Esquema electrico

Y para la protoboard, tenemos:

Esquema de Protoboard
 
  • A riesgo de ponerme pesado, fijaros en que el cable rojo está sin conectar, para forzar a que usemos este motor como bipolar.  

 

El programa de control

 

 

Lo primero que vamos a hacer es desentendernos de los detalles de bajo nivel y vamos a usar una librería llamada stepper.h que viene de serie con el IDE moderno de Arduino, por lo que no hace falta que la instales, basta con invocarla: Prog_99_1

#include <Stepper.h>

Para crear una instancia del motor paso a paso, tenemos que definir que pines usamos para gobernar las entradas del motor. Si habéis usado las conexiones que os hemos marcado en el esquema:

const int in1Pin = 12;
const int in2Pin = 11;
const int in3Pin = 10;
const int in4Pin = 9;

Ahora tenemos que definir el número de pasos que nuestro motor tiene por vuelta y crear una instancia de la clase Stepper, pasándole los pines de control definidos:

#define STEPS 512  // Define el numero de pasos del motor. 512 para 28BYJ-48
Stepper motor(STEPS, in1Pin, in2Pin, in3Pin, in4Pin);

El resto es gimnasia:

void setup()
   { pinMode(in1Pin, OUTPUT);
     pinMode(in2Pin, OUTPUT);
     pinMode(in3Pin, OUTPUT);
     pinMode(in4Pin, OUTPUT);

     Serial.begin(115200);
     motor.setSpeed(25);     // Fijar la velocidad en rpms
   }

Lo único digno de mención es la última línea, donde fijamos la velocidad del motor en revoluciones por minuto.

 
  • Yo sé que vais a intentar acelerar un poco el motor, porque es lento que da asco, pero tenéis que entender que la excitación de las bobinas supone la creación de los campos magnéticos que inducen la fuerza electromotriz y eso lleva un cierto tiempo.
  • Dicho de otro modo: Si fijáis una velocidad superior a la que vuestro motor puede excitarse, sencillamente quedará inmóvil (Lo sé la vida es dura)
  • Estos motorcitos tienen un buen par motor, porque tienen una reductora 64: 1, lo que significa que es 64 veces más lento que el motor a pelo.  

Para no aburrirnos, vamos a seguir la costumbre de Internet, para este ejemplo, de recibir por la puerta serie un número entero y usarlo como un número de pasos que el motor debe avanzar si es positivo o retroceder si es negativo:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

  

Pues eso es todo. Para probarlo basta con que después de volcar el programa al Arduino, abráis el terminal serie y marquéis algún numero como 1024 o -2048 y el motor girará lentamente el número de pasos que le especifiquéis.

Aquí os dejo el mini video correspondiente para que veáis el resultado

 

 

Resumen de la sesión

 

 

    • Vimos que no hay tantas diferencias entre un motor paso a paso unipolar y bipolar.
    • Nos dimos cuenta de lo sencillo que es, usar un bipolar como si fuera unipolar.
    • Montamos un pequeño circuito con un H-Bridge para manejar el motor.

 

 

 

 

 

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login

(43) Comments

  • Avatar for Charly
    • Admin

    Hola Roberto, como todo en la vida la complicacion esta en los detalles, pero si dispones del motor paso a paso, basta con controlar su avance o retorceso con por ejemplo un tornillo de un modo similar a como se mueven las impresoras 3d. Pero antes tienes que montar la parte mecanica y luego calcular cuantas vueltas de tu motor son x cm, el resto sera bastante sencillo

  • Avatar for Charly
    • Roberto

    Hola … ante todo felicitarte por este tutorial, me parece magnífico. Estoy leyendo todo lo que encuentro.
    Quería hacerte una consulta a ver si me puedes orientar.
    Estoy en un proyecto para mover un tope corredizo, es para una sierra de corte de perfiles de aluminio. La idea es que al introducir una medida determinada mediante un teclado, el carro ( tope) se desplaze hasta ese punto y seria bueno además poderle poner un LCD que indique la medida.
    Tengo para eso una placa arduino 1, un teclado matricial 4×4, un LCD de 16 x 2 y un motor pap con su driver. Pero se me complica para armar todo y no encuentro ningún proyecto parecido.
    Ojala me puedas echar una mano.
    Desde ya muchas gracias.
    Saludos… Beto Porporato’ Córdoba’ Argentina.

  • Avatar for Charly
    • Admin

    Que proyecto mas guapo Briam, me encanta, llevo años queriendo hacerlo yo mismo pero siempre voy joido de tiempo y ….
    Bueno entiendo que vas a necesitar dos motores paso a paso, te recomendaria un tipo NEMA 17 que son los que parece que todo el mundo usa para el movimineto XY y luego probablemente un servo sencillo para levantar y baja el lapiz como el https://www.prometec.net/producto/servo-mg90s-180o/

  • Avatar for Charly

    Hola soy nuevo en esto pero tengo una duda, Estoy por empezar un plotter que maneja viromes, lapices, etc. Pero aun no puedo solucionar el problema de los motores en total usara 3 pero no se que componente comprar son unipolares osea tienen 4 cables. ¿Como me recomiendas iniciar?
    Muy buena pagina siempre vuelvo a esto para este tema pero ya es hora de iniciar y aun no se que hacer.

  • Avatar for Charly
    • Admin

    Vale, claro que puedes utilizar una Ramps para controlar motores paso a paso, esta diseñad apara eso y tiene capacidad para hasta 5 motores de una cierta potencia, pero naturalmente tambien tiene que servir con pequeños motores.
    En cuanto a la consulta que me haces sobre el unir o separar los cables de los motores, depende un poco de cada motor y de la sequencia que uses en la excitacion de als bobinas. No tiene porque disminuir el par aunque separes las bobinas y las manejes independientemente… a condicion de que actives el mismo numero de bobinas en cada step ¿Vale?

  • Avatar for Charly

    Perdona. Me refería al Ramps 1.4. Gracias anticipadas

  • Avatar for Charly
    • Admin

    Hola Jose Manuel, no se que es Ramos 1.4

  • Avatar for Charly

    Hola:
    Antes de nada enhorabuena por la página y gracias por tu esfuerzo.
    He realizado el montaje y funciona correctamente. ¿Seria posible utilizar este motor con Ramos 1.4?. ¿Disminuye el par con respecto a cuándo se destruye el puente entre bobinados del cable rojo?.
    Gracias anticipadas por tu atención.
    Un saludo!

  • Avatar for Charly
    • Admin

    Hola David, es seguramente un motor paso a paso de 8 bobinas que puedes convertir facilmente en uno de 5 hilos. Para ello tienes que buscar las dos bobinas en oposicon y unir sus hilos centrales de ese modo tendras 6 hilos y si a su vez unes los dos centrales a masa tendras un precioso motor paso a paso de 4 hile + comun o masa

    Tendras que haer pruebas para acertar cual es cual si no viene marcado de algun modo explicito

  • Avatar for Charly
    • David

    Hola buenas tardes, tengo un motor de 8 hilos, heredado de mi padre y ahora lo quiero hacer mover con arduino, esta nuevo pero la referencia ya no se encuentra por internet, es un motor japonés de la fuji electrochemical co. ref smr58-4801-a 2239376-0001 de 5v 5ohms. Mi padre lo hacía mover con unos TIP122 para mejorar su potencia. Quisiera me ayudaras para moverlo con el arduino, saber cómo puedo hacerlo.

  • Avatar for Charly
    • Jesús Sánchez

    Hola Demian.
    Abre el monitor Serial y lo haces a traves del teclado
    Saludos.

  • Avatar for Charly
    • Admin

    Hola Demian, ¿a que te refieres?

  • Avatar for Charly

    Hola!!!
    Como haces para ingresarle los datos al arduino??

  • Avatar for Charly
    • Admin

    Hola Martín,

    No estoy seguro de comprender bien tu pregunta, pero me imagino que te refieres a como hacer que al pasar de la cinta al elevador esta arranque y pare la cinta transportadora. SI es así la solución fácil es arrancar los dos a la vez y olvidarte de las complicaciones. si por lo que sea no conviene, tienes que detectar el paso de lo que estas moviendo por el final de la cinta .

    Para eso puedes usar un final de carrera con una pértiga, o bien mas limpio, un sensor óptico que detecte el paquete

    Ya me dirás si te puede servir

  • Avatar for Charly

    hola.. como hago para hacer andar 2 motores secuenciales. estoy haciendo una cinta transportadora y al final mueve un elevador. y no se como hacer q luego q termine de hacer un trabajo el motor comience el otro. muchas gracias y espero su respuesta

  • Avatar for Charly
    • A_Bug Bot

    Lo mejor que he encontrado en la red sobre tutoriales de ARduino en castellano. Gracias

  • Avatar for Charly
    • Admin

    Hola Carlos, pues exactamente igual, pero poniendo 12V en lugar de 5. Tanto el motor shield shield V1 como el L293D te soportan motores de 12V, pero si usas el shield asegurate de aislar el jumper de alimentacion del control de la alimentacion de los motores o haras parrillada

  • Avatar for Charly
    • Carlos espinosa

    Hola, si quiero probar con un motor pap de 12V, como sería la conexión. Gracias

  • Avatar for Charly
    • Admin

    Hola Jose, tienes toda la razon. HAbia una serie de errores en la protoboard que creo ya estan corregidos, compruebalo y dime si ves cualquier otro problema. Muchas gracias por indicarmelo

  • Avatar for Charly
    • Jose

    Hola buenas tardes, quería hacerte una pregunta, soy nuevo en esto y no me aclaro mucho, pero veo una discrepancia entre el circuito y la protoboard
    Concretamente en las conexiones a tierra de las patas 4, 5 ,12 y 13 del H-Bridge que según el esquema tienen que conectar a tierra y están conectadas al positivo.
    Quiero probarlo pero me parece que podría haber un error, por favor si tienes un momento míralo y me dices algo.

    Muchas gracias

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login