lunes, 26 de septiembre de 2016

Control del motor a pasos unipolar 28BYJ-48 mediante el driver ULN2003


En este POST os voy a mostrar cómo controlar tanto el sentido y velocidad de giro como la posición del eje de un motor a pasos (Stepper) unipolar 28BYJ-48, mediante la utilización del módulo driver ULN2003. El uso de este pequeño motor es muy habitual cuando se requiera un posicionamiento con precisión, como puede ser en pequeñas aplicaciones de robótica, en máquinas CNC o en impresoras 3D.
Motor a pasos unipolar 28BYJ-48

Aunque no es ni demasiado potente ni rápido,  tiene un buen comportamiento junto con Arduino, además de ser bastante económico y fácil de encontrar en cualquier tienda online de electrónica. Las características más importantes de este motor a pasos se detallan a continuación.

Características del motor a pasos unipolar 28BYJ-48

Nosotros vamos a conectar el motor a pasos en su modo “Half Steps”, es decir, en un principio necesitaríamos 8 medios pasos o impulsos para completar un giro completo del eje del motor, pero teniendo en cuenta que el motor está dotado de una reductora de 1/64, finalmente necesitamos dar 8 * 64 = 512 pulsos para completar un giro completo en este modo de conexión (256 pulsos para media vuelta por ejemplo), teniendo en cuenta que el movimiento es más suave y lento que con el modo “Full Steps” que únicamente utiliza 4 pasos, y el consumo y el par es intermedio. Para ello, y teniendo en cuenta que el motor está dotado únicamente de 4 bobinas, para que el motor gire por ejemplo en el sentido de las agujas del reloj (horario) tendríamos que ir excitando las bobinas según la secuencia 1, 2, 3… 7 y 8, de ahí las 8 señales necesarias para el correcto funcionamiento del motor (ver siguiente imagen). Si por el contrario queremos que el eje del motor gire en sentido contrario (antihorario), debemos de invertir el orden de la secuencia (8, 7, 6… 2, 1).

Secuencia de excitación de las bobinas

Como se ha mencionado anteriormente vamos a utilizar el módulo driver ULN2003 que conectaremos a nuestro Arduino, para poder excitar las bobinas en la secuencia correspondiente mediante programación.  Como cabía esperar este módulo basa su funcionamiento en el chip  ULN2003, el cual permite amplificar las señales PWM  y digitales de nuestro Arduino a voltajes y corrientes mucho mayores, es decir, es capaz de manejar hasta 25V y 0.5A en cada una de sus salidas. Internamente está formado por siete pares de  transistores NPN Darlington de uso general para controlar relés, motores, lámparas LED,  y otras aplicaciones de corriente de alta tensión, incluyendo diodos de fijación de cátodo común para cada par Darlington NPN, lo que hace que este chip sea muy útil para la conmutación.

Modulo driver ULN2003

Además este módulo está dotado de 4 LEDS que indican qué bobina está activa en cada momento. La entrada de alimentación del módulo permite un voltaje comprendido entre 5 y 12VDC, siempre que el JUMPER permanezca en “ON”. Es recomendable el uso de una batería externa para la alimentación del módulo (en cuyo caso debemos unir la masa de la batería con la de nuestro Arduino para un correcto funcionamiento), ya que el motor a pasos puede consumir más corriente de la que nuestro Arduino es capaz de suministrar y de este manera dañarlo, aunque yo lo he conectado directamente a los +5V de Arduino y funciona sin problemas. La conexión entre el módulo y el motor a pasos es bastante intuitiva ya que tiene un conector con ranuras para guiar el acople entre los dos dispositivos (5 cables). También deciros que los pines IN1, IN2, IN3 e IN4 pertenecen a las entradas de control del módulo, y son las que irán conectadas a las salidas digitales de Arduino (pines digitales del 8 al 11 empezando por el IN1 con el pin digital 8). 
Como ya os anticipaba al principio de este POST, con el programa que se muestra a continuación, seremos capaces de controlar tanto el sentido y velocidad de giro como la posición del eje del motor a pasos unipolar 28BYJ-48 a través del módulo driver ULN2003, siempre que previamente hayamos hechos las conexiones oportunas de las que el conjunto requiere y hayamos cargado el programa correctamente en nuestro Arduino. El programa consta de 5 estados de movimiento posibles que comandaremos a través de un interruptor táctil capacitivo TTP224 de 4 Vías, cuyas salidas tenemos conectadas a las entradas digitales 4, 5, 6 y 7 de nuestro Arduino (salidas OUT4,  OUT3,  OUT2 y OUT1 respectivamente). Os dejo aquí el enlace donde podéis descargar la imagen para cada uno de los botones.
Interruptor táctil capacitivo TTP224 de 4 Vías

 Para que podáis entender mejor lo que se logra realizar mediante este programa, os muestro una tabla resumen de dichos movimientos y el botón que tendremos que pulsar del interruptor táctil capacitivo TTP224, cuyo voltaje de alimentación oscila entre 2,4 y 5,5VDC, para que nuestro Arduino actúe en consecuencia.

Tabla de movimientos del eje del motor a pasos 28BYJ-48

En número de vueltas se controla modificando el número de pasos en la variable “pasos”, siendo 512 pasos el equivalente a una vuelta completa. La velocidad del motor se controla aumentando o no el retardo entre cada secuencia completa, modificando la variable “velocidad_motor” (como mínimo 900 ms para velocidad máxima), si aumentamos su valor, por ejemplo 4000 ms, la velocidad disminuye. El sentido de giro se controla utilizando las funciones “horario()” y “antihorario()”. Por último deciros que a través del monitor serie del IDE de Arduino se irán mostrando los oportunos mensajes sobre del estado del eje del motor en cada momento. Para mayor información os recomiendo consultar los comentarios realizados en el programa. 

Monitor serie del IDE de Arduino
 

Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Motor a pasos unipolar 28BYJ-48.

·         Módulo driver ULN2003.

·         Interruptor táctil capacitivo TTP224 de 4 Vías.

·         Protoboard.

·         Cables de conexión.


Código del programa:
  





Video:

No hay comentarios:

Publicar un comentario