Notifications
Clear all

MMU3 on Core One Attempt  

  RSS
WarezMonkey
(@warezmonkey)
Eminent Member
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%
Posted : 19/03/2025 3:57 pm
WarezMonkey
(@warezmonkey)
Eminent Member
Topic starter answered:
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.

Posted : 19/03/2025 4:38 pm
WarezMonkey
(@warezmonkey)
Eminent Member
Topic starter answered:
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.

Posted : 19/03/2025 5:59 pm
altaic
(@altaic)
Active Member
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.

Posted : 19/03/2025 7:22 pm
Share: