Volver al Blog
Electrónica24 de julio de 2026

Guía Completa del Driver Motor A4988 de Pololu

Guía Completa del Driver de Motor A4988 de Pololu

A

Administrador

Equipo de Pixelnova

Guía Completa del Driver Motor A4988 de Pololu

Introducción

El A4988 Stepper Motor Driver Carrier de Pololu es una placa de desarrollo (breakout board) para el controlador de motores paso a paso bipolar Allegro A4988. Este módulo es ampliamente utilizado en proyectos de electrónica, robótica e impresión 3D debido a su facilidad de uso, compacto tamaño y capacidades de microstepping.

El A4988 permite controlar un motor paso a paso bipolar con corrientes de salida de hasta 2 A por bobina (con refrigeración adecuada) y ofrece cinco diferentes resoluciones de microstepping, desde paso completo hasta 1/16 de paso.


Especificaciones Técnicas

Dimensiones y Peso

ParámetroValor
Tamaño0.6" × 0.8" (15.24 mm × 20.32 mm)
Peso1.3 g (sin headers)
Código de desarrollo de la PCBmd09b

Especificaciones Generales

ParámetroValor
Voltaje mínimo de operación8 V
Voltaje máximo de operación35 V
Corriente continua por fase1 A (sin disipador)
Corriente máxima por fase2 A (con refrigeración adecuada)
Voltaje lógico mínimo3 V
Voltaje lógico máximo5.5 V
Resoluciones de microsteppingFull, 1/2, 1/4, 1/8, 1/16
Protección contra voltaje inversoNo
EmpaqueIndividual (headers no soldados)

Características Principales

  • Interfaz simple de control por pasos y dirección
  • Cinco diferentes resoluciones de paso: completo, medio, cuarto, octavo y dieciseisavo
  • Control de corriente ajustable mediante potenciómetro
  • Configurado en modo de decaimiento mixto
  • Protección térmica con apagado automático
  • Protección contra subtensión (under-voltage lockout)
  • Protección contra cortocircuitos a tierra y cargas cortocircuitadas
  • Protección contra corriente de cruce

Pinout y Conexiones

Diagrama de Pines

┌─────────────────────────────────────┐
│  A4988 Stepper Motor Driver Carrier │
│                                     │
│   1A  1B  2B  2A  VDD  GND  VMOT    │
│   ──  ──  ──  ──  ───  ───  ───     │
│                                     │
│   MS3 MS2 MS1 RST  SLP  DIR  STEP   │
│   ─── ─── ─── ─── ───  ───  ───     │
│                                     │
│              EN (Enable)            │
│              ───                    │
└─────────────────────────────────────┘

Descripción de Pines

Pines de Alimentación

PinDescripción
VDDVoltaje lógico de alimentación (3 V a 5.5 V)
GNDTierra común para lógica y motor
VMOTVoltaje de alimentación del motor (8 V a 35 V)

Pines del Motor

PinDescripción
1A / 1BConexiones para la bobina 1 del motor
2A / 2BConexiones para la bobina 2 del motor

Pines de Control

PinDescripción
STEPCada pulso en este pin genera un micropaso
DIRDetermina la dirección de rotación
MS1 / MS2 / MS3Selección de resolución de microstepping
RSTReset (reinicia el contador de pasos a cero)
SLPSleep (modo de bajo consumo)
ENEnable (habilita/deshabilita las salidas del motor)

Configuración de Microstepping

El A4988 ofrece cinco modos de resolución de paso controlados por los pines MS1, MS2 y MS3:

MS1MS2MS3Resolución de Paso
LowLowLowPaso completo
HighLowLowMedio paso (1/2)
LowHighLowCuarto paso (1/4)
HighHighLowOctavo paso (1/8)
HighHighHighDieciseisavo paso (1/16)

Nota importante: Los pines MS1 y MS3 tienen resistencias de pull-down internas de 100kΩ, mientras que MS2 tiene una resistencia de pull-down interna de 50kΩ. Dejar estos pines desconectados resulta en modo de paso completo.


Configuración del Límite de Corriente

El control de corriente es una característica fundamental del A4988 que permite usar voltajes superiores al nominal del motor para lograr mejores tasas de paso.

Método 1: Medición Directa de Corriente

  1. Configurar el driver en modo de paso completo
  2. Conectar el motor manteniendo una posición fija (sin enviar pulsos al pin STEP)
  3. Medir la corriente a través de una bobina del motor
  4. Ajustar el potenciómetro hasta alcanzar el valor deseado

Importante: La corriente medida es solo el 70% del límite de corriente real configurado. Al habilitar modos de microstepping, la corriente puede exceder este valor en un 40% (1/0.7).

Método 2: Cálculo del Voltaje VREF

El voltaje de referencia VREF se relaciona con el límite de corriente mediante:

I_MAX = VREF / (8 × R_CS)

O despejando para VREF:

VREF = 8 × I_MAX × R_CS

Donde:

  • I_MAX es el límite de corriente deseado en Amperios
  • R_CS es el valor de la resistencia de detección de corriente (0.068 Ω para unidades fabricadas desde 2017)

Ejemplo: Para configurar un límite de corriente de 1 A:

VREF = 8 × 1 A × 0.068 Ω = 0.544 V = 544 mV

El voltaje VREF es accesible en un via circulado en la parte inferior de la placa.


Consideraciones de Disipación de Potencia

El CI A4988 tiene una corriente máxima nominal de 2 A por bobina, pero la corriente real que puede entregar depende de la capacidad de enfriamiento:

  • Sin disipador de calor o flujo de aire forzado: ~1 A por bobina
  • Con refrigeración adecuada: Hasta 2 A por bobina

Advertencia de seguridad: Este producto puede calentarse lo suficiente como para quemar antes de que el chip se sobrecaliente. Tenga cuidado al manipularlo.

Métodos de Refrigeración

  1. Disipador de calor: Adhesivo térmico pequeño sobre el IC
  2. Ventilador: Flujo de aire directo sobre el módulo
  3. Disipación pasiva: Aumentar la superficie de contacto con el aire

Advertencias de Seguridad Importantes

Protección contra Picos de Voltaje LC

⚠️ ADVERTENCIA CRÍTICA ⚠️

La placa utiliza capacitores cerámicos de baja ESR, lo que la hace susceptible a
picos de tensión LC destructivos, especialmente con cables de alimentación más
largos que unos pocos centímetros.

Estos picos pueden exceder el voltaje máximo de 35 V del A4988 y dañar
permanentemente la placa, incluso cuando el voltaje de alimentación del motor
es tan bajo como 12 V.

PROTECCIÓN RECOMENDADA:
Coloque un capacitor electrolítico grande (al menos 47 µF) entre VMOT y GND
lo más cerca posible de la placa.

Conexión del Motor

⚠️ ADVERTENCIA ⚠️

Conectar o desconectar un motor paso a paso mientras el driver está alimentado
puede destruir el driver. Nunca realice cambios en el cableado con la placa
encendida.

Corriente de Alimentación vs. Corriente del Motor

La corriente medida en la fuente de alimentación será significativamente menor que la corriente de las bobinas del motor, ya que el driver actúa como un regulador de voltaje conmutado. Nunca use la corriente de la fuente para configurar el límite de corriente.


Conexión con Microcontroladores

Diagrama de Conexión Mínimo (Modo Paso Completo)

┌──────────────┐         ┌─────────────────┐
│  Arduino/    │         │   A4988 Driver  │
│  ESP32/      │         │                 │
│  Raspberry   │         │   STEP ────────►│ STEP
│              │         │   DIR  ────────►│ DIR
│              │         │   3.3V-5V ─────►│ VDD
│              │         │   GND  ◄───────►│ GND
└──────────────┘         │   VMOT ────────►│ Motor Power
                         │   1A/1B/2A/2B ─►│ Motor Coils
                         └─────────────────┘

Pines de Control Recomendados

FunciónEstado Recomendado
STEPNo dejar flotante - conectar a pin PWM/digital
DIRNo dejar flotante - conectar a pin digital o VDD/GND
RSTConectar a SLP si no se usa (para habilitar la placa)
SLPConectar a VDD para habilitar o a control digital
ENConectar a GND para habilitar o a control digital

Ejemplos de Código para Arduino

Ejemplo 1: Control Básico en Paso Completo

// Configuración básica para A4988 en modo paso completo
// MS1, MS2, MS3 desconectados (paso completo)

const int stepPin = 9;   // Pin STEP conectado al Arduino
const int dirPin = 8;    // Pin DIR conectado al Arduino

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  
  // Configurar dirección (HIGH = horario, LOW = antihorario)
  digitalWrite(dirPin, HIGH);
}

void loop() {
  // Dar un paso
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(500);  // Velocidad del paso
  digitalWrite(stepPin, LOW);
  delayMicroseconds(500);
  
  delay(1000);  // Esperar 1 segundo entre pasos
}

Ejemplo 2: Control con Librería AccelStepper

#include <AccelStepper.h>

// Configuración para A4988
#define STEP_PIN 9
#define DIR_PIN 8

// Crear objeto stepper (tipo 1 = driver con STEP/DIR)
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);

void setup() {
  // Configurar velocidad máxima (pasos por segundo)
  stepper.setMaxSpeed(1000);
  
  // Configurar aceleración (pasos por segundo²)
  stepper.setAcceleration(500);
  
  // Posición inicial
  stepper.setCurrentPosition(0);
}

void loop() {
  // Mover a posición absoluta
  stepper.moveTo(200);  // 200 pasos = 1 revolución (motor 1.8°)
  
  // Ejecutar movimiento
  while (stepper.distanceToGo() != 0) {
    stepper.run();
  }
  
  delay(1000);
  
  // Mover en dirección opuesta
  stepper.moveTo(-200);
  
  while (stepper.distanceToGo() != 0) {
    stepper.run();
  }
  
  delay(1000);
}

Ejemplo 3: Configuración de Microstepping

// Configuración de microstepping para A4988
const int ms1Pin = 5;
const int ms2Pin = 6;
const int ms3Pin = 7;

void setupMicrostepping(int mode) {
  pinMode(ms1Pin, OUTPUT);
  pinMode(ms2Pin, OUTPUT);
  pinMode(ms3Pin, OUTPUT);
  
  switch(mode) {
    case FULL_STEP:      // 1.8° por paso
      digitalWrite(ms1Pin, LOW);
      digitalWrite(ms2Pin, LOW);
      digitalWrite(ms3Pin, LOW);
      break;
      
    case HALF_STEP:      // 0.9° por paso
      digitalWrite(ms1Pin, HIGH);
      digitalWrite(ms2Pin, LOW);
      digitalWrite(ms3Pin, LOW);
      break;
      
    case QUARTER_STEP:   // 0.45° por paso
      digitalWrite(ms1Pin, LOW);
      digitalWrite(ms2Pin, HIGH);
      digitalWrite(ms3Pin, LOW);
      break;
      
    case EIGHTH_STEP:    // 0.225° por paso
      digitalWrite(ms1Pin, HIGH);
      digitalWrite(ms2Pin, HIGH);
      digitalWrite(ms3Pin, LOW);
      break;
      
    case SIXTEENTH_STEP: // 0.1125° por paso
      digitalWrite(ms1Pin, HIGH);
      digitalWrite(ms2Pin, HIGH);
      digitalWrite(ms3Pin, HIGH);
      break;
  }
}

// Definiciones
#define FULL_STEP 0
#define HALF_STEP 1
#define QUARTER_STEP 2
#define EIGHTH_STEP 3
#define SIXTEENTH_STEP 4

Conexión de Motores Paso a Paso

Tipos de Motores Compatibles

Tipo de MotorCompatibilidad
4 cables (bipolar)✅ Compatible directo
6 cables (unipolar)✅ Compatible como bipolar
8 cables (unipolar)✅ Compatible como bipolar
5 cables (unipolar)❌ NO compatible

Identificación de Bobinas

Para motores de 4 cables:

  1. Use un multímetro en modo continuidad
  2. Identifique los pares de bobinas (continuidad entre pares)
  3. Conecte un par a 1A/1B y el otro a 2A/2B

Para motores de 6 u 8 cables, consulte las preguntas frecuentes (FAQ) de Pololu para el cableado específico.


Comparación con Otras Versiones

Variantes del A4988 de Pololu

ProductoItem #Característica
A4988 Standard1182Headers no soldados
A4988 con Headers2980Headers soldados de fábrica
A4988 Bulk2975Empaque mayor sin headers
A4988 Bulk Soldado2985Empaque mayor con headers soldados
A4988 Black Edition2128Edición negra premium

A4988 vs A4983

El A4988 es un reemplazo directo del A4983 (descontinuado) con las siguientes mejoras:

  • Protección contra sobrecorriente
  • Pull-down interno de 100k en el pin MS1
  • Funcionalmente idéntico en otros aspectos

Aplicaciones Comunes

1. Impresoras 3D

Control de ejes X, Y, Z en impresoras 3D "hazlo tú mismo" (DIY) como RepRap, Prusa, etc.

2. Máquinas CNC

Control de motores paso a paso en máquinas de control numérico computarizado.

3. Robótica

Posicionamiento preciso en brazos robóticos, plataformas giratorias, etc.

4. Sistemas de Posicionamiento

Mesas XY, sistemas de enfoque automático, telescopios, etc.

5. Proyectos Educativos

Aprendizaje de control de motores, automatización, mecatrónica.


Solución de Problemas

Problema: El motor no se mueve

Posibles causas:

  • Límite de corriente configurado demasiado bajo
  • Voltaje de alimentación insuficiente
  • Cableado del motor incorrecto
  • Pines STEP/DIR flotantes

Soluciones:

  • Verificar y ajustar VREF
  • Confirmar voltaje VMOT entre 8-35 V
  • Revisar conexión de bobinas
  • Conectar RST a SLP si no se usa

Problema: El motor se calienta excesivamente

Posibles causas:

  • Límite de corriente demasiado alto
  • Falta de refrigeración

Soluciones:

  • Reducir VREF
  • Agregar disipador de calor o ventilador

Problema: El driver se daña rápidamente

Posibles causas:

  • Picos de voltaje LC
  • Conexión/desconexión del motor con energía
  • Sobrecalentamiento

Soluciones:

  • Agregar capacitor de 47 µF o más entre VMOT y GND
  • Nunca cambiar cableado con energía
  • Mejorar refrigeración

Problema: El motor pierde pasos

Posibles causas:

  • Corriente insuficiente
  • Velocidad demasiado alta
  • Carga mecánica excesiva

Soluciones:

  • Aumentar VREF (dentro de límites seguros)
  • Reducir velocidad de aceleración
  • Verificar carga mecánica

Recursos Adicionales

Documentación Oficial

Videos Tutoriales

Foros y Comunidades


Resumen de Características

CaracterísticaEspecificación
ChipAllegro A4988
Voltaje Motor8 V - 35 V
Voltaje Lógico3 V - 5.5 V
Corriente Máxima2 A por bobina (con refrigeración)
MicrosteppingHasta 1/16 paso
ProteccionesTérmica, sobrecorriente, subvoltaje
Dimensiones15.24 × 20.32 mm
Precio~$8.95 USD (unitario)

Conclusión

El driver A4988 de Pololu es una solución excelente y económica para el control de motores paso a paso en una amplia variedad de aplicaciones. Su interfaz simple, capacidades de microstepping y protecciones integradas lo convierten en una opción popular para proyectos de electrónica, robótica e impresión 3D.

Con la configuración adecuada de corriente y las precauciones de seguridad necesarias, este módulo puede proporcionar un control preciso y confiable de motores paso a paso durante años de operación.


Documento preparado para publicación en blog de electrónica. Última actualización: 2026.