Motores Bipolares.

CONTROL CON ARDUINO.

PROLOGO.

Esta documentación, pretende ser una aproximación práctica a las formas de control de motores paso a paso, también conocidos en la terminología inglesa como, stepper’s.

En este sitio, puede encontrar un artículo que trata extensamente sobre los motores paso a paso, donde puede disipar cualquier duda sobre los mismos. En dicho documento, se hace un análisis de los tipos de motores paso a paso, su constitución, su lógica y además se presentan algunos ejemplo de uso con el puerto paralelo del PC. La característica principal de los motores paso a paso, es el hecho de poder moverlos un paso con cada impulso aplicado. Los pasos necesarios para dar un giro de 360º, depende de la constitución de cada motor, pueden variar desde 90º cada paso a 1’8 grados por pulso.

motor_papFig. 1

No basta con decir motor paso a paso o si me apuran motor stepper. Hay que distinguir entre dos tipos de motores paso a paso, motor bipolar y motor unipolar. En esta ocasión, vamos a abordar el tema desde la perspectiva práctica, en la que se propone, la puesta en servicio de un control para un motor paso a paso bipolar, en otro artículo abordaremos la descripción de los motores del tipo unipolar. En adelante, especificaré al tipo de motor en uso, como motor bipolar o en su caso motor unipolar.

MOTOR BIPOLAR.

Para hacer girar un motor paso a paso bipolar, se aplican impulsos en secuencia los devanados, la secuencia de estos impulsos, se aplican externamente con un controlador electrónico. Dichos controladores, se diseñan de manera que el motor se pueda mantener en una posición fija y también para que se le pueda hacer girar en ambos sentidos. Los motores bipolares, se pueden hacer avanzar a frecuencias de audio, lo que les permite girar muy velozmente. Este es el motivo por que se suele decir que un motor “canta”, debido a la frecuencia a la que se produce la conmutación. Con un controlador apropiado, se les puede hacer arrancar y detenerse en cualquier instante y en una posición determinada. Este es en teoría, el esquema de un motor bipolar.

 bipolar1Fig. 2

Estos motores, tienen varios bobinados que, para producir el avance de un paso, deben ser alimentados en una secuencia adecuada. Al invertir el orden de esta secuencia, se logra que el motor gire en sentido opuesto. El torque de detención, hace que un motor paso a paso (esto vale para los bipolares y unipolares) se mantenga firmemente en su posición, estando alimentado aun cuando no esté girando.

Hay tres características que, son comunes a los motores paso a paso:

  • Voltaje. Los motores paso a paso tienen una tensión eléctrica de trabajo. Este valor viene impreso en su carcasa o por lo menos se especifica en su hoja de datos.
  • Resistencia eléctrica. La resistencia de los bobinados, esta resistencia determinará la corriente que consumirá el motor y su valor afecta la curva de torque del motor y su velocidad máxima de operación.
  • Grados por paso. Generalmente, este es el factor más importante al elegir un motor paso a paso para un uso determinado. Este factor define la cantidad de grados que rotará el eje para cada paso completo. Una operación de medio-paso o semi-paso (half step) del motor duplicará la cantidad de pasos por revolución al reducir la cantidad de grados por paso.

Si adquirimos un motor paso a paso, es bastante sencillo conocer las características del motor, sin embargo, lo más común es que nos encontremos ante un motor de desguace. Cómo distinguir ante qué tipo de motor nos encontramos, el procedimiento es bastante sencillo, el primer paso es mirar en el cuerpo del motor si permanece alguna leyenda que nos pueda servir de orientación como, el fabricante, modelo, la tensión o alguna otra pista que nos indique las características más inmediatas.

Si no dispusiera de dichas indicaciones, nos centraremos en los cables de alimentación (descartamos los de dos cables que, corresponden a motores de corriente continua), generalmente presentan cuatro, cinco o seis cables de salida. Nos referiremos a los de cuatro cables, estos, para controlarlos necesitan de ciertos trucos, debido a que requieren del cambio de dirección del flujo de corriente a través de las bobinas en la secuencia apropiada para lograr avanzar un paso en su movimiento.

bobinas_motor1Fig. 3

Estos motores, podemos obtenerlos al desguazar una vieja impresora, los podemos encontrar en la vieja unidad de disquete y son relativamente fáciles de controlar, son de imán permanente. Existen dos tipos de motores paso a paso: unipolares y bipolares. En los unipolares la corriente circula siempre en el mismo sentido en cada bobina, en los bipolares, la corriente sigue una secuencia alterna que cambia el sentido de la intensidad.

Los cuatro cables se corresponden a los cuatro terminales, dos de cada devanado, aunque internamente pueden contener varios pares de bobinas, como se aprecia en la imagen anterior. Los motores paso a paso, difieren de los motores de CC, en la relación entre velocidad y torque o “par motor”. Su mayor capacidad de torque se produce a baja velocidad.

Los motores bipolares requieren circuitos de control y de potencia más complejos que los unipolares. Estos circuitos de control, se suelen implementar con un circuito integrado que, soluciona dicha complejidad con un solo componente. Cuando se requieren mayores potencias, se deben agregar algunos componentes, como transistores y diodos para las contracorrientes, aunque esto no es del todo necesario en los pequeños motores.

La configuración de los motores bipolares requiere que las bobinas reciban corriente en ambos sentidos y no solamente un encendido-apagado como en los unipolares. Esto hace necesario el uso de un Puente H con una secuencia sobre cada uno de los devanados.

tabla1Fig. 4

Al avanzar un paso de la secuencia al paso siguiente, hace mover el estator del motor un paso. Si vamos hacia adelante en la secuencia, el motor se mueve hacia adelante un paso y si lo hacemos al revés, el motor se mueve un paso atrás. El código que sigue, muestra la secuencia de activación de las bobinas 1a-1b y 2a-2b.

Motor Bipolar.

Utilizaremos un motor de cuatro hilos. Dos para la bobina A y dos para el B. Código sin librería.

RECONOCIENDO EL MOTOR.

Los motores paso a paso, también tienen un número determinado de pasos, necesarios para girar una vuelta completa. Por ejemplo, el motor que estoy usando tiene 96 pasos por revolución. En su etiqueta dice: STP-42H100 3’75 grados/paso, 4’6V y 0’55A. No obstante, si prueba a girar su motor y observa que se salta algún paso o se mueve con dificultad, deberá probar de poner un múltiplo de 4, piense que tiene 360 grados y un mínimo de 4 polos (esto serían 90º por paso, claramente muy poco), si quiere un movimiento limpio de 3º aproximadamente, serían 360/3 = 120 pasos, ahora, guardamos los 120 pasos y ya usaremos este valor en la variable adecuada del programa.

Aprovechando el Escudo que realicé en otra práctica, ahora más acabado, como puede verse en la imagen de abajo. Se pueden ver detallados los cuatro pines dispuestos para el uso de un motor bipolar, la entrada de tensión exterior con un jack adecuado junto al selector de tensión, dispuesto por un puente en amarillo y naturalmente dos conexiones independientes para aplicar a dos motores de corriente continua o en su caso a un motor bipolar con cables separados.

Fig. 5  Uso de la librería Stepper.h

El software Arduino viene con la biblioteca <Stepper.h> que hace que sea fácil de controlar un el motor paso a paso bipolar. Un problema con esta configuración básica es que requiere cuatro cables para su control. Un Arduino sólo tiene doce pines digitales disponibles, así que, pronto nos quedaremos sin salidas. Sería agradable poder utilizar sólo dos cables para manejar un motor.

Ahora, se muestra un código que utiliza dicha librería de Arduino. Con esta librería, se generaliza el uso de los motores bipolares.

Motor Stepper DC con librería <Stepper.h>

Cuatro hilos para las bobinas y un potenciómetro para cambiar la velocidad.

En este ejemplo, se puede apreciar que, las variables responsables de valores que dependen del PWM, se declaran como long, esto tiene sentido por el valor que puede alcanzar este parámetro. En Internet se pueden encontrar muchos códigos para controlar los motores bipolares y es bueno conocer los distintos tipos de controlarlos, de modo que, en cada caso, el técnico debe aplicar el código que mejor se adapte a sus necesidades, modificando los parámetros que necesite.

EL MÉTODO DE DOS CABLES.

Sabemos que el comportamiento de un transistor en configuración de colecto abierto se puede considerar como un inversor. Este tipo de circuito es muy útil para manejar cosas, como luces o motores, en el que simplemente se convierte algo encendido a apagado, con la necesidad de proporcionar más corriente que puede dar el micro controlador. Cuando está en “on”, se conecta la salida a tierra y puede pasar una corriente relativamente grande a través del transistor. Cuando se trata de “off “, la resistencia de puesta a alto (pullup) pone a alto la salida.

He mencionado que el transistor NPN es también un inversor, lo que significa que la salida es la inversa a la entrada. Si usted le da un 1, le entregará un 0 y si le da un 0, se obtendrá un 1, siempre la inversa. Pueden utilizarse transistores universales NPN como, por ejemplo BC549/C (BD139, TIP31, etc.).

Volviendo a la secuencia, si nos fijamos en la secuencia de pasos, se puede notar algo interesante. Entre los pines 1a y 1b de la tabla anterior, nunca son iguales, siempre están en contraposición.

1a_1b2a_2b
Fig. 6

Lo mismo ocurre con el par 2a y 2b. Por lo tanto, si utilizamos a la salida del inversor un transistor, podemos eliminar los pasos innecesarios de una entrada a cada lado.

inversorFig. 7

 De modo que, si utilizamos las dos salidas de Arduino como entradas del L293 y los dos transistores inversores, con sus salidas, dispondremos de las cuatro entradas necesarias para el L293, podemos eliminar pasos innecesarios de la secuencia, una entrada a cada lado. El circuito que se muestra en el siguiente esquema, presenta la aplicación de dos inversores que atacan las entradas del L293, reduciendo de esta forma las cuatro señales necesarios a sólo dos salidas de Arduino.

esquemabipolarFig. 8

El esquema puede parecer muy complejo, sin embargo, si se toma un momento y sigue cada conexión, pronto comprenderá que resulta lógico y sencillo. Los dos transistores NPN están conectados como el circuito propuesto en el sitio web de Arduino. Además, utiliza los pines activados. Así que el circuito necesita cuatro pines, no hay manera de usar menos.

Por lo tanto en un boceto de Arduino, la línea para configurar de forma normal el motor bipolar se vería así:

  Stepper stepper(STEPS, 3, 5, 4, 6);

Pero con el sistema descrito de dos hilos, hay que cambiar la línea de configuración de la forma siguiente:

  Stepper stepper(STEPS, 3, 5);

Como se ve, el código utiliza el comando de puerto directo para reducir el tiempo de procesador. Y crear una función que se llama en el bucle principal para cada uno los pasos. De esta manera el código puede hacer otra cosa cuando el motor está en marcha.

Y eso es todo lo que tiene que cambiar, el código funciona de la misma forma. Sin embargo hemos ahorrado dos salidas del Arduino. Concretando, utilizaremos dos línea PWM (2, 7), más dos de control (3, 5), en lugar de cuatro más dos de control, esto nos permitirá disponer de más pines E/S, esto es muy importante.

El código que sigue, se ha probado y adaptado a las prestaciones que se describen en este documento. Dicho código, permite utilizar un menor número de pines del Arduino, así como, puede controlar dos motores de corriente continua, sin embargo, si no se dispone de los transistores que tienen el cometido de inversores, se deberá utilizar otro código, como el que se describe más adelante.

Motor bipolar con 2 hilos.

Este código al utilizar el inversor nos facilita la conexión mediante sólo dos hilos para las bobinas.

Este código básicamente es como el del caso anterior, la diferencia radica en que, utiliza dos salidas de Arduino y mediante dos transistores invierte dichas señales a las entradas del L293, como se ha descrito.

OTRO EJEMPLO.

En este caso, se presenta un código, que no utiliza la librería Stepper.h. En este ejemplo, he incorporado un potenciómetro mediante el cual se puede variar la velocidad, consigo una velocidad continua sin saltarme ningún paso, cosa frecuente hasta lograr las condiciones adecuadas.

Bipolar Stepper.

En este ejemplo nos servimos de dos pulsadores para cambiar la dirección de giro.

Nótese que dentro del bucle (loop), se lee el estado del potenciómetro y se utiliza el mapa tipo, para modificar los PWM y suavizar el cambio de velocidad. Así mismo, he intercalado la lectura del estado del pulsador que, nos permite cambiar la dirección de giro, incluso respetando la velocidad anterior sin necesidad de poner a cero, naturalmente esto tiene mucho que ver con la inercia del motor que se utilice. El código empleado, recomendado por los fabricantes, es decir, paso completo que activa dos bobinas al tiempo, esto infiere un alto par motor o torque.

9 comentarios sobre «Motores Bipolares.»

  1. Hola quiero acoplar un motor pasopaso al micrometro del deslizante para hacer pilas de fotos como puedo hacer que el motor funcione un solo paso y me permita pulsar para hacer la foto otro paso y hacer otra foto y asi sucesibamente hasta que considere que enfocado toda la imagen completa.

  2. Hola
    Excelente truco ese de controlar con 2 hilos.
    Tengo una consulta.
    Para hacerme la vida más fácil existe algún integrado capaz similar al que describes que maneje 5A ya que tengo que controlar un motor phyBASIC tipo Wire leads.
    Agradesco de antemano tu respuesta.
    Saludos

    1. Hola Noriel Hurtado.

      El L293D tiene sus salidas con un máximo de 1A (2A pico), por lo tanto, no creo que puedas utilizar directamente sus salidas para lo que tu indicas. No obstante, tal vez atacando un transistor que te de los 5A que necesitas a través de una resistencia de 1K. Necesitarías 4 transistores uno por salida, quizás te funcione, pero no lo he probado.

      Espero te sirva mi punto de vista.

      Saludos.

  3. Hola, ¿Podria hacer un articulo de como controlar 3 motores paso a paso bipolares (de 4 cables cada uno) utilizando arduino uno+modulos L293D pero sin el truco del transistor (para no liarme con tanto componente)? Creo que haria falta un multiplexor, idealmente seria el Multiplexor Analogico de 16 Canales 74hc4067 que es el que se consigue por esta zona. Para Ud. seguramente sera facil, a mi se me complica entre la programacion y las conexiones. La idea es usarlo para una maquina CNC para fresar placas de circuito impreso, por lo que tendrá que funcionar con algun software como el match3. Muchas gracias. Saludos cordiales.

    1. Hola Marcelo.

      El circuito que indicas en base al L298N supongo que es debido a que tus motores requieren más amperaje. Por otra parte no entiendo la necesidad de un multiplexor.
      Por lo tanto, si no necesitas más de 1Amperio para tus motores, con el L293D sería suficiente y considero que debes utilizar los transistores para una mejor funcionalidad.

      Saludos.

  4. Hola buenas tardes.
    Consulta, ¿Como puedo conectar un Stepper de 2048rpm con un RFID?
    En la programación tengo que hacer de que cuando el stepper esté a 0° se mueva hacia 90°. Y que el arduino lea de que si ya está a 90° se mueva hasta 0°.
    Utilicé la compuerta FOR, pero se me complica porque no me deja compilarlo ya que el Stepper no se puede leer su «ángulo ni su rpm» en el que está colocado en X momento.
    Hasta donde sé, no existe algo similar al «stepper.read();», asique, ¿Cómo podría hacer para que el arduino lea su posición? o alguna idea para saber cómo solucionar esto?

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.