

The A4988 is a microstepping driver designed for controlling bipolar stepper motors. It enables precise control of motor position and speed, making it ideal for applications requiring high accuracy and smooth motion. The driver features adjustable current control, over-temperature protection, and a straightforward interface, making it easy to integrate into a wide range of projects.








The A4988 stepper driver is a compact and versatile component with the following key specifications:
| Parameter | Value |
|---|---|
| Motor Type Supported | Bipolar stepper motors |
| Operating Voltage | 8 V to 35 V |
| Logic Voltage | 3.3 V or 5 V |
| Maximum Output Current | 2 A per coil (with sufficient cooling) |
| Microstepping Modes | Full, 1/2, 1/4, 1/8, 1/16 |
| Current Control | Adjustable via potentiometer |
| Protection Features | Over-temperature, short-circuit, under-voltage lockout |
The A4988 has 16 pins, each serving a specific function. Below is the pinout and description:
| Pin Name | Pin Number | Description |
|---|---|---|
| VMOT | 1 | Motor power supply (8 V to 35 V). Connect to the stepper motor power source. |
| GND | 2, 3 | Ground connection for motor and logic circuits. |
| VDD | 4 | Logic voltage supply (3.3 V or 5 V). |
| 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 resolution selection pins. |
| RESET | 11 | Resets the internal logic. Active low. |
| SLEEP | 12 | Puts the driver into low-power sleep mode. Active low. |
| OUT1A, OUT1B | 13, 14 | Outputs for one motor coil. Connect to one coil of the stepper motor. |
| OUT2A, OUT2B | 15, 16 | Outputs for the other motor coil. Connect to the second coil of the stepper motor. |
Power Connections:
Motor Connections:
Control Pins:
Current Adjustment:
Optional Features:
Below is an example of how to control a stepper motor using the A4988 and an Arduino UNO:
// Define pin connections
#define STEP_PIN 2 // Connect to A4988 STEP pin
#define DIR_PIN 3 // Connect to A4988 DIR pin
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 a step pulse
digitalWrite(STEP_PIN, HIGH); // Set STEP pin HIGH
delayMicroseconds(1000); // Wait 1 ms
digitalWrite(STEP_PIN, LOW); // Set STEP pin LOW
delayMicroseconds(1000); // Wait 1 ms
}
Motor Not Moving:
Motor Vibrates but Does Not 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 VREF is the voltage on the potentiometer and RS is the sense resistor value (typically 0.1 Ω).
Q: What happens if I exceed the maximum voltage?
A: Exceeding 35 V on the VMOT pin can permanently damage the driver. Always use a power supply within the specified range.
Q: Can I control multiple stepper motors with one A4988?
A: No, each A4988 driver can control only one bipolar stepper motor. Use separate drivers for multiple motors.