¿Has oído hablar del módulo controlador A4988 y Arduino? Si estás interesado en controlar motores paso a paso de una manera eficiente y precisa, ¡este artículo es para ti! En esta guía aprenderás cómo utilizar el módulo A4988 junto con Arduino para controlar tus motores paso a paso de forma sencilla. ¡No te lo pierdas!
Para aplicaciones de motor paso a paso único, un controlador como el L298N está bien, pero si desea construir su propia máquina CNC o impresora 3D, necesitará un controlador de motor paso a paso dedicado como el A4988.
Debido a la simplicidad del control del motor paso a paso y la variedad de modos paso a paso que ofrece el controlador A4988, es una solución ideal para aplicaciones de construcción que requieren un control preciso y confiable del motor paso a paso, como el control de movimiento de bancadas, cabezales y ensamblajes en varios CNC. Aplicaciones de trazado, fresado y versiones de impresora 3D.
También es bastante útil el hecho de que sólo se requieren dos pines para controlar la velocidad y dirección de un motor paso a paso bipolar como el NEMA 17.
¿Sabes cómo funcionan los motores paso a paso?
Los motores paso a paso utilizan un engranaje y electroimanes para hacer girar la rueda paso a paso.
Cada pulso ALTO enviado energiza la bobina, aprieta los dientes más cercanos al engranaje e impulsa el motor un paso hacia adelante.
La forma en que pulsas estas bobinas tiene un gran impacto en el comportamiento del motor.
- La secuencia de impulsos determina el sentido de rotación del motor.
- La frecuencia de los pulsos determina la velocidad del motor.
- El número de pulsos determina cuánto gira el motor.
Chip controlador de motor paso a paso A4988
El corazón del módulo es un controlador de micropasos de Allegro – A4988. A pesar de su pequeño tamaño (0,8″x0,6″), tiene mucho que ofrecer.
El controlador de motor paso a paso A4988 tiene una capacidad de salida de hasta 35 V y ±2 A. Esto le permite controlar un motor paso a paso bipolar como el NEMA 17 con hasta 2 A de corriente de salida por bobina.
Además, la corriente de salida está regulada, lo que permite que el motor paso a paso funcione silenciosamente y elimina la resonancia o el timbre que es común en los diseños de controladores paso a paso no regulados.
Para facilitar la operación, el controlador tiene un traductor integrado. Esto reduce el número de pines de control a solo dos, uno para controlar los pasos y el otro para controlar la dirección de giro.
El controlador ofrece cinco resoluciones de paso diferentes: paso completo, medio paso, cuarto de paso, octavo paso y decimosexto paso.
Para garantizar un funcionamiento confiable, el controlador tiene características adicionales como protección contra subtensión, disparo, cortocircuito, sobrecorriente y térmica.
Especificaciones técnicas
Aquí puedes encontrar las especificaciones completas:
Tensión de salida del motor | 8V – 35V |
Tensión de entrada lógica | 3V – 5.5V |
Corriente continua por fase | 1A |
Corriente máxima por fase | 2A |
Resolución de micropasos | completo, 1/2, 1/4, 1/8 y 1/16 |
Puede encontrar más información en la siguiente hoja de datos.
Distribución de pines del controlador del motor A4988
El controlador A4988 tiene un total de 16 pines que lo conectan con el mundo exterior. La asignación de pines es la siguiente:
Conozcamos cada pin individualmente.
Pines de alimentación
El A4988 en realidad requiere dos conectores de alimentación.
VDD Y Tierra Se utilizan para alimentar el circuito lógico interno, que puede estar entre 3V y 5,5V.
Mientras que,
VMOT Y Tierra Suministra energía al motor, que puede ser entre 8V y 35V.
Según la hoja de datos, para mantener 4A, el suministro del motor necesita un condensador de desacoplamiento adecuado cerca de la placa.
Advertencia:
A pesar de la presencia de condensadores cerámicos de baja ESR a bordo, este controlador sólo está parcialmente protegido contra picos de voltaje. En algunos casos, estos picos pueden exceder los 35 V (el voltaje nominal máximo del A4988), lo que podría causar daños permanentes a la placa de circuito e incluso al motor.
Una forma de proteger al controlador de tales picos de voltaje es colocar un capacitor electrolítico grande de 100 μF (o al menos 47 μF) entre las clavijas de alimentación del motor.
Pines de selección de micropasos
El controlador A4988 admite micropasos al dividir un solo paso en pasos más pequeños. Esto se logra energizando las bobinas con corrientes medias.
Por ejemplo, si elige accionar el NEMA 17 (con un ángulo de paso de 1,8° o 200 pasos/revolución) en modo de cuarto de paso, el motor producirá 800 micropasos por revolución.
El controlador A4988 tiene tres entradas de selección de tamaño de paso (resolución): MS1, MS2 y MS3. Al configurar los niveles lógicos apropiados para estos pines, podemos configurar el motor en una de las cinco resoluciones de paso.
MS1 | MS2 | MS3 | Resolución de micropasos |
Bajo | Bajo | Bajo | paso completo |
Alto | Bajo | Bajo | Medio paso |
Bajo | Alto | Bajo | Cuarto de paso |
Alto | Alto | Bajo | octavo paso |
Alto | Alto | Alto | decimosexto paso |
Estos tres pines de selección de micropasos se bajan mediante resistencias desplegables internas. Entonces, si no los conecta, el motor funcionará en modo de paso completo.
Pines de entrada de control
El A4988 tiene dos entradas de control: STEP y DIR.
PASO La entrada controla los micropasos del motor. Cada pulso ALTO enviado a este pin impulsa el motor de acuerdo con el número de micropasos establecidos por los pines de selección de micropasos. Cuanto mayor es la frecuencia del pulso, más rápido gira el motor.
TÚ La entrada controla la dirección de rotación del motor. Tirarlo a ALTO hace que el motor gire en el sentido de las agujas del reloj, tirarlo a BAJO lo gira en sentido antihorario.
Si desea que el motor gire solo en una dirección, puede conectar el DIR directamente a VCC o GND.
Los pines STEP y DIR no se ajustan a un voltaje específico, por lo que no debe dejarlos flotar en su aplicación.
Pines para controlar los estados de energía.
El A4988 tiene tres entradas separadas para controlar sus estados de energía: EN, RST y SLP.
ES es un pin de entrada baja activo. Cuando este pin se baja, el controlador A4988 está habilitado. Por defecto, este pin está bajado. Entonces, a menos que lo tire hacia arriba, el controlador siempre estará habilitado. Este pin es particularmente útil cuando se implementa un sistema de parada o apagado de emergencia.
SLP es un pin de entrada baja activo. Al tirar de este pin a BAJO, el controlador entra en modo de suspensión, lo que mantiene el consumo de energía al mínimo. Puede utilizar esto para ahorrar electricidad, especialmente cuando el motor no está en uso.
primero También es una entrada baja activa. Cuando este pin se baja, todas las entradas de PASO se ignoran. También restablece el controlador configurando el traductor interno en un estado «Inicio» predefinido. El estado inicial es básicamente la posición inicial desde la que arranca el motor y varía según la resolución de los micropasos.
RST es un pasador flotante. Si no está utilizando este pin, conéctelo a un pin SLP/SLEEP adyacente para configurarlo en alto y habilitar el controlador.
Después del evento de activación (lógica ALTA en el pin SLEEP), espere 1 milisegundo antes de emitir un comando de paso para permitir que la bomba de carga se estabilice.
pines de salida
Los canales de salida del controlador del motor A4988 tienen pines separados en el costado del módulo. 1B, 1A, 2A y 2B.
Puede conectar cualquier motor paso a paso bipolar de tamaño pequeño a mediano a estos pines, p. B. NEMA 17.
Cada pin de salida puede suministrar hasta 2A al motor. Sin embargo, la cantidad de energía suministrada al motor está determinada por la fuente de alimentación, el sistema de enfriamiento y la configuración del límite de corriente del sistema.
Sistema de refrigeración – disipador de calor
La disipación excesiva de energía del CI del controlador A4988 dará como resultado un aumento de temperatura que podría dañar el CI si excede su capacidad.
Aunque el controlador IC A4988 tiene una corriente nominal máxima de 2 A por bobina, solo puede entregar aproximadamente 1 A por bobina sin sobrecalentarse. Para lograr más de 1 A por bobina, se requiere un disipador de calor u otro método de enfriamiento.
Normalmente el controlador A4988 viene con el disipador de calor. Se recomienda instalar el disipador de calor antes de utilizar el controlador.
Limitación actual
Antes de arrancar el motor, debe limitar la corriente máxima que fluye a través de las bobinas paso a paso para que no exceda la corriente nominal del motor.
El controlador A4988 tiene un pequeño potenciómetro de ajuste para ajustar el límite de corriente.
Hay dos métodos para este ajuste:
Método 1:
En este método, el límite de corriente se determina midiendo el voltaje (Vref) en el pin «ref».
- Mire la hoja de datos de su motor paso a paso. Anota la corriente nominal. En nuestro caso se utiliza NEMA 17 200 pasos/revolución, 12V 350mA.
- Desconecte los tres pines de selección de micropasos para poner el controlador en modo de paso completo.
- Mantenga el motor en una posición fija sin sincronizar la entrada STEP.
- Mida el voltaje (Vref) en el potenciómetro de metal mientras lo ajusta.
- Ajuste el voltaje Vref usando la fórmula
Vref = límite actual / 2,5
Por ejemplo, si su motor tiene una tensión nominal de 350 mA, establecería la tensión de referencia en 0,14 V.
Puede realizar este ajuste rápida y fácilmente conectando un extremo del cable de prueba con pinza de cocodrilo al eje de un destornillador de metal y el otro extremo a su multímetro. Esto le permite medir el voltaje a medida que realiza el ajuste.
Método 2:
En este método, el límite de corriente se determina midiendo la corriente que fluye a través de la bobina.
- Mire la hoja de datos de su motor paso a paso. Anota la corriente nominal. En nuestro caso se utiliza NEMA 17 200 pasos/revolución, 12V 350mA.
- Desconecte los tres pines de selección de micropasos para poner el controlador en modo de paso completo.
- Mantenga el motor en una posición fija sin sincronizar la entrada STEP. No deje la entrada STEP flotando; En su lugar, conéctelo a una fuente de alimentación lógica (5V).
- Conecte el amperímetro en serie con una de las bobinas de su motor paso a paso y mida la corriente real que fluye.
- Tome un destornillador pequeño y ajuste el potenciómetro limitador de corriente hasta alcanzar la corriente nominal.
Si alguna vez cambia el voltaje lógico (VDD), deberá repetir este ajuste.
Cableado de un controlador de motor paso a paso A4988 a un Arduino
Ahora que sabemos todo sobre el controlador, conectémoslo a nuestro Arduino.
Las conexiones son sencillas. Comience conectando VDD y GND (al lado de VDD) a los pines de 5V y tierra del Arduino. Conecte los pines de entrada DIR y STEP a los pines de salida digital n.° 2 y n.° 3 del Arduino.
Conecte el motor paso a paso a los pines 2B, 2A, 1A y 1B. De hecho, el módulo A4988 está convenientemente diseñado para adaptarse al conector de 4 pines de los motores paso a paso bipolares, por lo que esto no debería ser un problema.
Advertencia:
No intente conectar o desconectar el motor paso a paso mientras el controlador esté en funcionamiento. Esto podría causar daños al conductor.
Para mantener el controlador habilitado, conecte el pin RST al pin SLP/SLEEP adyacente. Deje los pines de selección de micropasos desconectados si desea operar el motor en modo de paso completo.
Finalmente, conecte la fuente de alimentación del motor a los pines VMOT y GND. Recuerde colocar un condensador electrolítico de desacoplamiento grande de 100 μF entre los pines de alimentación del motor para evitar grandes picos de voltaje.
Código Arduino – Sin biblioteca
El siguiente esquema muestra cómo controlar la velocidad y la dirección de rotación de un motor paso a paso bipolar con el controlador de motor paso a paso A4988 y puede servir como base para futuros experimentos y proyectos prácticos.
// Define pin connections & motor's steps per revolution
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;
void setup()
{
// Declare pins as Outputs
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop()
{
// Set motor direction clockwise
digitalWrite(dirPin, HIGH);
// Spin motor slowly
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin, LOW);
delayMicroseconds(2000);
}
delay(1000); // Wait a second
// Set motor direction counterclockwise
digitalWrite(dirPin, LOW);
// Spin motor quickly
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin, LOW);
delayMicroseconds(1000);
}
delay(1000); // Wait a second
}
Explicación del código:
El boceto comienza definiendo los pines Arduino a los que están conectados los pines STEP y DIR del A4988. una variable llamada stepsPerRevolution
también está definido. Puede ajustarlo para que coincida con las especificaciones de su motor paso a paso.
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;
En el área de configuración, todos los pines de control del motor están configurados como SALIDA digital.
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
En la sección de bucle, el motor gira lentamente en el sentido de las agujas del reloj y luego rápidamente en el sentido contrario a las agujas del reloj cada segundo.
Controlar la dirección de giro: Para controlar la dirección de rotación del motor, el pin DIR se establece en ALTO o BAJO. Una entrada ALTA hace girar el motor en el sentido de las agujas del reloj, mientras que una entrada BAJA lo hace en el sentido contrario a las agujas del reloj.
digitalWrite(dirPin, HIGH);
Control de velocidad: La frecuencia de los pulsos enviados al pin STEP determina la velocidad del motor. Cuanto mayor sea la frecuencia del pulso, más rápido funcionará el motor. Un pulso simplemente pone la salida en ALTO, espera unos milisegundos, luego la pone en BAJA y espera nuevamente. Ajustando el retardo, se puede cambiar la frecuencia de los pulsos y por tanto la velocidad del motor.
for(int x = 0; x < stepsPerRevolution; x++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin, LOW);
delayMicroseconds(1000);
}
Código Arduino: uso de la biblioteca AccelStepper
Para aplicaciones simples de un solo motor, controlar un motor paso a paso sin una biblioteca es completamente suficiente. Sin embargo, si desea controlar varios motores paso a paso, debe utilizar una biblioteca.
Entonces, para nuestro próximo experimento usaremos una biblioteca de motores paso a paso extendida llamada Biblioteca AccelStepper. Soporta:
- Aceleración y desaceleración.
- Múltiples pasos simultáneos con pedaleo simultáneo independiente en cada paso.
Esta biblioteca no está incluida en el IDE de Arduino, por lo que primero debes instalarla.
Instalación de biblioteca
Para instalar la biblioteca, navegue hasta Bosquejo > Incluir bibliotecas > Administrar bibliotecas… Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.
Filtra tu búsqueda escribiendo “Acelerador'. Haga clic en la primera entrada y luego seleccione Instalar.
código arduino
Aquí hay un boceto simple que acelera el motor paso a paso en una dirección y luego desacelera hasta detenerse. Después de una revolución, el motor invierte su sentido de rotación y repite el proceso.
// Include the AccelStepper Library
#include <AccelStepper.h>
// Define pin connections
const int dirPin = 2;
const int stepPin = 3;
// Define motor interface type
#define motorInterfaceType 1
// Creates an instance
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
// set the maximum speed, acceleration factor,
// initial speed and the target position
myStepper.setMaxSpeed(1000);
myStepper.setAcceleration(50);
myStepper.setSpeed(200);
myStepper.moveTo(200);
}
void loop() {
// Change direction once the motor reaches target position
if (myStepper.distanceToGo() == 0)
myStepper.moveTo(-myStepper.currentPosition());
// Move the motor one step
myStepper.run();
}
Explicación del código:
El boceto comienza integrando la biblioteca AccelStepper recién instalada.
#include <AccelStepper.h>
Primero, se definen los pines Arduino a los que se conectan los pines STEP y DIR del A4988. El motorInterfaceType
también se establece en 1. (1 significa un controlador paso a paso externo con pasadores paso a paso y de dirección).
// Define pin connections
const int dirPin = 2;
const int stepPin = 3;
// Define motor interface type
#define motorInterfaceType 1
A esto le sigue una instancia de la biblioteca paso a paso con el nombre myStepper
creado.
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
En la función de configuración, la velocidad máxima permitida del motor se establece en 1000 (el motor acelera a esta velocidad cuando lo dejamos funcionar). Luego se ajusta la tasa de aceleración/desaceleración para acelerar y desacelerar aún más los movimientos del motor paso a paso.
La velocidad constante se establece en 200. Y como el NEMA 17 realiza 200 pasos por revolución, la posición objetivo también se establece en 200.
void setup() {
myStepper.setMaxSpeed(1000);
myStepper.setAcceleration(50);
myStepper.setSpeed(200);
myStepper.moveTo(200);
}
En la función de bucle a If
La instrucción se utiliza para determinar qué tan lejos debe viajar el motor (leyendo el distanceToGo
propiedad) antes de que se alcance la posición objetivo (determinada por moveTo
). Si eso distanceToGo
Llega a cero, el ajuste hará girar el motor en la dirección opuesta moveTo
Posición al negativo de su posición actual.
Al final del ciclo notarás que run()
se llama la función. Esta es la función más crítica porque el paso a paso no se moverá si no se realiza esta función.
void loop() {
if (myStepper.distanceToGo() == 0)
myStepper.moveTo(-myStepper.currentPosition());
myStepper.run();
}
Controla el motor paso a paso con el módulo controlador A4988 y Arduino
Para aplicaciones de motor paso a paso individuales, un controlador como el L298N es adecuado, pero si deseas construir tu propia máquina CNC o impresora 3D, necesitarás un controlador de motor paso a paso dedicado como el A4988.
Cómo funcionan los motores paso a paso
Los motores paso a paso utilizan una rueda dentada y electromagnetos para rotar la rueda un ‘paso’ a la vez. Cada pulso ALTO enviado energiza la bobina, atrayendo los dientes más cercanos a la rueda dentada y haciendo avanzar el motor un paso. La forma en que pulsas estas bobinas afecta en gran medida el comportamiento del motor. La secuencia de pulsos determina la dirección de giro del motor. La frecuencia de los pulsos determina la velocidad del motor. El número de pulsos determina cuánto girará el motor.
Chip controlador de motor paso a paso A4988
En el corazón del módulo se encuentra un controlador de microstepping de Allegro, el A4988. A pesar de su pequeño tamaño (0.8″x0.6″), tiene una gran capacidad. El controlador A4988 tiene una capacidad de salida de hasta 35V y ±2A, lo que te permite controlar un motor paso a paso bipolar, como el NEMA 17, hasta 2A de corriente de salida por bobina.
Especificaciones técnicas del A4988
- Voltaje de salida del motor: 8V – 35V
- Voltaje de entrada lógica: 3V – 5.5V
- Corriente continua por fase: 1A
- Corriente máxima por fase: 2A
- Resolución de microstep: completo, 1/2, 1/4, 1/8 y 1/16
Conexiones de pines del A4988
El controlador A4988 tiene un total de 16 pines que lo conectan al mundo exterior.
Clavijas de alimentación
El A4988 requiere dos conexiones de suministro de energía: VDD y GND para alimentar la lógica interna y VMOT y GND para alimentar el motor.
Clavijas de selección de microstep
El controlador A4988 soporta microstepping al dividir un solo paso en pasos más pequeños. Esto se logra energizando las bobinas con niveles de corriente intermedios. Puedes seleccionar uno de cinco tamaños de microstep ajustando las clavijas MS1, MS2 y MS3.
Protección contra picos de tensión y limitación de corriente
El controlador A4988 tiene protección contra bajo voltaje, cortocircuito, sobrecorriente y protección térmica. Para limitar la corriente máxima que fluye a través de las bobinas del motor, puedes ajustar el potenciómetro de corriente.
Cableado de un controlador de motor paso a paso al Arduino
Las conexiones son sencillas. Comienza conectando VDD y GND al Arduino, DIR y STEP a las salidas digitales, y el motor a los pines 2B, 2A, 1A y 1B. No intentes conectar o desconectar el motor mientras el controlador está funcionando.
Código de Arduino – Sin biblioteca
Aquí tienes un código simple para controlar la velocidad y la dirección de un motor paso a paso bipolar utilizando el controlador A4988.
Código de Arduino – Usando la biblioteca AccelStepper
Para controlar un motor paso a paso de manera más avanzada, puedes utilizar la biblioteca AccelStepper que admite aceleración, deceleración y movimiento simultáneo de varios motores.
¡Esperamos que esta información te haya sido útil para controlar tu motor paso a paso con el módulo controlador A4988 y Arduino!
¡Interesante artículo! ¡Gracias por compartir!
¡Gracias por el tutorial! Me encantaría probar a controlar un motor paso a paso con el módulo A4988 y Arduino. ¡Excelente explicación!
¡Genial tutorial! Me motivó a experimentar con el control del motor paso a paso usando el controlador A4988 y Arduino. ¡Gracias por la información!
¡Buena explicación! Me ayudó mucho a entender cómo controlar el motor paso a paso con Arduino. ¡Gracias!
¡Se agradece la explicación detallada sobre cómo controlar el motor paso a paso! Me dio la confianza para probarlo por mi cuenta. ¡Gracias por la info!