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 an excellent choice for applications requiring precise motor control. This driver is widely used in 3D printers, CNC machines, robotics, and other motion control systems.
The A4988 Stepper Motor Driver (Red) has the following key specifications:
Parameter | Value |
---|---|
Operating Voltage | 8V to 35V |
Logic Voltage | 3.3V or 5V |
Maximum Output Current | 2A per coil (with sufficient cooling) |
Microstepping Modes | Full, 1/2, 1/4, 1/8, 1/16 |
Current Control | Adjustable via potentiometer |
Thermal Shutdown | Yes |
Overcurrent Protection | Yes |
Dimensions | 20mm x 15mm x 11mm |
The A4988 module has 16 pins, as described in the table below:
Pin Name | Type | Description |
---|---|---|
VMOT | Power Input | Motor power supply (8V to 35V). Connect to the stepper motor's power source. |
GND | Power Ground | Ground connection for motor power supply. |
VDD | Power Input | Logic voltage supply (3.3V or 5V). |
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 | Pulse signal to control motor steps. |
DIR | Logic Input | Direction control signal. |
ENABLE | Logic Input | Enables or disables the driver (active low). |
MS1, MS2, MS3 | Logic Input | Microstepping mode selection pins. |
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:
Adjust Current Limit:
Current Limit = VREF / (8 × RS)
where RS is the sense resistor value (typically 0.1Ω).Enable the Driver:
Below is an example of how to control a stepper motor using the A4988 and 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 = one direction)
}
void loop() {
// Generate step pulses to move the motor
digitalWrite(STEP_PIN, HIGH); // Step pulse HIGH
delayMicroseconds(1000); // Wait 1ms (adjust for speed control)
digitalWrite(STEP_PIN, LOW); // Step pulse LOW
delayMicroseconds(1000); // Wait 1ms
}
Motor Not Moving:
Driver Overheating:
Motor Vibrates but Doesn't Rotate:
Erratic Motor Movement:
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 for a specific current limit?
A: Use the formula VREF = Current Limit × 8 × RS
. For example, for a 1A current limit and RS = 0.1Ω, VREF = 0.8V.
Q: What happens if I exceed the maximum current rating?
A: The driver may overheat and trigger thermal shutdown. Prolonged operation at excessive currents can damage the driver.
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.