Componente · Driver

A4988 Stepper Driver

Módulo clásico para motores paso a paso bipolares: control con dos pines (STEP y DIR), micropasos hasta 1/16 y el ajuste crítico de la corriente máxima.

Qué es

Un soporte A4988 es una placa del tamaño de un sello que se sitúa entre tu microcontrolador y un motor paso a paso bipolar. Tú le das dos señales —un pulso y una dirección— y él se encarga de todo lo demás: exciting las bobinas en la secuencia correcta y, lo que es crucial, regulando cuánta corriente las atraviesa.

Ese segundo trabajo es el que importa y el que la gente se salta. El devanado de un motor paso a paso es un inductor de baja resistencia, normalmente de 2 a 4 ohmios. Conecta 24 V a 2,8 Ω y la ley de Ohm da 8,6 A, que destruirán un motor de 1,7 A en segundos. El A4988 lo evita troceando la alimentación decenas de miles de veces por segundo, manteniendo la corriente media en el valor que fijes.

Así que la placa tiene exactamente un ajuste: un potenciómetro de trimming que fija el límite de corriente. Si lo ajustas bien, el controlador es invisible. Si lo ajustas mal, tienes o bien un motor débil que pierde pasos o bien uno caliente que se fríe.

Placa portadora A4988 vista desde arriba, con ocho pads dorados a cada lado. La columna izquierda de pads dice ENABLE, MS1, MS2, MS3, RESET, SLEEP, STEP y DIR, con STEP y DIR resaltados. La columna derecha dice VMOT, GND, 2B, 2A, 1A, 1B, VDD y GND, con VMOT resaltado en rojo. En la parte superior hay un potenciómetro de trimming etiquetado como el trim de VREF que hay que sondear con un multímetro, y un disipador con aletas cubre el chip controlador. Dos resistencias de sensado pequeñas en la parte inferior de la placa se señalan como R100 igual a 0,1 ohmios o R050 igual a 0,05 ohmios, con una advertencia de que hay que leer las tuyas antes de calcular nada.
Dieciséis pads, un potenciómetro de trimming y dos resistencias diminutas que cambian la aritmética. STEP y DIR son los únicos pines que tu sketch toca en tiempo de ejecución. Descargar SVG

Patillaje

Pin Dirección Qué hace
VMOT Entrada de alimentación Alimentación del motor de 8–35 V. Necesita 100 µF en paralelo, cerca.
GND (lado del motor) Alimentación Retorno de alta corriente
VDD Entrada de alimentación Alimentación lógica de 3–5,5 V, unos pocos mA
GND (lado lógico) Alimentación Debe compartir masa con la alimentación del motor
1A, 1B Salida Una bobina del motor
2A, 2B Salida La otra bobina del motor
STEP Entrada Un flanco ascendente = un micropaso
DIR Entrada Alto o bajo elige la dirección
ENABLE Entrada Activo a nivel bajo. Conéctalo a masa para exciting.
RESET Entrada Debe estar en alto. Puentéalo a SLEEP.
SLEEP Entrada Debe estar en alto para que el controlador funcione
MS1, MS2, MS3 Entrada Resolución de micropaso;conectadas a masa internamente

Dos pines explican la mayoría de los informes de «no hace nada»: ENABLE sin conectar o en alto (es activo a nivel bajo, así que hay que tirar de él hacia masa), y RESET sin conectar (debe estar en alto, y por eso cualquier guía de cableado te dice que puentes RESET a SLEEP).

Cableado a un Arduino

Arduino 5V  ──── VDD
Arduino GND ──── GND (logic)  ──┬── GND (motor)
                                └── PSU −
PSU + (12–24 V) ──── VMOT ──┬── 100 µF electrolytic ──┘
                            
Pin 3  ──── STEP            RESET ──┬── SLEEP
Pin 4  ──── DIR                     
Pin 5  ──── ENABLE          MS1, MS2, MS3 ──── 5 V  (1/16 stepping)

Motor coil A ──── 1A, 1B
Motor coil B ──── 2A, 2B

Innegociables:

  • Condensador electrolítico de 100 µF entre VMOT y GND, colocado físicamente cerca de la placa. Es la causa más común de una placa que muere al conectar la alimentación.
  • Masa común entre el Arduino y la alimentación del motor. Sin ella la señal STEP no tiene referencia y el controlador ve ruido.
  • Nunca desconectes el motor con la alimentación puesta. Una bobina energizada e interrumpida genera un pico sin ningún sitio al que ir.
  • El emparejamiento de bobinas importa; la polaridad dentro de un par no. Si el motor zumba sin girar, los pares están mal. Si gira al revés, intercambia dos hilos de un par.

Ajustar el límite de corriente: las cuentas

Vref = I_phase × R_sense × 8

Mide Vref entre el tornillo metálico del potenciómetro y un pin de masa, con VMOT alimentado y el motor desconectado. Apunta al 70–85 % de la corriente nominal del motor: el último quinto compra muy poco par y mucho calor.

Corriente objetivo R_sense = 0,1 Ω (R100) R_sense = 0,05 Ω (R050)
0.6 A 0.48 V 0.24 V
1.0 A 0.80 V 0.40 V
1.2 A 0.96 V 0.48 V
1.5 A 1.20 V 0.60 V
1.7 A 1.36 V 0.68 V

Lee la marca de las dos resistencias SMD negras cercanas al borde inferior antes de calcular. Poner 1,2 V en una placa R050 está pidiendo 3 A por un motor etiquetado para 1,7 A.

Usa un destornillador cerámico. Uno metálico que puentee el potenciómetro con otra cosa en una placa en marcha es una forma habitual de destruir un controlador.

Lo que físicamente estás ajustando es el par máximo que el motor puede producir: el T_peak de la ley senoidal que rige todo lo que hace un motor paso a paso. Si es demasiado bajo, el rotor se queda más atrás con la misma carga y resbala antes; si es demasiado alto, obtienes calor que no necesitabas.

Micropasos

MS1 MS2 MS3 Resolución Pasos/vuelta
low low low Paso completo 200
high low low Medio 400
low high low Cuarto 800
high high low Octavo 1600
high high high Decimosexto 3200

Las tres en alto es la elección normal. Vale la pena dejar claro por qué: el microstepping no hace que la máquina sea más precisa bajo carga —el error que provoca una carga no cambia por cómo dividas el paso—. Lo que sí hace es evitar que el rotor vibre a cada paso, que es la diferencia entre una máquina que chilla y una que zumba, y entre una superficie con ondulación de paso visible y una sin ella.

El coste es la frecuencia de pulsos. A 1/16 en un eje de 80 pasos/mm, 100 mm/s necesitan 8 000 pulsos por segundo. Un Arduino Uno generando pulsos bit a bit se queda sin margen en algún punto de 10 000–15 000 por segundo, que es un techo real en un eje de husillo de 400 pasos/mm.

Corriente, calor y presupuesto de energía

La disipación propia del A4988 es modesta: el problema es la densidad térmica, no los vatios totales. Alrededor de 0,5 W por fase a 1 A en un encapsulado sin apenas cobre por el que repartirlo. En la práctica, los límites son:

Refrigeración Corriente continua segura
Chip desnudo, aire en reposo ~1.0 A
Disipador adhesivo ~1.2 A
Disipador más aire en movimiento ~1.5 A
Por encima de eso Usa un DRV8825 o un TMC2209

La protección térmica no se anuncia. El controlador se para, el motor se detiene a mitad de un movimiento, el controlador se enfría y arranca otra vez, y lo que observas es un eje que «aleatoriamente» pierde una parte de la posición. Un eje que falla más a menudo al final de un trabajo largo, o en una habitación calurosa, es un problema térmico hasta que se demuestre lo contrario.

En el lado de la alimentación, recuerda que el troceador se comporta como un convertidor reductor: la corriente extraída de una alimentación de 24 V queda muy por debajo de la corriente de fase, así que haz el cálculo en potencia y no sumando corrientes de fase. Cada motor con un límite de 1,2 A sobre devanados de 2,8 Ω disipa unos 8 W, y lo hace siempre que esté energizado, incluido estando parado. Consulta el presupuesto de energía del robot.

Código mínimo funcional

const int STEP_PIN = 3, DIR_PIN = 4, EN_PIN = 5;

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(EN_PIN, OUTPUT);
  digitalWrite(EN_PIN, LOW);        // active low — energise the coils
  digitalWrite(DIR_PIN, HIGH);
}

void loop() {
  for (int i = 0; i < 3200; i++) {  // one revolution at 1/16
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(2);           // datasheet minimum is 1 us
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(300);         // this delay is the speed
  }
  delay(1000);
}

Bien para una prueba de banco, mal para una máquina: la frecuencia de paso salta directamente al máximo, lo cual por encima de la velocidad de arranque del motor produce un zumbido y ningún movimiento. Usa AccelStepper o tu propio perfil de movimiento para todo lo que tenga que llegar a algún sitio. Puedes ver exactamente lo que esa orden sin rampa le hace al rotor en el simulador de motores paso a paso.

Qué corriente fijar en la práctica

La corriente nominal de la etiqueta de un motor asume las condiciones de refrigeración de un banco de pruebas: atornillado a una placa grande de aluminio, en aire en reposo a 25 °C. Tu máquina es una pieza impresa en una habitación calurosa.

Una regla que funciona, con el razonamiento y no solo el número:

Situación Fija el límite en Por qué
Mucho margen de par, se busca silencio 60–70 % de la nominal El par cae linealmente, el calor cae al cuadrado
Máquina normal 70–85 % de la nominal La respuesta habitual
Realmente limitado por par 90–100 % de la nominal Solo con disipador y flujo de aire
Por encima de la nominal Nunca No estás comprando par, solo calor

La razón por la que el extremo bajo cuesta menos de lo que parece está en la segunda columna. El par es proporcional a la corriente, pero el calor es proporcional a la corriente al cuadrado. Bajar de 1,7 A a 1,2 A sacrifica el 29 % del par y elimina la mitad del calor:

1.7 A: P = 2 × 1.7² × 2.8 = 16.2 W per motor
1.2 A: P = 2 × 1.2² × 2.8 =  8.1 W per motor

Si la aritmética de dimensionado dice que estás usando el 12 % del par disponible, ese 29 % al que renunciaste nunca estaba haciendo nada.

Desenergizar, y el pin que la mayoría de los montajes ignoran

ENABLE existe porque un motor paso a paso quema su corriente nominal completa estando completamente quieto. Eso no se parece a ningún otro motor que haya conocido un principiante, y tiene consecuencias:

// Two energised NEMA 17s at 1.2 A dissipate ~16 W doing nothing at all.
digitalWrite(EN_PIN, HIGH);   // active low, so HIGH = coils off

Cuándo usarlo:

  • Entre trabajos en X e Y. Un plotter o un pórtico láser no tiene ninguna razón para mantener la posición mientras está inactivo, y 16 W de calor introducidos en una estructura impresa durante una hora es suficiente para importar.
  • Nunca en un eje Z que sostenga peso, salvo que el mecanismo sea autoblocante. Un husillo T8 no se deja arrastrar en sentido inverso, así que desenergizar es seguro. Un Z con correa se caerá en cuanto cortes la corriente.
  • Nunca a mitad de movimiento. El rotor sigue girando, el campo no, y has tirado la posición sin forma de saber cuánto. Detén primero, luego desactiva.

La trampa que sorprende a la gente: tras desenergizar, el rotor se asienta en el detent más cercano —la posición de reposo magnética que tiene sin corriente alguna—, que puede estar hasta un paso completo de distancia de donde se estaba manteniendo. En un eje de correa a 80 pasos/mm eso son 0,2 mm de movimiento no anunciado, así que o haces referenciado tras cada desactivación, o aceptas que desactivar en reposo y una precisión por debajo de una décima no van juntos.

SLEEP es la versión más profunda: apaga también el regulador interno, consumiendo microamperios en lugar de miliamperios, pero necesita unos 1 ms para despertar y reinicia la posición de paso interna del controlador al micropaso de origen. Esa última parte es la trampa —despertar de SLEEP puede desplazar el motor hasta un paso completo—. Para casi cualquier máquina de afición, lo que quieres es ENABLE y SLEEP es el pin que puentéas a alto y olvidas.

Resolución de problemas

Síntoma Causa Solución
No pasa absolutamente nada ENABLE en alto, o RESET sin conectar Conecta ENABLE a masa; puentea RESET a SLEEP
El motor vibra pero no gira Pares de bobinas cableados cruzado Reagrupa midiendo con el polímetro en ohmios
La placa murió al conectar la alimentación Sin condensador de acoplamiento en VMOT 100 µF electrolítico, cerca de los pines
Se detiene a mitad de un movimiento y arranca más tarde Protección térmica Baja Vref; añade disipador y flujo de aire
Débil, pierde pasos con poca carga Vref demasiado baja Vuelve a medir; comprueba la marca de la resistencia de sensado
El motor grita y se calienta Vref demasiado alta Recalcula: ¿usaste el R_sense correcto?
Pierde pasos solo a alta velocidad Tensión de alimentación demasiado baja Sube VMOT; la corriente no ayudará
Pierde pasos solo al acelerar Rampa demasiado agresiva Baja la aceleración, o sube Vref
Ruidoso en cada paso Paso completo: pines MS al aire Conecta MS1–MS3 en alto
Funciona en el banco y falla en la estructura El final de carrera o el hilo de STEP capta ruido Pasa los cables de señal lejos de los cables del motor

¿A4988 o las alternativas?

Controlador Corriente Micropaso Ruido Elígelo cuando
A4988 1 A / 1,5 A refrigerado 1/16 Audible Barato, ubicuo, bien documentado
DRV8825 1,5 A / 2,2 A refrigerado 1/32 Audible Necesitas más corriente o pasos más finos
TMC2208 ~1.2 A 1/256 Casi silencioso El ruido importa
TMC2209 ~1.7 A 1/256 Casi silencioso El ruido importa, además de referenciado sin sensores
L298N 2 A — — Motores CC. Sin regulación de corriente.
TB6612FNG 1.2 A — — Motores CC, con eficiencia

Las filas del L298N y el TB6612FNG están ahí porque ambos datasheets mencionan los motores paso a paso, y ambos pueden girar uno técnicamente. Ninguno regula la corriente, así que obtienes una fracción del par y mucha calor desperdicio. Son controladores de motores CC; úsalos para accionar ruedas.

Los controladores TMC valen el dinero extra en cuanto la máquina vive en un sitio donde se puede oír. El mismo trabajo, una forma de onda de corriente más suave, y una impresora equipada con ellos hace ruido de ventilador en lugar de ruido de motor.

Dónde se usa

Este controlador da alimentación a los dos ejes del montaje del plotter de bolígrafo, y configurarlo correctamente es un punto de control en la hoja de ruta de movimiento de precisión. El tutorial completo de cableado y Vref cubre el procedimiento paso a paso.

Explora el grafo

Se usa en estos montajes

Proyectos, rutas de aprendizaje y simuladores que incluyen A4988 Stepper Driver.

Comparar

Alternativas

Preguntas

Preguntas frecuentes sobre A4988 Stepper Driver

¿Cómo calculo la Vref de un A4988?

Vref es igual a la corriente de fase que quieres, multiplicada por el valor de la resistencia de sensado y por ocho. Para un objetivo de 1.2 A en una placa con resistencias de 0.1 ohmios, eso da 1.2 × 0.1 × 8 = 0.96 V, medidos entre el cursor del potenciómetro de ajuste y masa, con la placa alimentada por VMOT y el motor desconectado. El detalle crítico es la resistencia de sensado: las placas vienen con 0.1 ohmios, marcadas R100, o con 0.05 ohmios, marcadas R050, y usar el valor equivocado hace pasar exactamente el doble de corriente por tu motor.

¿Por qué mi A4988 se calienta tanto que se desconecta?

Casi siempre es porque el límite de corriente está demasiado alto. Un A4988 sin disipador aguanta alrededor de 1 A de forma continua; con disipador y aire en movimiento llega a unos 1.5 A. Por encima de eso salta su protección térmica, el motor se detiene a mitad de movimiento y vuelve a arrancar cuando el chip se enfría, lo que parece una pérdida de pasos aleatoria. Vuelve a medir Vref con la resistencia de sensado que tienes de verdad, pega el disipador y apunta un ventilador hacia él. Si de verdad necesitas más de 1.5 A, el A4988 no es la pieza adecuada.

¿Qué diferencia hay entre un A4988 y un DRV8825?

El DRV8825 maneja más corriente (unos 1.5 A sin disipador, 2.2 A refrigerado), llega a micropasos de 1/32 en lugar de 1/16 y admite una tensión de motor mayor, de 45 V. Es compatible pin a pin, así que encaja en el mismo zócalo, pero su fórmula de Vref es distinta —Vref es igual a la corriente por 0.5— y su potenciómetro gira en sentido contrario. Cambiar uno por otro sin volver a leer la fórmula es una forma habitual de quemar un motor.

¿De verdad necesito el condensador en VMOT?

Sí. Un electrolítico de 100 µF entre VMOT y masa, físicamente cerca de la placa, es obligatorio, no una recomendación. El chopper consume corriente en ráfagas bruscas y, sin capacidad de reserva cerca, la inductancia de los cables de alimentación convierte esas ráfagas en picos de tensión que superan el límite de 35 V del chip. Las placas que mueren en el instante en que se encienden suelen haber muerto por esto.

¿Qué hacen MS1, MS2 y MS3 si los dejo sin conectar?

Tienen resistencias pull-down internas, así que dejarlos al aire selecciona paso completo: 200 pasos por vuelta y un motor que resuena de forma audible en cada paso. Conecta los tres a nivel alto para 1/16 de paso, que es lo que usa la mayoría de los montajes. No hace la máquina más precisa bajo carga, pero elimina la resonancia, lo que la vuelve más silenciosa y mejora el acabado superficial. El precio es que tu microcontrolador tiene que emitir dieciséis veces más pulsos por milímetro.

¿Puede un A4988 mover un motor de CC o un servo?

No. Es un driver de motores paso a paso bipolares: espera dos bobinas y las excita con una secuencia de corriente concreta. Un motor de CC necesita un puente H como el L298N o el TB6612FNG; un servo de aficionado necesita una señal PWM de 50 Hz y ningún driver. La interfaz STEP y DIR del A4988 no tiene sentido para ninguno de los dos.

Lecturas adicionales

Referencias