Figure 1. Stepper motor wiring diagrams.
Use an ohm meter to determine type.
Arduino Unipolar Stepper Motor Control
For the hobbyist, one way to distinguish common wire from a coil-end wire is by measuring the resistance. Resistance between common wire and coil-end wire is always half of what it is between coil-end and coil-end wires. This is due to the fact that there is actually twice the length of coil between the ends and only half from center (common wire) to the end.
Here we will examine the basic operation of a unipolar stepper motor. I'll cover a bipolar stepper motor on a different page. A unipolar stepper motor has two windings per phase, one for each direction of magnetic field.
Since in this arrangement a magnetic pole can be reversed without switching the direction of current, the commutation circuit can be made very simple (eg. a single transistor) for each winding.
Typically, given a phase, one end of each winding is made common: giving three leads per phase and six leads for a typical two phase motor. Often, these two phase commons are internally joined, so the motor has only five leads. Others can have six leads.
A micro controller or stepper motor controller can be used to activate the drive transistors in the right order, and this ease of operation makes unipolar motors popular with hobbyists. They are probably the cheapest way to get precise angular movements.
Bipolar motor: Bipolar motors have a single winding per phase. The current in a winding needs to be reversed in order to reverse a magnetic pole, so the driving circuit must be more complicated, typically with an H-bridge arrangement. There are two leads per phase, none are common.
Stepper motors consist of a permanent magnet rotating shaft, called the rotor, and electromagnets on the stationary portion that surrounds the motor, called the stator. Controlling the sequence will cause the rotor to move. The electromagnets are energized by an external control circuit, such as a micro controller.
Figure 2. Basic stepper motor construction.
Figure 3. Two phases on for more torque.
When half stepping, the drive alternates between two phases on and a single phase on. This increases the angular resolution (less degrees per step), but the motor also has less torque at the half step position (where only a single phase is on). This may be mitigated by increasing the current in the active winding to compensate. The advantage of half stepping is that the drive electronics need not change to support it. In the examples below I only use two-phase single step for high torque.
For more technical detail see Stepper Motor Basis from Microchip. (PDF file)
Schematic for this program.
- Basic Transistor Driver Circuits for Micro-Controllers
- Opto-Isolated Transistor Drivers for Micro-Controllers
Related Stepper motor Pages:
- Arduino Stepper Motor Coil Winder
- Considerations for Using Stepper Motors
- How to Connect Easy Driver Micro-Stepper Controller to Arduino
- Using a Unipolar Stepper Motor with a Arduino
- Using the MC3479 Stepper Motor Controller with Arduino
- Connecting the Arduino to a L298N H-Bridge
- L298N Motor Controller Theory and Projects
- Comparator Theory Circuits Tutorial
- Analog Solar Panel Battery Charge Controller
- Better Arduino Rotary Encoder Sensor
- Simple 3-Wire MAX6675 Thermocouple ADC Arduino Interface
- Arduino Projects Revisited Revised
- Schematic for Following Projects
- Programming ADS1115 4-Channel I2C ADC with Arduino
- Arduino uses ADS1115 with TMP37 to Measure Temperature
- Connect Arduino to I2C Liquid Crystal Display
- Arduino Reads Temperature Sensor Displays Temperature on LCD Display
- Arduino with MCP4725 12-bit Digital-to-Analog Converter Demo
- Arduino with ADS1115 4-Channel 16-bit Analog-to-Digital Converter
- Arduino with MCP4725 12-Bit DAC
- My YouTube Videos on Electronics
- Introduction to the Arduino Microcontroller
- Part 1: Programming Arduino Output
- Part 2: Programming Arduino Input
- Part 3: Arduino Analog to Digital Conversion
- Part 4: Using Arduino Pulse-Width-Modulation
- Arduino DC-AC Power Inverter
- Testing the Keyes IR Sensor Module with Arduino
- PCA9555 32-Bit GPIO Expander with Arduino
- Repost Arduino AC Power Control
- Arduino with a DHT11 and DS18B20 Temperature Sensors
- Arduino with the HEDS-9000 Rotary Encoder
- Arduino RTC Clock with MAX7219 8-Digit LED Display
- Using Easy Driver Microstepper with L298N and Arduino
- Easy Driver with Arduino and Unipolar Stepper Motor
- Arduino Stepper Motor Control
- MC3479 stepper motor controller with Arduino Pt 1
- MC3479 Stepper motor controller with Arduino Pt. 2
- Using a SN74164 Serial Shift Register with a LCD Display and Arduino
- 74C164 shift register with Microchip PIC Part 1
- 74C164 shift register with Arduino Part 2