Are there practical reasons to NOT use a stepper motor with lead screw for the X and or Y axes?
After a few months of printing with my Prusa Mk3 (with plans to get a second one soon), I have been wondering about making my third printer a home-built one was a larger print bed than the Mk3. One thing I wondered about is perfectly expressed in the title question.
Are there practical reasons to not use a stepper motor with lead screw for the X and or Y axes?
I am certainly happy with the GT2 belts used in my current printer, but I wonder if the design might be simpler with lead-screws on all three axes.
Speed but you can use it with different pitch than 1mm/rev or 6.35mm/rev with special threads like 8.46mm/rev or 12.7mm/rev, I'm planning to use an standar 8mm acme thread.
I am going to answer this as someone who actually did rework their Prusa i3 fleabay clone to use leadscrews for all axes. Before digging into the matter, the backlash issue can be solved easily with spring-loaded brass nuts, kinda like how ballscrews work. That's the simplest problem to solve though as there are a lot of other issues.
Short version / tl;dr
Hardware can't handle that many microsteps.
Crosstalk and motor inductance limit speeds and acceleration.
Print quality suffers in really weird ways because of (2).
Leadscrews are not made for quick movement over extended periods of time and will wear, even with grease.
You'll need additional bearing surfaces to prevent your motors from grinding themselves apart, and to eliminate backlash due to the flex couplings.
The system becomes a lot more prone to highly destructive failure modes.
You're going to notice is that you're constrained to horribly, horribly slow movement and acceleration rates. My screws are 8 mm screws, with 8mm pitch. That means it takes 200 steps to travel 8 mm. Multiply by 1/16th microstepping, and that's 3200 microsteps per 8 millimeter of travel. Multiply by whatever speed you're trying to print at, then the number of axes you're using, and you'll find that your RAMPS board starts to stutter on complex moves if you print fast enough.
You'll quickly hit the inductance limits of your motors. At "standard" power levels (ones that don't fry my knockoff NEMA17 motors), even after switching to 24 V for the entire setup, the fastest I could spin my motors was about 5 revolutions per second, which translates to 16,000 microsteps per second with 8mm pitch screws. For reference that means that under ZERO load, the fastest my N17 w/ 8 mm pitch could travel, is about 40 mm/s.
You're basically running the motor coils at several kilohertz, which means you have to be really careful about keeping your wires separate and shielded to prevent crosstalk, in addition to the fact that as your step frequency goes up, your step torque goes down dramatically. Not only does this limit the weight of the bed that the motor is capable of pushing at a given speed, but you even have to worry about the inertia of the motor and bed much more than with a belt-driven system. So instead of 30 mm/s jerk with 200 mm/s2 acceleration, suddenly you're limited to, say, 5 mm/s jerk and 40 mm/s2 acceleration.
As mentioned, for best results, the whole system needs to be converted to 24 V, and not all boards are configured for this to be easily done. My cheap RAMPS clone only needed a single diode removed and everything else was fine, but YMMV in this regard.
You could solve this particular problem by gearing the motors down, but at that point you've now introduced a new source of backlash either between the gear teeth or in the belt drive system, and kinda defeated the point.
Due to this effect, is that you run into extrusion pressure artifacts. Basically, the plastic in the nozzle is a fluid, a very viscous one, being forced through a small hole. The fluid pressure will "lag" somewhat behind what the extruder motor thinks is happening.
The end result is that while you're accelerating, the lines you're laying are thinner than they should be, and will be thicker than they should be while decelerating, and you tend to get weird "globs" on each corner when you come to a stop. For me, with a 0.4 mm nozzle, 0.8 mm line width, and 0.2 mm layer height, these artifacts actually completely offset the additional accuracy I was getting with a tightly-coupled leadscrew with spring loaded dual nuts on it. The parts ended up being even less dimensionally accurate than before, with very strange deformities.
There ARE settings you can use in the firmware to try and combat this specific effect, but the process is tedious and takes a lot of trial-and-error, and recompiling the firmware every 30 seconds is annoying, not to mention the variables are dependent on line width, speed and acceleration settings, and layer height, so you have to recompile your firmware any time you want to change the print quality. Super, super annoying.
Leadscrews aren't actually designed for this. The constant back-and-forth motion will wear the brass nuts and even the steel threads of the screws over time. You end up with a black powdery residue on everything underneath the screw, which, in the X axis, typically also means your print. Nobody wants steel powder messing up their layer adhesion.
In my case I used Superlube, which is a silicone/PTFE grease, to help prevent this problem, but that only works so well when you've got spring-loaded brass nuts. Eventually they push most of the lube out. Additionally, the lube tends to grab and hold any metal powder that does form, accelerating wear in areas that are still lubricated.
Bearings. Turns out motors have internal bearings, that generally suck and aren't made for heavy loads in any direction. I found that out when my Y-axis N17 motor failed because the bearing did, and spread powder all over the coils, some of which got pushed through the enamel and shorted the wires out.
Additionally, because tiny amounts of misalignment turn motors into shrapnel in a hurry, you're almost certainly going to be using flex couplings. Flex couplings have a certain amount of yield to them axially, and are primarily designed to be under compression loads, and tend to fail when stretched repeatedly.
For the Z axis this is normally not an issue because the whole system is held down by gravity, but in the X and Y axes, you'll get some weird offsets of even a millimeter or two each time the carriage or bed switches directions. So you'll want to make sure that the motors aren't load bearing themselves, and the screw remains locked relative to the frame while still being able to rotate.
You can accomplish this by having a ring fastened to each end of the leadscrew that either pushes on a thrust bearing or rides in a regular ball bearing. Ideally, you can do both, but this turns into an expensive venture with a whole lot of brackets in odd places that you may not have space for. I ended up losing about 20 mm of bed travel solving this problem.
You need to think about what happens when a component fails. For me, it was my endstops. The first failure was from the crosstalk issue I mentioned above. Y-stops triggered, bed started shifting towards the front of the printer over time, and eventually the printer started trying to move the bed through the front of the printer frame.
It was successful.
The second time was simply the endstop switch failing mechanically. Belt travel stops at the pulley. Leadscrews go all the way to the end of the screw, and because they're geared so much lower than belts are, there's a lot more torque involved. I destroyed my printer frame three separate times because of this problem, and once more when the Y-axis flex coupling snapped. This allowed the motor to spin the screw easily in one direction but not in another - which this time forced the print bed backwards instead of forwards, yanking the Y motor through its bracket and the frame again.
X/Y screws are not necessarily a bad idea, simply an expensive and tedious one in 3D printing. They're much better suited to low-feedrate applications like CNC mills, mechanical engravers, and the like. You may notice that even high-accuracy applications like laser printers tend to have belt-fed carriages rather than screw-driven ones. Screws are much better suited to high load, low-speed applications, and printers tend to be the opposite of that.
If you're trying to eliminate backlash due to the belts not being tight enough, as I was, the answer is to make a better printer. I couldn't tighten the belts enough to get my prints accurate before the motors started failing, because I didn't have the motor-end pulley supported by a bearing. Start there, literally just support on either side of the pulley on the motor shaft with a small bearing braced against the frame to take the radial load off the motor. If your belts are stretching too much, use steel-core GT2 belt. If your system is overall just sloppy, build a more robust system. My current project is a Hypercube Evo, and I found a supplier that makes steel-core GT2 belt. I'm going to use that to maximize rigidity in the CoreXY belt system. The frame is made from 30x30 mm T-slot extrusions, with 12 mm Z-axis rods and 10 mm X/Y axis rods. Bigger, more expensive components that are way more robust and will flex much less than the 400 mm long 8 mm rods on my cheapo printer.
Hope this helps.
(edited to get my math right on the microsteps)
+1 - A very nice answer, written from experience! Hi and welcome to SE.3DP. :-)
This is an example of an excellent answer as it covers a lot of bases that were lacking in the others, and discusses the pros and cons and the general "it can be done, but this is why it's not done". The only thing missing for a perfect answer is discussing combination machines (FDM/Laser and FDM/CNC combo).
Unfortunately I don't have any experience with combination machines, and I'd rather not speculate too far outside my little shenanigan bubble. Glad I could provide some illumination on the topic, and thanks to Trish and Greenonline for helping with formatting. My markdown ain't the best yet.
Great answer, can I suggest descriptive section titles rather than "First" to "Sixth" though, as it will make it easier to navigate this answer in the future.
Great, complete answer. Like all engineering discussions, I'll suggest some mitigation measures. Issue #1, the problem of firmware overhead with micro stepping, can be addressed (with the right drivers) by reducing the micro-step ratio at higher speed so that fewer micro steps are required, even reverting to full steps. Issue #2, the problem of stepper motor inductance is addressed by changing from stepper motors to servomotors, probably oversized so that the torque at low speed is high enough.
These are valid points, and I did in fact end up dropping my X/Y step/mm down to 1/4th rather than 1/16th. The downside there is that the beefy N23 motor I was using for the Y axis turned my entire desk into a sounding board while the printer sang us the song of its people. Never worked with servomotors though, how plug-and-play are those compared to regular steppers?