Skip to content

Commit bbe54d8

Browse files
committed
1 parent b805767 commit bbe54d8

File tree

374 files changed

+56100
-10472
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

374 files changed

+56100
-10472
lines changed

config/default/Configuration_adv.h

Lines changed: 150 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4415,44 +4415,89 @@
44154415
//#define E_MUX0_PIN 40 // Always Required
44164416
//#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs
44174417
//#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs
4418-
#elif HAS_PRUSA_MMU2
4419-
// Serial port used for communication with MMU2.
4418+
#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3
4419+
// Common settings for MMU2/MMU2S/MMU3
4420+
// Serial port used for communication with MMU2/MMU2S/MMU3.
44204421
#define MMU2_SERIAL_PORT 2
4422+
#define MMU_BAUD 115200
44214423

44224424
// Use hardware reset for MMU if a pin is defined for it
44234425
//#define MMU2_RST_PIN 23
44244426

4425-
// Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
4426-
//#define MMU2_MODE_12V
4427+
#if HAS_PRUSA_MMU2
4428+
// Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
4429+
//#define MMU2_MODE_12V
44274430

4428-
// G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
4429-
#define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
4431+
// G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
4432+
#define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
4433+
#endif
44304434

4431-
// Add an LCD menu for MMU2
4432-
//#define MMU2_MENUS
4435+
// Add an LCD menu for MMU2/MMU2S/MMU3
4436+
//#define MMU_MENUS
44334437

44344438
// Settings for filament load / unload from the LCD menu.
44354439
// This is for Průša MK3-style extruders. Customize for your hardware.
44364440
#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
4441+
4442+
/**
4443+
* ------------
4444+
* MMU2 / MMU2S
4445+
* ------------
4446+
* MMU2 sequences use mm/min. Not compatible with MMU3 (see below).
4447+
* #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
4448+
* { 4.4, 871 }, \
4449+
* { 10.0, 1393 }, \
4450+
* { 4.4, 871 }, \
4451+
* { 10.0, 198 }
4452+
*/
4453+
4454+
/* #define MMU2_RAMMING_SEQUENCE \
4455+
* { 1.0, 1000 }, \
4456+
* { 1.0, 1500 }, \
4457+
* { 2.0, 2000 }, \
4458+
* { 1.5, 3000 }, \
4459+
* { 2.5, 4000 }, \
4460+
* { -15.0, 5000 }, \
4461+
* { -14.0, 1200 }, \
4462+
* { -6.0, 600 }, \
4463+
* { 10.0, 700 }, \
4464+
* { -10.0, 400 }, \
4465+
* { -50.0, 2000 }
4466+
*/
4467+
4468+
/**
4469+
* ----
4470+
* MMU3
4471+
* ----
4472+
* These values are compatible with MMU3 as they are defined in mm/s
4473+
*/
4474+
4475+
#define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm)
4476+
#define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm)
4477+
44374478
#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
4438-
{ 7.2, 1145 }, \
4439-
{ 14.4, 871 }, \
4440-
{ 36.0, 1393 }, \
4441-
{ 14.4, 871 }, \
4442-
{ 50.0, 198 }
4479+
{ MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \
4480+
{ MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak
44434481

44444482
#define MMU2_RAMMING_SEQUENCE \
4445-
{ 1.0, 1000 }, \
4446-
{ 1.0, 1500 }, \
4447-
{ 2.0, 2000 }, \
4448-
{ 1.5, 3000 }, \
4449-
{ 2.5, 4000 }, \
4450-
{ -15.0, 5000 }, \
4451-
{ -14.0, 1200 }, \
4452-
{ -6.0, 600 }, \
4453-
{ 10.0, 700 }, \
4454-
{ -10.0, 400 }, \
4455-
{ -50.0, 2000 }
4483+
{ 0.2816, MMM_TO_MMS(1339.0) }, \
4484+
{ 0.3051, MMM_TO_MMS(1451.0) }, \
4485+
{ 0.3453, MMM_TO_MMS(1642.0) }, \
4486+
{ 0.3990, MMM_TO_MMS(1897.0) }, \
4487+
{ 0.4761, MMM_TO_MMS(2264.0) }, \
4488+
{ 0.5767, MMM_TO_MMS(2742.0) }, \
4489+
{ 0.5691, MMM_TO_MMS(3220.0) }, \
4490+
{ 0.1081, MMM_TO_MMS(3220.0) }, \
4491+
{ 0.7644, MMM_TO_MMS(3635.0) }, \
4492+
{ 0.8248, MMM_TO_MMS(3921.0) }, \
4493+
{ 0.8483, MMM_TO_MMS(4033.0) }, \
4494+
{ -15.0, MMM_TO_MMS(6000.0) }, \
4495+
{ -24.5, MMM_TO_MMS(1200.0) }, \
4496+
{ -7.0, MMM_TO_MMS( 600.0) }, \
4497+
{ -3.5, MMM_TO_MMS( 360.0) }, \
4498+
{ 20.0, MMM_TO_MMS( 454.0) }, \
4499+
{ -20.0, MMM_TO_MMS( 303.0) }, \
4500+
{ -35.0, MMM_TO_MMS(2000.0) }
44564501

44574502
/**
44584503
* Using a sensor like the MMU2S
@@ -4462,11 +4507,26 @@
44624507
#if HAS_PRUSA_MMU2S
44634508
#define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries)
44644509

4510+
/**
4511+
* This is called after the filament runout sensor is triggered to check if
4512+
* the filament has been loaded properly by moving the filament back and
4513+
* forth to see if the filament runout sensor is going to get triggered
4514+
* again, which should not occur if the filament is properly loaded.
4515+
*
4516+
* Thus, the MMU2_CAN_LOAD_SEQUENCE should contain some forward and
4517+
* backward moves. The forward moves should be greater than the backward
4518+
* moves.
4519+
*
4520+
* This is useless if your filament runout sensor is way behind the gears.
4521+
* In that case use {0, MMU2_CAN_LOAD_FEEDRATE}
4522+
*
4523+
* Adjust MMU2_CAN_LOAD_SEQUENCE according to your setup.
4524+
*/
44654525
#define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min)
44664526
#define MMU2_CAN_LOAD_SEQUENCE \
4467-
{ 0.1, MMU2_CAN_LOAD_FEEDRATE }, \
4468-
{ 60.0, MMU2_CAN_LOAD_FEEDRATE }, \
4469-
{ -52.0, MMU2_CAN_LOAD_FEEDRATE }
4527+
{ 5.0, MMU2_CAN_LOAD_FEEDRATE }, \
4528+
{ 15.0, MMU2_CAN_LOAD_FEEDRATE }, \
4529+
{ -10.0, MMU2_CAN_LOAD_FEEDRATE }
44704530

44714531
#define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values
44724532
#define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation
@@ -4477,6 +4537,68 @@
44774537

44784538
// Continue unloading if sensor detects filament after the initial unload move
44794539
//#define MMU_IR_UNLOAD_MOVE
4540+
4541+
#elif HAS_PRUSA_MMU3
4542+
4543+
// MMU3 settings
4544+
4545+
#define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries)
4546+
4547+
// Nominal distance from the extruder gear to the nozzle tip is 87mm
4548+
// However, some slipping may occur and we need separate distances for
4549+
// LoadToNozzle and ToolChange.
4550+
// - +5mm seemed good for LoadToNozzle,
4551+
// - but too much (made blobs) for a ToolChange
4552+
#define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0
4553+
4554+
// As discussed with our PrusaSlicer profile specialist
4555+
// - ToolChange shall not try to push filament into the very tip of the nozzle
4556+
// to have some space for additional G-code to tune the extruded filament length
4557+
// in the profile
4558+
// Beware - this value is used to initialize the MMU logic layer - it will be sent to the MMU upon line up (written into its 8bit register 0x0b)
4559+
// However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething).
4560+
// The printer intercepts such a call and sets its extra load distance to match the new value as well.
4561+
#define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm)
4562+
#define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm)
4563+
#define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm)
4564+
4565+
#define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s)
4566+
#define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s)
4567+
4568+
#define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s)
4569+
#define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle
4570+
4571+
// The first thing the MMU does is initialize its axis.
4572+
// Meanwhile the E-motor will unload 20mm of filament in about 1 second.
4573+
#define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm)
4574+
#define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s)
4575+
4576+
// After loading a new filament, the printer will extrude this length of filament
4577+
// then retract to the original position. This is used to check if the filament sensor
4578+
// reading flickers or filament is jammed.
4579+
#define MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH (MMU2_EXTRUDER_PTFE_LENGTH + MMU2_EXTRUDER_HEATBREAK_LENGTH + MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK + MMU2_FILAMENT_SENSOR_POSITION) // (mm)
4580+
4581+
#define MMU_HAS_CUTTER // Enable cutter related functionalities
4582+
//#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item
4583+
4584+
/**
4585+
* SpoolJoin Consumes All Filament -- EXPERIMENTAL
4586+
*
4587+
* SpoolJoin normally triggers when FINDA sensor untriggers while printing.
4588+
* This is the default behaviour and it doesn't consume all the filament
4589+
* before triggering a filament change. This leaves some filament in the
4590+
* current slot and before switching to the next slot it is unloaded.
4591+
*
4592+
* Enabling this option will trigger the filament change when both FINDA
4593+
* and Filament Runout Sensor triggers during the print and it allows the
4594+
* filament in the current slot to be completely consumed before doing the
4595+
* filament change. But this can cause problems as a little bit of filament
4596+
* will be left between the extruder gears (thinking that the filament
4597+
* sensor is triggered through the gears) and the end of the PTFE tube and
4598+
* can cause filament load issues.
4599+
*/
4600+
//#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT
4601+
44804602
#else
44814603

44824604
/**
@@ -4499,7 +4621,7 @@
44994621

45004622
//#define MMU2_DEBUG // Write debug info to serial output
45014623

4502-
#endif // HAS_PRUSA_MMU2
4624+
#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3
45034625

45044626
/**
45054627
* Advanced Print Counter settings

0 commit comments

Comments
 (0)