Hysteresis code (Neil Martin's version fixed and simplified) #2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi Lawsy!
I worked on Neil Martin's original hysteresis code and I think I found the bug that caused the layer shift. I also simplified his code (now the starting position is changed, instead of planning a new movement line), and tested it on my SD2.
The artifact is not there anymore and it seems to work as expected. I didn't have time to properly calibrate my printer and see if this compensation actually helps, but it doesn't seem to have any bad side effect. I just discourage to use the hysteresis compensation on the Z axis together with the Z wobble compensation: I haven't tried and I don't dare to :)
I also changed the way the MCodes are defined: now they are in a macro like in the Z-wobble compensation so the code is more encapsulated.
For the records, the bug in the original code seemed to be that Neil was comparing coordinates in mm with coordinates in steps. The coordinates in steps were almost always bigger than the ones in mm, so the correction ended up being always in the same direction. I'm not 100% sure because I changed that part of the code quite heavily.