

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








The A4988 has 16 pins, which are described in the table below:
| Pin Name | Type | Description |
|---|---|---|
| VMOT | Power Input | Motor power supply (8 V to 35 V). Connect to the stepper motor's power source. |
| GND | Power Ground | Ground connection for motor power supply. |
| VDD | Power Input | Logic voltage supply (3.3 V or 5 V). |
| GND | Power Ground | Ground connection for logic voltage supply. |
| 1A, 1B | Motor Output | Connect to one coil of the stepper motor. |
| 2A, 2B | Motor Output | Connect to the other coil of the stepper motor. |
| STEP | Logic Input | Controls the step signal. A rising edge advances the motor one step. |
| DIR | Logic Input | Sets the motor's direction of rotation. |
| ENABLE | Logic Input | Enables or disables the driver (active low). |
| MS1, MS2, MS3 | Logic Input | Selects the microstepping mode (see table below). |
| RESET | Logic Input | Resets the driver (active low). |
| SLEEP | Logic Input | Puts the driver into low-power sleep mode (active low). |
| REF | Analog Input | Sets the current limit via an onboard potentiometer. |
The microstepping mode is determined by the MS1, MS2, and MS3 pins:
| 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 |
Power Connections:
Motor Connections:
Control Signals:
Microstepping Configuration:
Current Adjustment:
Current Limit = VREF × 2.5
Optional Connections:
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 the STEP pin of A4988
#define DIR_PIN 4 // Connect to the DIR pin of 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 step pulses
digitalWrite(STEP_PIN, HIGH); // Step pulse HIGH
delayMicroseconds(500); // Wait 500 microseconds
digitalWrite(STEP_PIN, LOW); // Step pulse LOW
delayMicroseconds(500); // Wait 500 microseconds
}
Motor Not Moving:
Driver Overheating:
Erratic Motor Movement:
No Response from Driver:
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 VREF voltage for my motor?
A: Use the formula VREF = Current Limit / 2.5. For example, if your motor's rated current is 1 A, set VREF to 0.4 V.
Q: What happens if I exceed the current limit?
A: The A4988 has over-current protection, but exceeding the limit can cause overheating or damage. Always set the current limit appropriately.
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.