Motors guide series
Unipolar vs bipolar stepper motors
What is the difference between unipolar and bipolar stepper motors? It's in the coils.
Bipolar stepper motors are generally able to produce more torque than unipolar stepper motors, and are more efficient.
However, they are more complicated to drive (="operate"). The main difference between the two types of stepper motors has to do with the way that the wire winding is constructed.
Stepper motor wire winding
Here's a simplified depiction of the wire winding for the two types of stepper motors.
In the schematic above, you can see a bipolar stepper motor and a unipolar stepper motor with two phases each.
A wire winding arrangement is refered to as a "phase"
The unipolar stepper motors, has one winding per phase, with a center tap. This allows the controlling circuit to operate the motor with current that flows always in the same direction. Therefore, there is no need to generate reverse current. Each time the phase is activated, only half of its coil is energized.
The bipolar stepper motor also has a single winding per phase. However, there is no center tap. This means that when the phase is activated, the entire coil is energized. The result is that the bipolar motor is able to produce much more torque compared to the unipolar motor. But, there is a cost: the controlling circuit must be able to generate current that can move both ways through the coil, i.e. "regular" current and "reverse" current. As a result, the controlling circuit for a bipolar stepper motor is more complicated then that of a unipolar stepper motor.
Bipolar motors have multiple (at least two) independent windings. A wire comes out of each of the winding's ends, so you get two wires per winding.
Unipolar motors may also have multiple (more than two) windings. However, in addition to the ends of each winding are connected to wires, the middle attaches to a third wire.
The absence of this third (common) wire means that bipolar motors are slightly easier to make.
Stepper motor drivers
When it comes to driving stepper motors, the simpler bipolar motor requires a more complex driver; this is because, to precisely control its motion, we need to be able to drive current in each winding in both directions.
On the other hand, in a unipolar motor, we can get away with a current that flows only in a single direction; this means that the driver electronics can be made simpler. The trade-off is that we use only half of each winding coil at a given time, and this translates to lower torque and efficiency.
However today, with easy access to motor drivers like H-bridges, it is easy to drive bipolar motors with alternating current. Unipolar motors advantage of not needing the reverse current is not a big deal anymore so it is possible to get all of their operational advantages with minimal cost.
Stepper motor drivers
To drive a stepper motor with your Arduino, you can consider these drivers (I have included on a few common examples):
- A4988, can control one bipolar motor with up to 2A of current per coil.
- DRV8825, can control one bipolar motor with up to 2.2A of current per coil.
- L298N, a classic driver, can control one bipolar motor with up to 2A of current per coil.
- TB6600, can control one large bipolar motor with up to 4.5A of current per coil.
- ULN2003, can control one small 5V unipolar stepper motor.
If you would like to learn how to use bipolar and unipolar stepper motors (such as the NEMA17) with drivers such as the L298N, Easydriver or the ULN2003, consider enrolling to Arduino Step by Step Getting Serious.
We cover stepper motors in a dedicated section (Section 18) that contains 18 lectures.
New to the Arduino?
Arduino Step by Step Getting Started is our most popular course for beginners.
This course is packed with high-quality video, mini-projects, and everything you need to learn Arduino from the ground up. We'll help you get started and at every step with top-notch instruction and our super-helpful course discussion space.
Jump to another article
2. How to drive a DC motor without a motor driver module
3. What is "microstepping"?
4. Direct current motor
5. Project 1: Control two DC motors with your Arduino and the L298N controller
6. Project 2: Control speed and direction with a potentiometer
7. Project 3: DC motor control with a distance sensor
8. Project 1: Control a servo motor with a potentiometer
9. Project 2: Servo motor control with VarSpeedServo
Done with the basics? Looking for more advanced topics?
Arduino Step by Step Getting Serious is our comprehensive Arduino course for people ready to go to the next level.
Learn about Wifi, BLE and radio, motors (servo, DC and stepper motors with various controllers), LCD, OLED and TFT screens with buttons and touch interfaces, control large loads like relays and lights, and much much MUCH more.