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

#2478 MMU Jam and extruder grinding detection. #2499

Closed
wants to merge 10 commits into from

Conversation

vintagepc
Copy link
Contributor

@vintagepc vintagepc commented Feb 18, 2020

Filing a PR since I think this is ready for more general review and consideration.
This closes #2478 and the original #2214
The theory here is to detect a jam/ground filament state by also monitoring the extruder filament sensor in addition to the FINDA. If grinding is detected, the MMU goes into "attention required" state to hopefully let the user fix the issue and resume the print, rather than continuing blindly and printing air for the remainder.

This feature can be easily disabled via the Filament sensor setting item if false positives are a problem for certain filaments (e.g. flex).

There are more implementation details and some test outlines/screen pics in #2478.

Items TBD:

  • Translations for new jam detection screen.
  • Find a solution for the new F. Sensor menu choice being 1 char too long (some options proposed in linked issue, may require language/translator input) I could not come up with anything more succinct than "+Jam" to indicate it's on + jam detection mode.
  • Verify normal behaviour without an MMU
  • Verify behaviour on a MK3 (I only have a 3S)

@vintagepc vintagepc marked this pull request as ready for review February 21, 2020 23:04
@vintagepc
Copy link
Contributor Author

vintagepc commented Feb 23, 2020

Test case: I just encountered this "for real" - there was some hard junk in my filament that blocked the nozzle and caused the extruder to grind. Jam detection tripped and it recovered beautifully - there was only a minor blemish in the infill it was doing when it tripped.

I know it's too late for 3.9 but I really hope you consider including this in 3.9.1 or 3.10

@vintagepc
Copy link
Contributor Author

w00t!

@leptun
Copy link
Collaborator

leptun commented Feb 27, 2020

@vintagepc You will probably end up splitting the option into two. So you have F. Sensor On/Off and Jam detection On/Off and maybe also N/A if the Fsensor is disabled. This way the option is shown to the user only when the MMU is connected and the text fits. I'll try to test the PR today on my MK3S with and without MMU

@vintagepc
Copy link
Contributor Author

understood; Just say the word and I am happy to adjust.
(FWIW, I run a Mk3-based local branch that I merge my feature/PR branches into before compiling) so certainly on my own machine these sorts of things are under continuous test, not just once or twice during dev.)

@3d-gussner
Copy link
Collaborator

@vintagepc Please review your PR as there are conflicts with latest firmware release.

Copy link
Collaborator

@3d-gussner 3d-gussner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would also very helpful if you try to update the lang_en.txt and lang_en_xx.txt (maybe even the pofiles) files.
Please read translations.md

If you don't feel comfortable with that please let me know and I will create a PR to your PR.

Firmware/messages.c Outdated Show resolved Hide resolved
Firmware/mmu.cpp Outdated Show resolved Hide resolved
Firmware/mmu.cpp Outdated
}
else
{
lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament."));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above

}\
else\
{\
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON), lcd_fsensor_state_set);\
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above

else {
else if (oFSensorMode==ClFSensorMode::_On_And_Jam && mmu_enabled)
{ // Jam detect mode
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON_JAM), lcd_fsensor_state_set);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above

@vintagepc
Copy link
Contributor Author

I will have a look - I intend to break out the jam detection option due to length constraints.

@vintagepc
Copy link
Contributor Author

@3d-gussner Can you clarify the nature of the "c" and "r" values? Is it to document the maximum length used by the biggest language?
For example:
ISTR("Sheet"); ////c=10
means that one of the translations has a 10-character word for "Sheet"?

@vintagepc
Copy link
Contributor Author

I've reworked the menu to be two separate items, though they still share the same EEPROM byte, and pushed up a partial.

image

image

image

I did try to do the language stuff but I think I'm doing something wrong. After doing the lang_add.sh lang_add.txt, it adds them to the text files, but it does not appear to tag them with the correct identifier despite the comments in the code. AFAICT they are structured similarly to other nearby items so it's not obvious to me what is wrong:
I looked at MSG_REMOVE_OLD_FILAMENT and MSG_FSENSOR_NA as examples.

example .txt content:

#
"Possible extruder jam detected (IR=0). Fix problem and press knob."

@DRracer
Copy link
Collaborator

DRracer commented Feb 26, 2021

@vintagepc we'd like to postpone this PR after FW 3.10 as there will be some greater care devoted to the MMU itself. Therefore I'm removing the 3.10 tag from this PR.

@DRracer DRracer removed the FW 3.10.x label Feb 26, 2021
@vintagepc
Copy link
Contributor Author

I'll hold you to that 😛

@3d-gussner
Copy link
Collaborator

@vintagepc Please check if this is still a valid PR. If so please rebase update and add a miles stone to it.

@vintagepc
Copy link
Contributor Author

Closing because the code it was based on is obsolete

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[ENHANCEMENT] MMU jam/grinding detection.
5 participants