LiniStepper v1.

Microstepping Stepper Motor Driver Kit

How to "tune" it to suit special needs!

It was never my intention to make the "worlds best stepper driver"... The linistepper was designed for my own use, and where it lacks some precision and energy efficiency it IS well suited for many hobby and low power industrial tasks.

The main aim in the design was to provide a cheap platform that can accept common and cheap power transistors and use a PIC to do the "hard work" of current control and microstepping. It is very versatile and can be "tuned" for many different applications.

When properly tuned it will out-perform any microstep driver in a similar price range, and even outperform many expensive high-end drivers in specific applications.


General Issues
Current control.

The linistepper is a constant current driver, ie it CONTROLS the amount of current through each motor coil.

Microstepping requires that TWO separate current levels are controlled, one for each motor phase. I used simple current control, based on the voltage Vbe of the power transistors, as this system has worked well for me in the past and is simpler than a closed loop system typically using op amps etc.

The system I chose is fairly easy for a beginner to understand, and more importantly, adapt to their own needs. And it uses minimum parts count. :o)

The current control system I chose does have some drawbacks;

Heat sensitivity
The transistor characteristics change with junction temperature, so the transistors perform differently when hot. When the transistors are cold the current will be 5% to 10% less than the "tuned" current at the typical operating temperature of 45 degrees celcius.

I have chosen resistor values that give decent microstepping accuracy when the transistors are at operating temperature, ie I have "tuned" the thing hot as you would expect. :o)

Normally this is not a problem, as the microstepping angular accuracy of the motor itself is rarely within 5%.

If you have specific needs for high accuracy, and you have special- purpose high angular accuracy motors, you can adjust the resistors for a specific temperature range and then keep the driver in that temp range to suit.

For most apps this is really not necessary, the linistepper will be a few percent low in current when cold and soon drift to a close- enough current when at operating temperature.

Voltage sensitivity
This is a very small problem. If you vary the psu voltage by a large amount the current will drift a small percentage. The typical 10% or so that a psu droops voltage under load will generally cause less than 1% change in current. In most cases this can be totally ignored.

Power loss in the sense resistors
Again this is a very small problem. My design calls for 1v across the sense resistors when the phase is at 100% current. It is easy to see and tune phase "current" on the CRO. At phase currents of 1A, and using resistors of 1 ohm, each resistor will dissipate a maximum of 1W.

Average dissipation (ie a running motor) will be about 0.7 volts per resistor, (ie 0.7W) and the kit contains 3W resistors which will run at a reliable temperature.

This may become an issue when tuning the linistepper for higher-current motors, more about that later.


Thermal Runaway!
As the transistors heat up to their normal operating temperature the current will increase a few percent.

If you don't have enough heatsinking and the transistors get TOO HOT it is possible for the driver to go into thermal runanway where the transistors are destroyed and possibly your motor too.

This is typical of linear amps, and some designers use temperature sensors mounted close to the heatsink that will shut down the device if it gets too hot. I chose the simple, minimum parts count solution where you simply use a big enough heatsink and forget about it. :o)

It is IMPORTANT to run the motor at a standstill for one hour at FULL CURRENT and measure the temperature of the transistors. As the system will draw from 50% current to 100% current depending on what microstep it is on, the only way to do this is set the driver to 200 step mode (full step mode) where it always draws 100% current through BOTH COILS. This is your worst case current load.

As the motor properties are known, if it is heatsunk adequately for this one hour test it will be reliable long term and you won't have to worry about this again.

NEVER assume that because it runs cool for 10 minutes the heatsink is big enough!! Also make sure the operating conditions are typical, ie; allow for a hot summer environment. :o)

If the transistors fail, they will fail short circuit and expose your motor to excessive current, which depends on your psu voltage and may be a few times the normal phase current. This is enough to cook the motor if left unattended.

Simple solutions are:

In most cases a simple fuse and a TESTED HEATSINK will give all the reliability you require. Remember the number one rule: Keep the transistors under 50 degrees celcius!

Please don't let my "idiot proof warnings" put you off the linistepper. It WILL be reliable, providing you understand the basic concept of heatsinking and do the simple one hour test. :o)


Changing Current
The linistepper kit is supplied with 1 ohm sense resistors. These will give 1 amp per motor phase (2 amps max).

Tuning the motor current is easy;

current = 1 / ohms

1 ohm = 1 amp/phase (the 1 ohm resistors are supplied with the kit)

2 ohms = 0.5 amp/phase
3 ohms = 0.333 amp/phase
0.667 ohms = 1.5 amp/phase (maximum!)
etc.

Remember to tune current with the driver transistors at the expected operating temperature, normally about 45 degrees celcius or 113 F.

A simple trick!
The reciprocal nature of the sense resistors means that it is easy to add resistors in parallel to give the required current.

The circuit board has provision to add up to 3 resistors in parallel, to allow fine tuning of motor current.

If you have 1 ohm resistors, ie 1 amp/phase and you desire phase current of 1.1 amps, you can simply add a pair 10 ohm resistors AS WELL AS the original 1 ohm resistors to give total 1.1 amps. The 10 ohm resistors simply ADD another 0.1 amp. :o)

This calculator can help you find the resistors to combine for any desired current.

Target current Amps
Tolerance on search Percentage
  (Results show in new window)

This Electronics design utility finds sets of resistor, using standard values which, when paralleled together, give your target current value.

------------------------------------------------------------------------
Tuning For High Currents!
------------------------------------------------------------------------

The standard parts supplied with the linistepper kit are good for 1.5
amps/phase maximum. That is a total motor current of 3 amps.
(note 1.5A will require the purchase of a pair of 2 ohm 1W resistors)

This is enough for most 23 frame (and smaller) motors provided they are
high inductance motors. Motor type can usually be confirmed by the ratio
between rated coil volts and amps (written on motor).



Typical high-inductance motors:
12v 0.6A (per phase)
5v 1A
3.5v 1.5A (etc)

Typical low-inductance motors:
2v 3A
1.8v 4.7A (etc)

The low inductance motors CAN be used with the linistepper but are not
very efficient and the linistepper will waste lots of heat. It is also
possible you have BIG motors, ie 34 frame or bigger, and because of the
huge motor size they simply require larger currents.

If you require currents greater than 1.5A/phase you will need to
change some parts values in the linistepper.

The main transistors are rated for max 5A. They CAN be used for
motor currents of up to 5 amps/phase. (You can even purchase darlington
transistors the same physical size good for over 10 amps!)

However using currents greater than 1.5A/phase will cause some headaches;

* heat sensitivity increases (more temp drift)
* much larger heatsink will be needed (more heat)
* sense resistors will need to be larger wattage type (more heat)
* microstepping tuning resistors need to be changed
* you will need electronics skills and test equipment!

I won't go into great detail here but it is viable to get up to 3A/phase
from the linistepper but currents of 5A/phase etc are not very sensible.

The bulk of the problems arise from the increased thermal effects on the
transistor Vbe junction, and base drive current (darlington beta).

The effects of this are that the microstep currents become less accurate,
and changes in microstep currents from cold to hot become much greater.
It is quite viable to run 5A/phase or more, IF you do not require great
microstep accuracy.

If you only require full stepping (which has no microstep current levels)
you can use whatever currents the transistors will tolerate. This requires
using lower value sense resistors, to reduce heat losses on the resistors,
and some attention to the voltages supplied to the transistor bases by the
PIC and base resistors.

Likewise the hi-torque half stepping mode only requires 2 current levels
per phase; 100% and 40%, and you should be able to get high currents in
that mode with acceptable heat range accuracy.

You can get 3A/phase AND microstepping if you reduce the values of R14-R17
and change the values of R18-R29 to give the correct phase currents.
Make sure you understand how the hardware microstepping works;
click here for how it works
and I also suggest having a test setup to run the motor in 1200 step mode
at about 2 revs/second so you can see the hardware microstep levels on the
CRO. I also suggest reducing the voltage on the sense resistors so that
100% phase current equals about 0.5v on the sense resistors and yes that
means living with more temperature drift so tuning at rated temperature
becomes more critical.

So YES it can be done, and you can get 3A/phase or more AND microstepping,
but you need to know what you are doing. Considering that 3A/phase
microstep drivers cost $200 USD and more, and these still do not provide
the linear current ramping of the linistepper, it can be worth the effort.
I have seen 3A/phase microstepping ramped drivers costing $500 USD.

------------------------------------------------------------------------
Microstepping Tuning!
------------------------------------------------------------------------

One of the great advantages of the linistepper is that it has "brains on
board".

If you can write PIC software, the PIC has enough processing power to do
any microstep mode you choose, all the way up to infinite step angle or
"soft stepping". This can be very useful for systems that require fine
angular adjustment like camera pan/tilt setups which have a camera glued
to the end of a motor shaft. Obviously 200 steps/rev gives clunky camera
movement but the PIC has unlimited control of phase current through
software PWM and can move the camera to ANY possible angle.

The software I have provided does 200/400/1200/3600 steps/rev with a
standard 200 step motor. Only the 3600 mode uses software pwm, the other
3 modes use microstepping currents determined by hardware, specifically
resistors R14 to R29 balanced against the Vbe performance of the main
transistors.


Excitation energy represents the energy lost as the motor "jumps" jerkily
from one step to the next. The smaller the microstep, the smoother and
better the motor performance.

It is possible to change these resistor values (and change PIC software)
to give other microstepping modes.

Popular microstepping modes are 800 steps (quarter) and 1600 steps.
800 can be done with hardware alone, but 1600 steps will probably require
software pwm. This may be worthwhile if your CNC software requires one
of these microstepping modes.

If you need slow performance with minimum resonance (a common need) then
the PIC can be reprogrammed easily to give 7200 or 10800 steps/rev with
simple changes to the step table structure in the software. Coupled with
the hardware current ramping capacitors, this will give almost totally
smooth motor rotation even at the slowest speeds. This is rare even in
the expensive commercial drivers.

With the ability to change component values and PIC software the
linistepper will suit a huge range of applications from hobby robot motor
drive to super-smooth motion control.

There is plenty of program memory still available in the PIC to do
indexing, motion control and even complete machine control from the one
small circuit board.

-end

Questions:

Comments:

See also:

Interested: