

The A4988 Stepper Motor Driver (Red) is a compact and versatile driver module designed for controlling bipolar stepper motors. It features adjustable current control, microstepping capabilities (up to 1/16 steps), and built-in thermal shutdown protection, making it an excellent choice for applications requiring precise motor control. This driver is widely used in 3D printers, CNC machines, robotics, and other motion control systems.








Below are the key technical details and pin configuration for the A4988 Stepper Motor Driver:
| Parameter | Value |
|---|---|
| Motor Type Supported | Bipolar Stepper Motors |
| Operating Voltage (Vcc) | 3.3V to 5V |
| Motor Supply Voltage (VMOT) | 8V to 35V |
| Maximum Output Current | 2A per coil (with sufficient cooling) |
| Microstepping Modes | Full, 1/2, 1/4, 1/8, 1/16 steps |
| Logic Input Voltage | 3.3V or 5V (TTL compatible) |
| Thermal Shutdown | Yes |
| Overcurrent Protection | Yes |
| Dimensions | 20mm x 15mm x 11mm |
| Pin Name | Pin Number | Description |
|---|---|---|
| VMOT | 1 | Motor power supply (8V to 35V). Connect to the stepper motor power source. |
| GND | 2, 3 | Ground pins. Connect to the power supply ground. |
| VDD | 4 | Logic voltage supply (3.3V to 5V). |
| STEP | 5 | Step input. A rising edge on this pin advances the motor one step. |
| DIR | 6 | Direction input. High or low determines the motor's rotation direction. |
| ENABLE | 7 | Enable input. Low to enable the driver, high to disable it. |
| MS1, MS2, MS3 | 8, 9, 10 | Microstepping mode selection pins. Configure step resolution. |
| RESET | 11 | Resets the driver. Active low. |
| SLEEP | 12 | Puts the driver into low-power sleep mode. Active low. |
| A1, A2 | 13, 14 | Outputs for one motor coil (A). Connect to the stepper motor. |
| B1, B2 | 15, 16 | Outputs for the other motor coil (B). Connect to the stepper motor. |
Power Connections:
Motor Connections:
Control Pins:
Current Limiting:
Enable/Disable:
Below is an example of how to control a stepper motor using the A4988 and an Arduino UNO:
// Define control pins
#define STEP_PIN 3 // Connect to STEP pin on A4988
#define DIR_PIN 4 // Connect to DIR pin on A4988
void setup() {
pinMode(STEP_PIN, OUTPUT); // Set STEP pin as output
pinMode(DIR_PIN, OUTPUT); // Set DIR pin as output
digitalWrite(DIR_PIN, HIGH); // Set initial direction (HIGH = clockwise)
}
void loop() {
// Generate steps to move the motor
for (int i = 0; i < 200; i++) { // 200 steps for one revolution (1.8°/step)
digitalWrite(STEP_PIN, HIGH); // Step pulse high
delayMicroseconds(1000); // Wait 1ms (adjust for speed)
digitalWrite(STEP_PIN, LOW); // Step pulse low
delayMicroseconds(1000); // Wait 1ms
}
delay(1000); // Wait 1 second before changing direction
// Change direction
digitalWrite(DIR_PIN, LOW); // Set direction to counterclockwise
delay(1000); // Wait 1 second before next loop
}
Motor Not Moving:
Motor Vibrates but Doesn't Rotate:
Driver Overheating:
Motor Moves Erratically:
Q: Can I use the A4988 with a unipolar stepper motor?
A: No, the A4988 is designed for bipolar stepper motors only.
Q: How do I calculate the current limit?
A: Use the formula: Current Limit = VREF / (8 × RS), where RS is the sense resistor value (typically 0.1Ω).
Q: Can I daisy-chain multiple A4988 drivers?
A: Yes, but ensure each driver has its own control signals and power supply connections.
Q: What happens if I exceed the maximum current?
A: The driver will activate overcurrent protection, but prolonged overcurrent can damage the module. Always set the current limit properly.