Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected result with selector touch capability #460

Open
agreen opened this issue Oct 6, 2024 · 5 comments
Open

Unexpected result with selector touch capability #460

agreen opened this issue Oct 6, 2024 · 5 comments
Labels
enhancement New feature or request wontfix This will not be worked on

Comments

@agreen
Copy link

agreen commented Oct 6, 2024

Test scenario:

  • ERCF v2
  • Selector touch configured and enabled
  • Selector physical endstop configured and enabled (NOT using virtual selector endstop)
  • Filament blocking gate from moving
  • MMU/printer reset
  • Run MMU_HOME

Expected result:

  • MMU attempts to home
  • MMU realizes it cannot move
  • MMU attempts to clear/unblock gate
  • Gate unblocked
  • MMU homes to physical endstop

Actual result:

  • MMU attempts to home
  • MMU "grinds" selector for a second or two
  • MMU reports homing error "MMU issue: Homing selector failed because of blockage or malfunction. Klipper reports: No trigger on mmu_sel_home after full movement"

I have confirmed that the "touch" capability works AFTER homing when moving from one gate to another. The documentation is not clear that the machine should be homed before this functionality starts working, and I had expected it to work prior to homing as well.

I would suggest either implementing this capability, or documenting this is only useful AFTER a successful MMU home. Personally, the attempt of clearing the blockage on homing would be a big benefit, IMO.

@moggieuk
Copy link
Owner

You are correct in your assessment - the "touch" automatic recovery only is applied to selector movement and not to homing. There is a reason for this that would need to be carefully thought thru.. specifically, is the axis is not yet homed, normal movement is not possible. It is possible to defeat this but it means bypassing all of klippers default homing logic. It is a good idea so I'll add to the "enhancement list".

@moggieuk moggieuk added the enhancement New feature or request label Oct 13, 2024
@moggieuk
Copy link
Owner

moggieuk commented Oct 13, 2024

EDIT: I spent a couple of hours implementing this and then realized why I didn't do it before... (if selector is not aligned which will be the case after a non-stallguard homing operation, you cannot reliability unload). Instead you can use this:

MMU_HOME FORCE_UNLOAD=1

This will ensure that filament is unloaded PRIOR to the homing operation. Can't remember why I didn't make this the default - I think because without gate sensor it will jiggle the encoder which would be confusing for normal homing.. maybe it could be the default after all calibration is complete... have to think about that.

@moggieuk moggieuk added the wontfix This will not be worked on label Oct 13, 2024
@moggieuk
Copy link
Owner

Also, can you confirm the state of the MMU after restart? I.e. the output of MMU_STATUS. I'm going to assume that it is in an UNLOADED state (because all other states will recover position and unload if necessary) and that a piece of filament has just poked through the gate to block the selector?

I ask because I'm trying to understand the exact case that is causing you problems.

@agreen
Copy link
Author

agreen commented Oct 13, 2024

I'll do some further testing and get back. After I opened this bug, I have noticed sometimes it works as expected, sometimes it doesn't. FYI, I've been chasing TTC errors as well ,and I suspect there's some correlation with the TTC errors. I'm at about a 75% TTC to start print ratio. :-/

@moggieuk
Copy link
Owner

moggieuk commented Oct 14, 2024

Many folks have been having success with a new (fast) sd-card..

On MMU_HOME. If the filament position is unknown or anything other than "UNLOADED", the homing logic will run a "recovery" to find filament pos and then unload if necessary before homing. The only case that wouldn't be covered if is the filament had pushed through the gate but not far enough to be detected in the gate. The "touch move" logic is able to reposition the selector, then extrudes more filament so that a reliable test can be performed and thus recover. This isn't possible/sensible on home move: a) because klipper homing using a single homing endstop - if I used more than one then I'd have to handle cases where the wrong one fired but can't be sure which is correct, b) what if the selector is not at a gate but failed .. pushing move filament could mess up a lot of things. On an ERCF the servo down could depress two gates, etc..

Basically I think the way homing works is proper and if persistence level is at 4 then there is no need to call "MMU_HOME" which is the way I have my machine setup.

I will try to remember to clarify the doc though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

2 participants