moggieuk / Happy-Hare

MMU software driver for Klipper (ERCF, Tradrack, Prusa)
GNU General Public License v3.0
482 stars 122 forks source link

_MMU_CUT_TIP does not perform retraction now #385

Open SHKinsem opened 2 months ago

SHKinsem commented 2 months ago

_MMU_CUT_TIP does not perform retraction now. The cutting process worked but I cannot hear the extruder working, lead to "Unload sequence failed: No encoder movement" This happens after I updated the version. Not 100% sure if this is a bug, however my extruder works independently if I press the extrude bottom.

SHKinsem commented 2 months ago

After setting "encoder_move_validation" to false, everything works flawlessly. I think maybe there is a problem with the encoder checking logic?

moggieuk commented 2 months ago

Thanks I will take a look at this test. Note that retract now is handled by HH “toolchange_retraction” so removed from cutting macro

SHKinsem commented 2 months ago

Thanks I will take a look at this test. Note that retract now is handled by HH “toolchange_retraction” so removed from cutting macro

OK, I just tried to debug this myself. It turned out that one cannot set the "toolhead_ooze_reduction" too high in mmu_parameters.cfg

I see that the value is stored as printer.mmu.extruder_residual_filament, is also used for calculating the effective retract length:

# Step 1 - Calculate initial retract to save filament waste, repeat to allow some cooling
    {% set effective_retract_length = retract_length - printer.mmu.extruder_residual_filament - printer.mmu.toolchange_retract %}
    {% if effective_retract_length > 0 %}

It will potentially lead to a negative value thus the extruder does not perform retraction cuz it did not enter the ‘if condition’ But still I dont know why the encoder still checks the movement that does not exist

moggieuk commented 1 month ago

Thanks for digging in. It can'tresult in a negative value because it is only applied if effective_length positive. I did extend the range allowed by toolhead_ooze_reduction after learning of how much filament can be left behind especially on HF nozzles..

But in practical terms if the toolhead_ooze_reduction is very large, then there might (correctly) be not retraction prior to the cut. The macro should probably warn for this case but it likely means that ooze_reduction is not configured correctly...