Motor paso a paso con el módulo controlador DRV8825 y Arduino.

Indice

  1. Motor paso a paso con el módulo controlador DRV8825 y Arduino.

1.Motor paso a paso con el módulo controlador DRV8825 y Arduino.

// Definir las conexiones de los pines y los pasos por revolución del motor
const int pinDireccion = 2;   // Pin que controla la dirección del motor
const int pinPaso = 3;        // Pin que envía los pulsos de paso
const int pasosPorRevolucion = 200;  // 200 pasos = 1 revolución completa (para motores paso a paso comunes)

void setup()
{
  // Declarar los pines como salidas
  pinMode(pinPaso, OUTPUT);
  pinMode(pinDireccion, OUTPUT);
}

void loop()
{
  // Establecer la dirección del motor en sentido horario (CW)
  digitalWrite(pinDireccion, HIGH);
  
  // Girar el motor lentamente
  for(int x = 0; x < pasosPorRevolucion; x++)
  {
    digitalWrite(pinPaso, HIGH);      // Generar pulso de inicio de paso
    delayMicroseconds(2000);          // Esperar 2000 microsegundos (2 ms) - pulso activo
    digitalWrite(pinPaso, LOW);       // Generar pulso de fin de paso
    delayMicroseconds(2000);          // Esperar 2000 microsegundos (2 ms) - pulso inactivo
  }
  delay(1000);  // Esperar 1 segundo antes de cambiar de dirección
  
  // Establecer la dirección del motor en sentido antihorario (CCW)
  digitalWrite(pinDireccion, LOW);
  
  // Girar el motor rápidamente
  for(int x = 0; x < pasosPorRevolucion; x++)
  {
    digitalWrite(pinPaso, HIGH);      // Generar pulso de inicio de paso
    delayMicroseconds(1000);          // Esperar 1000 microsegundos (1 ms) - pulso activo
    digitalWrite(pinPaso, LOW);       // Generar pulso de fin de paso
    delayMicroseconds(1000);          // Esperar 1000 microsegundos (1 ms) - pulso inactivo
  }
  delay(1000);  // Esperar 1 segundo y repetir el ciclo
}

Explicación del funcionamiento:

Control de motor paso a paso:

  • pinDireccion: Nivel HIGH = giro horario (CW), LOW = giro antihorario (CCW)
  • pinPaso: Cada pulso (HIGH → LOW) hace avanzar el motor un paso

Velocidad de giro:

  • Giro lentodelayMicroseconds(2000) → 2 ms entre flancos → Período total: 4 ms por paso
  • Giro rápidodelayMicroseconds(1000) → 1 ms entre flancos → Período total: 2 ms por paso

Secuencia completa:

  1. Gira 1 revolución completa en sentido horario (lentamente)
  2. Espera 1 segundo
  3. Gira 1 revolución completa en sentido antihorario (rápidamente)
  4. Espera 1 segundo
  5. Repite el ciclo infinitamente

Aplicaciones comunes:

  • Impresoras 3D
  • Máquinas CNC
  • Robótica
  • Posicionadores de precisión
  • Sistemas de automatización

Nota: Este código está diseñado para controlar un motor paso a paso usando un driver como el A4988 o DRV8825. Los tiempos de pulso (2000µs y 1000µs) son ejemplos; ajústalos según las especificaciones de tu motor y driver.