Controlar un motor paso a paso con un driver A4988 y Arduino es una manera sencilla y efectiva de llevar a cabo proyectos de robótica y automatización. En este artículo, te mostraremos paso a paso cómo utilizar estos componentes para lograr un movimiento preciso y controlado en tus creaciones. ¡Sigue leyendo para descubrir cómo dominar esta técnica y llevar tus proyectos al siguiente nivel!
En este tutorial de Arduino, aprenderemos cómo controlar un motor paso a paso utilizando el controlador de motor paso a paso A4988. Puede ver el vídeo a continuación o leer el tutorial escrito a continuación.
También hay otro tutorial más detallado sobre el control de motores paso a paso con Arduino y el controlador de motor paso a paso A4988, DRV8825 y TMC2208.
descripción general
El A4988 es un controlador de micropasos para controlar motores paso a paso bipolares con un traductor integrado para una fácil operación. Esto significa que podemos controlar el motor paso a paso con sólo 2 pines de nuestro controlador, o uno para controlar el sentido de rotación y el otro para controlar los pasos.
El>
Su voltaje lógico es de 3 a 5,5 V y la corriente máxima por fase es de 2 A cuando se proporciona una buena refrigeración adicional, o 1 A de corriente continua por fase sin disipadores de calor ni refrigeración.
Configuración de pines del controlador del motor paso a paso A4988
Ahora echemos un vistazo más de cerca a la distribución de pines del controlador y conéctelo al motor paso a paso y al controlador. Comenzamos con los dos pines del lado derecho del botón para alimentar el controlador, el VDD y los pines de tierra, que necesitamos conectar a una fuente de alimentación de 3 a 5,5 V, y en nuestro caso ese es nuestro controlador, esa placa Arduino. proporcionando 5V. Los siguientes 4 pines se utilizan para conectar el motor. Los pines 1A y 1B están conectados a una bobina del motor y los pines 2A y 2B a la otra bobina del motor. Para alimentar el motor utilizamos los siguientes 2 pines, tierra y VMOT, que necesitamos conectar a una fuente de alimentación de 8 a 35V y también necesitamos un condensador de desacoplamiento de al menos 47uF para proteger la placa del controlador de picos de voltaje.
Los>
Con el pin de paso controlamos los micropasos del motor y con cada pulso enviado a este pin el motor avanza un paso. Esto significa que no necesitamos programación compleja, tablas de secuencia de fases, líneas de control de frecuencia, etc. ya que el traductor integrado del controlador A4988 se encarga de todo. Aquí también debemos mencionar que estos dos pines no reciben voltaje internamente, por lo que no debemos hacerlos flotar en nuestro programa.
Luego viene el pin SLEEP y una lógica baja pone la placa en modo de suspensión para minimizar el consumo de energía cuando el motor no está en uso.
A continuación, el pin RESET establece el traductor en un estado inicial predefinido. Este estado inicial o posición de micropaso inicial se puede ver en estas ilustraciones en la hoja de datos A4988. Estas son las posiciones iniciales desde donde arranca el motor y son diferentes según la resolución de los micropasos. Si el estado de entrada de este pin es lógico bajo, se ignoran todas las entradas STEP. El pin de reinicio es un pin flotante. Entonces, si no queremos controlarlo en nuestro programa, necesitamos conectarlo al pin SLEEP para elevarlo y activar el tablero.
Los>
El último pin, el pin ENABLE, se utiliza para activar y desactivar las salidas FET. Un nivel lógico alto mantiene las salidas desactivadas.
Componentes necesarios para este tutorial de Arduino
Puede obtener los componentes en uno de los siguientes sitios web:
- Motor paso a paso (NEMA17)……….. Amazon / Banggood / AliExpress
- Controlador de motor paso a paso A4988………….. Amazon / Banggood / AliExpress
- Adaptador 12V 2A…………………………. Amazon / Banggood / AliExpress
- Conexión eléctrica……………………………… Amazon / Banggood / AliExpress
- Placa Arduino………………………… Amazon / Banggood / AliExpress
- Cables de puente y placa de pruebas……. Amazon / Banggood / AliExpress
Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.
Diagramas de circuito
Aquí están los esquemas completos. Usaré la unidad en modo de paso completo, por lo que dejaré los 3 pines MS separados y solo los pines de dirección y paso de la unidad con los pines 3 y 4 en la placa Arduino, así como los pines de tierra y 5 V se conectarán a la alimentación. el tablero. También usaré un condensador de 100 µF para desacoplar y un adaptador de 12 V y 1,5 A para alimentar el motor. Usaré un motor paso a paso bipolar NEMA 17 y sus cables A y C se conectarán a los pines 1A y 1B y los cables B y D se conectarán a los pines 2A y 2B.
A4988 Límite de corriente
Antes de conectar el motor, debemos ajustar el límite de corriente del controlador para estar seguros de que la corriente está dentro de los límites de corriente del motor. Podemos hacerlo ajustando el voltaje de referencia con el potenciómetro en la placa y considerando esta ecuación:
Sin>
Como>
Código Arduino y A4988
Aquí hay un código de ejemplo. Primero necesitamos definir los pines de paso y dirección. En nuestro caso estos son los pines número 3 y 4 de la placa Arduino y se llaman stepPin y dirPin. En la sección de configuración necesitamos definirlos como salidas.
/* Simple Stepper Motor Control Exaple Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
// defines pins numbers
const int stepPin = 3;
const int dirPin = 4;
void setup() {
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
}
void loop() {
digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000); // One second delay
digitalWrite(dirPin,LOW); //Changes the rotations direction
// Makes 400 pulses for making two full cycle rotation
for(int x = 0; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000);
}
Code language: Arduino (arduino)
En la sección de bucle, primero configuramos el pin de dirección en el estado alto, lo que permite que el motor se mueva en una dirección específica. Ahora dejamos que el motor realice un ciclo completo de rotación usando este bucle for. Dado que el controlador está configurado en modo de paso completo y nuestro motor paso a paso tiene un ángulo de paso de 1,8 grados o 200 pasos, necesitamos enviar 200 pulsos al pin paso a paso para completar un ciclo de rotación completo. Entonces, el bucle for tiene 200 iteraciones, cada vez configurando el pin paso a paso en el estado alto y luego en el estado bajo para generar los pulsos. Entre cada escritura digital necesitamos insertar un retraso del cual depende la velocidad del motor.
Después de esta rotación de ciclo completo, hacemos un retraso de un segundo, luego cambiamos la dirección de rotación configurando dirPin en un estado bajo y ahora hacemos dos rotaciones de ciclo completo con este ciclo de 400 iteraciones. Hay otro retraso de un segundo al final. Ahora carguemos el código y veamos cómo funciona.
Creé otro ejemplo para este tutorial donde controlo la velocidad del motor usando un potenciómetro. Aquí está el código fuente de este ejemplo:
/* Simple Stepper Motor Control Exaple Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4;
int customDelay,customDelayMapped; // Defines variables
void setup() {
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
}
void loop() {
customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
// Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
digitalWrite(stepPin, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPin, LOW);
delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
int customDelay = analogRead(A0); // Reads the potentiometer
int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
return newCustom;
}
Code language: Arduino (arduino)
Cómo controlar un motor paso a paso con driver A4988 y Arduino
En este tutorial de Arduino, aprenderemos cómo controlar un motor paso a paso usando el Driver A4988 para motores paso a paso. Este driver es ideal para controlar motores bipolares y cuenta con un traductor incorporado para facilitar su operación. Podemos controlar el motor paso a paso con solo 2 pines de nuestro controlador, uno para controlar la dirección de rotación y otro para controlar los pasos.
El Driver ofrece cinco diferentes resoluciones de paso: paso completo, medio paso, cuarto de paso, octavo de paso y dieciseisavo de paso. También tiene un potenciómetro para ajustar la corriente de salida, protección contra sobrecalentamiento y protección contra corrientes cruzadas.
La tensión lógica va de 3 a 5.5 V y la corriente máxima por fase es de 2 A si se proporciona refrigeración adicional adecuada, o 1 A de corriente continua por fase sin disipador de calor o refrigeración.
Preguntas Frecuentes:
-
¿Cómo se conecta el Driver A4988 con un motor paso a paso y Arduino?
Para conectar el driver con un motor paso a paso y Arduino, se deben seguir las siguientes conexiones:
- Conectar las pines 1A y 1B del driver a una bobina del motor, y las pines 2A y 2B a la otra bobina.
- Conectar los pines de dirección y paso del driver a pines digitales de Arduino.
- Conectar los pines de potencia del driver a una fuente de alimentación de 8 a 35 V.
-
¿Cómo se ajusta la corriente límite del A4988?
La corriente se ajusta utilizando el potenciómetro en el driver y teniendo en cuenta la referencia de voltaje. Es importante ajustar la corriente para que esté dentro de los límites del motor.
- ¿Cómo se controla la velocidad del motor con un potenciómetro?
Se puede controlar la velocidad del motor utilizando un potenciómetro conectado a un pin analógico de Arduino. Esto permite ajustar la velocidad del motor cambiando la resistencia del potenciómetro.
Siguiendo este tutorial y las indicaciones proporcionadas, podrás controlar un motor paso a paso con el Driver A4988 y Arduino de manera efectiva. Experimenta con las diferentes resoluciones de paso y ajustes de corriente para obtener los resultados deseados en tus proyectos. ¡Diviértete creando!