Microstepping Stepper Motor Driver Kit
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.
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.
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)
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.
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:
I have been running the linisteppers for a while, but im having problems with the heat dissipation, the linisteppers are modified for a "Vexta PK266-02A" motor (i have paralleled the 1ohm sense resistors R1 and R2 with two identical resistors making R1 0,5 ohm and R2 0,5 ohm. the stepping mode is half step. I'm only having overheating problems with my Y-axis. The psu is 12V 10A. Im using the CPU-heatsinks that i ordered from you along with the linisteppers. I have ordered a larger heat sink, that i will mount before running the machine again. Is there any more tips you could give me? would a difference in speed generate more heat? i adjusted my software to get more mm/min. the motors are quite warm 50-80 degrees celsius.
I'm looking at possibly getting a LiniStepper (or three) to drive Vexta PK266-02A motors (3.6V @ 2A per phase, unipolar), an dI'm trying to figure out the modifications I would need to make to the resistor values. I know I'll need to add a 1 ohm resistor in parallel with the existing sense resistor, but I can't for the life of me figure out the changes to R14-17 and R18-29 that are implied in this tuning page. Am I still "close enough" to spec to use the components given? If not, how do I calculate what the new values should be? It looks like R18-19 and R24-25 pair with R14-15 and R16-17 as a voltage divider, but I can't, for the life of me, figure out what the remaining resistors do. I assume it's another voltage divider, but the diodes have me stumped... If you could help me understand what they do, and how I would need to modify the values, I'd appreciate it!James Newton of Massmind replies: You shouldn't need to make any changes to those other resistors. That is only needed for very large amperage drive and to correct any minor errors in the distance between steps while microstepping. For your motors, just parallel another 1 ohm along side each of the sense resistors.
Does anyone have ideas on how to make a stepper go faster before stalling?James Newton of Massmind replies: Your symptoms are really unusual. We would expect the top speed to change with the mode. After thinking long and hard about it, our best guess is mechanical resonance in the motor. Try clamping the motor strongly to a very solid surface and add some sort of load to the motor shaft. If that changes the top speed at all, it's probably just resonance and can be controlled by any number of vibration / resonance damping systems.
At the moment the fastest I can get my stepper to turn is about 2.5rev/sec before it just sits on the bench and hums. I have a stepper motor with part number FL60STH86-2008BF (6V, 2A) and I’m using the two 1ohm resistors supplied with the LiniStepper. I have tried both 12V and 24V power supplies. It doesn’t seem to matter what step mode I’m using (3600, 1200, etc) the maximum speed tops out at about 2.5rev/sec. I have a decent fan-cooled heat sink so cooling is not an issue.
Any advice would be appreciated.
Thanks
James Newton of Massmind replies: I forgot to mention, as supplied the 1 ohm sense resistors cause the Linistepper to put out 1 amp per phase. You can change that to 2 amps (a better match for your motor) by adding a second 1 ohm resistor in parallel with each existing sense resistor mounted on the opposite side of the PCB.
Can you explain me really the difference between bipolar chopper and linear stepper drivers and why linear stepper drivers more significant. How smooth the operation can be. show me how linear operation does work.
James Newton replies: Please see: How it works and How smooth is smooth?.
dear james,i am using linistepper but no instant torque,after 3or4minutes there is little torque also microstep mode not work,speed becomes slow in 1200step mode .what to do for instant torque . thanks®ards
arun
James Newton replies: Higher voltage supply to the motor.
Comments:
See also:
http://www.google.co.uk/url?sa=t&source=web&ct=res&cd=5&url=http%3A%2F%2Fwww.kelinginc.net%2FKL23H51-24-8B.pdf&ei=5Hj0SbuzGITMjAf4ws3ODA&usg=AFQjCNH1kI3wG6yQnduWO05XgHhNAiWdJA&sig2=0TTzka4I6sAJ3LkcJtrlMA Dear linistep developer(s)James Newton of Massmind replies: Just hook it up. The linistepper will regulate the voltage supplied to the motor to keep no more than 1 amp per phase flowing in each coil. However, that will require the power transistors to dissipate the rest of the energy as heat, so make sure you have REALLY good cooling (like a CPU cooler).
I'd like to ask what modifications I'd have to make to the linistep circuit to drive Nema 34 steppers with a unipolar configuration (obviously, as your cool driver is only unipolar). The datasheet in the link includes the voltages and currents which are, if your lazy like me are, rated voltage: 4.32 volts, current/phase: 2.4A, resistance/phase: 1.8, inductance/phase: 3.3
However, I want to run the steppers at 12V from an ATX power supply, so can you or someone tell me what I need to do to the linistepper circuit to make it drive my steppers at 12V
thankyou for your time in reading this
James
Interested: