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

Cómo controlar un motor paso a paso con controlador A4988 y Arduino

En este tutorial de Arduino aprenderemos a controlar un motor paso a paso utilizando el controlador paso a paso A4988. Puede ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

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

El controlador proporciona cinco resoluciones de paso diferentes:paso completo, medio paso, cuarto de paso, ocho pasos y decimosexto paso. Además, tiene un potenciómetro para ajustar la salida de corriente, apagado térmico por sobretemperatura y protección contra sobrecorriente.

Su tensión lógica es de 3 a 5,5 V y la corriente máxima por fase es de 2 A si se proporciona una buena refrigeración adicional o de 1 A de corriente continua por fase sin disipador ni refrigeración.

A4988 Stepper Driver pinout

Ahora veamos de cerca el pinout del controlador y conéctelo con el motor paso a paso y el controlador. Entonces comenzaremos con los 2 pines del lado derecho del botón para alimentar el controlador, los pines VDD y Ground que necesitamos para conectarlos a una fuente de alimentación de 3 a 5.5 V y en nuestro caso ese será nuestro controlador, el Arduino Placa 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 del motor. Para alimentar el motor usamos los siguientes 2 pines, tierra y VMOT que necesitamos para conectarlos a la fuente de alimentación de 8 a 35 V y también necesitamos usar un condensador de desacoplamiento con al menos 47 µF para proteger la placa del controlador de picos de voltaje.

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

Con el pin Step controlamos los mirosteps del motor y con cada pulso enviado a este pin el motor avanza un paso. Eso significa que no necesitamos programación compleja, tablas de secuencia de fase, líneas de control de frecuencia, etc., porque el traductor integrado del controlador A4988 se encarga de todo. Aquí también debemos mencionar que estos 2 pines no tienen voltaje interno, por lo que no debemos dejarlos flotando en nuestro programa.

El siguiente es 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 de inicio predefinido. Este estado de inicio o posición de micropaso de inicio se puede ver en estas figuras de la hoja de datos A4988. Entonces estas son las posiciones iniciales desde donde arranca el motor y son diferentes dependiendo de la resolución del micropaso. Si el estado de entrada a este pin es un nivel lógico bajo, se ignorarán todas las entradas STEP. El pin Reset es un pin flotante, por lo que si no tenemos la intención de controlarlo en nuestro programa, debemos conectarlo al pin SLEEP para subirlo y habilitar la placa.

Los siguientes 3 pines (MS1, MS2 y MS3) son para seleccionar una de las resoluciones de cinco pasos de acuerdo con la tabla de verdad anterior. Estos pines tienen resistencias desplegables internas, por lo que si los dejamos desconectados, la placa funcionará en modo de paso completo.

El último, el pin ENABLE se usa para encender o apagar las salidas FET. Entonces, una lógica alta mantendrá las salidas deshabilitadas.

Componentes necesarios para este Arduino Tutorial

Puede obtener los componentes en cualquiera de los siguientes sitios:

  • Motor paso a paso (NEMA17)………..
  • A4988 Controlador paso a paso……………..
  • Adaptador 12V 2A………………………….
  • Conector de alimentación………………………………
  • Placa Arduino …………………………
  • Protoboard y cables de salto …….

Esquemas del circuito

Aquí está el esquema completo del circuito. Usaré la unidad en modo de paso completo, así que dejaré los 3 pines MS desconectados y solo conectaré los pines de dirección y de paso de la unidad a los pines número 3 y 4 en la placa Arduino y también la tierra y los 5 V. pines para alimentar la placa. También usaré un condensador de 100 µF para desacoplar y un adaptador de 12 V, 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 a los pines 2A y 2B.

A4988 Limitación de corriente

Antes de conectar el motor, debemos ajustar la limitación 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 usando el potenciómetro en el tablero y considerando esta ecuación:

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

Ahora, debido a que estoy usando el controlador en modo de paso completo y de acuerdo con la hoja de datos A4988 en este modo, la corriente del devanado podría alcanzar solo el 70 % del límite de corriente, 1,2 A*0,7 equivaldría a 0,84 A. Para verificar esto, cargué un código simple que envía lógica continua alta al pin Step (para que podamos notar mejor la corriente) y conecté mi medidor en serie con un devanado del motor y lo encendí. Lo que obtuve fue 0,5 A, lo que significa que la ecuación no era correcta para mi caso.

Código Arduino y A4988

Aquí hay un código de ejemplo. Primero tenemos que definir los pines de Paso y Dirección. En nuestro caso son los pines número 3 y 4 de la placa Arduino y se llaman stepPin y dirPin y en la sección de configuración tenemos que 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 estableceremos el pin de dirección en estado alto que permitirá que el motor se mueva en una dirección particular. Ahora usando este ciclo for haremos que el motor haga un ciclo completo de rotación. Como 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 pasador de paso para hacer una rotación de ciclo completo. Entonces, el bucle for tendrá 200 iteraciones y cada vez establecerá el pin Step en estado alto y luego bajo para hacer los pulsos. Entre cada escritura digital necesitamos agregar algún retraso del cual dependerá la velocidad del motor.

Después de esta rotación de ciclo completo, haremos un retraso de un segundo, luego cambiaremos la dirección de rotación configurando el 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:

/*     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)

Proceso de manufactura

  1. Controlar el aceptador de monedas con Arduino
  2. ¡Arduino con Bluetooth para controlar un LED!
  3. Arduino Nano:Controla 2 motores paso a paso con joystick
  4. Control del servomotor con Arduino y MPU6050
  5. Cómo leer la temperatura y la humedad en Blynk con DHT11
  6. Cómo hacer música con un Arduino
  7. Control de coche con Arduino Uno y Bluetooth
  8. Cómo utilizar Modbus con Arduino
  9. Conducción 28BYJ-48 Control de motor paso a paso con joystick
  10. Robot asistente de IA con Arduino y Python
  11. Control inteligente de termostato, ventilación y luces con Bluetooth