Skip navigation links - Goto navigation bar

Micro-step driver

Table of contents - Design - Not only electronics - Mail - IT

Microstep driver for stepper motor

This circuit allows to connect a bipolar step motor to a personal computer through the parallel port. The circuit is, for safety reasons, optically isolated from the PC and it allows to manage motors up to 3A for phase. Moreover, the digital interface allows to connect up to six motors to a single PC parallel port.

The more interesting aspect of this circuit is its ability to implement the microstep technique and to multiply up to 64 times the motor real steps number. As an example, a 200 steps motor could behave like a "virtual" 12.800 steps motor. This function is particularly useful when the spin speed is very low, in the order of fractions of rpm.

The short software included allows you to test the operation of a motor under Windows and should be used as example. Present also a mini-software for DOS and Linux. They are all bases to on the VVIO project.

The hardware

The circuit substantially is divided in two sections:

LMD18245 includes logic in order to digitally select the current that must be sent to the load, in sixteen steps. Moreover it is available a pin to set up the sign of the current.

The current depends from the value of the resistance R1 (or R4) and from four digital input. On the data sheets the formula is:



Vdac Reference voltage, 5V in my circuit
D Four bit digital input configuration (0... 15)
R R1 (or R4) - Values range should be 6k8 to 20k, approximately for the maximum currents of 3 to 1A 
Imax The maximum load current

The managed maximum current is 3A, the maximum power supply of 50V. Thermal details are present on the data sheets but no heat sink is required for currents up to 1A. If yon need an heat sink, please see photos for details.

The operation

In order to work the circuit needs the connection to personal a computer through the parallel port. See Iso-buffer for details about digital interface and electric isolation.

The following image shows the current in one phase of motor. For measurement a 0.15 ohm power resistor has been used, so a scope division equals to approximately 1.5 A.

Current in stepper motor

In the file microstepper.tgz there is the windows test software (up to two circuits at same time could be used). There is moreover present two simplest example for dos and Linux; in order to use it is necessary:

  1. Extract all files in microstepper.tgz and to save them in any folder
  2. Install (or copy) VVIO project files you need
  3. Install LabWindows/CVI Run Time Engine (windows only)

The library from VVIO project contains some functions in order to drive up to  six circuits at the same time, all connect to the same parallel port.

List of components

C1, C3 470 pF
C2, C4 2.2 nF
C5 Electrolytic 100 (or 47) uF - 63V
C6 Tantalum 10 uF
C7, C8, C9 100 nF
C10, C11, C14, C15 470 nF
C13, C12 Electrolytic 470 (or 1000) uF - 63V
ISO1, ISO2, ISO3 6N135
JP1 5x2 poles connector , 2.54mm
J1, J2, J3 2 poles connector , 5mm
R1, R4 6k8 - 20k (load current set - see text)
R2, R5 22 kohm
R3 100 ohm
R6 220 ohm
R7 680 ohm
R8, R10, R12 270 ohm
R9, R11, R13 2.2 kohm
U1, U3 CD4094B
U4, U2 LMD18245
U5 LM317HV

If the power supply remains under 30V the capacitors working voltage can be reduced and is possible to use a "normal" LM317.

The pcb

The pcb is a double layer but I have not used any plated holes; it is necessary to insert some small wire in order to connect the two sides of the printed circuit and, for some components, use the "double-layer soldering" technique.

In order to avoid difficulty soldering on top layer, best way is to use the following order:

IStepper motor driver

The software, the schematic and the PCB are contained in microstepper.tgz file:

licence.txt License
schematic.pdf Circuit schematic, in pdf format 
top.pdf Component pcb side, in pdf format 
bottom.pdf Solder pcb side, in pdf format 
assembly.pdf Components layout, in pdf format 
LW-CVI\ Software for windows: LabWindows/CVI
TC\ Software for dos: TurboC
gcc/ Software for  Linux: gcc

To build this circuits you need:

For unipolar motor stepper, you can see Step driver design.