fbpixel
Etiquetas: ,
3
(1)

En este tutorial, veremos cómo accionar un motor paso a paso bipolar utilizando un driver A4988. Este tutorial es compatible con los drivers de motores paso a paso comúnmente utilizados en proyectos de fresado digital o impresoras 3D (DRV8825, SilentStepStick, etc.).

Hardware

  • Arduino UNO
  • Controlador paso a paso A4988
  • Cable USB A macho a USB B macho

Principio de funcionamiento

Los controladores de motor paso a paso permiten controlar eficazmente los motores utilizando sólo dos señales de control, STEP y DIR. El número de impulsos enviados al driver corresponde al número de pasos dados, la frecuencia de impulsos corresponde a la velocidad del motor y la señal dir corresponde al sentido de giro del motor. El módulo A4988 se encarga de enviar la secuencia a las dos bobinas del motor en función de las órdenes recibidas como entrada.

Especificaciones técnicas A4988

Minimum operating voltage8 V
Maximum operating voltage35 V
Continuous current per phase1.2 A
Maximum current per phase2 A
Minimum logic voltage3 V
Maximum logic voltage5.5 V
Microstep resolutionfull, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection?No
Dimensions15.5 × 20.5 mm (0.6″ × 0.8″)

Diagrama

Antes de conectar el motor al controlador, ajuste correctamente el limitador de corriente. Para ello, es necesario:

  • alimentar el Arduino y el Shield con la tensión del motor.
  • A continuación, coloque un voltímetro entre el potenciómetro y GND.
  • Gire el potenciómetro con un destornillador hasta obtener el valor que sigue la regla siguiente.
MaxCurrent=Vref x 2.5 

Por ejemplo:

Si el valor de corriente es de 1A, el valor mostrado en el multímetro debe ser igual a 0,4V.

MaxCurrent=1.0A –> Vref = 0.4V

La resolución de los pasos del controlador puede modificarse para una mayor precisión. Esta configuración se define poniendo los pines M0, M1 y M2 en ALTO o BAJO según la siguiente tabla lógica.

MS1MS2MS3Résolution Microstepping
LowLowLowPas complet (full step)
HighLowLow1/2 pas
LowHighLow1/4 de pas
HighHighLow1/8 ième de pas
HighHighHigh1/16 ième de pas

Código

Para accionar el driver del motor paso a paso, todo lo que tenemos que hacer es enviar un estado HIGH o LOW al pin DIR y un pulso al pin STEP.

const int stepPin = 2;
const int dirPin = 3;


const int stepsPerRev=200;
int pulseWidthMicros = 100;  // microseconds
int millisBtwnSteps = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
 
  Serial.println(F("A4988 Initialized"));
}

void loop() {
  Serial.println(F("Running clockwise"));
  digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for (int i = 0; i < stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000); // One second delay

  Serial.println(F("Running counter-clockwise"));
  digitalWrite(dirPin, LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for (int i = 0; i < 2*stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000);
}

Para más funciones, puede utilizar la biblioteca AccelStepper.h

Aplicaciones

  • Control de un motor paso a paso
  • Control de varios motores con un CNC Shield

Fuentes

https://www.arduinolibraries.info/libraries/accel-stepper

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 3 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?