Motors 4

How  two pole, or wave stepping motor works, and how to drive it.



Motors 3 looked at four phase motors, that is motors with four coils. These are usually arranged with one connection common to all coils and as such the coils are either on or off. A newer form of stepping motor is becoming increasingly popular, namely a two phase motor. This type has two separate coils, this enables you to drive it in a number of different ways. Two phase motors are generally lighter and have more torque than four phase ones.


There are basically three different ways of driving a two phase motor,

  1. 1)wave drive,

  2. 2) two phase on

  3. 3) half step. 

A look at figure I will illustrate the differences, this shows the coils at right angels to each other and a permanent magnet rotor showing north and south poles. When the coil is shown clear it is off, when shaded with dots current is flowing in one direction, when hatched it is flowing in the other direction.

Now for simplicity, this shows only a single wound coil giving 90 degrees per step. In practice there are multiple coils all wired up in parallel, this reduces the step angle from 90 degrees to a typical 1.8 degrees per step.

With wave drive only one coil is activated at a time. Each coil is activated in turn and has the current reversed from the previous time it was activated. Let's call the two coils A and B and we say that A+ represents the coil with current flowing through it in one direction with A- the reverse direction. Then the wave drive sequence will be:-

A+ / B- / A- / B+

With “two phase on” drive, both coils are energised but only one coil changes direction at a time.

This sequence is:-

A+ B-  /  A- B-  /  A- B+  /  A+ B+

Now both these driving schemes have four steps in the sequence so each step will produce the same degree of movement. However, with the last sequence as there is current flowing in both phases the motor will draw twice as much current. This will be translated into more torque for the motor. Therefore these two driving methods can be thought of as high and low power modes.

We can combine these two methods to get what is known as half stepping. This is where we alternate between having one, and both, coils energised. This produces a sequence of eight steps and so for each step the motor only turns through half the angle produced from the other two sequences.

This sequence is:-

A+  /  A+ B-  /  B-  /  A- B-  /  A-  /  A- B+  /  B+  /  A+ B+

This produces an average current loading and torque in between the first two schemes but with finer control over the motors position.

Limiting factors

Another factor limiting the performance of stepping motors is the current flow through the motor. Now there is usually a DC limit to the current that you can pass through each winding. The normal solution to this is to use a voltage such that when the motor is stationary this limit is not reached. In deed this is what is meant by a 5V or 12V motor, you can safely place that voltage across them. Now this is fine for low speeds but it will tend to limit the top speed of the motor. You see the motor coil represents a large inductance and this means that it will take some time for the current flow to build up to the maximum value. This delay in current flow is similar to the delay in voltage rise across a charging capacitor. If the motor is being moved fast then there might not be enough time for the current to rise to the maximum level. Even if it does, the average current through the coils will be lower than it could be. This reduces the torque and hence the top speed you can use.

The solution to this is to feed the motor with a much higher voltage, in that way the rise time is increased. However, in order not to exceed the maximum current you must do something to limit the current. One way of doing this is to use a chopping supply or switching regulator. This is where the current through the coil is monitored and the voltage drive is switched off when the current reaches its maximum value. Now once turned off the current will start to fall and so you need some way of maintaining it. This is supplied by a fast oscillator that is repeatedly turning the coil on and a current sensor that turns it off a short time later. In this way the motor can deliver much greater torque at high speeds whilst not frying at lower speeds.


This is all very well but how do we go about implementing these driving systems. Well fortunately there are several integrated circuits that will easily do the job. The ones I want to look at this time are the L297 and L298. Now the L298 is the driver chip which will turn the motor coils on and off as well as changing the direction of the current flow. It's known as a driver bridge and is very similar to the LM18293 motor driver I used to drive DC motors with in the Motors 2 page. The difference is that the L298 will drive up to 2 Amps at 46V and is fitted with current sensing outputs.

The L297 is the control chip, this generates the driving sequence in any of the three schemes we have talked about. In addition it also has the electronics to support a chopper stabilised motor coil supply. This means that the computer need only supply a single pulse signal to control the stepping of the motor. There are other inputs to this chip that can be either hard wired or supplied by the Arduino if you want greater control. The direction input determines whether the motor turns clockwise or anti clockwise and the half/full input determines the stepping scheme used. The reset input, when a logic zero is placed on it, sets the sequence to its starting position. This position is indicated by the "home" output pin.

Now the eagle eyed of you might have spotted there appears to be no way of selecting between "wave drive" and "two phase on" drive. To get "two phase on" you select full step when the driver is in the home position and "wave drive" when you move to full step when the driver is one place off the home position. Therefore, if you want you Arduino to be able to set up all the stepping modes you need two output pins one connected to the reset and the other to the full/half control. Finally the "enable" input when driven low inhibits both coils thus turning them off. This can be controlled by the Arduino if you want to turn off the motors. However, remember the motor can be stopped but still turned on, that is have current flowing through it. In this state it has the highest torque in the form of resistance to movement. When the motor is off it is free to be moved by any external force.

The full circuit is shown in Figure II and should suit most motors with a maximum winding current of 2A.

To simplify the diagram I have omitted to show the clamp diodes these should be connected at the end of each coil to the supply and earth. This is shown in Figure III.

It would also be prudent to put a 0.1uF ceramic de-coupling capacitor on the power supply pins to each chip. The Current sensing resistors need to give about 2.5V when the maximum current is flowing through them, however this is uncritical. You can calculate the value you need for any motor by using Ohms law.

The Sync pin can be connected to another L297 if it is being used and then you wont need to duplicate the resistor an capacitor on pin 16. It can also be used if you want to derive the chopper frequency from an external source, simply feed that in at this point and omit the connection to pin 16.


Motors 4