fbpixel
Etiquetas: ,
0
(0)

En este tutorial veremos cómo accionar un motor paso a paso bipolar utilizando un driver DRV8825. 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 DRV8825 (o A4988 o SilentStepStick)
  • Cable USB A macho a USB B macho

Principio de funcionamiento

Los controladores de motor paso a paso permiten controlar los motores de forma eficaz 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 DRV8825 se encarga de enviar la secuencia a las dos bobinas del motor en función de las órdenes recibidas como entrada.

Especificaciones técnicas DRV8825

M0M1M2Microstep resolution
LowLowLowFull step
HighLowLow1/2 step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

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 

Por ejemplo:

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

MaxCurrent=1.0A –> Vref = 0.5V

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.

M0M1M2Microstep resolution
LowLowLowFull step
HighLowLow1/2 step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

Código por el controlador DRV8825

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

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

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

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?