

The Bipolar Stepper Motor (NEMA 17) is a type of stepper motor that uses two coils to generate magnetic fields, enabling precise control of rotation and position. The "NEMA 17" designation refers to the motor's faceplate dimensions, which are 1.7 inches (43.2 mm) square. This motor is widely used in applications requiring accurate positioning, such as 3D printers, CNC machines, robotics, and automated systems. Its compact size, high torque, and reliability make it a popular choice for both hobbyists and professionals.








Below are the key technical details for the Bipolar Stepper Motor (NEMA 17):
| Parameter | Value |
|---|---|
| Step Angle | 1.8° (200 steps per revolution) |
| Holding Torque | 40-50 N·cm (varies by model) |
| Rated Voltage | 2.8 V (typical) |
| Rated Current | 1.2 A per phase (typical) |
| Resistance per Phase | 2.4 Ω |
| Inductance per Phase | 3.2 mH |
| Shaft Diameter | 5 mm |
| Dimensions (L x W x H) | 42 x 42 x 48 mm |
| Weight | ~280 g |
The Bipolar Stepper Motor (NEMA 17) has four wires, corresponding to two coils. The pinout is as follows:
| Wire Color | Coil | Description |
|---|---|---|
| Red | Coil A | Positive terminal of Coil A |
| Blue | Coil A | Negative terminal of Coil A |
| Green | Coil B | Positive terminal of Coil B |
| Black | Coil B | Negative terminal of Coil B |
Note: Wire colors may vary depending on the manufacturer. Use a multimeter to verify coil pairs by checking continuity between wires.
Below is an example of how to control the NEMA 17 stepper motor using an Arduino UNO and an A4988 stepper driver:
// Define pin connections
const int stepPin = 3; // Pin for step signal
const int dirPin = 4; // Pin for direction signal
void setup() {
pinMode(stepPin, OUTPUT); // Set step pin as output
pinMode(dirPin, OUTPUT); // Set direction pin as output
digitalWrite(dirPin, HIGH); // Set initial direction (HIGH = clockwise)
}
void loop() {
// Rotate the motor 200 steps (1 revolution for 1.8° step angle)
for (int i = 0; i < 200; i++) {
digitalWrite(stepPin, HIGH); // Generate a step pulse
delayMicroseconds(500); // Pulse width (adjust for speed)
digitalWrite(stepPin, LOW); // End of step pulse
delayMicroseconds(500); // Delay between steps
}
delay(1000); // Wait 1 second before changing direction
// Change direction
digitalWrite(dirPin, LOW); // Set direction to counterclockwise
// Rotate the motor 200 steps in the opposite direction
for (int i = 0; i < 200; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
delay(1000); // Wait 1 second before repeating
}
Note: Adjust the
delayMicroseconds()value to control the motor's speed. Lower values result in faster rotation.
Motor Not Moving
Motor Vibrates but Doesn't Rotate
Motor Overheating
Skipping Steps
Q: Can I run the NEMA 17 without a driver?
A: No, a stepper driver is required to control the motor's coils and provide the necessary current.
Q: What is the maximum speed of the NEMA 17?
A: The maximum speed depends on the power supply, driver, and load. Typically, it can achieve up to 1000 RPM under optimal conditions.
Q: How do I reverse the motor's direction?
A: Change the direction signal (e.g., toggle the dirPin in the Arduino code) or swap the connections of one coil.
Q: Can I use the NEMA 17 with a 12V power supply?
A: Yes, but ensure the stepper driver regulates the current to prevent overheating.
By following this documentation, you can effectively use the Bipolar Stepper Motor (NEMA 17) in your projects!