

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 ideal for applications requiring precise motor control. This driver is widely used in 3D printers, CNC machines, robotics, and other motion control systems.








The A4988 module has 16 pins, divided into two sides. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| VMOT | Motor power supply (8V to 35V). Connect to the stepper motor's power source. |
| GND | Ground for motor power supply. |
| 2B, 2A | Outputs for connecting to one coil of the stepper motor. |
| 1A, 1B | Outputs for connecting to the other coil of the stepper motor. |
| VDD | Logic voltage input (3.3V or 5V). |
| GND | Ground for logic voltage. |
| STEP | Input for step signal. Each pulse moves the motor one step. |
| DIR | Input for direction control. High or low determines motor rotation direction. |
| ENABLE | Active-low input to enable or disable the driver. |
| MS1, MS2, MS3 | Microstepping mode selection pins. Configure for full, 1/2, 1/4, 1/8, or 1/16. |
| RESET | Active-low reset input. Resets internal logic when pulled low. |
| SLEEP | Active-low sleep mode input. Pull low to minimize power consumption. |
Power Connections:
Motor Connections:
Control Signals:
Microstepping Configuration:
| MS1 | MS2 | MS3 | Microstepping Mode |
|---|---|---|---|
| Low | Low | Low | Full Step |
| High | Low | Low | Half Step |
| Low | High | Low | Quarter Step |
| High | High | Low | Eighth Step |
| High | High | High | Sixteenth Step |
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 // Pin connected to STEP
#define DIR_PIN 4 // Pin connected to DIR
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 step pulses
digitalWrite(STEP_PIN, HIGH); // Set STEP pin HIGH
delayMicroseconds(1000); // Wait 1ms (adjust for speed)
digitalWrite(STEP_PIN, LOW); // Set STEP pin LOW
delayMicroseconds(1000); // Wait 1ms (adjust for speed)
}
Motor Not Moving:
Driver Overheating:
Motor Vibrating but Not Rotating:
Erratic Motor Movement:
Can I use the A4988 with a unipolar stepper motor? No, the A4988 is designed for bipolar stepper motors only.
What happens if I exceed the current limit? The driver will enter thermal shutdown to protect itself, but this may cause erratic motor behavior. Always set the current limit properly.
Can I control multiple stepper motors with one A4988? No, each A4988 driver can control only one bipolar stepper motor.
By following this documentation, you can effectively use the A4988 Stepper Motor Driver (Red) in your projects for precise and reliable stepper motor control.