Backlash compensation
-
I don't get this. On a Z axis the weight of the bed is always acting downwards. So the nuts are always being "pressed" against the thread form. I doesn't matter which way the screw turns, the pressure of gravity acting downwards will always keep the same part of the nut in contact with the thread. For that reason, anti backlash aren't even needed on a Z axis. The only time anti backlash nuts are of any use it when gravity isn't playing it's part - i.e. where screws are used on an X or Y axis. So on a Z axis, there isn't any backlash, therefore there is no need to compensate.
The only that will give the same effect as backlash in the system is if the Z axis is not free to rise and fall, throughout its entire range of travel, under it's own weight. This can be caused by misalignment of the linear guides and /or lead screws if they are constrained at the top as well as the bottom. This "sticky" behaviour may look like backlash but it isn't the same thing at all. It's likely to be variable and inconsistent throughout the Z travel and over time, and perhaps with temperature if thermal expansion is playing a part. So any attempt to compensate for a bed that "sticks" using firmware is doomed to failure.
-
I agree with Ian that it is more of a binding/sticking type issue, Or the bed is crazy light in mass.
Backlash comp isn't a cure all fix for an axis with lower quality screws/nuts. While you can account for the clearance between a nut and lead screw, that clearance is not consistent through the entire range along the lead screw. The pitch (threads per inch) can change slightly based on the machine cutting them. The thread width will be different along the lead screw as well. Just because you get the backlash dialed in within one area of travel doesn't mean it will be right in another area.
Most CNC controls have a general backlash setting but also have axis comp settings for defined areas of the lead screw. One of the machines I operate at work has compensation for every 10mm of the ball screw. It is calibrated with a laser measurement system that runs the machine through a series of movements to track and correct, then repeat.
Obviously this is overkill for 3D printers as we are all at the mercy of the plastic melting and flowing they way we want it too.
-
Would love to have Z backlash compensation. Our beds ride on belts, so wear isn't as much of a concern.
Getting a flat ~20" bed is impossible. So the mesh is a requirement.
Where to upvote the request? -
I would like to see some form of a backlash compensation as well. Not for axis issues but for a different project I am working on. I'm looking to adjust my steps on a "loosely" connected stepper motor. Where I know the degrees of non-movement when my stepper changes direction.
So +1 for backlash compensation...
-
Belt lifted Z axes might have a chance at becoming popular if they offered high print quality/resolution, prevent bed drop, and do it at low cost. My printer has a belt lifted Z axis, and uses a relatively expensive Rino worm gear drive ($108, used, via ebay). I experimented with some cheap gears from China (total cost for Rino replacement would be about $40) and found pretty severe, but repetitive errors with them.
Here's a graph of the errors I measured over two cycles of the worm gear:
If there were a way to set up a table of corrections (maybe another config file with a list error values) for one cycle of the worm gear, the repetitive errors could be eliminated by subtracting the error from the end ordinate of each Z axis move. That would allow high quality printing with cheap gears.
-
@mrehorstdmd said in Backlash compensation:
Belt lifted Z axes might have a chance at becoming popular if they offered high print quality/resolution, prevent bed drop, and do it at low cost. My printer has a belt lifted Z axis, and uses a relatively expensive Rino worm gear drive ($108, used, via ebay). I experimented with some cheap gears from China (total cost for Rino replacement would be about $40) and found pretty severe, but repetitive errors with them.
...
If there were a way to set up a table of corrections (maybe another config file with a list error values) for one cycle of the worm gear, the repetitive errors could be eliminated by subtracting the error from the end ordinate of each Z axis move. That would allow high quality printing with cheap gears.That's certainly possible to do, provided that the compensation only needs to be applied to the start and end points - so the difference in height adjustment between adjacent points on the height map mesh should be no more than about one quarter of a motor revolution. From your graph, it looks like compensation using a sine wave or a triangular wave would be a good approximation, so just two values would need to be configured i.e. amplitude and phase.
A limitation is that in order to use cheap gears, you need a (expensive?) dial gauge to measure the error.
I wonder whether single-start leadscrews show a similar pattern?
-
@dc42 If a triangle or sine were fit, it might not be necessary to use a dial gauge at all.
This is a print I made with the cheapo gears:
The error will repeat with a single rev of the worm gear, so a single rev of the Z axis motor. If you had values for amplitude and phase in a config file, and then fit either a triangle or a sine, a few test prints might be sufficient to narrow down the values based on visual print quality.
You'd have to figure out how to lock the phase setting to a specific Z height so that any and all changes to Z are equally affected. You wouldn't necessarily want to base it on Z=0 because if the user changes hot ends and Z=0 changes, the phase will change with it. Or maybe there's no way to deal with that and it will just have to be tweaked for every Z=0 change the user or even autoleveling might make.
-
@mrehorstdmd said in Backlash compensation:
You'd have to figure out how to lock the phase setting to a specific Z height so that any and all changes to Z are equally affected. You wouldn't necessarily want to base it on Z=0 because if the user changes hot ends and Z=0 changes, the phase will change with it. Or maybe there's no way to deal with that and it will just have to be tweaked for every Z=0 change the user or even autoleveling might make.
Yes, that would be a potential problem. At power up, the firmware has no idea on the position of the stepper motors, except that they will jump to a multiple of 4 full steps that matches the initial motor currents.
One possible solution might be to perform initial Z homing using a Z max switch, or a Z min switch that triggers well above Z=0, and set the compensation phase from that. Then do final Z homing using a Z probe mounted on the hot end, or a nozzle contact probe.
-
You could detect stall (probably not very high precision) at Zmax or bump a switch or opto interruptor somewhere far from z=0, that wouldn't change unless someone were doing major reconstruction of the machine.
The frequency is obvious, so the trick would be to figure out the amplitude and phase settings. A single test print with a bunch of small towers could be made where amplitude varies along one axis and phase along the other. If you used a 10x10 array you might arrive at pretty close values with one print, then do some fine tuning from there. When the print is done, you look for the tower that has the best quality in Z, and use amplitude and phase values from that tower. I'm not sure how to generate such a file- that might be a project in itself.
-
@dc42 .., I am also interested in backlash compensation. I was unaware, my fault overlooked when our company purchased the boards that it was unavailable or to be honest I would’ve had to go a different route. If any plans, or not yet, please let me know so we can decide how to proceed with these control boards. I believe that the majority of printer consumers probably use their printer more so as a weekend hobby so they haven’t seen the difference in print quality to desire backlash compensation as a priority and are happy with prints just being a usable part or printable idea. I’m sure only a small percentage actually want to use these controls in a commercial assembled platform that prints with precision or may not have equipment that benefits from a more precise control. Perhaps those unknowing would share a different perception if they knew it was available and made BL adjustments to their printers. Please keep us posted and Thank you.
-
It's very hard if not impossible to implement backlash compensation in a way that doesn't have unpleasant side effects. Some people tried to implement it in Marlin but it has never been accepted into the main branch. See https://github.com/MarlinFirmware/Marlin/issues/3664#issuecomment-344638870 for an example of the problems. Amongst the issues are:
-
When reversing direction in a print, if you don't take up the backlash very quickly enough then the head will be stationary for a short while, leading to over-extrusion at that point. But if you take it up too quickly then the motors will be noisy and you risk skipped steps.
-
Backlash compensation ruins the acceleration profile, making it more likely to excite resonances.
In some simple cases such as printing a square parallel to the X and Y axes on a Cartesian machine, backlash compensation could be done in a way that doesn't cause problems, because the slack in the X axis could be taken up gradually while printing parallel to the Y axis, and vice versa. But if you rotate the square by 45 degrees, the slack needs to be taken up instantly.
What steps/mm does your machine have, and how much backlash is there? Where the compensation required is no more than about 1 full step, it may be more practical to do because the risk of skipped steps should be small.
-
-
@dc42 said in Backlash compensation:
- When reversing direction in a print, if you don't take up the backlash very quickly enough then the head will be stationary for a short while, leading to over-extrusion at that point. But if you take it up too quickly then the motors will be noisy and you risk skipped steps.
- Backlash compensation ruins the acceleration profile, making it more likely to excite resonances.
It's rather obvious you can't have best of all worlds, so not sure about all those points.
That said, I do understand it's very nontrivial given the feature set Duet already has, but I've been waiting for backlash compensation for a while now too. The axes are the least of my problem, even though it could benefit my printer. The real thing for me is my bowden extruder. The tubing has some backlash due to being quite long and the fact that on high speeds the pressure is so high that the tube connections give by about 1-2mm. I've already tried everything I could read or think of and it just seems there's another variable missing. I've used the Repetier backlash compensation before and it was working like a charm.
Not only X, Y, Z but Feeder motors should also be able to deal with backlash
As for risk of skipped steps - a calibrated machine doesn't skip.
-
@edgars-batna said in Backlash compensation:
The axes are the least of my problem, even though it could benefit my printer. The real thing for me is my bowden extruder. The tubing has some backlash due to being quite long and the fact that on high speeds the pressure is so high that the tube connections give by about 1-2mm. I've already tried everything I could read or think of and it just seems there's another variable missing. I've used the Repetier backlash compensation before and it was working like a charm.
This is exactly what pressure advance is for.
-
@dc42 said in Backlash compensation:
- When reversing direction in a print, if you don't take up the backlash very quickly enough then the head will be stationary for a short while, leading to over-extrusion at that point. But if you take it up too quickly then the motors will be noisy and you risk skipped steps.
Isn't the whole point of backlash compensation to reduce the mechanical dwell at a turning point? It's already sitting still in a mechanical dwell and overextruding, waiting for the axis slack to get taken up at a slow speed... Right? So, anything is better than nothing. In theory, anyway.
Sometimes it's all about those microns that nobody else cares about that sets you apart, or makes your job easier.
-
@mrehorstdmd said in Backlash compensation:
If there were a way to set up a table of corrections (maybe another config file with a list error values) for one cycle of the worm gear
How will the duet know the current rotation angle of the gear? That is, how will you home the angle?
-
@zapta It won't, and the stuff I was prattling about was error correction, not backlash compensation. In a belt lifted Z axis (or screw lifted, for that matter) there should be no backlash, but there can be repeatable error introduced by gears used to prevent bed-drop on power off. I brought it up because someone else mentioned it in relation to Z axes.
-
@mrehorstdmd, yes, I understand that, a consistent error that is a function of some gear angle. My question is, how the duet will know at what is the current angle of the gear to know at what amount to compensate? Will you have some mechanism to home the angle accurately enough such that duet can track it?
-
@Edgars-Batna said in Backlash compensation:
The real thing for me is my bowden extruder. The tubing has some backlash due to being quite long and the fact that on high speeds the pressure is so high that the tube connections give by about 1-2mm. I've already tried everything I could read or think of and it just seems there's another variable missing. I've used the Repetier backlash compensation before and it was working like a charm.
Isn't this the job of the Pressure Advance feature? Do you say that there is a way to compensate for bowdens even better? If so, it may be a very important feature.
(I gave on bowden and switch to a direct extruder. Couldn't get good enough results with a 600mm bowden tube).
-
@zapta said in Backlash compensation:
@mrehorstdmd, yes, I understand that, a consistent error that is a function of some gear angle. My question is, how the duet will know at what is the current angle of the gear to know at what amount to compensate? Will you have some mechanism to home the angle accurately enough such that duet can track it?
It won't know. That's the problem with trying to do that type of error correction. An optical endstop should be precise enough but there's a lot more to it than that. You have to somehow align the error correction with the error.
-
@zapta said in Backlash compensation:
@Edgars-Batna said in Backlash compensation:
The real thing for me is my bowden extruder. The tubing has some backlash due to being quite long and the fact that on high speeds the pressure is so high that the tube connections give by about 1-2mm. I've already tried everything I could read or think of and it just seems there's another variable missing. I've used the Repetier backlash compensation before and it was working like a charm.
Isn't this the job of the Pressure Advance feature? Do you say that there is a way to compensate for bowdens even better? If so, it may be a very important feature.
(I gave on bowden and switch to a direct extruder. Couldn't get good enough results with a 600mm bowden tube).
The Bowden connectors give in after a few longer prints and there is permanent 1-2mm play. Yes, that's where backlash compensation has to be and it has nothing to do with pressure advance. Sure, I can dial in PA to account for backlash, but then there's stringing and inconsistent segments, because PA does not pull or push the filament fast enough but just gradually.
I'm tired of constantly proving my point, to be honest. Not directed at anyone specific, it's just overall experience. There's many firmwares around and they already included many features that ARE WORKING. It doesn't matter if we can or can't move the extruder instantaneously, we can at least try to implement it in a way that it works and experiment from there. Here goes my ranting again. I might try implementing it one day, but for now it's enough frustration.
Just go direct, forget the Bowden, as it's harder to control.