2 Channel Analogue Stepper Controller

by Tony Blewett

A semi-technical (simple) description of Stepper Motor principles, and notes on identifying connections to ‘surplus’ motors.

A stepper motor consists of a permanently magnetised rotor which is free to rotate in the fields of a number of static stator coils. Usually, only one of the fields is ‘energised’ by an electric current at any given time, which pulls the rotor towards it. On reaching the nearest position, it stops. If the ‘next’ stator coil is then energised, and the previous switched off, the stator will move to the new position, and once again stop when it reaches it.

If this sequence is continued in order, the rotor will move round in ‘steps’, stopping momentarily between ‘steps’. A typical stepper motor will have a ‘step’ interval of 7.5 degrees, and hence 360/7.5 or 48 steps per rev.

In practice, the jerky nature of rotation is somewhat smoothed out when the motor is running.

Clearly, some sort of electronic circuit is required to feed the stator coils with current in the correct sequence to enable rotation, and this can be done using an integrated circuit with a few external components, the most common small device being the SAA 1027.

This IC needs to be fed with DC Power, a ‘clock’ squarewave signal, and a logic level signal which will determine which way the motor runs. It will then take care of feeding the right current to the right coils on the motor. The faster the clock signal goes, the faster the motor will run.

Some points to note about stepper motors:

  • The minimum angular distance any motor can turn is 1 ‘step’ (in the example above, 7.5 degrees.)
  • There is no limit to how slowly these steps can be made to occur (useful for ‘inching’).
  • There is an upper speed limit beyond which the motor will not run; at the limit, it loses torque and is easily stalled, and will not restart. For a small motor, this is typically 300 rpm.
  • Speed has nothing to do with the applied voltage (which is what causes the current to flow in the stator coils), this is determined entirely by the clock pulse frequency.
  • The applied voltage does affect the torque however, and it should be noted that unlike other types of motor, the stepper consumes current even when stopped, and the safe heat dissipation in the stator coils sets the upper limit on the energising voltage.

The stepper motor’s advantages over other types of motor can be summarised as follows:

  • Precise positional change with applied pulses (this is what makes it so useful for computer control)
  • Speed precisely controllable by pulse input frequency.
  • Relatively quiet.
  • Rotor, and hence output shaft ‘locked’ when stopped (but still under power)


  • Is relatively inefficient, and consumes power even when stopped.
  • Output is ‘jerky’ at slow speeds.
  • Needs relatively complicated support circuitry to drive.

Hints on finding the right connections on‘surplus’ stepper motors, where there is a lack of information.

Motors with 4 stator coils (called 4 phase unipolar) are the most common, and will only be discussed here. You need to find (a) which connections go to which coil, and (b) establish the correct ‘firing’ order for rotation. In doing this, you will have established which pairs go to which outputs on the driver circuit.

The 4 coils could have 8 connections, or 5 connections. In the former, each coil is separate, and inspection can usually determine which is the ‘start’ and ‘finish of each winding. Each ‘start’ can then be connected together, leaving a total of 5 connections, one being common.

You can find which wires are connected to the pairs of coils using a multimeter switched to the continuity range, or even a battery greater than say 4.5V with an LED and a series resistor of say 1 Kilohm. Expect each coil to have a resistance in the range 10 - 200 ohms for small motors.

To establish the correct ‘firing’ order, fit say a bush wheel to the shaft, mark a point on the wheel against a cardboard ‘cursor’ and use trial and error to find the sequence of coils that need to be energised to ‘step’ the motor round 4 ‘steps’. These can be labelled a,b,c,d in turn and connected to the appropriate outputs on the driver IC.

Click here for schematic (38k)
Semi-technical (simple) description of the 2 Channel Stepper Controller.

Please note that this circuit requires the use of one or more stepper motor driver circuits; these can be obtained in kit form (with a suitable motor if desired) from Maplin Electronics

The aim of the circuit is to provide a variable frequency pulse signal to the stepper motor driver circuit, so that its speed can be controlled from zero to maximum, by means of a slider potentiometer as used on some domestic hi fi equipment.

Additionally, zero speed is arranged to be in the middle of travel of the slider; moving it in the opposite direction will cause the motor to run to up to its maximum speed, but in the opposite direction.

In the first part of the circuit, two quarters of operational amplifiers 324a and b, sense when the slider of VR1a is in the middle of its travel, and in conjunction with one of the four exclusive or gates 70a, prevents one half of the dual clock oscillator timer 556a from running when the slider is in the centre (stop) position. In all other positions of the slider, 556a is allowed to run.

The dual timer IC 556 is used to generate the clock pulses whose rate will determine the speed of the stepper motor. 556a is connected as a free running astable oscillator, whose timing constants are set by one half of VR1b, R9 and C3.

Which half of VR1b is selected for use, is determined by the analogue switches 66a or 66b. One of these is always on, whilst the other is off, due to the action of the exclusive or gate 70c connected as an inverter.

In this way, when VR1 is moved either way from the centre position, the speed of the motor is increased to maximum at the end of its travel.

At the same time, inverter 70c feeds the motor driver direction input, which makes the motor direction conditional on which side of the middle of travel VR1 is.

The result is that when VR1 is in the middle of its travel, the motor is stopped. As it is moved away from the centre, the motor speed increases proportionally to maximum at maximum travel. If VR1 is moved back through the middle position and out the other side, again the motor stops and then increases its speed, but this time in the opposite direction.

The LED in the output of 556a gives a visual indication of the pulses being fed to the stepper driver, and will also be useful to check the operation of the circuit, without the driver and motor connected.

Adjust PR1 so that an acceptable ‘stop’ region exists at the centre of travel of VR1.

Different motors may require adjustment to the values of R9 and C3 which determine maximum and minimum speed of the clock pulses to the motor.

The ICs used provide enough amplifiers and gates to make a 2 channel version, at the cost of a few extra components etc, this can be omitted if desired.

The entire circuit can be powered from 12 Volts DC, from nicads or a mains PSU; primary batteries are not recommended owing to the high current consumption of stepper motors.


My favourite method is to use veroboard with IC ‘pads’, and then wire everything up using vero wire strung around vero ‘combs’. I make a copy of the circuit drawing, and ‘highlight’ each connection as I make it, this way, nothing gets forgotten, as using this method, mistakes are difficult to identify, let alone rectify.

Some brave souls might choose strip veroboard, or even design a printed circuit; if somebody does the latter, please send me a copy of the artwork!

More ‘Technical’ description

The circuit to be described provides proportional speed and direction control over a stepper motor, using a dual gang slider potentiometer, centre position being 'off '.
It will find applications in models and remote positioning devices.

5 inexpensive digital and analog ICs are used, which provide 2 stepper motor control 'channels'. All the components are easily obtainable from Maplin Electronics.

The stepper motor is driven via the driver circuit module which is available as a project kit, also from Maplin Electronics. The driver requires power, clock signal, and a direction logic inputs, which the circuit which follows provides.

324a/b form a window comparator, whose outputs are exclusive or'd by 70a to provide a logic low output to pin 4 of 556a only when the wiper of slider potentiometer a is in its centre position. This disables the output of 556a and ensures the stepper motor halts when the slider is in its centre 'off' position.

The 4k7 preset PR1 in the input allows for the adjustment of the width of 'deadband' of the control potentiometer's centre position.

The .1uF capacitors on the 324a/b outputs prevent potentiometer 'glitches' affecting circuit operation.

One half of the comparator's output is used to control which half of the analog switches 66a or b is 'on', and hence which half of the ganged slider VR1b is in the timing circuit of the astable clock generator 556a. The position of the wiper away from centre determines the frequency of the clock output, and hence the speed of the stepper motor.

The motor direction logic input to the driver is taken from 70c, which is connected as an inverter, necessary to ensure only one of 66a or b is 'on' at any time. The motor therefore runs in the direction determined by which side of 'centre' the slider is.

The 470 ohm resistor, the value of the slider pot and the 2.2u capacitor determine the maximum and minimum clock rates sent to the stepper driver, and can be adjusted to suit the motor in use or the application.

The optional LED in the output of 555a gives a visual indication of clock rate, and can be omitted if required.

The other half of the 556, plus the other halves of the logic chips provide a 2nd channel.

Parts List

All from Maplin Electronics

Description Value Quantity Order #
Miniature resistors 10k 4 E10K
" 100K 8 E100K
" 1K 4 E1K
" 470 ohm 2 E470R
Capacitors 0.1uF 6 RA49D
" 2.2uF 2 YY32K
Stepper kits including motor - 2 LK76H
Red LED - 2 WL27E
IC - LM324 - 1 UF26D
IC - 4070 - 1 QX26D
IC - 4066 - 1 QX23A
IC - 556 - 1 QH67X
Slider Potentiometer 100k Linear 2 JM86T
Preset Potentiometer - 2 UH02C

Previous page