VictorJAM.zapto.org
Electrónica  Arduino 

2021-05-20

Funcionamiento de un motor bipolar y los drivers A4988/DRV8255

Funcionamiento del motor paso a paso bipolar.

Al contrario que en un motor unipolar, en un motor bipolar no tenemos disponible el centro de cada juego de bobinas. Para poder magnetizar de forma correcta cada bobina hemos de cambiar la polaridad de cada juego de bobinas de una manera adecuada.

En la siguiente animación vemos como se han de alimentar las bobinas para realizar un giro usando FULL-STEP (paso-completo). También podemos usar SIMPLE-STEP (paso-simple), en la cual solo energizamos una bobina a la vez.

Como ventaja tenemos que el motor es más fácil de fabricar y se precio será menor. Pero por contra, la lógica de control se complica.

En un motor unipolar basta con energizar una o dos bobinas a la vez y esto se puede realizar con driver hechos con solo transistores (o circuitos como el uln2003 que reducen el tamaño).

En un motor bipolar hay que recurrir a circuitos más complejos como los puente-H.

¿Qué son los drivers A4988 o DRV8825?

El A4988 o DRV8825 son controladores (drivers) que simplifican el manejo de motores paso a paso desde un microcontrolador como puede ser Arduino.

Estos drivers nos permiten manejar los altos voltajes e intensidades que requieren estos motores, limitar la corriente que circula por el motor, y proporcionan las protecciones para evitar que la electrónica pueda resultar dañada.

Para el control se requieren únicamente dos salidas digitales, una para el sentido de giro y otra para comunicar que queremos que el motor avance un paso.

Ambos dispositivos son similares en montaje y en uso. Incluso pueden ser compatibles entre si y podemos usar indistintamente uno u otro bajo ciertas condiciones. El DRV8825 es una versión mejorada del A4988, por lo que sus características son ligeramente superiores, soportando mayor tensión y corriente.

Modelo A4988 DRV8825
Color Verde o rojo Morado
Intensidad máxima 2A 2.5A
Tensión máxima 35V 45V
Micropasos 16 32
Rs típico 0.05/0.1/0.2 0.1
Fórmulas Imax=Vref/(8*Rs) Imax=Vref/(5*Rs)

Ambos controladores suelen calentarse durante su funcionamiento y es necesario disipar el calor para que el dispositivo no se dañe. Para intensidades superiores a 1A el A4988 necesitará disipador, el DRV8825 a los 1.5A; incluso puede que necesiten ventilación forzada.

Dada su facilidad de uso y el precio bajo son drivers muy usados en maquinas CNC, plotters, robots, impersoras 3D, etc.

¿Cómo funcionan?

Como la mayoría de controladores de motores el componente principal es el puente H, en ambos casos se utilizan transistores MOSFET.

Pero a diferencia de otros controladors más simples como el L298N o el L293D, estos presentan una lógica de control más compleja.

Uno de los motivos para esta complejidad es que unicamente se requieren dos señales digitales de control para hacer funcionar el motor, y que incorporan las protecciones necesarias para su manejo, además del poder controlar el motor mediante micropasos.

Regulación de intensidad (CHOPPING).

Ambos controladores tienen reguladores de intensidad incorporados. El motivo es que los motores paso a paso de cierto tamaño y potencia necesitan tensiones superiores a las que podrían soportar por su corriente nominal.

Pongamos un ejemplo: un motor de 1.2A y 1.5 ohmios por fase. Según la ley de Ohm deberíamos aplicar 1.8V a cada bobina para que circulen los 1.2A, sin embargo, con esa tensión el motor ni se movería.

Para que el motor se mueva necesitamos aplicar una tensión superior. Podemos usar 12V para alimentar el motor, pero si aplicamos la ley de Ohm nuevamente la corriente resultante es de 8A la cual destruirá el motor.

Pero la ley de ohm se ha de cumplir, asi que inevitablemente si alimentamos a 12V pasaran 8A.

EL limitador interrumpe la señal proporcionano una señal PWM de forma que el valor promedio de la intensidad de la bobina es la intensidad nominal del motor. En nuestro ejemplo, cuando alimentemos a 12V se generará un pulso del 15% y el 85% restante mantendrá apagado el motor.

A este mecanismo de limitación de intensidad se le domina Chopping

Cada driver dispone de unas resistencias shunt para el sensado de la corriente que circula para cada bobina. Internamente el chip lee la caida de tensión que se produce al circular la corriente y la compara con una tensión de referencia.

Dicha tensión de referencia se obtiene mediante un potenciometro colocado en la placa que conforma un divisor de tensión, obteniendo así un voltaje con el que comparar con el obtenido en la resistencia de shunt.

El cálculo interno es más complejo, con lo que cada fabricante proporciona una fórmula en los datasheet de cada chip.

Dependiendo del fabricante del módulo se pueden utilizar distintos valores de resistencia shunt, llegando a poder ser valores de 0.1, 0.2 o 0.5 ohmios.

No obstante, el valor obtenido mediante la formula es sólo una aproximación y puede ser inexacto con lo que puede usarse para una calibración inicial y hacer un ajuste fune midiendo la corriente real que proporciona el controlador mediante un amperímetro.

Veremos estos calculos cuando expliquemos el montaje del driver.

Micropasos

Los micropasos o microstepping es una técnica que permite obtener pasos inferiores al paso nominal del motor paso a paso que vamos a controlar.

Recordemos que el control de un paso a paso se hace mediante las secuencias de paso simple o paso completo, pero en ningún momento se ha dicho que la bobina tenga que estar completamente encencida o apagada.

El microstepping hace variar la corriente aplicada a cada bobina emulando un valor analógico. Si puedieramos ver la señal en cada bobina, veriamos dos señales senoidales perfectas desfasados 90º. Con ello se genera un campo magnético giratorio perfecto en el interior del motor.

Cabe decir que la señal generada no es una señal analógica pura, si no valores discretos ("a saltos"). Con ello conseguimos generar un campo magnetico rotativo con un paso inverior al paso nominal, que dependera del número de niveles discretos de la señal.

Los fabricantes han diseñado ambos chips de tal manera que debemos limitar la corriente al 70% cuando estamos usando full-step, pero esta corriente será del 100% sin usamos micropasos. Este dato lo debemos tener en cuenta cuando vayamos a ajustar nuestros drivers.

La resolución con la que queremos que funcione el controlador se hace mediante los pines M0, M1 y M2 (o MS1, MS2 y MS3, el nombre depende del driver). Estos pines estan en configuración PULL-DOWN, con lo que al dejarlos al aire lo dejamos a nivel bajo.

RESOLUCIÓN PINS
A4988 DRV8825 MO M1 M2
FULL FULL LOW LOW LOW
1/2 paso 1/2 paso HIGH LOW LOW
1/4 paso 1/4 paso LOW HIGH LOW
1/8 paso 1/8 paso HIGH HIGH LOW
- 1/16 paso LOW LOW HIGH
- 1/32 paso HIGH LOW HIGH
- 1/32 paso LOW HIGH HIGH
1/16 1/32 paso HIGH HIGH HIGH

Proceso de montaje

El proceso de montaje del A4988 o el DRV8825 no es demasiado complicado. La única parte que resulta un poco peliaguda es el proceso de ajuste y calibración del regulador de intensidad.

En la siguiente imagen tenemos el pinout del A4988:

Y en la siguiente el driver DRV8825.

Como vemos, los drivers son muy similares y su conexión es igual en ambos. La única diferencia está en el pin 10. Mientras que en el A4988 este pin es el pin de alimentación de 5 voltios de la lógica de control, en el DRV8825 no es necesaria una alimentación ya que esté genera una interna a partir de la alimentación del motor. En su lugar, este pin se llama FAULT y es una entrada para indicarle que hay un fallo y debe para el motor. Es activa bajo, por lo que hemos de llevarla a +5V para que funcione.

Hay que tener en cuenta que los drivers son muy sensibles a la conexión desconexión de cables en caliente, sobretodo en la parte de los motores. Cualquier operación que realizemos sobre el modulo deberemos hacerlo sin tener alimentado el circuito.

El potenciometro no tiene un tope físico, o al menos uno de gran fuerza, por lo que es muy fácil pasarse de rosca cuando lo manejamos, así que seremos prudentes a la hora de manejarlo. Conviene utilizar un destornillador plano, ya que la cabeza del potenciometro parece una cabeza philips, pero no nos valdrá ninguno para realizar la operación.

Para ajustar el driver podemos realizar el siguiente montaje:

Los condensadores de 100uF y 100nF son necesarior para filtrar ruidos procedentes de la conmutación del motor, y son necesarios, ya que podemos dañar nuestro microcontrolador y el driver.

La tierras GND de microcontrolador y la fuente de 24 voltios están unidas. Esto no es estrictamente necesario, puesto que los modulos internamente conectan dichas tierras. Aún así es coveniente ponerlos.

El pin SLEEP del módulo está conectada mediante una resistencia a 5 voltios, con lo que si la dejamos al aire, el chip tendrá un valor HIGH por defecto y no dormirá. Sin embargo el pin RESET no posee ningún tipo de resistencia y quedará flotante, conviene llevarla a HIGH para no tener problemas. Si no vamos a usar ninguna de estas caracteristicas por separado podemos unir ambos sin problemas proporcionando al RESET un valor HIGH.

El pin ENABLE también posee resistencia PULL-UP con lo que no es necesario conectarlo a nada para que funcione. Lo mismo ocurre que con las entradas de micropasos M0 a M2, aunque en estas es el micro el que lleva las resistencias internas, en este caso de PULL-DOWN.

La fuente de 24V alimentará al motor. Hay que tener en cuenta que hay motores que soportan mas o menos tensión, con lo que si nos pasamos o nos quedamos cortos el motor ni se mueve, vibra o se salta pasos. Por ejemplo, un motor KS43STH40-1204A con una tensión de 12V funciona bien, cuando llegamos a 24V empieza a hacer cosas raras. En cambio, un 17HD34008-22B funciona bien cuando le aplicamos una tensión de 12 o 24V.

Lo recomendable es una fuente de alimentación de laboratorio que permiten el ajuste de la tensión de la salida para ver cual es la tensión adecuada de trabajo.

El amperimetro sirve para ajustar realizar un ajuste fino de la corriente, después de haber ajustado el potenciometro.

En la conexión del motor hemos de tener cuidado. 1A y 2B se corresponden a una bobina. 2A y 2B se corresponden a la otra bobina. El orden de cableado no importa mucho ya que solo cambiará el giro del motor. Pero si hay que tener cuidado en como está cableado el motor.

Por ejemplo en el 17HD34008-22B tenemos el siguiente cableado:

Y en el KS43STH40-1204A es el siguiente:

Como se puede observar, el conector es el mismo, pero la disposición de las bobinas no coinciden. Generalmente cuando compramos el motor paso a paso nos vendrá con un cable, dicho cable ya estará preparado para conectar directamente el motor. Si no fuera así debemos buscar las bobinas.

Ajustando el driver.

Para ajustar el driver los pasos serán los siguientes:

1.- Comprobaremos antes de hacer nada el valor de las resistencias de shunt. Para ello hemos de buscarlas en el módulo. Generalmente serán dos resistencias un poco más grandes que las demás.

2.- Calcularemos la tensión de referencia a poner, usando la fórmula de cada módulo, y aplicandóle un 70%. Por ejemplo. Supongamos que usamos un driver A4988, cuya fórmula es Vref = Imax*8*Rs, y un motor paso a paso de 1.2A, con una resistencia shunt de 0.1 ohmios. Aplicando la formula Vref=1.2*8*0.1=0.96V. Como dijimos, a este valor hay que calcular el 70%, con lo que la tensión de referencia Vref será 0.672.

3.- Desconectaremos el motor. El motor no debe estar enchufado.

4.- Conectaremos el Arduino para que proporcione la fuente de tensión de la lógica del modulo.

5.- Mediremos la tensión en el potenciometro, e iremos moviéndolo para haste que el polimetro marque la tensión de 0.672 voltios obtenida.

Puede que nos ocurra, en el caso del DRV8825 no nos marque tensión en el potenciometro, para poder entonces ajustar el potenciometro los fabricantes de módulos habilitan un "agujero" en la placa donde podremos colocar nuestra punta del polimetro.

6.- Desconectamos Arduino.

7.- Conectamos el motor.

8.- Conectamos de nuevo Arduino, y encendemos la fuente del motor.

9.- Haremos un ajuste fino, observando la corriente de la bobina del motor. Este paso quizás no sea necesario y para la mayoria de aplicaciones con solo ajustar el potenciometro será bastante.

Si se usa una fuente de laboratorio se observará un detalle que puede llegar a causar confusión.

Como se observa en la imagen mientras que la fuente estás suministrando 0.17A en el polimetro (que está puesto como amperimetro), se observa que si hay 0.47A. Esto obedece al principio de CONSERVACIÓN DE LA ENERGIA.

Si medimos la tensión de la bobina, está rondará los 4voltios, que multiplicado por la corriente nos dará casi unos 2W de potencia. Si comprobamos la potencia que nos da la fuente, veremos que estea es de unos 2W. Teniendo en cuenta que algo de potencia se disipa en forma de calor, llegamos a la conclusión de que todo es como debería ser.

Por este motivo, la corriente se ha de medir en la bobina y no debemos fiarnos de lo que nos diga la fuente. Si hacemos caso a la fuente, nunca conseguiremos ajustar la corriente del motor y podremos dañar algo.

Se puede probar este programa para ver el funcionamiento del motor paso a paso:

#define stepPin 4
#define dirPin  3

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin,  OUTPUT);
  digitalWrite(stepPin, LOW);
  digitalWrite(dirPin,  LOW);
}

void loop() {
  for (int i=0; i<200; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1500);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1500);
  }
  delay(1000);
  digitalWrte(dirPin, !digitalRead(dirPin));
}

Con él, el motor debe dar una vuelta completa en un sentido, detenerse y dar otra vuelta completa hacia el otro sentido.

Referencias

Esquema del driver a4988:

Esquema del driver drv8825:

Los esquemas sirven de referencia dado que existen multiples fabricantes que desarrollan sus propios módulos por lo que estos esquemas no son fiables al 100%.

Articulo original: Motores paso a paso con Arduino y driver A4988 o DRV8825

Video explicativo sobre el ajuste de motores PAP del fabricante POLOLU.

Datasheet del a4988.

Datasheet del drv8825.