Originally Posted by
HimyKabibble
The conventional wisdom (completley incorrect) is that lost steps are just part of life with stepper motors. Over the years, I've seen a couple bazillion posts dealing with stepper problems, and have come to the conclusion that the overwhelming majority of problems are due to:
1) Too small a motor - An awful lot of people seem to start cheap and small, and only when that's proven inadequate do they break down and buy appropriately sized motors. If you're building a CNC machine, either do the calculations to determine the torque and power you really need, or be guided by what others have achieved success with. There is some excellent information on the Gecko site, in the FAQ section, on how to properly size power supplies for steppers.
2) Poor/inadequate power supplies - This is REALLY common. Using a 12V or 24V power supply, where a 48-72V supply is really called for. Similarly, many people use PC power supplies, or other surplus supplies that simply don't have the current capacity required. There is some excellent information on the Gecko site, in the FAQ section, on how to properly size power supplies for steppers.
3) Poor quality controllers - There are lots of cheap, crappy stepper controllers out there, many very limited in both voltage and current capacity. For all but very small machines, these are a waste of money. Spend the money for something good, like the Geckos, Kelings, and others. Steer well clear of unipolar controllers, and go for the more expensive PWM or "chopper" controllers, preferably with micro-stepping. They are more expensive, but in the long run wil be cheaper than buying the crappy ones first.
4) Tuning in Mach3 - There are many factors that must be right here. First is DO THE WINDOWS OPTIMIZATION as spelled out by the document on the ArtSoft website. If you have "flaky", random problems, they are VERY likely to be caused by skipping this critical step. As an example, I just resurrected my stepper-driven mini-mill. Before doing the Windows optimization, it would randomly stall one or more axes unless I turned the max velocity down under IPM. Just knocking one of the motors, or putting a load on the table woudl cause a stall. After doing the optimization, it'll run perfectly reliably at over 200 IPM, and it'll drag me along with it if I try to stop the table. If you've got a bad, or underpowered, PC, think about either buying a better one (I just bought a 2.6GHz Dell system on E-Bay for $80 with free shipping), or spring for a SmoothStepper, which will even let you run with a laptop if you wish, as it provides *perfect* step timing at all speeds.
Getting your ports and pins setup and timing right, not just to where it seems to be working, is critical. In particular, getting the step polarity correct, and the pulsewidths correct, is VERY important. Consult the controller manufacturer if necessary, but get this right!
Make sure the Mach DriverTest indicates your timing is "Excellent" ALL the time. If you see any glitches, figure out what causing them and fix it. All it takes is a single badly-timed step pulse to stall a stepper at speed.
Going for max possible rapid speed may be good for "bragging rights", but is of no practical value. Accleration is FAR more important, particularly if you'll be doing 3D work. Going for max rapid speed will force you to tune down acceleration, which will hurt overall performance, and cause you to often not be able to reach your programmed feedrate, except for very long moves.
You MUST figure out where the limits are, for accleration and feedrate. The way I do this works well. Write a short G-code program to run more or less random combinations of axes over different paths. Mine does a sequence of end-to-end single-axis and diagonal moves on the X/Y axes, running them just barely short of the limits at both ends. This makes lost steps easy to detect, because it'll hit the stops on the next move. Put this code in a subroutine, and call that subroutine in the main program, setting a high loop count (hundreds of iterations at least). Set your zeros,
and start the program. If any axis EVER stalls or loses steps, then something IS wrong somewhere, so find it and fix it. It's probably one of the items listed abovel. Let this program run for a couple of hours, then, when it's done, return to your zero position, and make sure it's still dead on. If it's not, then you've still got a problem. You should be able to run a program like this for hours with no loss of position on a properly-designed, properly-tuned machine. DO NOT write-off problems to "Ah, they're just steppers! They always lose steps!". This IS NOT TRUE.
Running the above test for long periods has the added advantage of "wearing in" the machine. You can use it to get the ways smoothed out, and everything working smoothly and tightly. Just make sure you run all axes to all limits A LOT, and don't just concentrate on the center of motion. Re-adjust your gibs and re-lube evertything after running for several hours, and I think you'll find the way operate much more smoothly from end to end. It sure made a difference on mine. It's now nice and tight, with almost no detectable slop in the ways, yet it'll run stop-to-stop at 200 IPM for hours with no position loss.
Regards,
Ray L.