

The A4988 is a microstepping driver designed for controlling bipolar stepper motors. Manufactured by Custom, with the part ID A4988, this component enables precise control of motor position and speed. It features adjustable current control, over-temperature protection, and a straightforward interface, making it ideal for a wide range of applications.








The A4988 circuit board has 16 pins. Below is the pinout and description:
| Pin Name | Type | Description |
|---|---|---|
| VMOT | Power Input | Motor power supply (8V to 35V). Connect to the motor's power source. |
| GND | Power Ground | Ground connection for motor power supply. |
| VDD | Power Input | Logic voltage supply (3.3V to 5V). |
| GND | Power Ground | Ground connection for logic voltage supply. |
| 1A, 1B | Output | Outputs for motor coil 1. |
| 2A, 2B | Output | Outputs for motor coil 2. |
| STEP | Logic Input | Controls the step signal for the motor. |
| DIR | Logic Input | Sets the motor's direction of rotation. |
| ENABLE | Logic Input | Enables or disables the motor driver (active low). |
| MS1, MS2, MS3 | Logic Input | Microstepping resolution selection pins. |
| RESET | Logic Input | Resets the driver (active low). |
| SLEEP | Logic Input | Puts the driver into low-power sleep mode (active low). |
| REF | Analog Input | Reference voltage for current control. |
| FAULT | Logic Output | Indicates fault conditions (e.g., over-temperature, short-circuit). |
The microstepping resolution 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:
Current Adjustment:
Enable/Disable:
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 // Pin connected to A4988 STEP
#define DIR_PIN 3 // Pin connected to A4988 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 a step pulse
digitalWrite(STEP_PIN, HIGH); // Set STEP pin HIGH
delayMicroseconds(1000); // Wait 1ms
digitalWrite(STEP_PIN, LOW); // Set STEP pin LOW
delayMicroseconds(1000); // Wait 1ms
}
Motor Not Moving:
Overheating:
Jerky or Inconsistent Movement:
Fault Pin Active:
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: What happens if I exceed the current limit?
A: The A4988 will enter over-current protection mode, and the motor may stop functioning until the issue is resolved.
By following this documentation, you can effectively integrate the A4988 into your projects for precise stepper motor control.