MMU3 on Core One Attempt
Hi everyone. I've been trying to get the MMU3 working on my Core One. I know not officially released yet, but I feel that I would like to try so I can learn more and grow my skills. This is after all why I love Prusa and not some of the other brands. If you aren't on Reddit you may not have seen my post there on this topic: https://www.reddit.com/r/prusa3d/comments/1jdueth/mmu3_on_core_one_an_attempt_was_made/
There are details there, but I want to continue here as I am getting more involved now and playing with G-code. There is no ready config for Core One + MMU in Prusa slicer, so I'm trying now to get that to work and I ran into a snag.
To catch up with my progress (Pictures & videos: https://imgur.com/a/aUGdGHO and https://imgur.com/a/dnoTLlq)
Here's what I've done
- upgraded the nextruder with the new filament sensor and replaced the HF nozzle
- edited the tube length in the MMU with M708 command (M708 A0x22 X520) - yes. its long, but it works for now
- Turned on MMU in the settings and did a filament sensorMMU calibration
- Tested multiple filament load unloads just fine
- Attempted to create a slicer profile with COREONE and MMU/multiple extruder G-Codes
This is where I am stuck: After using WinMerge to compare the MK4S+MMU with the CoreOne, I found most of the code differences with respect to loading the initial tool and modified the start and end g-codes with various MMU preparation codes.
Problem: When trying to print, it first says "There is already filament in the extruder, proceed with it, or unload first?" There is no filament in the extruder. The filament sensor says it is off/not engaged.
I'll attach my G-Code for the print, and paste the start g-code here. How would I debug and see at what step it thinks there is filament already in place?
Start G-code
M17 ; enable steppers M862.1 P[nozzle_diameter] A{((is_extruder_used[0] and filament_abrasive[0]) ? 1 : (is_extruder_used[1] and filament_abrasive[1]) ? 1 : (is_extruder_used[2] and filament_abrasive[2]) ? 1 : (is_extruder_used[3] and filament_abrasive[3]) ? 1 : (is_extruder_used[4] and filament_abrasive[4]) ? 1 : 0)} F{(nozzle_high_flow[0] ? 1 : 0)} ; nozzle check M862.3 P "COREONE" ; printer model check M862.5 P2 ; g-code level check M862.6 P "Input shaper" ; FW feature check M862.6 P "MMU3" ; FW feature check M115 U6.3.0+10073 ; setup MMU M708 A0x0b X5 ; extra load distance M708 A0x0d X140 ; unload feeedrate M708 A0x11 X140 ; load feedrate M708 A0x14 X20 ; slow feedrate M708 A0x1e X12 ; Pulley current to ~200mA M555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))} G90 ; use absolute coordinates M83 ; extruder relative mode {if chamber_minimal_temperature[initial_tool]!=0} M140 S115 ; set bed temp for chamber heating {else} M140 S[first_layer_bed_temperature] ; set bed temp {endif} M109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp M84 E ; turn off E motor G28 ; home all without mesh bed level {if chamber_minimal_temperature[initial_tool]!=0} ; Min chamber temp section M104 S{idle_temperature[initial_tool]} ; set idle temp G1 Z10 F720 ; set bed position G1 X242 Y-9 F4800 ; set print head position M191 S{chamber_minimal_temperature[initial_tool]} ; wait for minimal chamber temp M141 S{chamber_temperature[initial_tool]} ; set nominal chamber temp M107 M140 S[first_layer_bed_temperature] ; set bed temp {else} M141 S{chamber_temperature[initial_tool]} ; set nominal chamber temp {endif} {if first_layer_bed_temperature[initial_tool]<=60}M106 S70{endif} G0 Z40 F10000 M104 T{initial_tool} S{if is_nil(idle_temperature[initial_tool])}100{else}{idle_temperature[initial_tool]}{endif} M190 R[first_layer_bed_temperature] ; wait for bed temp M107 G29 G ; absorb heat M109 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : 170)} ; wait for MBL temp M302 S160 ; lower cold extrusion limit to 160C {if filament_type[initial_tool]=="FLEX"} G1 E-4 F2400 ; retraction {else} G1 E-2 F2400 ; retraction {endif} M84 E ; turn off E motor G29 P9 X208 Y-2.5 W32 H4 ; ; MBL ; M84 E ; turn off E motor G29 P1 ; invalidate mbl & probe print area G29 P1 X150 Y0 W100 H20 C ; probe near purge place G29 P3.2 ; interpolate mbl probes G29 P3.13 ; extrapolate mbl outside probe area G29 A ; activate mbl ; prepare for purge M104 S{first_layer_temperature[initial_tool]} G0 X249 Y-2.5 Z15 F4800 ; move away and ready for the purge M109 S{first_layer_temperature[initial_tool]} G92 E0 M569 S0 E ; set spreadcycle mode for extruder T[initial_tool] G1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle ; ; Extrude purge line ; G92 E0 ; reset extruder position G1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one G0 E5 X235 Z0.2 F500 ; purge G0 X225 E4 F500 ; purge G0 X215 E4 F650 ; purge G0 X205 E4 F800 ; purge G0 X202 Z0.05 F8000 ; wipe, move close to the bed G0 X199 Z0.2 F8000 ; wipe, move quickly away from the bed G92 E0 M221 S100 ; set flow to 100%
RE: MMU3 on Core One Attempt
Update:
- I just said "unload" filament and proceed. Then it went through the motions of unloading the non-existent filament and immediately called itself successful since the Nextruder and MMU sensors reported nothing - pretty sure this is some firmware bug/update required
- It then went to the "select filament" as I'm used to where I selected my two colours
- And it proceeded to print!!
But now, the print sucked and was not adhering to the bed. Time for some tuning to see if the z height is too high and maybe I lower it a bit.
Almost there for my franken-Core-MMU monster.
RE: MMU3 on Core One Attempt
Update: I think I'll give up for now and throw in the towel until I get something more from Prusa or others. There are some things with my print that I don't know how to control and I'm not sure if it is worth me trying to figure out until a firmware or slicer config update
- The nozzle is too high - I'm afraid to play with the Z offset for fear of scratching my sheets.
- The wipe tower doesn't behave as expected. It usually starts with the wipe tower and then the other colours go on top of it... but instead it jumped right to my object and proceeded to wipe onto nothing.
It did purge and swap filaments well though. Something exciting.
RE: MMU3 on Core One Attempt
Firmware version 6.3.0 is buggy and not a good foundation for experimenting. Theoretically the Z offset bug has been fixed in the repo, but I personally am going to wait until 6.3.1 lands. I really hope Prusa focuses on getting fixes out ASAP— these sorts of things do no favors for their software reputation.