Marlin: [FR] [Idea] [Proof of concept] Mechanical dithering on Z axis to improve accuracy

Created on 24 Sep 2019  路  15Comments  路  Source: MarlinFirmware/Marlin

I noticed that the main cause of z artifacts is mechanical stiction caused by binding on the lead screw or linear rails. Playing with a dial caliper I noticed this can be resolved by giving the table the printer is sitting on a whack to jostle it into position.

So my idea would be to do something like this intentionally after each z move to allow the axis to settle into position.

I have done a proof on concept, I use (abuse?) the babystepping feature to oscillate the axis about it's intended position after each z move for a small amount of time and with a decaying amplitude. This allows the axis to 'average out' and settle more accurately on the intended position.

I expect this would help a lot of cheaper printers improve Z accuracy. On my machine it mostly helps with -Z motion.

I have made a video:
https://www.youtube.com/watch?v=cjPFJGFkVU0

Cheers,
Alessandro

Design Concept Feature Request

Most helpful comment

Yeah need to rewrite against 2.0.x instead, I've done it but need to test before I PR.

All 15 comments

Very interesting.

Very good man, looking forward to trying this

How about some more grease or weight instead?
Does this do any good under load?
Can't this be compensated by backlash compensation?

Sure, all possible fixes and on a 'good' printer this is not really needed, just like K advance is not really needed at low speeds or on direct drive. But the goal of this is make not so good printers print a little better with some tricks. Actually, you will find dithering is used in a lot of applications as an easy way to improve accuracy.

This isn't backlash either, this compensates for the non-deterministic stopping point you get under different static/moving frictional coefficients on the lead-screw where there is some elasticity in the system. (most printers to some degree) It also helps counteract the loss of torque when micro-stepping.

If you have a dial indicator you can experiment with nudging you printer after a z move to see if it will settle a bit closer to the intended position.

Your PR got denied, better check that out please

Yeah need to rewrite against 2.0.x instead, I've done it but need to test before I PR.

This issue is stale because it has been open 30 days with no activity. Remove stale label / comment or this will be closed in 5 days.

@AlessandroAU any luck so far?
Has anyone the time to get to push this into 2.0 ?

I've put a version of this into the 2.0 branch, but since my printer has been out of action for awhile I've yet to test.

How would we proceed to test this ?

@th33xitus I think so, but I need to check my laptop to see if I have any uncommitted commits.

@h55ia That's awesome! no idea someone was using it. Can you share any results? Does it improve z-banding? did you try different settings etc?

@AlessandroAU did you have the time to check? are these all changeS?

@thierryzoller I have it working in my 2.0 fork.

See the following commits:
https://github.com/MoellerDi/Marlin/commit/4d4c25f6dc1074bd99f86d99c168d1ff9fb80710
https://github.com/MoellerDi/Marlin/commit/45cd50251e0fe33699873d8b0a07c77456c79984

I'm still testing, but as of now it seems be an improvement.

@AlessandroAU are you still planning to raise a PR for 2.x to get it merged some day?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

bgort picture bgort  路  163Comments

d2crafty picture d2crafty  路  212Comments

Roxy-3D picture Roxy-3D  路  497Comments

paulpenney picture paulpenney  路  549Comments

ktand picture ktand  路  265Comments