Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

En este tutorial de Arduino aprenderemos a controlar un motor paso a paso usando el driver A4988. Puedes ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

El A4988 es un driver de micro-pasos para controlar motores paso a paso bipolares que tiene un traductor integrado para una fácil operación. Esto significa que podemos controlar el motor paso a paso con solo 2 pines de nuestro controlador, uno para controlar la dirección de rotación y el otro para controlar los pasos.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

El driver proporciona cinco resoluciones de paso diferentes: 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, apagado térmico por sobretemperatura y protección contra corriente de cruce.

Su voltaje lógico es de 3 a 5.5 V y la corriente máxima por fase es de 2A si se proporciona buen enfriamiento adicional o 1A de corriente continua por fase sin disipador de calor o enfriamiento.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Pinout del Driver Paso a Paso A4988

Ahora veamos de cerca el pinout del driver y conectémoslo con el motor paso a paso y el controlador. Empezaremos con los 2 pines en la parte inferior derecha para alimentar el driver, los pines VDD y Ground que necesitamos conectar a una fuente de alimentación de 3 a 5.5 V y en nuestro caso será nuestro controlador, la placa Arduino que proporcionará 5 V. Los siguientes 4 pines son para conectar el motor. Los pines 1A y 1B se conectarán a una bobina del motor y los pines 2A y 2B a la otra bobina. Para alimentar el motor usamos los siguientes 2 pines, Ground y VMOT que necesitamos conectar a una fuente de alimentación de 8 a 35 V y también necesitamos usar un capacitor de desacoplamiento de al menos 47 µF para proteger la placa del driver de picos de voltaje.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Los siguientes 2 pines, Step y Direction, son los pines que realmente usamos para controlar los movimientos del motor. El pin Direction controla la dirección de rotación del motor y necesitamos conectarlo a uno de los pines digitales en nuestro microcontrolador, o en mi caso lo conectaré al pin número 4 de mi placa Arduino.

Con el pin Step controlamos los micro-pasos del motor y con cada pulso enviado a este pin el motor se mueve un paso. Eso significa que no necesitamos ninguna programación compleja, tablas de secuencia de fases, líneas de control de frecuencia, etc., porque el traductor integrado del driver A4988 se encarga de todo. Aquí también necesitamos mencionar que estos 2 pines no están conectados a ningún voltaje internamente, así que no deberíamos dejarlos flotando en nuestro programa.

El siguiente es el pin SLEEP y un nivel lógico bajo pone la placa en modo de suspensión para minimizar el consumo de energía cuando el motor no está en uso.

Luego, el pin RESET establece el traductor a un estado Home predefinido. Este estado Home o posición de micro-paso Home se puede ver en estas figuras de la hoja de datos del A4988. Estas son las posiciones iniciales desde donde el motor comienza y son diferentes dependiendo de la resolución de micro-paso. Si el estado de entrada a este pin es un nivel lógico bajo, todas las entradas STEP serán ignoradas. El pin Reset es un pin flotante, así que si no tenemos intención de controlarlo en nuestro programa, necesitamos conectarlo al pin SLEEP para llevarlo a alto y habilitar la placa.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Los siguientes 3 pines (MS1, MS2 y MS3) son para seleccionar una de las cinco resoluciones de paso según la tabla de verdad anterior. Estos pines tienen resistencias pull-down internas, así que si los dejamos desconectados, la placa operará en modo paso completo.

El último, el pin ENABLE se usa para encender o apagar las salidas FET. Así que un nivel lógico alto mantendrá las salidas deshabilitadas.

Componentes Necesarios para este Tutorial de Arduino

Puedes conseguir los componentes en cualquiera de los siguientes sitios:

  • Motor Paso a Paso (NEMA17)………..
  • Driver Paso a Paso A4988……………..
  • Adaptador 12V 2A……………………….
  • Jack de Alimentación………………………………
  • Placa Arduino …………………………
  • Protoboard y cables jumpers …….

Esquemas de Circuito

Aquí está el esquema completo del circuito. Usaré el driver en modo Paso Completo, así que dejaré los 3 pines MS desconectados y solo conectaré los pines Direction y Step del driver a los pines número 3 y 4 en la placa Arduino, así como Ground y 5V para alimentar la placa. También usaré un capacitor de 100µF para desacoplamiento y un adaptador de 12V, 1.5A 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 a los pines 2A y 2B.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Limitación de Corriente A4988

Antes de conectar el motor deberíamos ajustar la limitación de corriente del driver para asegurarnos de que la corriente está dentro de los límites del motor. Podemos hacerlo ajustando el voltaje de referencia usando el potenciómetro en la placa y considerando esta ecuación:

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Sin embargo, esta ecuación no siempre es correcta ya que hay diferentes fabricantes de la placa driver A4988. Aquí una demostración de mi caso: ajusté el potenciómetro y medí 0.6V de voltaje de referencia. Así que la limitación de corriente debería ser ese valor de 0.6*2, igual a 1.2 A.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Ahora, como estoy usando el driver en modo Paso Completo y según la hoja de datos del A4988 en este modo la corriente del devanado podría alcanzar solo el 70% del límite de corriente, el 1.2A*0.7 sería igual a 0.84A. Para comprobar esto subí un código simple que envía un nivel lógico alto continuo al pin Step (para que podamos notar mejor la corriente) y conecté mi medidor en serie con un devanado del motor y lo alimenté. Lo que obtuve fue 0.5A, lo que significa que la ecuación no era correcta para mi caso.

Control de Motor Paso a Paso con Arduino y Driver A4988: Guía Paso a Paso

Código Arduino y A4988

Aquí hay un código de ejemplo. Primero tenemos que definir los pines Step y Direction. En nuestro caso son los pines número 3 y 4 en la placa Arduino y se llaman stepPin y dirPin y en la sección setup tenemos que definirlos como salidas.

/* Código de Ejemplo Simple Control Motor Paso a Paso
 * 
 * por Dejan Nedelkovski, www.HowToMechatronics.com
 * */
// define números de pines
const int stepPin = 3;
const int dirPin = 4;
void setup() {
  // Configura los dos pines como salidas
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Habilita el motor para moverse en una dirección particular
  // Hace 200 pulsos para hacer una rotación de ciclo completo
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000); // Un segundo de retraso
  digitalWrite(dirPin,LOW); // Cambia la dirección de rotación
  // Hace 400 pulsos para hacer dos rotaciones de ciclo completo
  for(int x = 0; x < 400; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
} Lenguaje: Arduino (arduino)

En la sección loop primero estableceremos el pin Direction en estado alto, lo que permitirá que el motor se mueva en una dirección particular. Ahora, usando este bucle for, haremos que el motor haga una rotación de ciclo completo. Como el driver está configurado en modo 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 Step para hacer una rotación de ciclo completo. Así que el bucle for tendrá 200 iteraciones y cada vez establecerá el pin Step en alto y luego en bajo para crear los pulsos. Entre cada digitalWrite necesitamos agregar algún retraso del cual dependerá la velocidad del motor.

Después de esta rotación completa, haremos un retraso de un segundo, luego cambiaremos la dirección de rotación estableciendo el pin dirPin en un estado bajo y ahora haremos 2 rotaciones de ciclo completo con este bucle de 400 iteraciones. Al final hay un segundo más de retraso. Ahora subamos el código y veamos cómo funciona.

Hice un ejemplo más para este tutorial, donde controlo la velocidad del motor usando un potenciómetro. Aquí está el código fuente de ese ejemplo:

/* Código de Ejemplo Simple Control Motor Paso a Paso
 * 
 * por Dejan Nedelkovski, www.HowToMechatronics.com
 * */
// Define números de pines
const int stepPin = 3;
const int dirPin = 4;
int customDelay,customDelayMapped; // Define variables
void setup() {
  // Configura los dos pines como salidas
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
  digitalWrite(dirPin,HIGH); // Habilita el motor para moverse en una dirección particular
}
void loop() {
  customDelayMapped = speedUp(); // Obtiene valores de retraso personalizados de la función personalizada speedUp
  // Hace pulsos con retraso personalizado, dependiendo del potenciómetro, de la cual depende la velocidad del motor
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(customDelayMapped);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(customDelayMapped);
}
// Función para leer el potenciómetro
int speedUp() {
  int customDelay = analogRead(A0); // Lee el potenciómetro
  int newCustom = map(customDelay, 0, 1023, 300,4000); // Convierte los valores leídos del potenciómetro de 0 a 1023 en valores de retraso deseados (300 a 4000)
  return newCustom;
}Lenguaje: Arduino (arduino)

Proceso de manufactura

  1. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  2. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  3. Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
  4. Control Preciso de Servo con Arduino y MPU6050 (SG90 / MG996R)
  5. Leer Temperatura y Humedad con DHT11 en Blynk – Tutorial Paso a Paso con Arduino
  6. Genera Tonos Musicales con Arduino: Guía Paso a Paso
  7. Control remoto de coche con Arduino Uno y Bluetooth: Guía paso a paso
  8. Domina Modbus en Arduino: Guía Paso a Paso
  9. Control preciso de motor paso a paso: 28BYJ-48 con Arduino UNO y joystick
  10. Construye tu Propio Robot Asistente IA con Arduino y Python
  11. Termostato inteligente y control de iluminación con Bluetooth