-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
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
Added initial version of MMU2S feature #17523
Added initial version of MMU2S feature #17523
Conversation
Make sure you add the load more procedure that pushes the filament forward and then back to make sure the filament path is clear. This is the most important improvement with the MMU2S. |
@vertigo235 do you have an example there? As I do not have a MK3S I do not know what behaviour you are referring to. Where do you need to push it in the MMU or on the extruder? I guess on the extruder you can edit the "MMU2_LOAD_TO_NOZZLE_SEQUENCE" in the Configuration_adv.h?, but i guess we'd need to add some additional checks then? or do you mean to tell the MMU2 to load more filament? |
That's a hell of a coincidence. I've been working on this for a week too. That's the way it works:
Then 2 options: It is also possible that some of the additions I've made are useless, I'll let you have a look so that you can give your opinion. Thank you |
@tonihoang This is the relevant function in prusa FW, once he IR sensor is deteced as 1 (loaded to gears), the extruder pushes the filament forward 60mm into the hotend, it then pulls the filament back 52mm. If there was a jam or obstruction then the filament would be pulled out past the gears (resulting in 0 on the IR sensor), if it moved at least 52mm forward (no obstruction), then the sensor would stay in state of 1 the whole time. This is a successful load and the print continues. If it's a failed load it will retry like 3 times before asking for attention. https://github.com/prusa3d/Prusa-Firmware/blob/MK3/Firmware/mmu.cpp#L1440-L1483 |
I have copy pasta'd the can_load function, and adapted it to the marlin MMU module but too late today to integrate and continue, so I did a micro commit, in case of fire 🔥 @BastR I did not have time to check your stuff yet |
I have only tested via Menu so far, and tested the "clogged state" via unplugging the sensor. but it fells somewhat useable, so i'll set it to ready for review for now. @thinkyhead thanks for the overnight review and fixes |
@tonihoang thanks you for your work, can you make change in some language files too? "MSG_MMU2_LOAD_FILAMENT" can be confusing on the LCD because the message is "LOAD FILAMENT" while real means is "LOAD FILAMENT TO MMU". In this commit I have made some changes if it helps: https://github.com/BastR/Marlin/commit/31b7462a7dc3d4f8128634ead372980d4814ab94 |
maybe just create a separate PR for language text update? I'd prefer to keep this one a feature thing, and then you can update the text in a separate one? |
Yes you’re right, there's no hurry. I'll try to do it later then.👍🏻 |
I've made some tests. Inicial load work has expected but when switching to the next filament, MMU2 act like sensor is already triggered: (octoprint terminal log)
This is "normal" because the tool change is operated with MMU2::tool_change who send command(MMU_CMD_T0 + index) and then make check_filament() systematically, as the filament is already present when he start T command so the A command is sent to the MMU2. The MMU2 finishes discharging the filament from the nozzle but acts as if it were still present (command A). In the Prusa firmware there is a condition called mmu_loading_flag that temporarily activates or deactivates the filament sensor when changing tools to avoid this. |
thanks for the input, I did not notice this, as prusaslicer creates a ramming sequence which unloads the filament, on my G-Codes. I am still fighting with it as it causes the PTFE tube to jam, now waiting for my tube with wider inner diameter. Don't know when I have time to add this yet. |
does anyone know the history here? it states in the comments that for toolchange it does not run the after load sequence as well, so I would assume also not to run unload? from running anything and expect GCode to be suitable? |
I'm sorry, but I don't understand |
bool MMU2::load_to_gears() { | ||
command(MMU_CMD_C0); | ||
manage_response(true, true); | ||
LOOP_L_N(i, MMU2_C0_RETRY) { // Keep loading until filament reaches gears |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isn't here missing a check_filament
call? before loop?
otherwise isn't the if () break;
to be put after check_filament call?
How is PRUSA_MMU2_S_MODE supposedly to work? I mean, with MK3S and MMU2S the filament sensor is on the idler of the extruder. When a Tx command is executed in Marlin, Marlin will send Tx/C0 commands to MMU2S and it will load the filament up to the nozzle, but while MMU2S is loading the filament, the extruder gears shouldn't be spining for an easy filament load into the extruder? I mean, if the extruder gears are not spining the MMU2S unit won't be able to insert the filament into the extruder and the sensor wouldn't be triggered. |
I think ir sensor logic is done by enabling MMU_EXTRUDER_SENSOR |
There are 2 posible sensors. The "MMU_EXTRUDER_SENSOR" is the one just before the extruder gears, and PRUSA_MMU2_S_MODE is the extruder idler sensor. The first one has no resistance, it smoothly detects the filament. But the second one needs a lot of torque to get the filament in or, the best option, to get the extruder gears spining while the filament is loaded until the sensor is triggered. I want to test it myself, I need to spin the extruder gears as soon the C0 command is triggered and until the Abort command is received from the MMU2 unit. I identified the points in the source code where I should do the "spin/stop spin the gears" instructionsm, but I have no idea how to program this. |
AFAIK MMU_EXTRUDER_SENSOR is the ir sensor that detect filament inside gears |
From Configuration_adv.h I do not understand it as you say:
In this video, MK3S and MMU2S you can see how the extruder gears are spining while the filament is being loaded: |
right, sorry |
Any way to get the extruder gears spining in PRUSA_MMU2_S_MODE while the Tx/C0 commands until the filament sensor is triggered? How could I extrude slowly until the filament sensor is triggered? Any C functions in Marlin that can do that? |
Yes bugfix has added ir-sensor on filament inside bontech gears |
Thanks @kakou-fr and @GMagician for your response. I'm using the bugfix version dated from 2020-06-27. Maybe I'm missing something, but the problem here is that when MMU is executing the C0 command the printer extruder is not spining, so the MMU unit is not able to push the filament into the extruder (it has no enough torque for that). From my point of view, the solution would be to spin slowly the extruder gear while MMU is executing the C0 command and until the filament inside the bondtech gears is triggered. From my understanding, this is how MK3S/MMU2S works. I'm doing something wrong? Is someone using the MMU with the sensor inside the bondtech gears and without problems? |
@isanval I think you should open a issues because the post is starting to be long, is not related to the PRUSA_MMU2S_MODE and may not be visible to users who could help you. Plz post your configuration in the new issue too |
it does work for me for some filaments, that's why i stopped, but I did think about the problem you mention, so I was already thinking about how to do it but since noone mentioned it, i did not do anything. if you open a new FR I can create a PR when I find some time. |
@tonihoang nice, thank you! I will open a FR, no problem (#18599). I was trying to code it myself, but I'm not used to Marlin neither I know the available functions, so it's really difficult to me. Thanks |
Requirements
When the filament reaches the gears, "A" needs to be sent to the MMU2
Description
After initalization of MMU (state -4 reached) in state 1,2, and 3 and the end filament runout sensor is checked.
On the first time it is triggered "A" is send to MMU2. If the user is in calibration mode, this will enable the automatic bowdentube length for MMU2.
Benefits
MMU2S usability
Related Issues
#15614