-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
MMU improved fsensor handling #3885
base: MK3
Are you sure you want to change the base?
Conversation
leptun
commented
Jan 9, 2023
•
edited
Loading
edited
- FSensorBlockRunout now properly handles nesting of the blocker.
- Events were introduced in the filament sensor code. These can be checked using polling for the three supported actions: runout, autoload and filament jam. These flags persist until they are manually cleared. These events work regardless of the FSensorBlockRunout suppression status, but can be disabled using the global eeprom setting. Example usage of these flags are checking for issues in VerifyFilamentEnteredPTFE, checking for autoload events when the user is expected to insert a filament, etc...
- These events allow VerifyFilamentEnteredPTFE to actually do it's job on non-S printers, so if the printer fails to grab the filament, the issue will be detected and a reload will be issued. On S printers, the jam event will never happen since that fsensor doesn't have the capability.
@gudnimg suggestion: It might be helpful if we forced a rehome of the MMU after unload when a VerifyFilamentEnteredPTFE error occurs. On the non-S printers, VerifyFilamentEnteredPTFE can fail due to filament strings where the fsensor sees "filament" too early, so the gears don't end up grabbing it. The current behaviour is to just unload the filament and immediately load back, which does nothing about the strings. If the selector were to move away from the slot and back (eg, due to rehoming), it might be enough to bend the stringy tip backwards and force it to load correctly on the next loading attempt. I'm not sure if cutting plays any role in this retry attempt since I haven't used it for now (due to 12V unit which struggles significantly more than the 24V mmu). |
We would need some way to tell the MMU to invalidate the homing 🤔 I think a G-code is overkill, but maybe a command via the Protocol would suffice and add @DRracer what are your thoughts on this? Looking closer I see we already have |
Yes, we can issue a homing command when the MMU is not performing anything else. |
a681fb8
to
e5edc9b
Compare
Rebased to sync with MK3 branch |
@gudnimg The VerifyFilamentEnteredPTFE() jam detection seems to be working correctly after rebase. One note though: it's weird that there is no indication whatsoever that a jam happened during the checking. The progress bar can show all blocks as ok, but the VerifyFilamentEnteredPTFE() could still fail in the end because of the jam event. Any proposals as to what we could do about this? |
I added a commit today PR 4080 to log the result c7f669f Maybe we can echo jam as failure reason? Would it make sense to check the jam event more regularly so we can show the status with individual pixel? |
We could check it more regularly instead of just the end. Would we show only one block as "jammed" or all blocks following the jam event? |
Done. The pixels now show an "error" for each jam event that is generated |
Testing scenario:
|
I'll try running this on my MK3S+ this evening. 👍 |
Tested the current changes on MK3S+ with MMU. Note I added these changes on top of PR #4080 to test those together.
|
@gudnimg What still needs to be done is to extract these |
The PR seems to add about ~130B on MK3S+. The ifdefs only save ~30B. I wonder what is using more memory 🤔 |
The rest of the changes for autoloading and events in general I guess? |
@DRracer I'd like to get the mmu2_fsensor.h interfaces unified with the Buddy fw. I see that the buddy fw uses |