Ball/Lead Screw Error Compensation



  • I've recently become obsessed with the quality of (mainly) vertical walls on prints. 3 possible contributors to the horizontal alignment of stacking layers are X/Y positioning, extrusion consistency and Z axis lead screw error. After reviewing this THK document https://tech.thk.com/en/products/pdf/en_a15_011.pdf I think the fluctuations in lead accuracy, especially with the inexpensive lead screws we use for Z which are likely worse, are probably a major contributor with error and fluctuation potentially representing a significant portion of layer height.
    Industrial CNC machine controls have the ability to correct for both thermal growth and lead error. My question is would it be possible to build an error table for our Duets to correct for this? Taken at every .1mm or your favorite layer heights. The biggest challenge for most would be the ability to measure the true position but I think that could be accomplished with a fair amount of accuracy using quality calipers or on inexpensive, single axis DRO attached to the Z axis. Any thoughts



  • not sure it makes sense for a lead screw where you have some degree of backlash? for a ball screw it might make more sense, but I also suspect it would be less of an issue, at least with regards to the error being larger than most of us would reliably measure?



  • @3DPMicro
    Without wanting to dig into the many causes of vertical wall alignment issues...
    (The worst I ever saw was due to the bed design not being rigid, so the bed surface could slide in x and y... )
    Except to say that CPE tends to be an issue for overall dimensional accuracy, more than anything else.

    I have seen low cost leadscrews with CPE (cumulative pitch error if anyone doesn't already know) on the order of 1%.

    THK are talking about a CPE of 210um over 300mm.
    Low cost leadscrews can be 3mm over 300mm.

    Assuming the fluctuation is a similar scale, 1% is not enough that I would be too worried. But printing an object whos height is +/- 3mm of your target? That's a problem.

    Obviously if you only care about final dimensions you can just measure actual travel and change your steps/mm for Z.

    I can't speak for the developers, but I suspect that a error table for an axis would be a lot of work, unless there is a way to somehow build it into the existing bed mapping logic (although such a capability would allow all sorts of fun printers with non-linear axis mechanisms).
    I don't think that is the challenge though, I think the difficulty would be getting the readings. It can be done, but I think that a setup that is able to give accurate enough readings to be useful, would be enough effort that you would just go ahead and get a steprocker, connect your linear encoder and have a closed loop/servo axis.
    Then you could have a very very accurate Z. With no new code needed, just using an external stepper.
    Or you could just buy a good quality leadscrew. Which IIRC even at THK prices is really not that expensive.



  • @theruttmeister said in Ball/Lead Screw Error Compensation:

    Or you could just buy a good quality leadscrew. Which IIRC even at THK prices is really not that expensive.

    Yeah, though so. Misumi, ~$40 for a 300mm long 10mm diameter leadscrew. C7, so +/-0.15mm/300mm and +/-0.02mm pitch-to-pitch error.

    High accuracy leadscrews are lots cheaper than ballscews, and even 'low accuracy' leadscrews when the actually meet a standard are waaaaay better than cheap leadscrews.



  • I probably should have continued with my original post but where I see the primary issue is in Z where fluctuations of +-50 microns more or less would have the effect of over/under extrusion for the target layer height. 50% for a .2 layer height. That could very well be a huge contributor to quality issues.



  • I had a similar idea here and Davids answer: https://forum.duet3d.com/topic/15552/available-memory-for-kinematics how much memory would be available.



  • @3DPMicro
    I think due to the underlying cause of CPE (namely the machine used to make the screw 'drifting' during the process) I would be very surprised if you saw as severe a pitch-to-pitch error as 50um, even on a cheap leadscrew. The worst CPE I've seen in the wild (that 3mm CPE screw) is only 10um pitch-to-pitch error (assuming its averaged out).

    A 50um (25% no?) error would have an impact on print quality yes, but I would expect even a cheap DRO or whatever solution, to end up being more expensive and time consuming than just buying a better leadscrew from the outset. Not many people are still trying to build McWires (thankfully).

    If you were building a super cheap mass-produced unit and were going to use encoders anyway (so you could use cheaper motors), it might be worth it... but then you're not having to map anything, you can just directly use the encoder.

    Its more of a question of if anyone thinks its worth the trouble to code, it sounds like it would be possible.



  • The Z leadscrew(s) influence quality in 2 ways

    1. Z height accuracy
    2. XY wobble

    The [1] is super easy to handle by getting a better screw, they are not that expensive these days, we do not need anti-backlash for our needs and forces are really minimal, so even a plastic nut will work for a very long time. I can say I tested and measured some IGUS ACME type leadscrews with IGUS plastic nuts and precision is astounding.

    The [2] is the huge issue on many of the currently available printers as they use wobbly frame and low quality linear rails so any imperfection in the straightness of the screw or concentricity of the nut will show up as XY wobble. Very easy to fix in design stage, not as easy on the printer that already has this problem. Some type of XY dumpeners on the screws exist but they introduce other issues themselves so really something you need to design properly from the begining.

    As for the

    stacking layers are X/Y positioning

    apart from the [2] mentioned above, major contributor for XY positioning inacuracies are

    • %$#^@ bad design wobling around on springs, on long screws
    • @%%@$# hotend carriage design that's flimzy and allow hotend to move around
    • low quality belts

    wobbly bed - no high end machine has bed that sits on springs, cheap machines use springs to be able to handle better head crashes and other crap they expect but high end machines have solid beds.

    carriage .. well, look at @deckingman hotend carriage design where hotend moves up/down on stiff pins and brass bushings... it handles the potential crash situation by allowing head to slide up, it can do nozzle probing if required but XY position of the nozzle is not compromised in any moment. Compare that to modern single 2020 extrusion with 3 wheels riding holding a 2mm plate with hotend on it where everything twists and turns on every move

    I have bad experience with PRC belts, some ppl disagree belts stretch and cause issues, do your own test but belt quality is a big deal for XY accuracies



  • @arhi I saw my name mentioned. Check out my blog because I've done away with the steel dowels and bushes, and replaced it with a "zero play" hinge arrangement. And the mechanical stop is also the electrical switch. Which means that only an infinitesimally small Z movement (too small for me to measure) happens.



  • @deckingman said in Ball/Lead Screw Error Compensation:

    Check out my blog because I've done away with the steel dowels and bushes, and replaced it with a "zero play" hinge arrangement.

    Seen that already, and the brass plate for the sensor. But the original steel dowel and brass bushing are IMO much easier to purchase and setup, and also easier to understand. The "zero play hinge" is something you have to make yourself, not something easily purchased in a hardware store (at least not here).

    And the mechanical stop is also the electrical switch. Which means that only an infinitesimally small Z movement (too small for me to measure) happens.

    I was using this kind of stop for years for my CNC. Three stationary brass balls and a fourth ball in the middle with the rod poking trough going down as sensor. If the center ball loses contact with either of the three stationary balls it triggers. The issue I had was that contact was too bouncy after a while and required constant cleaning. Dropping from 12V+1k to 3V3 with 10k resistor helped a lot (required cleaning once a two months vs once a week with 12V).



  • @arhi

    The issue I had was that contact was too bouncy after a while and required constant cleaning. Dropping from 12V+1k to 3V3 with 10k resistor helped a lot (required cleaning once a two months vs once a week with 12V).

    So it was the bimetal/contact corrosion between brass and aluminium or steel which needed cleaning?



  • The compensation is really just an intermediate step towards good axis accuracy.
    Industrial cnc machines have linear (glass scale) encoders that correct for this anyway. The best have liquid cooling on all axis for extended reliability and repeatability.
    However, i think most shouldn´t even worry about that because most printers have a repeatability way waaay worse than this could ever compensate for in accuracy.



  • @JoergS5 4 brass balls, no bimetal issues there - brass to brass contact .. it's a cnc, lot of dirt present, reducing voltage and current helped, no visible issues existed but cleaning with abrasive sponge solved the problem... I always wanted to gold plate those balls but never got to do it ... was also thinking about enclosing that into "watertight" system and fill with some contact cleaner liquid .. many ideas, never did any of them as this was "good enough"

    (it started like this: https://www.thingiverse.com/thing:1393731 and then I simplified it a lot to use only 4 balls total ... it was more done as a learning experience - me learning to use lathe then it was really necesary, those probes are rather cheap to purchase)



  • @arhi Thanks for explaining. I want to DIY one like the one from https://www.youtube.com/watch?v=prb60JoxQSQ
    when I have finished my CNC machine. Until then I use a TLS-02.



  • @NitroFreak said in Ball/Lead Screw Error Compensation:

    The compensation is really just an intermediate step towards good axis accuracy.

    Purchasing a higher quality screw is way cheaper than compensation. Just to get instrumentation to do measurements you need for compensation is way more expensive than getting a proper screw.

    I never tried duet3d as cnc driver but for cnc driver the only compensation I believe is required is for backlash, and I don't know if duet support WCS/MCS spaces where I can rotate the coord system to compensate for stock not being square mounted but that's about it. Compensating for something that can be reasonably cheaply fixed directly in hardware is not something I'd expect..



  • @arhi I thought about using gold plated contacts for my end stop "switch". I've got some audio connectors kicking around somewhere that I thought about using. But then it occurred to me that gold is quite soft, the plating tends to be thin, and there is a lot more pressure on the contact than one would find in a switch, so it might have worn through the plating. In the end, I used a brass off cut and a brass bolt and a quick rub over with some abrasive should remove any tarnish.



  • @deckingman yeah for your setup I think it's not needed as when you start the measuring procedure the FW will fail with "already triggered" if you have a problem with contact, and no matter how dirty it gets when surfaces stop touching the contact is lost. Same on my cnc probe, the probing itself will always work, I have a problem sometimes if I do few points (for e.g. finding center of the circle) the probe won't connect back from just a spring and I need to clean it).. but in any way it will never "not detect obsticle" so it's safe. I didn't consider softness of the gold as in my case the contact pressure is very light (just a weight of the steel pin and pressure of a small spring) but yes, in your case it might be a problem, again, if you convert it so that it's two plates touching instead of pin & plate it would mitigate the problem (probably introducing other problems). Anyhow it is "safe", no way it will not detect the bed (unlike number of those touch probes that require contact to be made to trigger where dirt can break stuff)



  • @arhi Yes it's "normally closed", the same as all my other end stop switches. So bad contacts or wires falling off mean that it "fails safe" (triggered).


Log in to reply