

The Pololu A4988 (Manufacturer Part ID: 1182) is a microstepping driver designed for controlling bipolar stepper motors. It is a compact and versatile module that simplifies the process of driving stepper motors with precision. The A4988 supports adjustable current limiting, over-temperature protection, and five microstepping resolutions (full-step, half-step, quarter-step, eighth-step, and sixteenth-step). This makes it ideal for applications requiring precise motor control, such as 3D printers, CNC machines, and robotics.








| Parameter | Value |
|---|---|
| Operating Voltage (VDD) | 3.3V to 5.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 |
| Logic Input Voltage | 3.3V or 5V logic compatible |
| Current Limiting | Adjustable via onboard potentiometer |
| Protection Features | Over-temperature, short-circuit, undervoltage |
| Dimensions | 15.2mm × 20.3mm |
The Pololu A4988 module has 16 pins. Below is the pinout and description:
| Pin Name | Pin Type | Description |
|---|---|---|
| VMOT | Power Input | Motor power supply (8V to 35V). Connect a capacitor (at least 47µF) nearby. |
| GND | Power Ground | Ground connection for motor power supply. |
| 2B, 2A | Motor Output | Connect to one coil of the stepper motor. |
| 1A, 1B | Motor Output | Connect to the other coil of the stepper motor. |
| VDD | Power Input | Logic power supply (3.3V to 5.5V). |
| GND | Power Ground | Ground connection for logic power supply. |
| STEP | Logic Input | Controls the step signal for the motor. |
| DIR | Logic Input | Controls the direction of motor rotation. |
| ENABLE | Logic Input | Enables or disables the motor driver (active low). |
| MS1, MS2, MS3 | Logic Input | Selects the microstepping resolution. |
| RESET | Logic Input | Resets the driver (active low). |
| SLEEP | Logic Input | Puts the driver into low-power sleep mode (active low). |
Power Connections:
Motor Connections:
Control Signals:
| Microstepping Mode | MS1 | MS2 | MS3 |
|---|---|---|---|
| Full Step | Low | Low | Low |
| Half Step | High | Low | Low |
| Quarter Step | Low | High | Low |
| Eighth Step | High | High | Low |
| Sixteenth Step | High | High | High |
Adjust Current Limiting:
Capacitor Placement:
Below is an example of how to control a stepper motor using the Pololu A4988 with an Arduino UNO:
// Define control pins for the A4988 driver
#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 a step pulse
digitalWrite(STEP_PIN, HIGH); // Set STEP pin HIGH
delayMicroseconds(500); // Wait for 500 microseconds
digitalWrite(STEP_PIN, LOW); // Set STEP pin LOW
delayMicroseconds(500); // Wait for 500 microseconds
// Repeat to create continuous motion
}
Motor Not Moving:
Overheating:
Erratic Motor Movement:
Driver Not Responding:
Q: Can I use the A4988 with a unipolar stepper motor?
A: No, the A4988 is designed for bipolar stepper motors only.
Q: What happens if I exceed the current limit?
A: The driver will enter thermal shutdown to protect itself. Ensure proper current limiting to avoid this.
Q: Can I control multiple stepper motors with one Arduino?
A: Yes, you can use multiple A4988 drivers, each connected to a separate set of control pins on the Arduino.
This concludes the documentation for the Pololu A4988 microstepping driver.