From fd517ffa729504b6cef1478fa870c412f41ca36b Mon Sep 17 00:00:00 2001 From: classicrocker883 Date: Thu, 19 Sep 2024 10:07:27 -0400 Subject: [PATCH] Update - HC32 configs --- .../Voxelab Aquila HC32/C2/Default/Version.h | 2 +- .../Voxelab Aquila HC32/C2/MM/Version.h | 2 +- .../Voxelab Aquila HC32/ConfigurationBLT.h | 57 ++-- .../Voxelab Aquila HC32/ConfigurationDNP.h | 53 ++-- .../Voxelab Aquila HC32/ConfigurationMM.h | 53 ++-- .../Voxelab Aquila HC32/ConfigurationUBL.h | 55 ++-- .../Configuration_advBLT.h | 296 ++++++++++++----- .../Configuration_advDNP.h | 296 ++++++++++++----- .../Voxelab Aquila HC32/Configuration_advMM.h | 298 +++++++++++++----- .../Configuration_advUBL.h | 296 ++++++++++++----- configurations/Voxelab Aquila HC32/Version.h | 2 +- 11 files changed, 991 insertions(+), 419 deletions(-) diff --git a/configurations/Voxelab Aquila HC32/C2/Default/Version.h b/configurations/Voxelab Aquila HC32/C2/Default/Version.h index b78a75c567..4f92053276 100644 --- a/configurations/Voxelab Aquila HC32/C2/Default/Version.h +++ b/configurations/Voxelab Aquila HC32/C2/Default/Version.h @@ -28,7 +28,7 @@ /** * Marlin release version identifier */ -#define SHORT_BUILD_VERSION "2.1.3f-8" +#define SHORT_BUILD_VERSION "2.1.3f-9" /** * Verbose version identifier which should contain a reference to the location diff --git a/configurations/Voxelab Aquila HC32/C2/MM/Version.h b/configurations/Voxelab Aquila HC32/C2/MM/Version.h index ffe9e3b744..e664c3aae7 100644 --- a/configurations/Voxelab Aquila HC32/C2/MM/Version.h +++ b/configurations/Voxelab Aquila HC32/C2/MM/Version.h @@ -28,7 +28,7 @@ /** * Marlin release version identifier */ -#define SHORT_BUILD_VERSION "2.1.3f-8" +#define SHORT_BUILD_VERSION "2.1.3f-9" /** * Verbose version identifier which should contain a reference to the location diff --git a/configurations/Voxelab Aquila HC32/ConfigurationBLT.h b/configurations/Voxelab Aquila HC32/ConfigurationBLT.h index 1802031a4f..2f2f2dacf5 100644 --- a/configurations/Voxelab Aquila HC32/ConfigurationBLT.h +++ b/configurations/Voxelab Aquila HC32/ConfigurationBLT.h @@ -115,7 +115,7 @@ /** * Select a third serial port on the board to use for communication with the host. - * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1 + * Currently supported for AVR, DUE, SAMD51, LPC1768/9, STM32/STM32F1/HC32, and Teensy 4.x * :[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] */ //#define SERIAL_PORT_3 1 @@ -394,14 +394,15 @@ * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) * PRUSA_MMU2 : Průša MMU2 * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) + * PRUSA_MMU3 : Průša MMU3 (Requires MK3S extruder with motion sensor and MMU firmware version 3.x.x, EXTRUDERS = 5) * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. * See additional options in Configuration_adv.h. - * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] + * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "PRUSA_MMU3", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] */ -//#define MMU_MODEL PRUSA_MMU2 +//#define MMU_MODEL PRUSA_MMU3 // @section psu control @@ -724,7 +725,7 @@ * Use a physical model of the hotend to control temperature. When configured correctly this gives * better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING * and PID_FAN_SCALING. Enable MPC_AUTOTUNE and use M306 T to autotune the model. - * @section mpctemp + * @section mpc temp */ #if ENABLED(MPCTEMP) #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) @@ -852,14 +853,16 @@ // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element // and placed inside the small Creality printer enclosure tent. // - #define DEFAULT_chamberKp 37.04 - #define DEFAULT_chamberKi 1.40 + #define DEFAULT_chamberKp 37.04 + #define DEFAULT_chamberKi 1.40 #define DEFAULT_chamberKd 655.17 // M309 P37.04 I1.04 D655.17 // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles. #endif // PIDTEMPCHAMBER +// @section pid temp + #if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER) //#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay @@ -1489,7 +1492,8 @@ * A lightweight, solenoid-driven probe. * For information about this sensor https://github.com/bigtreetech/MicroProbe * - * Also requires: PROBE_ENABLE_DISABLE, ENDSTOP_INTERRUPTS_FEATURE if FT_MOTION is enabled. + * Also requires PROBE_ENABLE_DISABLE + * With FT_MOTION requires ENDSTOP_INTERRUPTS_FEATURE */ //#define BIQU_MICROPROBE_V1 // Triggers HIGH //#define BIQU_MICROPROBE_V2 // Triggers LOW @@ -1635,7 +1639,7 @@ #define Z_PROBE_FEEDRATE_FAST (9*60) // Feedrate (mm/min) for the "accurate" probe of each point -#define Z_PROBE_FEEDRATE_SLOW (150) //(Z_PROBE_FEEDRATE_FAST * 0.3125) +#define Z_PROBE_FEEDRATE_SLOW (150) // (Z_PROBE_FEEDRATE_FAST * 0.3125) /** * Probe Activation Switch @@ -1659,6 +1663,7 @@ #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before #define PROBE_TARE_STATE HIGH // State to write pin for tare //#define PROBE_TARE_PIN PA5 // Override default pin + //#define PROBE_TARE_MENU // Display a menu item to tare the probe #if ENABLED(PROBE_ACTIVATION_SWITCH) //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active #endif @@ -1696,8 +1701,8 @@ * probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD. * Only integer values >= 1 are valid here. * - * EXAMPLE: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. - * BUT: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. + * EXAMPLE: 'M851 Z-5' with a CLEARANCE of 4 => 9mm from bed to nozzle. + * BUT: 'M851 Z+1' with a CLEARANCE of 2 => 2mm from bed to nozzle. */ #define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points @@ -1820,7 +1825,7 @@ */ #define Z_IDLE_HEIGHT Z_HOME_POS -#define Z_CLEARANCE_FOR_HOMING 5 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... +#define Z_CLEARANCE_FOR_HOMING 10 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... // You'll need this much clearance above Z_MAX_POS to avoid grinding. //#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing (if Z was homed) @@ -2086,7 +2091,7 @@ /** * Commands to execute at the end of G29 probing. - * Useful to retract or move the Z probe out of the way. + * Useful to retract or move the Z-Probe out of the way. */ //#define EVENT_GCODE_AFTER_G29 "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" @@ -2309,9 +2314,9 @@ //#define MANUAL_W_HOME_POS 0 /** - * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. + * Use "Z Safe Homing" to avoid homing with a Z-Probe outside the bed area. * - * - Moves the Z probe (or nozzle) to a defined XY point before Z homing. + * - Moves the Z-Probe (or nozzle) to a defined XY point before Z homing. * - Allows Z homing only when XY positions are known and trusted. * - If stepper drivers sleep, XY homing may be required again before Z homing. */ @@ -2446,7 +2451,7 @@ //#define PREHEAT_1_TEMP_CHAMBER 35 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" //PETG +#define PREHEAT_2_LABEL "ABS" // PETG #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 75 //#define PREHEAT_2_TEMP_CHAMBER 35 @@ -2462,7 +2467,7 @@ //#define PREHEAT_4_TEMP_BED 80 //#define PREHEAT_4_FAN_SPEED 128 // Value from 0 to 255 -//#define PREHEAT_5_LABEL "CUSTOM" //NYLON +//#define PREHEAT_5_LABEL "CUSTOM" // NYLON //#define PREHEAT_5_TEMP_HOTEND 240 //#define PREHEAT_5_TEMP_BED 60 //#define PREHEAT_5_FAN_SPEED 128 @@ -2484,7 +2489,7 @@ #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { 0, 200, 50 } //changed MRiscoC Customizable by menu + #define NOZZLE_PARK_POINT { 0, 200, 50 } // MRiscoC Customizable by menu #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X #define NOZZLE_PARK_Z_RAISE_MIN 10 // (mm) Always raise Z by at least this distance // MRiscoC uses Park Z Raise from 0 to avoid backlash issues #define NOZZLE_PARK_XY_FEEDRATE 125 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2570,7 +2575,7 @@ //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe // Explicit wipe G-code script applies to a G12 with no arguments. - #define WIPE_SEQUENCE_COMMANDS "G0 X2 Y200 Z50\nG0 Z0.3\nG0 Z0.3\nG92 E0\nG1 Y140 E10 F1500\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200\nG92 E0" + #define WIPE_SEQUENCE_COMMANDS "G0X2Y200Z50\nG0Z0.3\nG0Z0.3\nG92E0\nG1Y140E10F1500\nG1X2.3F5000\nG92E0\nG1Y10E10F1200\nG92E0" // PrusaSlicer Start G-code Purge Line #endif @@ -2756,7 +2761,7 @@ // // Set this option if CLOCKWISE causes values to DECREASE // -#define REVERSE_ENCODER_DIRECTION //Aquila enable -- Ender disable +#define REVERSE_ENCODER_DIRECTION // Aquila enable -- Ender disable // // This option reverses the encoder direction for navigating LCD menus. @@ -3171,7 +3176,7 @@ //#define U8GLIB_SH1106_EINSTART // -// Overlord OLED display/controller with i2c buzzer and LEDs +// Overlord OLED display/controller with I2C buzzer and LEDs // //#define OVERLORD_OLED @@ -3434,7 +3439,7 @@ //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. - #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space. + #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space #endif #if ENABLED(TFT_LVGL_UI) @@ -3470,8 +3475,8 @@ #define PROUI_EX 1 // Extended UI features (15152 bytes of flash) //#define CV_LASER_MODULE //#define HAS_GCODE_PREVIEW 1 - #define DISABLE_TUNING_GRAPH 0// Temp plot graph - PID/MPC Tuning (1624 bytes of flash) - #define HAS_ESDIAG 1 // View End-stop switch continuity (560 bytes of flash) + #define DISABLE_TUNING_GRAPH 0// PID/MPC Tuning Plot Graph (1624 bytes of flash) + #define HAS_ESDIAG 1 // View End-stop switch continuity (560 bytes of flash) #define HAS_CGCODE 1 // Extra Gcode options (3320 bytes of flash) //#define HAS_LOCKSCREEN 1 // Simple lockscreen as to not accidentally change something (568 bytes of flash) #define USE_GRID_MESHVIEWER 1 // Enable two mesh graph types : one (1560 bytes of flash) @@ -3481,10 +3486,8 @@ #if ENABLED(BLTOUCH) #define HS_MENU_ITEM // BLTOUCH_HS_MODE menu option (56 bytes of flash) #endif - #if DISABLED(DISABLE_TUNING_GRAPH) - #define PROUI_ITEM_PLOT // Temperature Plot Graph item in Tune/Prepare Menu (688 bytes of flash) - #endif - //#define PROUI_ITEM_PLR // Power-loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) + #define PROUI_ITEM_PLOT // Temp Plot Graph item in Tune/Prepare Menu (688 bytes of flash) + //#define PROUI_ITEM_PLR // Power-Loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) //#define PROUI_ITEM_JD // Juntion Deviation item in Tune Menu (only if JD is enabled) #define PROUI_ITEM_ADVK // Linear Advance item in Tune Menu (only if LA is enabled) #define SHOW_REAL_POS diff --git a/configurations/Voxelab Aquila HC32/ConfigurationDNP.h b/configurations/Voxelab Aquila HC32/ConfigurationDNP.h index c2a42a6a5d..5275888435 100644 --- a/configurations/Voxelab Aquila HC32/ConfigurationDNP.h +++ b/configurations/Voxelab Aquila HC32/ConfigurationDNP.h @@ -115,7 +115,7 @@ /** * Select a third serial port on the board to use for communication with the host. - * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1 + * Currently supported for AVR, DUE, SAMD51, LPC1768/9, STM32/STM32F1/HC32, and Teensy 4.x * :[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] */ //#define SERIAL_PORT_3 1 @@ -394,14 +394,15 @@ * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) * PRUSA_MMU2 : Průša MMU2 * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) + * PRUSA_MMU3 : Průša MMU3 (Requires MK3S extruder with motion sensor and MMU firmware version 3.x.x, EXTRUDERS = 5) * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. * See additional options in Configuration_adv.h. - * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] + * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "PRUSA_MMU3", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] */ -//#define MMU_MODEL PRUSA_MMU2 +//#define MMU_MODEL PRUSA_MMU3 // @section psu control @@ -724,7 +725,7 @@ * Use a physical model of the hotend to control temperature. When configured correctly this gives * better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING * and PID_FAN_SCALING. Enable MPC_AUTOTUNE and use M306 T to autotune the model. - * @section mpctemp + * @section mpc temp */ #if ENABLED(MPCTEMP) #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) @@ -852,14 +853,16 @@ // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element // and placed inside the small Creality printer enclosure tent. // - #define DEFAULT_chamberKp 37.04 - #define DEFAULT_chamberKi 1.40 + #define DEFAULT_chamberKp 37.04 + #define DEFAULT_chamberKi 1.40 #define DEFAULT_chamberKd 655.17 // M309 P37.04 I1.04 D655.17 // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles. #endif // PIDTEMPCHAMBER +// @section pid temp + #if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER) //#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay @@ -1489,7 +1492,8 @@ * A lightweight, solenoid-driven probe. * For information about this sensor https://github.com/bigtreetech/MicroProbe * - * Also requires: PROBE_ENABLE_DISABLE, ENDSTOP_INTERRUPTS_FEATURE if FT_MOTION is enabled. + * Also requires PROBE_ENABLE_DISABLE + * With FT_MOTION requires ENDSTOP_INTERRUPTS_FEATURE */ //#define BIQU_MICROPROBE_V1 // Triggers HIGH //#define BIQU_MICROPROBE_V2 // Triggers LOW @@ -1635,7 +1639,7 @@ #define Z_PROBE_FEEDRATE_FAST (9*60) // Feedrate (mm/min) for the "accurate" probe of each point -#define Z_PROBE_FEEDRATE_SLOW (150) //(Z_PROBE_FEEDRATE_FAST * 0.3125) +#define Z_PROBE_FEEDRATE_SLOW (150) // (Z_PROBE_FEEDRATE_FAST * 0.3125) /** * Probe Activation Switch @@ -1659,6 +1663,7 @@ #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before #define PROBE_TARE_STATE HIGH // State to write pin for tare //#define PROBE_TARE_PIN PA5 // Override default pin + //#define PROBE_TARE_MENU // Display a menu item to tare the probe #if ENABLED(PROBE_ACTIVATION_SWITCH) //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active #endif @@ -1696,8 +1701,8 @@ * probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD. * Only integer values >= 1 are valid here. * - * EXAMPLE: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. - * BUT: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. + * EXAMPLE: 'M851 Z-5' with a CLEARANCE of 4 => 9mm from bed to nozzle. + * BUT: 'M851 Z+1' with a CLEARANCE of 2 => 2mm from bed to nozzle. */ #define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points @@ -2086,7 +2091,7 @@ /** * Commands to execute at the end of G29 probing. - * Useful to retract or move the Z probe out of the way. + * Useful to retract or move the Z-Probe out of the way. */ //#define EVENT_GCODE_AFTER_G29 "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" @@ -2309,9 +2314,9 @@ //#define MANUAL_W_HOME_POS 0 /** - * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. + * Use "Z Safe Homing" to avoid homing with a Z-Probe outside the bed area. * - * - Moves the Z probe (or nozzle) to a defined XY point before Z homing. + * - Moves the Z-Probe (or nozzle) to a defined XY point before Z homing. * - Allows Z homing only when XY positions are known and trusted. * - If stepper drivers sleep, XY homing may be required again before Z homing. */ @@ -2446,7 +2451,7 @@ //#define PREHEAT_1_TEMP_CHAMBER 35 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" //PETG +#define PREHEAT_2_LABEL "ABS" // PETG #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 75 //#define PREHEAT_2_TEMP_CHAMBER 35 @@ -2462,7 +2467,7 @@ //#define PREHEAT_4_TEMP_BED 80 //#define PREHEAT_4_FAN_SPEED 128 // Value from 0 to 255 -//#define PREHEAT_5_LABEL "CUSTOM" //NYLON +//#define PREHEAT_5_LABEL "CUSTOM" // NYLON //#define PREHEAT_5_TEMP_HOTEND 240 //#define PREHEAT_5_TEMP_BED 60 //#define PREHEAT_5_FAN_SPEED 128 @@ -2484,7 +2489,7 @@ #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { 0, 200, 50 } //changed MRiscoC Customizable by menu + #define NOZZLE_PARK_POINT { 0, 200, 50 } // MRiscoC Customizable by menu #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X #define NOZZLE_PARK_Z_RAISE_MIN 10 // (mm) Always raise Z by at least this distance // MRiscoC uses Park Z Raise from 0 to avoid backlash issues #define NOZZLE_PARK_XY_FEEDRATE 125 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2570,7 +2575,7 @@ //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe // Explicit wipe G-code script applies to a G12 with no arguments. - #define WIPE_SEQUENCE_COMMANDS "G0 X2 Y200 Z50\nG0 Z0.3\nG0 Z0.3\nG92 E0\nG1 Y140 E10 F1500\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200\nG92 E0" + #define WIPE_SEQUENCE_COMMANDS "G0X2Y200Z50\nG0Z0.3\nG0Z0.3\nG92E0\nG1Y140E10F1500\nG1X2.3F5000\nG92E0\nG1Y10E10F1200\nG92E0" // PrusaSlicer Start G-code Purge Line #endif @@ -2756,7 +2761,7 @@ // // Set this option if CLOCKWISE causes values to DECREASE // -#define REVERSE_ENCODER_DIRECTION //Aquila enable -- Ender disable +#define REVERSE_ENCODER_DIRECTION // Aquila enable -- Ender disable // // This option reverses the encoder direction for navigating LCD menus. @@ -3171,7 +3176,7 @@ //#define U8GLIB_SH1106_EINSTART // -// Overlord OLED display/controller with i2c buzzer and LEDs +// Overlord OLED display/controller with I2C buzzer and LEDs // //#define OVERLORD_OLED @@ -3434,7 +3439,7 @@ //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. - #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space. + #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space #endif #if ENABLED(TFT_LVGL_UI) @@ -3470,7 +3475,7 @@ //#define PROUI_EX 1 // Extended UI features (15152 bytes of flash) //#define CV_LASER_MODULE //#define HAS_GCODE_PREVIEW 1 - #define DISABLE_TUNING_GRAPH 0// Temp plot graph - PID/MPC Tuning (1624 bytes of flash) + #define DISABLE_TUNING_GRAPH 0// PID/MPC Tuning Plot Graph (1624 bytes of flash) #define HAS_ESDIAG 1 // View End-stop switch continuity (560 bytes of flash) #define HAS_CGCODE 1 // Extra Gcode options (3320 bytes of flash) #define HAS_LOCKSCREEN 1 // Simple lockscreen as to not accidentally change something (568 bytes of flash) @@ -3481,10 +3486,8 @@ #if ENABLED(BLTOUCH) #define HS_MENU_ITEM // BLTOUCH_HS_MODE menu option (56 bytes of flash) #endif - #if DISABLED(DISABLE_TUNING_GRAPH) - #define PROUI_ITEM_PLOT // Temperature Plot Graph item in Tune/Prepare Menu (688 bytes of flash) - #endif - //#define PROUI_ITEM_PLR // Power-loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) + #define PROUI_ITEM_PLOT // Temp Plot Graph item in Tune/Prepare Menu (688 bytes of flash) + //#define PROUI_ITEM_PLR // Power-Loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) //#define PROUI_ITEM_JD // Juntion Deviation item in Tune Menu (only if JD is enabled) #define PROUI_ITEM_ADVK // Linear Advance item in Tune Menu (only if LA is enabled) #define SHOW_REAL_POS diff --git a/configurations/Voxelab Aquila HC32/ConfigurationMM.h b/configurations/Voxelab Aquila HC32/ConfigurationMM.h index 6011feb668..3a188eb807 100644 --- a/configurations/Voxelab Aquila HC32/ConfigurationMM.h +++ b/configurations/Voxelab Aquila HC32/ConfigurationMM.h @@ -115,7 +115,7 @@ /** * Select a third serial port on the board to use for communication with the host. - * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1 + * Currently supported for AVR, DUE, SAMD51, LPC1768/9, STM32/STM32F1/HC32, and Teensy 4.x * :[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] */ //#define SERIAL_PORT_3 1 @@ -394,14 +394,15 @@ * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) * PRUSA_MMU2 : Průša MMU2 * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) + * PRUSA_MMU3 : Průša MMU3 (Requires MK3S extruder with motion sensor and MMU firmware version 3.x.x, EXTRUDERS = 5) * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. * See additional options in Configuration_adv.h. - * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] + * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "PRUSA_MMU3", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] */ -//#define MMU_MODEL PRUSA_MMU2 +//#define MMU_MODEL PRUSA_MMU3 // @section psu control @@ -724,7 +725,7 @@ * Use a physical model of the hotend to control temperature. When configured correctly this gives * better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING * and PID_FAN_SCALING. Enable MPC_AUTOTUNE and use M306 T to autotune the model. - * @section mpctemp + * @section mpc temp */ #if ENABLED(MPCTEMP) #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) @@ -852,14 +853,16 @@ // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element // and placed inside the small Creality printer enclosure tent. // - #define DEFAULT_chamberKp 37.04 - #define DEFAULT_chamberKi 1.40 + #define DEFAULT_chamberKp 37.04 + #define DEFAULT_chamberKi 1.40 #define DEFAULT_chamberKd 655.17 // M309 P37.04 I1.04 D655.17 // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles. #endif // PIDTEMPCHAMBER +// @section pid temp + #if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER) //#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay @@ -1489,7 +1492,8 @@ * A lightweight, solenoid-driven probe. * For information about this sensor https://github.com/bigtreetech/MicroProbe * - * Also requires: PROBE_ENABLE_DISABLE, ENDSTOP_INTERRUPTS_FEATURE if FT_MOTION is enabled. + * Also requires PROBE_ENABLE_DISABLE + * With FT_MOTION requires ENDSTOP_INTERRUPTS_FEATURE */ //#define BIQU_MICROPROBE_V1 // Triggers HIGH //#define BIQU_MICROPROBE_V2 // Triggers LOW @@ -1635,7 +1639,7 @@ #define Z_PROBE_FEEDRATE_FAST (9*60) // Feedrate (mm/min) for the "accurate" probe of each point -#define Z_PROBE_FEEDRATE_SLOW (150) //(Z_PROBE_FEEDRATE_FAST * 0.3125) +#define Z_PROBE_FEEDRATE_SLOW (150) // (Z_PROBE_FEEDRATE_FAST * 0.3125) /** * Probe Activation Switch @@ -1659,6 +1663,7 @@ #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before #define PROBE_TARE_STATE HIGH // State to write pin for tare //#define PROBE_TARE_PIN PA5 // Override default pin + //#define PROBE_TARE_MENU // Display a menu item to tare the probe #if ENABLED(PROBE_ACTIVATION_SWITCH) //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active #endif @@ -1696,8 +1701,8 @@ * probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD. * Only integer values >= 1 are valid here. * - * EXAMPLE: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. - * BUT: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. + * EXAMPLE: 'M851 Z-5' with a CLEARANCE of 4 => 9mm from bed to nozzle. + * BUT: 'M851 Z+1' with a CLEARANCE of 2 => 2mm from bed to nozzle. */ #define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points @@ -2086,7 +2091,7 @@ /** * Commands to execute at the end of G29 probing. - * Useful to retract or move the Z probe out of the way. + * Useful to retract or move the Z-Probe out of the way. */ //#define EVENT_GCODE_AFTER_G29 "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" @@ -2309,9 +2314,9 @@ //#define MANUAL_W_HOME_POS 0 /** - * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. + * Use "Z Safe Homing" to avoid homing with a Z-Probe outside the bed area. * - * - Moves the Z probe (or nozzle) to a defined XY point before Z homing. + * - Moves the Z-Probe (or nozzle) to a defined XY point before Z homing. * - Allows Z homing only when XY positions are known and trusted. * - If stepper drivers sleep, XY homing may be required again before Z homing. */ @@ -2446,7 +2451,7 @@ //#define PREHEAT_1_TEMP_CHAMBER 35 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -//#define PREHEAT_2_LABEL "ABS" //PETG +//#define PREHEAT_2_LABEL "ABS" // PETG //#define PREHEAT_2_TEMP_HOTEND 240 //#define PREHEAT_2_TEMP_BED 75 //#define PREHEAT_2_TEMP_CHAMBER 35 @@ -2462,7 +2467,7 @@ //#define PREHEAT_4_TEMP_BED 80 //#define PREHEAT_4_FAN_SPEED 128 // Value from 0 to 255 -//#define PREHEAT_5_LABEL "CUSTOM" //NYLON +//#define PREHEAT_5_LABEL "CUSTOM" // NYLON //#define PREHEAT_5_TEMP_HOTEND 240 //#define PREHEAT_5_TEMP_BED 60 //#define PREHEAT_5_FAN_SPEED 128 @@ -2484,7 +2489,7 @@ #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { 0, 200, 50 } //changed MRiscoC Customizable by menu + #define NOZZLE_PARK_POINT { 0, 200, 50 } // MRiscoC Customizable by menu #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X #define NOZZLE_PARK_Z_RAISE_MIN 10 // (mm) Always raise Z by at least this distance // MRiscoC uses Park Z Raise from 0 to avoid backlash issues #define NOZZLE_PARK_XY_FEEDRATE 125 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2570,7 +2575,7 @@ //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe // Explicit wipe G-code script applies to a G12 with no arguments. - #define WIPE_SEQUENCE_COMMANDS "G0 X2 Y200 Z50\nG0 Z0.3\nG0 Z0.3\nG92 E0\nG1 Y140 E10 F1500\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200\nG92 E0" + #define WIPE_SEQUENCE_COMMANDS "G0X2Y200Z50\nG0Z0.3\nG0Z0.3\nG92E0\nG1Y140E10F1500\nG1X2.3F5000\nG92E0\nG1Y10E10F1200\nG92E0" // PrusaSlicer Start G-code Purge Line #endif @@ -2756,7 +2761,7 @@ // // Set this option if CLOCKWISE causes values to DECREASE // -#define REVERSE_ENCODER_DIRECTION //Aquila enable -- Ender disable +#define REVERSE_ENCODER_DIRECTION // Aquila enable -- Ender disable // // This option reverses the encoder direction for navigating LCD menus. @@ -3171,7 +3176,7 @@ //#define U8GLIB_SH1106_EINSTART // -// Overlord OLED display/controller with i2c buzzer and LEDs +// Overlord OLED display/controller with I2C buzzer and LEDs // //#define OVERLORD_OLED @@ -3434,7 +3439,7 @@ //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. - #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space. + #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space #endif #if ENABLED(TFT_LVGL_UI) @@ -3470,7 +3475,7 @@ #define PROUI_EX 1 // Extended UI features (15152 bytes of flash) //#define CV_LASER_MODULE //#define HAS_GCODE_PREVIEW 1 - #define DISABLE_TUNING_GRAPH 0// Temp plot graph - PID/MPC Tuning (1624 bytes of flash) + #define DISABLE_TUNING_GRAPH 0// PID/MPC Tuning Plot Graph (1624 bytes of flash) #define HAS_ESDIAG 1 // View End-stop switch continuity (560 bytes of flash) #define HAS_CGCODE 1 // Extra Gcode options (3320 bytes of flash) #define HAS_LOCKSCREEN 1 // Simple lockscreen as to not accidentally change something (568 bytes of flash) @@ -3481,10 +3486,8 @@ #if ENABLED(BLTOUCH) #define HS_MENU_ITEM // BLTOUCH_HS_MODE menu option (56 bytes of flash) #endif - #if DISABLED(DISABLE_TUNING_GRAPH) - #define PROUI_ITEM_PLOT // Temperature Plot Graph item in Tune/Prepare Menu (688 bytes of flash) - #endif - //#define PROUI_ITEM_PLR // Power-loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) + #define PROUI_ITEM_PLOT // Temp Plot Graph item in Tune/Prepare Menu (688 bytes of flash) + //#define PROUI_ITEM_PLR // Power-Loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) //#define PROUI_ITEM_JD // Juntion Deviation item in Tune Menu (only if JD is enabled) #define PROUI_ITEM_ADVK // Linear Advance item in Tune Menu (only if LA is enabled) #define SHOW_REAL_POS diff --git a/configurations/Voxelab Aquila HC32/ConfigurationUBL.h b/configurations/Voxelab Aquila HC32/ConfigurationUBL.h index a4451e5b8f..4c7de825ae 100644 --- a/configurations/Voxelab Aquila HC32/ConfigurationUBL.h +++ b/configurations/Voxelab Aquila HC32/ConfigurationUBL.h @@ -115,7 +115,7 @@ /** * Select a third serial port on the board to use for communication with the host. - * Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1 + * Currently supported for AVR, DUE, SAMD51, LPC1768/9, STM32/STM32F1/HC32, and Teensy 4.x * :[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] */ //#define SERIAL_PORT_3 1 @@ -394,14 +394,15 @@ * PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version) * PRUSA_MMU2 : Průša MMU2 * PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5) + * PRUSA_MMU3 : Průša MMU3 (Requires MK3S extruder with motion sensor and MMU firmware version 3.x.x, EXTRUDERS = 5) * EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware) * * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails. * See additional options in Configuration_adv.h. - * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] + * :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "PRUSA_MMU3", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"] */ -//#define MMU_MODEL PRUSA_MMU2 +//#define MMU_MODEL PRUSA_MMU3 // @section psu control @@ -724,7 +725,7 @@ * Use a physical model of the hotend to control temperature. When configured correctly this gives * better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING * and PID_FAN_SCALING. Enable MPC_AUTOTUNE and use M306 T to autotune the model. - * @section mpctemp + * @section mpc temp */ #if ENABLED(MPCTEMP) #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) @@ -852,14 +853,16 @@ // Lasko "MyHeat Personal Heater" (200w) modified with a Fotek SSR-10DA to control only the heating element // and placed inside the small Creality printer enclosure tent. // - #define DEFAULT_chamberKp 37.04 - #define DEFAULT_chamberKi 1.40 + #define DEFAULT_chamberKp 37.04 + #define DEFAULT_chamberKi 1.40 #define DEFAULT_chamberKd 655.17 // M309 P37.04 I1.04 D655.17 // FIND YOUR OWN: "M303 E-2 C8 S50" to run autotune on the chamber at 50 degreesC for 8 cycles. #endif // PIDTEMPCHAMBER +// @section pid temp + #if ANY(PIDTEMP, PIDTEMPBED, PIDTEMPCHAMBER) //#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay @@ -1489,7 +1492,8 @@ * A lightweight, solenoid-driven probe. * For information about this sensor https://github.com/bigtreetech/MicroProbe * - * Also requires: PROBE_ENABLE_DISABLE, ENDSTOP_INTERRUPTS_FEATURE if FT_MOTION is enabled. + * Also requires PROBE_ENABLE_DISABLE + * With FT_MOTION requires ENDSTOP_INTERRUPTS_FEATURE */ //#define BIQU_MICROPROBE_V1 // Triggers HIGH //#define BIQU_MICROPROBE_V2 // Triggers LOW @@ -1635,7 +1639,7 @@ #define Z_PROBE_FEEDRATE_FAST (9*60) // Feedrate (mm/min) for the "accurate" probe of each point -#define Z_PROBE_FEEDRATE_SLOW (150) //(Z_PROBE_FEEDRATE_FAST * 0.3125) +#define Z_PROBE_FEEDRATE_SLOW (150) // (Z_PROBE_FEEDRATE_FAST * 0.3125) /** * Probe Activation Switch @@ -1659,6 +1663,7 @@ #define PROBE_TARE_DELAY 200 // (ms) Delay after tare before #define PROBE_TARE_STATE HIGH // State to write pin for tare //#define PROBE_TARE_PIN PA5 // Override default pin + //#define PROBE_TARE_MENU // Display a menu item to tare the probe #if ENABLED(PROBE_ACTIVATION_SWITCH) //#define PROBE_TARE_ONLY_WHILE_INACTIVE // Fail to tare/probe if PROBE_ACTIVATION_SWITCH is active #endif @@ -1696,8 +1701,8 @@ * probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD. * Only integer values >= 1 are valid here. * - * EXAMPLE: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. - * BUT: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. + * EXAMPLE: 'M851 Z-5' with a CLEARANCE of 4 => 9mm from bed to nozzle. + * BUT: 'M851 Z+1' with a CLEARANCE of 2 => 2mm from bed to nozzle. */ #define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points @@ -1820,7 +1825,7 @@ */ #define Z_IDLE_HEIGHT Z_HOME_POS -#define Z_CLEARANCE_FOR_HOMING 5 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... +#define Z_CLEARANCE_FOR_HOMING 10 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... // You'll need this much clearance above Z_MAX_POS to avoid grinding. //#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing (if Z was homed) @@ -2086,7 +2091,7 @@ /** * Commands to execute at the end of G29 probing. - * Useful to retract or move the Z probe out of the way. + * Useful to retract or move the Z-Probe out of the way. */ //#define EVENT_GCODE_AFTER_G29 "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" @@ -2309,9 +2314,9 @@ //#define MANUAL_W_HOME_POS 0 /** - * Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. + * Use "Z Safe Homing" to avoid homing with a Z-Probe outside the bed area. * - * - Moves the Z probe (or nozzle) to a defined XY point before Z homing. + * - Moves the Z-Probe (or nozzle) to a defined XY point before Z homing. * - Allows Z homing only when XY positions are known and trusted. * - If stepper drivers sleep, XY homing may be required again before Z homing. */ @@ -2446,7 +2451,7 @@ //#define PREHEAT_1_TEMP_CHAMBER 35 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" //PETG +#define PREHEAT_2_LABEL "ABS" // PETG #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 75 //#define PREHEAT_2_TEMP_CHAMBER 35 @@ -2462,7 +2467,7 @@ //#define PREHEAT_4_TEMP_BED 80 //#define PREHEAT_4_FAN_SPEED 128 // Value from 0 to 255 -//#define PREHEAT_5_LABEL "CUSTOM" //NYLON +//#define PREHEAT_5_LABEL "CUSTOM" // NYLON //#define PREHEAT_5_TEMP_HOTEND 240 //#define PREHEAT_5_TEMP_BED 60 //#define PREHEAT_5_FAN_SPEED 128 @@ -2484,7 +2489,7 @@ #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { 0, 200, 50 } //changed MRiscoC Customizable by menu + #define NOZZLE_PARK_POINT { 0, 200, 50 } // MRiscoC Customizable by menu #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X #define NOZZLE_PARK_Z_RAISE_MIN 10 // (mm) Always raise Z by at least this distance // MRiscoC uses Park Z Raise from 0 to avoid backlash issues #define NOZZLE_PARK_XY_FEEDRATE 125 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2570,7 +2575,7 @@ //#define NOZZLE_CLEAN_HEATUP // Heat up the nozzle instead of skipping wipe // Explicit wipe G-code script applies to a G12 with no arguments. - #define WIPE_SEQUENCE_COMMANDS "G0 X2 Y200 Z50\nG0 Z0.3\nG0 Z0.3\nG92 E0\nG1 Y140 E10 F1500\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200\nG92 E0" + #define WIPE_SEQUENCE_COMMANDS "G0X2Y200Z50\nG0Z0.3\nG0Z0.3\nG92E0\nG1Y140E10F1500\nG1X2.3F5000\nG92E0\nG1Y10E10F1200\nG92E0" // PrusaSlicer Start G-code Purge Line #endif @@ -2756,7 +2761,7 @@ // // Set this option if CLOCKWISE causes values to DECREASE // -#define REVERSE_ENCODER_DIRECTION //Aquila enable -- Ender disable +#define REVERSE_ENCODER_DIRECTION // Aquila enable -- Ender disable // // This option reverses the encoder direction for navigating LCD menus. @@ -3171,7 +3176,7 @@ //#define U8GLIB_SH1106_EINSTART // -// Overlord OLED display/controller with i2c buzzer and LEDs +// Overlord OLED display/controller with I2C buzzer and LEDs // //#define OVERLORD_OLED @@ -3434,7 +3439,7 @@ //#define TFT_SHARED_IO // I/O is shared between TFT display and other devices. Disable async data transfer. - #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space. + #define COMPACT_MARLIN_BOOT_LOGO // Use compressed data to save Flash space #endif #if ENABLED(TFT_LVGL_UI) @@ -3470,7 +3475,7 @@ #define PROUI_EX 1 // Extended UI features (15152 bytes of flash) //#define CV_LASER_MODULE //#define HAS_GCODE_PREVIEW 1 - #define DISABLE_TUNING_GRAPH 0// Temp plot graph - PID/MPC Tuning (1624 bytes of flash) + #define DISABLE_TUNING_GRAPH 0// PID/MPC Tuning Plot Graph (1624 bytes of flash) #define HAS_ESDIAG 1 // View End-stop switch continuity (560 bytes of flash) //#define HAS_CGCODE 1 // Extra Gcode options (3320 bytes of flash) //#define HAS_LOCKSCREEN 1 // Simple lockscreen as to not accidentally change something (568 bytes of flash) @@ -3481,10 +3486,8 @@ #if ENABLED(BLTOUCH) #define HS_MENU_ITEM // BLTOUCH_HS_MODE menu option (56 bytes of flash) #endif - #if DISABLED(DISABLE_TUNING_GRAPH) - #define PROUI_ITEM_PLOT // Temperature Plot Graph item in Tune/Prepare Menu (688 bytes of flash) - #endif - //#define PROUI_ITEM_PLR // Power-loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) + #define PROUI_ITEM_PLOT // Temp Plot Graph item in Tune/Prepare Menu (688 bytes of flash) + //#define PROUI_ITEM_PLR // Power-Loss Recovery option in Tune Menu (POWER_LOSS_RECOVERY 3400 bytes of flash) //#define PROUI_ITEM_JD // Juntion Deviation item in Tune Menu (only if JD is enabled) #define PROUI_ITEM_ADVK // Linear Advance item in Tune Menu (only if LA is enabled) #define SHOW_REAL_POS diff --git a/configurations/Voxelab Aquila HC32/Configuration_advBLT.h b/configurations/Voxelab Aquila HC32/Configuration_advBLT.h index cd5b54fff6..55aa58fb38 100644 --- a/configurations/Voxelab Aquila HC32/Configuration_advBLT.h +++ b/configurations/Voxelab Aquila HC32/Configuration_advBLT.h @@ -22,7 +22,7 @@ #pragma once // Edited by classicrocker883 for ProUI -// https://github.com/classicrocker883/MriscocProUI +// https://github.com/classicrocker883/MRiscoCProUI // Created by configs generator for Professional firmware // https://github.com/mriscoc/Ender3V2S1 @@ -53,8 +53,9 @@ * 2 = config.ini - File format for PlatformIO preprocessing. * 3 = schema.json - The entire configuration schema. (13 = pattern groups) * 4 = schema.yml - The entire configuration schema. + * 5 = Config.h - Minimal configuration by popular demand. */ -//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml'] +//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml', 5:'Config.h'] //=========================================================================== //============================= Thermal Settings ============================ @@ -309,9 +310,9 @@ * If you get false positives for "Thermal Runaway", increase * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // (seconds) - #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) +#if ALL(HAS_HOTEND, THERMAL_PROTECTION_HOTENDS) + #define THERMAL_PROTECTION_PERIOD 40 // (seconds) + #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) @@ -340,7 +341,7 @@ /** * Thermal Protection parameters for the bed are just as above for hotends. */ -#if ENABLED(THERMAL_PROTECTION_BED) +#if TEMP_SENSOR_BED && ENABLED(THERMAL_PROTECTION_BED) #define THERMAL_PROTECTION_BED_PERIOD 60 // (seconds) #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) @@ -354,7 +355,7 @@ /** * Thermal Protection parameters for the heated chamber. */ -#if ENABLED(THERMAL_PROTECTION_CHAMBER) +#if TEMP_SENSOR_CHAMBER && ENABLED(THERMAL_PROTECTION_CHAMBER) #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // (seconds) #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // (°C) @@ -368,7 +369,7 @@ /** * Thermal Protection parameters for the laser cooler. */ -#if ENABLED(THERMAL_PROTECTION_COOLER) +#if TEMP_SENSOR_COOLER && ENABLED(THERMAL_PROTECTION_COOLER) #define THERMAL_PROTECTION_COOLER_PERIOD 10 // (seconds) #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // (°C) @@ -465,7 +466,7 @@ #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0 #else - #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-loss due to cooling = Kf * (fan_speed) + #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-Loss due to cooling = Kf * (fan_speed) #define DEFAULT_Kf 10 // A constant value added to the PID-tuner #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING #endif @@ -1087,9 +1088,11 @@ #define HOME_AFTER_G34 #endif -// -// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe. -// +/** + * Assisted Tramming + * + * Add the G35 command to measure bed corners and help adjust screws. Requires a bed probe. + */ //#define ASSISTED_TRAMMING #if ENABLED(ASSISTED_TRAMMING) @@ -1110,19 +1113,22 @@ //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment /** - * Screw thread: - * M3: 30 = Clockwise, 31 = Counter-Clockwise - * M4: 40 = Clockwise, 41 = Counter-Clockwise - * M5: 50 = Clockwise, 51 = Counter-Clockwise + * Screw Thread. Use one of the following defines: + * + * M3_CW = M3 Clockwise, M3_CCW = M3 Counter-Clockwise + * M4_CW = M3 Clockwise, M4_CCW = M4 Counter-Clockwise + * M5_CW = M3 Clockwise, M5_CCW = M5 Counter-Clockwise + * + * :{'M3_CW':'M3 Clockwise','M3_CCW':'M3 Counter-Clockwise','M4_CW':'M4 Clockwise','M4_CCW':'M4 Counter-Clockwise','M5_CW':'M5 Clockwise','M5_CCW':'M5 Counter-Clockwise'} */ - #define TRAMMING_SCREW_THREAD 40 + #define TRAMMING_SCREW_THREAD M4_CW #endif // @section motion control /** - * Fixed-time-based Motion Control -- EXPERIMENTAL + * Fixed-time-based Motion Control -- BETA FEATURE * Enable/disable and set parameters with G-code M493. * See ft_types.h for named values used by FTM options. */ @@ -1132,8 +1138,8 @@ #define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (DISABLED, Z_BASED, MASS_BASED) #define FTM_DEFAULT_SHAPER_X ftMotionShaper_NONE // Default shaper mode on X axis (NONE, ZV, ZVD, ZVDD, ZVDDD, EI, 2HEI, 3HEI, MZV) #define FTM_DEFAULT_SHAPER_Y ftMotionShaper_NONE // Default shaper mode on Y axis - #define FTM_SHAPING_DEFAULT_X_FREQ 37.0f // (Hz) Default peak frequency used by input shapers - #define FTM_SHAPING_DEFAULT_Y_FREQ 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_X 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_Y 37.0f // (Hz) Default peak frequency used by input shapers #define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false) #define FTM_LINEAR_ADV_DEFAULT_K 0 // Default linear advance gain, integer value. (Acceleration-based scaling factor.) #define FTM_SHAPING_ZETA_X 0.1f // Zeta used by input shapers for X axis @@ -1186,25 +1192,19 @@ #endif /** - * Input Shaping -- EXPERIMENTAL + * Input Shaping * * Zero Vibration (ZV) Input Shaping for X and/or Y movements. * * This option uses a lot of SRAM for the step buffer. The buffer size is - * calculated automatically from SHAPING_FREQ_[XY], DEFAULT_AXIS_STEPS_PER_UNIT, + * calculated automatically from SHAPING_FREQ_[XYZ], DEFAULT_AXIS_STEPS_PER_UNIT, * DEFAULT_MAX_FEEDRATE and ADAPTIVE_STEP_SMOOTHING. The default calculation can * be overridden by setting SHAPING_MIN_FREQ and/or SHAPING_MAX_FEEDRATE. * The higher the frequency and the lower the feedrate, the smaller the buffer. * If the buffer is too small at runtime, input shaping will have reduced * effectiveness during high speed movements. * - * Tune with M593 D F: - * - * D Set the zeta/damping factor. If axes (X, Y, etc.) are not specified, set for all axes. - * F Set the frequency. If axes (X, Y, etc.) are not specified, set for all axes. - * T[map] Input Shaping type, 0:ZV, 1:EI, 2:2H EI (not implemented yet) - * X<1> Set the given parameters only for the X axis. - * Y<1> Set the given parameters only for the Y axis. + * Tune with M593 D F */ //#define INPUT_SHAPING_X //#define INPUT_SHAPING_Y @@ -1347,8 +1347,6 @@ //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved" - #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm - #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min @@ -1485,7 +1483,7 @@ // @section lcd #if HAS_MANUAL_MOVE_MENU - #define MANUAL_FEEDRATE { 60*60, 60*60, 8*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel + #define MANUAL_FEEDRATE { 60*60, 60*60, 10*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines #if IS_ULTIPANEL #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" @@ -1509,8 +1507,17 @@ #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440 #endif +/** + * Probe Offset Wizard + * Add a Probe Z-Offset calibration option to the LCD menu. + * Use this helper to get a perfect 'M851 Z' probe offset. + * When launched this powerful wizard: + * - Measures the bed height at the configured position with the probe. + * - Moves the nozzle to the same position for a "paper" measurement. + * - The difference is used to set the probe Z offset. + */ #if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) - #define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu + #define PROBE_OFFSET_WIZARD #if ENABLED(PROBE_OFFSET_WIZARD) /** * Enable to init the Probe Z-Offset when starting the Wizard. @@ -1527,6 +1534,10 @@ #if HAS_MARLINUI_MENU #if HAS_BED_PROBE + + // Show Deploy / Stow Probe options in the Motion menu. + #define PROBE_DEPLOY_STOW_MENU + // Add calibration in the Probe Offsets menu to compensate for X-axis twist. //#define X_AXIS_TWIST_COMPENSATION #if ENABLED(X_AXIS_TWIST_COMPENSATION) @@ -1541,8 +1552,6 @@ #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points #endif - // Show Deploy / Stow Probe options in the Motion menu. - #define PROBE_DEPLOY_STOW_MENU #endif // Include a page of printer information in the LCD Main Menu @@ -1572,6 +1581,9 @@ // BACK menu items keep the highlight at the top //#define TURBO_BACK_MENU_ITEM + // BACK menu items show "Back" instead of the previous menu name + //#define GENERIC_BACK_MENU_ITEM + // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM @@ -2364,7 +2376,7 @@ /** * Use Safe Bed Leveling coordinates to move axes to a useful position before bed probing. - * For example, after homing a rotational axis the Z probe might not be perpendicular to the bed. + * For example, after homing a rotational axis the Z-Probe might not be perpendicular to the bed. * Choose values the orient the bed horizontally and the Z-probe vertically. */ //#define SAFE_BED_LEVELING_START_X 0.0 @@ -2586,7 +2598,7 @@ /** * Minimum stepper driver pulse width (in ns) - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 100 : Minimum for TMC2xxx stepper drivers * 500 : Minimum for LV8729 * 1000 : Minimum for A4988 and A5984 stepper drivers @@ -2600,7 +2612,7 @@ /** * Maximum stepping rate (in Hz) the stepper driver allows - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 5000000 : Maximum for TMC2xxx stepper drivers * 1000000 : Maximum for LV8729 stepper driver * 500000 : Maximum for A4988 stepper driver @@ -2734,7 +2746,7 @@ /** * Set the number of proportional font spaces required to fill up a typical character space. - * This can help to better align the output of commands like `G29 O` Mesh Output. + * This can help to better align the output of commands like 'G29 O' Mesh Output. * * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0. * Otherwise, adjust according to your client and font. @@ -3002,7 +3014,7 @@ #if AXIS_IS_TMC_CONFIG(X) #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. - #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing + #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for homing. (Typically lower than *_CURRENT.) #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... @@ -3212,6 +3224,13 @@ //#define E7_HOLD_MULTIPLIER 0.5 #endif + /** + * Use the homing current for all probing. (e.g., Current may be reduced to the + * point where a collision makes the motor skip instead of damaging the bed, + * though this is unlikely to save delicate probes from being damaged. + */ + //#define PROBING_USE_CURRENT_HOME + // @section tmc/spi /** @@ -4179,7 +4198,7 @@ * Alternative Supplier: https://reliabuild3d.com/ * * Reliabuild encoders have been modified to improve reliability. - * @section i2c encoders + * @section I2C encoders */ //#define I2C_POSITION_ENCODERS @@ -4411,46 +4430,90 @@ //#define E_MUX0_PIN 40 // Always Required //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs -#elif HAS_PRUSA_MMU2 - // Serial port used for communication with MMU2. +#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 + // Common settings for MMU2/MMU2S/MMU3 + // Serial port used for communication with MMU2/MMU2S/MMU3. #define MMU2_SERIAL_PORT 2 + #define MMU_BAUD 115200 // Use hardware reset for MMU if a pin is defined for it //#define MMU2_RST_PIN 23 - // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) - //#define MMU2_MODE_12V - - // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout - #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" - - // Add an LCD menu for MMU2 - //#define MMU2_MENUS - #if ANY(MMU2_MENUS, HAS_PRUSA_MMU2S) - // Settings for filament load / unload from the LCD menu. - // This is for Průša MK3-style extruders. Customize for your hardware. - #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 - #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ - { 7.2, 1145 }, \ - { 14.4, 871 }, \ - { 36.0, 1393 }, \ - { 14.4, 871 }, \ - { 50.0, 198 } - - #define MMU2_RAMMING_SEQUENCE \ - { 1.0, 1000 }, \ - { 1.0, 1500 }, \ - { 2.0, 2000 }, \ - { 1.5, 3000 }, \ - { 2.5, 4000 }, \ - { -15.0, 5000 }, \ - { -14.0, 1200 }, \ - { -6.0, 600 }, \ - { 10.0, 700 }, \ - { -10.0, 400 }, \ - { -50.0, 2000 } + #if HAS_PRUSA_MMU2 + // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) + //#define MMU2_MODE_12V + + // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout + #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" #endif + // Add an LCD menu for MMU2/MMU2S/MMU3 + //#define MMU_MENUS + + // Settings for filament load / unload from the LCD menu. + // This is for Průša MK3-style extruders. Customize for your hardware. + #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 + + /** + * ------------ + * MMU2 / MMU2S + * ------------ + * MMU2 sequences use mm/min. Not compatible with MMU3 (see below). + * #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + * { 4.4, 871 }, \ + * { 10.0, 1393 }, \ + * { 4.4, 871 }, \ + * { 10.0, 198 } + */ + + /* #define MMU2_RAMMING_SEQUENCE \ + * { 1.0, 1000 }, \ + * { 1.0, 1500 }, \ + * { 2.0, 2000 }, \ + * { 1.5, 3000 }, \ + * { 2.5, 4000 }, \ + * { -15.0, 5000 }, \ + * { -14.0, 1200 }, \ + * { -6.0, 600 }, \ + * { 10.0, 700 }, \ + * { -10.0, 400 }, \ + * { -50.0, 2000 } + */ + + /** + * ---- + * MMU3 + * ---- + * These values are compatible with MMU3 as they are defined in mm/s + */ + + #define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm) + #define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm) + + #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + { MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \ + { MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak + + #define MMU2_RAMMING_SEQUENCE \ + { 0.2816, MMM_TO_MMS(1339.0) }, \ + { 0.3051, MMM_TO_MMS(1451.0) }, \ + { 0.3453, MMM_TO_MMS(1642.0) }, \ + { 0.3990, MMM_TO_MMS(1897.0) }, \ + { 0.4761, MMM_TO_MMS(2264.0) }, \ + { 0.5767, MMM_TO_MMS(2742.0) }, \ + { 0.5691, MMM_TO_MMS(3220.0) }, \ + { 0.1081, MMM_TO_MMS(3220.0) }, \ + { 0.7644, MMM_TO_MMS(3635.0) }, \ + { 0.8248, MMM_TO_MMS(3921.0) }, \ + { 0.8483, MMM_TO_MMS(4033.0) }, \ + { -15.0, MMM_TO_MMS(6000.0) }, \ + { -24.5, MMM_TO_MMS(1200.0) }, \ + { -7.0, MMM_TO_MMS( 600.0) }, \ + { -3.5, MMM_TO_MMS( 360.0) }, \ + { 20.0, MMM_TO_MMS( 454.0) }, \ + { -20.0, MMM_TO_MMS( 303.0) }, \ + { -35.0, MMM_TO_MMS(2000.0) } + /** * Using a sensor like the MMU2S * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S. @@ -4459,11 +4522,26 @@ #if HAS_PRUSA_MMU2S #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries) + /** + * This is called after the filament runout sensor is triggered to check if + * the filament has been loaded properly by moving the filament back and + * forth to see if the filament runout sensor is going to get triggered + * again, which should not occur if the filament is properly loaded. + * + * Thus, the MMU2_CAN_LOAD_SEQUENCE should contain some forward and + * backward moves. The forward moves should be greater than the backward + * moves. + * + * This is useless if your filament runout sensor is way behind the gears. + * In that case use {0, MMU2_CAN_LOAD_FEEDRATE} + * + * Adjust MMU2_CAN_LOAD_SEQUENCE according to your setup. + */ #define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min) #define MMU2_CAN_LOAD_SEQUENCE \ - { 0.1, MMU2_CAN_LOAD_FEEDRATE }, \ - { 60.0, MMU2_CAN_LOAD_FEEDRATE }, \ - { -52.0, MMU2_CAN_LOAD_FEEDRATE } + { 5.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { 15.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { -10.0, MMU2_CAN_LOAD_FEEDRATE } #define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values #define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation @@ -4474,6 +4552,68 @@ // Continue unloading if sensor detects filament after the initial unload move //#define MMU_IR_UNLOAD_MOVE + + #elif HAS_PRUSA_MMU3 + + // MMU3 settings + + #define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries) + + // Nominal distance from the extruder gear to the nozzle tip is 87mm + // However, some slipping may occur and we need separate distances for + // LoadToNozzle and ToolChange. + // - +5mm seemed good for LoadToNozzle, + // - but too much (made blobs) for a ToolChange + #define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0 + + // As discussed with our PrusaSlicer profile specialist + // - ToolChange shall not try to push filament into the very tip of the nozzle + // to have some space for additional G-code to tune the extruded filament length + // in the profile + // 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) + // However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething). + // The printer intercepts such a call and sets its extra load distance to match the new value as well. + #define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm) + #define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm) + #define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm) + + #define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s) + #define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s) + + #define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s) + #define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle + + // The first thing the MMU does is initialize its axis. + // Meanwhile the E-motor will unload 20mm of filament in about 1 second. + #define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm) + #define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s) + + // After loading a new filament, the printer will extrude this length of filament + // then retract to the original position. This is used to check if the filament sensor + // reading flickers or filament is jammed. + #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) + + #define MMU_HAS_CUTTER // Enable cutter related functionalities + //#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item + + /** + * SpoolJoin Consumes All Filament -- EXPERIMENTAL + * + * SpoolJoin normally triggers when FINDA sensor untriggers while printing. + * This is the default behaviour and it doesn't consume all the filament + * before triggering a filament change. This leaves some filament in the + * current slot and before switching to the next slot it is unloaded. + * + * Enabling this option will trigger the filament change when both FINDA + * and Filament Runout Sensor triggers during the print and it allows the + * filament in the current slot to be completely consumed before doing the + * filament change. But this can cause problems as a little bit of filament + * will be left between the extruder gears (thinking that the filament + * sensor is triggered through the gears) and the end of the PTFE tube and + * can cause filament load issues. + */ + //#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT + #else /** @@ -4496,7 +4636,7 @@ //#define MMU2_DEBUG // Write debug info to serial output -#endif // HAS_PRUSA_MMU2 +#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 /** * Advanced Print Counter settings diff --git a/configurations/Voxelab Aquila HC32/Configuration_advDNP.h b/configurations/Voxelab Aquila HC32/Configuration_advDNP.h index aa7cd745c5..dc09086d19 100644 --- a/configurations/Voxelab Aquila HC32/Configuration_advDNP.h +++ b/configurations/Voxelab Aquila HC32/Configuration_advDNP.h @@ -22,7 +22,7 @@ #pragma once // Edited by classicrocker883 for ProUI -// https://github.com/classicrocker883/MriscocProUI +// https://github.com/classicrocker883/MRiscoCProUI // Created by configs generator for Professional firmware // https://github.com/mriscoc/Ender3V2S1 @@ -53,8 +53,9 @@ * 2 = config.ini - File format for PlatformIO preprocessing. * 3 = schema.json - The entire configuration schema. (13 = pattern groups) * 4 = schema.yml - The entire configuration schema. + * 5 = Config.h - Minimal configuration by popular demand. */ -//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml'] +//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml', 5:'Config.h'] //=========================================================================== //============================= Thermal Settings ============================ @@ -309,9 +310,9 @@ * If you get false positives for "Thermal Runaway", increase * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // (seconds) - #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) +#if ALL(HAS_HOTEND, THERMAL_PROTECTION_HOTENDS) + #define THERMAL_PROTECTION_PERIOD 40 // (seconds) + #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) @@ -340,7 +341,7 @@ /** * Thermal Protection parameters for the bed are just as above for hotends. */ -#if ENABLED(THERMAL_PROTECTION_BED) +#if TEMP_SENSOR_BED && ENABLED(THERMAL_PROTECTION_BED) #define THERMAL_PROTECTION_BED_PERIOD 60 // (seconds) #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) @@ -354,7 +355,7 @@ /** * Thermal Protection parameters for the heated chamber. */ -#if ENABLED(THERMAL_PROTECTION_CHAMBER) +#if TEMP_SENSOR_CHAMBER && ENABLED(THERMAL_PROTECTION_CHAMBER) #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // (seconds) #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // (°C) @@ -368,7 +369,7 @@ /** * Thermal Protection parameters for the laser cooler. */ -#if ENABLED(THERMAL_PROTECTION_COOLER) +#if TEMP_SENSOR_COOLER && ENABLED(THERMAL_PROTECTION_COOLER) #define THERMAL_PROTECTION_COOLER_PERIOD 10 // (seconds) #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // (°C) @@ -465,7 +466,7 @@ #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0 #else - #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-loss due to cooling = Kf * (fan_speed) + #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-Loss due to cooling = Kf * (fan_speed) #define DEFAULT_Kf 10 // A constant value added to the PID-tuner #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING #endif @@ -1087,9 +1088,11 @@ #define HOME_AFTER_G34 #endif -// -// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe. -// +/** + * Assisted Tramming + * + * Add the G35 command to measure bed corners and help adjust screws. Requires a bed probe. + */ //#define ASSISTED_TRAMMING #if ENABLED(ASSISTED_TRAMMING) @@ -1110,19 +1113,22 @@ //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment /** - * Screw thread: - * M3: 30 = Clockwise, 31 = Counter-Clockwise - * M4: 40 = Clockwise, 41 = Counter-Clockwise - * M5: 50 = Clockwise, 51 = Counter-Clockwise + * Screw Thread. Use one of the following defines: + * + * M3_CW = M3 Clockwise, M3_CCW = M3 Counter-Clockwise + * M4_CW = M3 Clockwise, M4_CCW = M4 Counter-Clockwise + * M5_CW = M3 Clockwise, M5_CCW = M5 Counter-Clockwise + * + * :{'M3_CW':'M3 Clockwise','M3_CCW':'M3 Counter-Clockwise','M4_CW':'M4 Clockwise','M4_CCW':'M4 Counter-Clockwise','M5_CW':'M5 Clockwise','M5_CCW':'M5 Counter-Clockwise'} */ - #define TRAMMING_SCREW_THREAD 40 + #define TRAMMING_SCREW_THREAD M4_CW #endif // @section motion control /** - * Fixed-time-based Motion Control -- EXPERIMENTAL + * Fixed-time-based Motion Control -- BETA FEATURE * Enable/disable and set parameters with G-code M493. * See ft_types.h for named values used by FTM options. */ @@ -1132,8 +1138,8 @@ #define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (DISABLED, Z_BASED, MASS_BASED) #define FTM_DEFAULT_SHAPER_X ftMotionShaper_NONE // Default shaper mode on X axis (NONE, ZV, ZVD, ZVDD, ZVDDD, EI, 2HEI, 3HEI, MZV) #define FTM_DEFAULT_SHAPER_Y ftMotionShaper_NONE // Default shaper mode on Y axis - #define FTM_SHAPING_DEFAULT_X_FREQ 37.0f // (Hz) Default peak frequency used by input shapers - #define FTM_SHAPING_DEFAULT_Y_FREQ 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_X 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_Y 37.0f // (Hz) Default peak frequency used by input shapers #define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false) #define FTM_LINEAR_ADV_DEFAULT_K 0 // Default linear advance gain, integer value. (Acceleration-based scaling factor.) #define FTM_SHAPING_ZETA_X 0.1f // Zeta used by input shapers for X axis @@ -1186,25 +1192,19 @@ #endif /** - * Input Shaping -- EXPERIMENTAL + * Input Shaping * * Zero Vibration (ZV) Input Shaping for X and/or Y movements. * * This option uses a lot of SRAM for the step buffer. The buffer size is - * calculated automatically from SHAPING_FREQ_[XY], DEFAULT_AXIS_STEPS_PER_UNIT, + * calculated automatically from SHAPING_FREQ_[XYZ], DEFAULT_AXIS_STEPS_PER_UNIT, * DEFAULT_MAX_FEEDRATE and ADAPTIVE_STEP_SMOOTHING. The default calculation can * be overridden by setting SHAPING_MIN_FREQ and/or SHAPING_MAX_FEEDRATE. * The higher the frequency and the lower the feedrate, the smaller the buffer. * If the buffer is too small at runtime, input shaping will have reduced * effectiveness during high speed movements. * - * Tune with M593 D F: - * - * D Set the zeta/damping factor. If axes (X, Y, etc.) are not specified, set for all axes. - * F Set the frequency. If axes (X, Y, etc.) are not specified, set for all axes. - * T[map] Input Shaping type, 0:ZV, 1:EI, 2:2H EI (not implemented yet) - * X<1> Set the given parameters only for the X axis. - * Y<1> Set the given parameters only for the Y axis. + * Tune with M593 D F */ //#define INPUT_SHAPING_X //#define INPUT_SHAPING_Y @@ -1347,8 +1347,6 @@ //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved" - #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm - #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min @@ -1485,7 +1483,7 @@ // @section lcd #if HAS_MANUAL_MOVE_MENU - #define MANUAL_FEEDRATE { 60*60, 60*60, 8*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel + #define MANUAL_FEEDRATE { 60*60, 60*60, 10*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines #if IS_ULTIPANEL #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" @@ -1509,8 +1507,17 @@ #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440 #endif +/** + * Probe Offset Wizard + * Add a Probe Z-Offset calibration option to the LCD menu. + * Use this helper to get a perfect 'M851 Z' probe offset. + * When launched this powerful wizard: + * - Measures the bed height at the configured position with the probe. + * - Moves the nozzle to the same position for a "paper" measurement. + * - The difference is used to set the probe Z offset. + */ #if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) - #define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu + #define PROBE_OFFSET_WIZARD #if ENABLED(PROBE_OFFSET_WIZARD) /** * Enable to init the Probe Z-Offset when starting the Wizard. @@ -1527,6 +1534,10 @@ #if HAS_MARLINUI_MENU #if HAS_BED_PROBE + + // Show Deploy / Stow Probe options in the Motion menu. + #define PROBE_DEPLOY_STOW_MENU + // Add calibration in the Probe Offsets menu to compensate for X-axis twist. //#define X_AXIS_TWIST_COMPENSATION #if ENABLED(X_AXIS_TWIST_COMPENSATION) @@ -1541,8 +1552,6 @@ #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points #endif - // Show Deploy / Stow Probe options in the Motion menu. - #define PROBE_DEPLOY_STOW_MENU #endif // Include a page of printer information in the LCD Main Menu @@ -1572,6 +1581,9 @@ // BACK menu items keep the highlight at the top //#define TURBO_BACK_MENU_ITEM + // BACK menu items show "Back" instead of the previous menu name + //#define GENERIC_BACK_MENU_ITEM + // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM @@ -2364,7 +2376,7 @@ /** * Use Safe Bed Leveling coordinates to move axes to a useful position before bed probing. - * For example, after homing a rotational axis the Z probe might not be perpendicular to the bed. + * For example, after homing a rotational axis the Z-Probe might not be perpendicular to the bed. * Choose values the orient the bed horizontally and the Z-probe vertically. */ //#define SAFE_BED_LEVELING_START_X 0.0 @@ -2586,7 +2598,7 @@ /** * Minimum stepper driver pulse width (in ns) - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 100 : Minimum for TMC2xxx stepper drivers * 500 : Minimum for LV8729 * 1000 : Minimum for A4988 and A5984 stepper drivers @@ -2600,7 +2612,7 @@ /** * Maximum stepping rate (in Hz) the stepper driver allows - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 5000000 : Maximum for TMC2xxx stepper drivers * 1000000 : Maximum for LV8729 stepper driver * 500000 : Maximum for A4988 stepper driver @@ -2734,7 +2746,7 @@ /** * Set the number of proportional font spaces required to fill up a typical character space. - * This can help to better align the output of commands like `G29 O` Mesh Output. + * This can help to better align the output of commands like 'G29 O' Mesh Output. * * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0. * Otherwise, adjust according to your client and font. @@ -3002,7 +3014,7 @@ #if AXIS_IS_TMC_CONFIG(X) #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. - #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing + #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for homing. (Typically lower than *_CURRENT.) #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... @@ -3212,6 +3224,13 @@ //#define E7_HOLD_MULTIPLIER 0.5 #endif + /** + * Use the homing current for all probing. (e.g., Current may be reduced to the + * point where a collision makes the motor skip instead of damaging the bed, + * though this is unlikely to save delicate probes from being damaged. + */ + //#define PROBING_USE_CURRENT_HOME + // @section tmc/spi /** @@ -4179,7 +4198,7 @@ * Alternative Supplier: https://reliabuild3d.com/ * * Reliabuild encoders have been modified to improve reliability. - * @section i2c encoders + * @section I2C encoders */ //#define I2C_POSITION_ENCODERS @@ -4411,46 +4430,90 @@ //#define E_MUX0_PIN 40 // Always Required //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs -#elif HAS_PRUSA_MMU2 - // Serial port used for communication with MMU2. +#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 + // Common settings for MMU2/MMU2S/MMU3 + // Serial port used for communication with MMU2/MMU2S/MMU3. #define MMU2_SERIAL_PORT 2 + #define MMU_BAUD 115200 // Use hardware reset for MMU if a pin is defined for it //#define MMU2_RST_PIN 23 - // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) - //#define MMU2_MODE_12V - - // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout - #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" - - // Add an LCD menu for MMU2 - //#define MMU2_MENUS - #if ANY(MMU2_MENUS, HAS_PRUSA_MMU2S) - // Settings for filament load / unload from the LCD menu. - // This is for Průša MK3-style extruders. Customize for your hardware. - #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 - #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ - { 7.2, 1145 }, \ - { 14.4, 871 }, \ - { 36.0, 1393 }, \ - { 14.4, 871 }, \ - { 50.0, 198 } - - #define MMU2_RAMMING_SEQUENCE \ - { 1.0, 1000 }, \ - { 1.0, 1500 }, \ - { 2.0, 2000 }, \ - { 1.5, 3000 }, \ - { 2.5, 4000 }, \ - { -15.0, 5000 }, \ - { -14.0, 1200 }, \ - { -6.0, 600 }, \ - { 10.0, 700 }, \ - { -10.0, 400 }, \ - { -50.0, 2000 } + #if HAS_PRUSA_MMU2 + // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) + //#define MMU2_MODE_12V + + // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout + #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" #endif + // Add an LCD menu for MMU2/MMU2S/MMU3 + //#define MMU_MENUS + + // Settings for filament load / unload from the LCD menu. + // This is for Průša MK3-style extruders. Customize for your hardware. + #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 + + /** + * ------------ + * MMU2 / MMU2S + * ------------ + * MMU2 sequences use mm/min. Not compatible with MMU3 (see below). + * #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + * { 4.4, 871 }, \ + * { 10.0, 1393 }, \ + * { 4.4, 871 }, \ + * { 10.0, 198 } + */ + + /* #define MMU2_RAMMING_SEQUENCE \ + * { 1.0, 1000 }, \ + * { 1.0, 1500 }, \ + * { 2.0, 2000 }, \ + * { 1.5, 3000 }, \ + * { 2.5, 4000 }, \ + * { -15.0, 5000 }, \ + * { -14.0, 1200 }, \ + * { -6.0, 600 }, \ + * { 10.0, 700 }, \ + * { -10.0, 400 }, \ + * { -50.0, 2000 } + */ + + /** + * ---- + * MMU3 + * ---- + * These values are compatible with MMU3 as they are defined in mm/s + */ + + #define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm) + #define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm) + + #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + { MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \ + { MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak + + #define MMU2_RAMMING_SEQUENCE \ + { 0.2816, MMM_TO_MMS(1339.0) }, \ + { 0.3051, MMM_TO_MMS(1451.0) }, \ + { 0.3453, MMM_TO_MMS(1642.0) }, \ + { 0.3990, MMM_TO_MMS(1897.0) }, \ + { 0.4761, MMM_TO_MMS(2264.0) }, \ + { 0.5767, MMM_TO_MMS(2742.0) }, \ + { 0.5691, MMM_TO_MMS(3220.0) }, \ + { 0.1081, MMM_TO_MMS(3220.0) }, \ + { 0.7644, MMM_TO_MMS(3635.0) }, \ + { 0.8248, MMM_TO_MMS(3921.0) }, \ + { 0.8483, MMM_TO_MMS(4033.0) }, \ + { -15.0, MMM_TO_MMS(6000.0) }, \ + { -24.5, MMM_TO_MMS(1200.0) }, \ + { -7.0, MMM_TO_MMS( 600.0) }, \ + { -3.5, MMM_TO_MMS( 360.0) }, \ + { 20.0, MMM_TO_MMS( 454.0) }, \ + { -20.0, MMM_TO_MMS( 303.0) }, \ + { -35.0, MMM_TO_MMS(2000.0) } + /** * Using a sensor like the MMU2S * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S. @@ -4459,11 +4522,26 @@ #if HAS_PRUSA_MMU2S #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries) + /** + * This is called after the filament runout sensor is triggered to check if + * the filament has been loaded properly by moving the filament back and + * forth to see if the filament runout sensor is going to get triggered + * again, which should not occur if the filament is properly loaded. + * + * Thus, the MMU2_CAN_LOAD_SEQUENCE should contain some forward and + * backward moves. The forward moves should be greater than the backward + * moves. + * + * This is useless if your filament runout sensor is way behind the gears. + * In that case use {0, MMU2_CAN_LOAD_FEEDRATE} + * + * Adjust MMU2_CAN_LOAD_SEQUENCE according to your setup. + */ #define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min) #define MMU2_CAN_LOAD_SEQUENCE \ - { 0.1, MMU2_CAN_LOAD_FEEDRATE }, \ - { 60.0, MMU2_CAN_LOAD_FEEDRATE }, \ - { -52.0, MMU2_CAN_LOAD_FEEDRATE } + { 5.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { 15.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { -10.0, MMU2_CAN_LOAD_FEEDRATE } #define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values #define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation @@ -4474,6 +4552,68 @@ // Continue unloading if sensor detects filament after the initial unload move //#define MMU_IR_UNLOAD_MOVE + + #elif HAS_PRUSA_MMU3 + + // MMU3 settings + + #define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries) + + // Nominal distance from the extruder gear to the nozzle tip is 87mm + // However, some slipping may occur and we need separate distances for + // LoadToNozzle and ToolChange. + // - +5mm seemed good for LoadToNozzle, + // - but too much (made blobs) for a ToolChange + #define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0 + + // As discussed with our PrusaSlicer profile specialist + // - ToolChange shall not try to push filament into the very tip of the nozzle + // to have some space for additional G-code to tune the extruded filament length + // in the profile + // 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) + // However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething). + // The printer intercepts such a call and sets its extra load distance to match the new value as well. + #define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm) + #define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm) + #define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm) + + #define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s) + #define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s) + + #define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s) + #define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle + + // The first thing the MMU does is initialize its axis. + // Meanwhile the E-motor will unload 20mm of filament in about 1 second. + #define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm) + #define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s) + + // After loading a new filament, the printer will extrude this length of filament + // then retract to the original position. This is used to check if the filament sensor + // reading flickers or filament is jammed. + #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) + + #define MMU_HAS_CUTTER // Enable cutter related functionalities + //#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item + + /** + * SpoolJoin Consumes All Filament -- EXPERIMENTAL + * + * SpoolJoin normally triggers when FINDA sensor untriggers while printing. + * This is the default behaviour and it doesn't consume all the filament + * before triggering a filament change. This leaves some filament in the + * current slot and before switching to the next slot it is unloaded. + * + * Enabling this option will trigger the filament change when both FINDA + * and Filament Runout Sensor triggers during the print and it allows the + * filament in the current slot to be completely consumed before doing the + * filament change. But this can cause problems as a little bit of filament + * will be left between the extruder gears (thinking that the filament + * sensor is triggered through the gears) and the end of the PTFE tube and + * can cause filament load issues. + */ + //#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT + #else /** @@ -4496,7 +4636,7 @@ //#define MMU2_DEBUG // Write debug info to serial output -#endif // HAS_PRUSA_MMU2 +#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 /** * Advanced Print Counter settings diff --git a/configurations/Voxelab Aquila HC32/Configuration_advMM.h b/configurations/Voxelab Aquila HC32/Configuration_advMM.h index aa7cd745c5..d5844c5ef9 100644 --- a/configurations/Voxelab Aquila HC32/Configuration_advMM.h +++ b/configurations/Voxelab Aquila HC32/Configuration_advMM.h @@ -22,7 +22,7 @@ #pragma once // Edited by classicrocker883 for ProUI -// https://github.com/classicrocker883/MriscocProUI +// https://github.com/classicrocker883/MRiscoCProUI // Created by configs generator for Professional firmware // https://github.com/mriscoc/Ender3V2S1 @@ -53,8 +53,9 @@ * 2 = config.ini - File format for PlatformIO preprocessing. * 3 = schema.json - The entire configuration schema. (13 = pattern groups) * 4 = schema.yml - The entire configuration schema. + * 5 = Config.h - Minimal configuration by popular demand. */ -//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml'] +//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml', 5:'Config.h'] //=========================================================================== //============================= Thermal Settings ============================ @@ -309,9 +310,9 @@ * If you get false positives for "Thermal Runaway", increase * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // (seconds) - #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) +#if ALL(HAS_HOTEND, THERMAL_PROTECTION_HOTENDS) + #define THERMAL_PROTECTION_PERIOD 40 // (seconds) + #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) @@ -340,7 +341,7 @@ /** * Thermal Protection parameters for the bed are just as above for hotends. */ -#if ENABLED(THERMAL_PROTECTION_BED) +#if TEMP_SENSOR_BED && ENABLED(THERMAL_PROTECTION_BED) #define THERMAL_PROTECTION_BED_PERIOD 60 // (seconds) #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) @@ -354,7 +355,7 @@ /** * Thermal Protection parameters for the heated chamber. */ -#if ENABLED(THERMAL_PROTECTION_CHAMBER) +#if TEMP_SENSOR_CHAMBER && ENABLED(THERMAL_PROTECTION_CHAMBER) #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // (seconds) #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // (°C) @@ -368,7 +369,7 @@ /** * Thermal Protection parameters for the laser cooler. */ -#if ENABLED(THERMAL_PROTECTION_COOLER) +#if TEMP_SENSOR_COOLER && ENABLED(THERMAL_PROTECTION_COOLER) #define THERMAL_PROTECTION_COOLER_PERIOD 10 // (seconds) #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // (°C) @@ -465,7 +466,7 @@ #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0 #else - #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-loss due to cooling = Kf * (fan_speed) + #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-Loss due to cooling = Kf * (fan_speed) #define DEFAULT_Kf 10 // A constant value added to the PID-tuner #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING #endif @@ -1087,9 +1088,11 @@ #define HOME_AFTER_G34 #endif -// -// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe. -// +/** + * Assisted Tramming + * + * Add the G35 command to measure bed corners and help adjust screws. Requires a bed probe. + */ //#define ASSISTED_TRAMMING #if ENABLED(ASSISTED_TRAMMING) @@ -1110,19 +1113,22 @@ //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment /** - * Screw thread: - * M3: 30 = Clockwise, 31 = Counter-Clockwise - * M4: 40 = Clockwise, 41 = Counter-Clockwise - * M5: 50 = Clockwise, 51 = Counter-Clockwise + * Screw Thread. Use one of the following defines: + * + * M3_CW = M3 Clockwise, M3_CCW = M3 Counter-Clockwise + * M4_CW = M3 Clockwise, M4_CCW = M4 Counter-Clockwise + * M5_CW = M3 Clockwise, M5_CCW = M5 Counter-Clockwise + * + * :{'M3_CW':'M3 Clockwise','M3_CCW':'M3 Counter-Clockwise','M4_CW':'M4 Clockwise','M4_CCW':'M4 Counter-Clockwise','M5_CW':'M5 Clockwise','M5_CCW':'M5 Counter-Clockwise'} */ - #define TRAMMING_SCREW_THREAD 40 + #define TRAMMING_SCREW_THREAD M4_CW #endif // @section motion control /** - * Fixed-time-based Motion Control -- EXPERIMENTAL + * Fixed-time-based Motion Control -- BETA FEATURE * Enable/disable and set parameters with G-code M493. * See ft_types.h for named values used by FTM options. */ @@ -1132,8 +1138,8 @@ #define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (DISABLED, Z_BASED, MASS_BASED) #define FTM_DEFAULT_SHAPER_X ftMotionShaper_NONE // Default shaper mode on X axis (NONE, ZV, ZVD, ZVDD, ZVDDD, EI, 2HEI, 3HEI, MZV) #define FTM_DEFAULT_SHAPER_Y ftMotionShaper_NONE // Default shaper mode on Y axis - #define FTM_SHAPING_DEFAULT_X_FREQ 37.0f // (Hz) Default peak frequency used by input shapers - #define FTM_SHAPING_DEFAULT_Y_FREQ 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_X 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_Y 37.0f // (Hz) Default peak frequency used by input shapers #define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false) #define FTM_LINEAR_ADV_DEFAULT_K 0 // Default linear advance gain, integer value. (Acceleration-based scaling factor.) #define FTM_SHAPING_ZETA_X 0.1f // Zeta used by input shapers for X axis @@ -1186,25 +1192,19 @@ #endif /** - * Input Shaping -- EXPERIMENTAL + * Input Shaping * * Zero Vibration (ZV) Input Shaping for X and/or Y movements. * * This option uses a lot of SRAM for the step buffer. The buffer size is - * calculated automatically from SHAPING_FREQ_[XY], DEFAULT_AXIS_STEPS_PER_UNIT, + * calculated automatically from SHAPING_FREQ_[XYZ], DEFAULT_AXIS_STEPS_PER_UNIT, * DEFAULT_MAX_FEEDRATE and ADAPTIVE_STEP_SMOOTHING. The default calculation can * be overridden by setting SHAPING_MIN_FREQ and/or SHAPING_MAX_FEEDRATE. * The higher the frequency and the lower the feedrate, the smaller the buffer. * If the buffer is too small at runtime, input shaping will have reduced * effectiveness during high speed movements. * - * Tune with M593 D F: - * - * D Set the zeta/damping factor. If axes (X, Y, etc.) are not specified, set for all axes. - * F Set the frequency. If axes (X, Y, etc.) are not specified, set for all axes. - * T[map] Input Shaping type, 0:ZV, 1:EI, 2:2H EI (not implemented yet) - * X<1> Set the given parameters only for the X axis. - * Y<1> Set the given parameters only for the Y axis. + * Tune with M593 D F */ //#define INPUT_SHAPING_X //#define INPUT_SHAPING_Y @@ -1347,8 +1347,6 @@ //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved" - #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm - #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min @@ -1485,7 +1483,7 @@ // @section lcd #if HAS_MANUAL_MOVE_MENU - #define MANUAL_FEEDRATE { 60*60, 60*60, 8*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel + #define MANUAL_FEEDRATE { 60*60, 60*60, 10*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines #if IS_ULTIPANEL #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" @@ -1509,8 +1507,17 @@ #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440 #endif +/** + * Probe Offset Wizard + * Add a Probe Z-Offset calibration option to the LCD menu. + * Use this helper to get a perfect 'M851 Z' probe offset. + * When launched this powerful wizard: + * - Measures the bed height at the configured position with the probe. + * - Moves the nozzle to the same position for a "paper" measurement. + * - The difference is used to set the probe Z offset. + */ #if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) - #define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu + #define PROBE_OFFSET_WIZARD #if ENABLED(PROBE_OFFSET_WIZARD) /** * Enable to init the Probe Z-Offset when starting the Wizard. @@ -1527,6 +1534,10 @@ #if HAS_MARLINUI_MENU #if HAS_BED_PROBE + + // Show Deploy / Stow Probe options in the Motion menu. + #define PROBE_DEPLOY_STOW_MENU + // Add calibration in the Probe Offsets menu to compensate for X-axis twist. //#define X_AXIS_TWIST_COMPENSATION #if ENABLED(X_AXIS_TWIST_COMPENSATION) @@ -1541,8 +1552,6 @@ #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points #endif - // Show Deploy / Stow Probe options in the Motion menu. - #define PROBE_DEPLOY_STOW_MENU #endif // Include a page of printer information in the LCD Main Menu @@ -1572,6 +1581,9 @@ // BACK menu items keep the highlight at the top //#define TURBO_BACK_MENU_ITEM + // BACK menu items show "Back" instead of the previous menu name + //#define GENERIC_BACK_MENU_ITEM + // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM @@ -1852,7 +1864,7 @@ //#define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file - //#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S' (416 bytes of flash) + #define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S' (416 bytes of flash) /** * Support for USB thumb drives using an Arduino USB Host Shield or @@ -2364,7 +2376,7 @@ /** * Use Safe Bed Leveling coordinates to move axes to a useful position before bed probing. - * For example, after homing a rotational axis the Z probe might not be perpendicular to the bed. + * For example, after homing a rotational axis the Z-Probe might not be perpendicular to the bed. * Choose values the orient the bed horizontally and the Z-probe vertically. */ //#define SAFE_BED_LEVELING_START_X 0.0 @@ -2586,7 +2598,7 @@ /** * Minimum stepper driver pulse width (in ns) - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 100 : Minimum for TMC2xxx stepper drivers * 500 : Minimum for LV8729 * 1000 : Minimum for A4988 and A5984 stepper drivers @@ -2600,7 +2612,7 @@ /** * Maximum stepping rate (in Hz) the stepper driver allows - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 5000000 : Maximum for TMC2xxx stepper drivers * 1000000 : Maximum for LV8729 stepper driver * 500000 : Maximum for A4988 stepper driver @@ -2734,7 +2746,7 @@ /** * Set the number of proportional font spaces required to fill up a typical character space. - * This can help to better align the output of commands like `G29 O` Mesh Output. + * This can help to better align the output of commands like 'G29 O' Mesh Output. * * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0. * Otherwise, adjust according to your client and font. @@ -3002,7 +3014,7 @@ #if AXIS_IS_TMC_CONFIG(X) #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. - #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing + #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for homing. (Typically lower than *_CURRENT.) #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... @@ -3212,6 +3224,13 @@ //#define E7_HOLD_MULTIPLIER 0.5 #endif + /** + * Use the homing current for all probing. (e.g., Current may be reduced to the + * point where a collision makes the motor skip instead of damaging the bed, + * though this is unlikely to save delicate probes from being damaged. + */ + //#define PROBING_USE_CURRENT_HOME + // @section tmc/spi /** @@ -4179,7 +4198,7 @@ * Alternative Supplier: https://reliabuild3d.com/ * * Reliabuild encoders have been modified to improve reliability. - * @section i2c encoders + * @section I2C encoders */ //#define I2C_POSITION_ENCODERS @@ -4411,46 +4430,90 @@ //#define E_MUX0_PIN 40 // Always Required //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs -#elif HAS_PRUSA_MMU2 - // Serial port used for communication with MMU2. +#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 + // Common settings for MMU2/MMU2S/MMU3 + // Serial port used for communication with MMU2/MMU2S/MMU3. #define MMU2_SERIAL_PORT 2 + #define MMU_BAUD 115200 // Use hardware reset for MMU if a pin is defined for it //#define MMU2_RST_PIN 23 - // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) - //#define MMU2_MODE_12V - - // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout - #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" - - // Add an LCD menu for MMU2 - //#define MMU2_MENUS - #if ANY(MMU2_MENUS, HAS_PRUSA_MMU2S) - // Settings for filament load / unload from the LCD menu. - // This is for Průša MK3-style extruders. Customize for your hardware. - #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 - #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ - { 7.2, 1145 }, \ - { 14.4, 871 }, \ - { 36.0, 1393 }, \ - { 14.4, 871 }, \ - { 50.0, 198 } - - #define MMU2_RAMMING_SEQUENCE \ - { 1.0, 1000 }, \ - { 1.0, 1500 }, \ - { 2.0, 2000 }, \ - { 1.5, 3000 }, \ - { 2.5, 4000 }, \ - { -15.0, 5000 }, \ - { -14.0, 1200 }, \ - { -6.0, 600 }, \ - { 10.0, 700 }, \ - { -10.0, 400 }, \ - { -50.0, 2000 } + #if HAS_PRUSA_MMU2 + // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) + //#define MMU2_MODE_12V + + // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout + #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" #endif + // Add an LCD menu for MMU2/MMU2S/MMU3 + //#define MMU_MENUS + + // Settings for filament load / unload from the LCD menu. + // This is for Průša MK3-style extruders. Customize for your hardware. + #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 + + /** + * ------------ + * MMU2 / MMU2S + * ------------ + * MMU2 sequences use mm/min. Not compatible with MMU3 (see below). + * #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + * { 4.4, 871 }, \ + * { 10.0, 1393 }, \ + * { 4.4, 871 }, \ + * { 10.0, 198 } + */ + + /* #define MMU2_RAMMING_SEQUENCE \ + * { 1.0, 1000 }, \ + * { 1.0, 1500 }, \ + * { 2.0, 2000 }, \ + * { 1.5, 3000 }, \ + * { 2.5, 4000 }, \ + * { -15.0, 5000 }, \ + * { -14.0, 1200 }, \ + * { -6.0, 600 }, \ + * { 10.0, 700 }, \ + * { -10.0, 400 }, \ + * { -50.0, 2000 } + */ + + /** + * ---- + * MMU3 + * ---- + * These values are compatible with MMU3 as they are defined in mm/s + */ + + #define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm) + #define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm) + + #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + { MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \ + { MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak + + #define MMU2_RAMMING_SEQUENCE \ + { 0.2816, MMM_TO_MMS(1339.0) }, \ + { 0.3051, MMM_TO_MMS(1451.0) }, \ + { 0.3453, MMM_TO_MMS(1642.0) }, \ + { 0.3990, MMM_TO_MMS(1897.0) }, \ + { 0.4761, MMM_TO_MMS(2264.0) }, \ + { 0.5767, MMM_TO_MMS(2742.0) }, \ + { 0.5691, MMM_TO_MMS(3220.0) }, \ + { 0.1081, MMM_TO_MMS(3220.0) }, \ + { 0.7644, MMM_TO_MMS(3635.0) }, \ + { 0.8248, MMM_TO_MMS(3921.0) }, \ + { 0.8483, MMM_TO_MMS(4033.0) }, \ + { -15.0, MMM_TO_MMS(6000.0) }, \ + { -24.5, MMM_TO_MMS(1200.0) }, \ + { -7.0, MMM_TO_MMS( 600.0) }, \ + { -3.5, MMM_TO_MMS( 360.0) }, \ + { 20.0, MMM_TO_MMS( 454.0) }, \ + { -20.0, MMM_TO_MMS( 303.0) }, \ + { -35.0, MMM_TO_MMS(2000.0) } + /** * Using a sensor like the MMU2S * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S. @@ -4459,11 +4522,26 @@ #if HAS_PRUSA_MMU2S #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries) + /** + * This is called after the filament runout sensor is triggered to check if + * the filament has been loaded properly by moving the filament back and + * forth to see if the filament runout sensor is going to get triggered + * again, which should not occur if the filament is properly loaded. + * + * Thus, the MMU2_CAN_LOAD_SEQUENCE should contain some forward and + * backward moves. The forward moves should be greater than the backward + * moves. + * + * This is useless if your filament runout sensor is way behind the gears. + * In that case use {0, MMU2_CAN_LOAD_FEEDRATE} + * + * Adjust MMU2_CAN_LOAD_SEQUENCE according to your setup. + */ #define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min) #define MMU2_CAN_LOAD_SEQUENCE \ - { 0.1, MMU2_CAN_LOAD_FEEDRATE }, \ - { 60.0, MMU2_CAN_LOAD_FEEDRATE }, \ - { -52.0, MMU2_CAN_LOAD_FEEDRATE } + { 5.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { 15.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { -10.0, MMU2_CAN_LOAD_FEEDRATE } #define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values #define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation @@ -4474,6 +4552,68 @@ // Continue unloading if sensor detects filament after the initial unload move //#define MMU_IR_UNLOAD_MOVE + + #elif HAS_PRUSA_MMU3 + + // MMU3 settings + + #define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries) + + // Nominal distance from the extruder gear to the nozzle tip is 87mm + // However, some slipping may occur and we need separate distances for + // LoadToNozzle and ToolChange. + // - +5mm seemed good for LoadToNozzle, + // - but too much (made blobs) for a ToolChange + #define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0 + + // As discussed with our PrusaSlicer profile specialist + // - ToolChange shall not try to push filament into the very tip of the nozzle + // to have some space for additional G-code to tune the extruded filament length + // in the profile + // 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) + // However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething). + // The printer intercepts such a call and sets its extra load distance to match the new value as well. + #define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm) + #define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm) + #define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm) + + #define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s) + #define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s) + + #define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s) + #define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle + + // The first thing the MMU does is initialize its axis. + // Meanwhile the E-motor will unload 20mm of filament in about 1 second. + #define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm) + #define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s) + + // After loading a new filament, the printer will extrude this length of filament + // then retract to the original position. This is used to check if the filament sensor + // reading flickers or filament is jammed. + #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) + + #define MMU_HAS_CUTTER // Enable cutter related functionalities + //#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item + + /** + * SpoolJoin Consumes All Filament -- EXPERIMENTAL + * + * SpoolJoin normally triggers when FINDA sensor untriggers while printing. + * This is the default behaviour and it doesn't consume all the filament + * before triggering a filament change. This leaves some filament in the + * current slot and before switching to the next slot it is unloaded. + * + * Enabling this option will trigger the filament change when both FINDA + * and Filament Runout Sensor triggers during the print and it allows the + * filament in the current slot to be completely consumed before doing the + * filament change. But this can cause problems as a little bit of filament + * will be left between the extruder gears (thinking that the filament + * sensor is triggered through the gears) and the end of the PTFE tube and + * can cause filament load issues. + */ + //#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT + #else /** @@ -4496,7 +4636,7 @@ //#define MMU2_DEBUG // Write debug info to serial output -#endif // HAS_PRUSA_MMU2 +#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 /** * Advanced Print Counter settings diff --git a/configurations/Voxelab Aquila HC32/Configuration_advUBL.h b/configurations/Voxelab Aquila HC32/Configuration_advUBL.h index 2c3f04ecd3..fdf6faa3c0 100644 --- a/configurations/Voxelab Aquila HC32/Configuration_advUBL.h +++ b/configurations/Voxelab Aquila HC32/Configuration_advUBL.h @@ -22,7 +22,7 @@ #pragma once // Edited by classicrocker883 for ProUI -// https://github.com/classicrocker883/MriscocProUI +// https://github.com/classicrocker883/MRiscoCProUI // Created by configs generator for Professional firmware // https://github.com/mriscoc/Ender3V2S1 @@ -53,8 +53,9 @@ * 2 = config.ini - File format for PlatformIO preprocessing. * 3 = schema.json - The entire configuration schema. (13 = pattern groups) * 4 = schema.yml - The entire configuration schema. + * 5 = Config.h - Minimal configuration by popular demand. */ -//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml'] +//#define CONFIG_EXPORT 2 // :[1:'JSON', 2:'config.ini', 3:'schema.json', 4:'schema.yml', 5:'Config.h'] //=========================================================================== //============================= Thermal Settings ============================ @@ -309,9 +310,9 @@ * If you get false positives for "Thermal Runaway", increase * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // (seconds) - #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) +#if ALL(HAS_HOTEND, THERMAL_PROTECTION_HOTENDS) + #define THERMAL_PROTECTION_PERIOD 40 // (seconds) + #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) @@ -340,7 +341,7 @@ /** * Thermal Protection parameters for the bed are just as above for hotends. */ -#if ENABLED(THERMAL_PROTECTION_BED) +#if TEMP_SENSOR_BED && ENABLED(THERMAL_PROTECTION_BED) #define THERMAL_PROTECTION_BED_PERIOD 60 // (seconds) #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) @@ -354,7 +355,7 @@ /** * Thermal Protection parameters for the heated chamber. */ -#if ENABLED(THERMAL_PROTECTION_CHAMBER) +#if TEMP_SENSOR_CHAMBER && ENABLED(THERMAL_PROTECTION_CHAMBER) #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // (seconds) #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // (°C) @@ -368,7 +369,7 @@ /** * Thermal Protection parameters for the laser cooler. */ -#if ENABLED(THERMAL_PROTECTION_COOLER) +#if TEMP_SENSOR_COOLER && ENABLED(THERMAL_PROTECTION_COOLER) #define THERMAL_PROTECTION_COOLER_PERIOD 10 // (seconds) #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // (°C) @@ -465,7 +466,7 @@ #define PID_FAN_SCALING_LIN_FACTOR (PID_FAN_SCALING_AT_FULL_SPEED-DEFAULT_Kf)/255.0 #else - #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-loss due to cooling = Kf * (fan_speed) + #define PID_FAN_SCALING_LIN_FACTOR (0) // Power-Loss due to cooling = Kf * (fan_speed) #define DEFAULT_Kf 10 // A constant value added to the PID-tuner #define PID_FAN_SCALING_MIN_SPEED 10 // Minimum fan speed at which to enable PID_FAN_SCALING #endif @@ -1087,9 +1088,11 @@ #define HOME_AFTER_G34 #endif -// -// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe. -// +/** + * Assisted Tramming + * + * Add the G35 command to measure bed corners and help adjust screws. Requires a bed probe. + */ //#define ASSISTED_TRAMMING #if ENABLED(ASSISTED_TRAMMING) @@ -1110,19 +1113,22 @@ //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment /** - * Screw thread: - * M3: 30 = Clockwise, 31 = Counter-Clockwise - * M4: 40 = Clockwise, 41 = Counter-Clockwise - * M5: 50 = Clockwise, 51 = Counter-Clockwise + * Screw Thread. Use one of the following defines: + * + * M3_CW = M3 Clockwise, M3_CCW = M3 Counter-Clockwise + * M4_CW = M3 Clockwise, M4_CCW = M4 Counter-Clockwise + * M5_CW = M3 Clockwise, M5_CCW = M5 Counter-Clockwise + * + * :{'M3_CW':'M3 Clockwise','M3_CCW':'M3 Counter-Clockwise','M4_CW':'M4 Clockwise','M4_CCW':'M4 Counter-Clockwise','M5_CW':'M5 Clockwise','M5_CCW':'M5 Counter-Clockwise'} */ - #define TRAMMING_SCREW_THREAD 40 + #define TRAMMING_SCREW_THREAD M4_CW #endif // @section motion control /** - * Fixed-time-based Motion Control -- EXPERIMENTAL + * Fixed-time-based Motion Control -- BETA FEATURE * Enable/disable and set parameters with G-code M493. * See ft_types.h for named values used by FTM options. */ @@ -1132,8 +1138,8 @@ #define FTM_DEFAULT_DYNFREQ_MODE dynFreqMode_DISABLED // Default mode of dynamic frequency calculation. (DISABLED, Z_BASED, MASS_BASED) #define FTM_DEFAULT_SHAPER_X ftMotionShaper_NONE // Default shaper mode on X axis (NONE, ZV, ZVD, ZVDD, ZVDDD, EI, 2HEI, 3HEI, MZV) #define FTM_DEFAULT_SHAPER_Y ftMotionShaper_NONE // Default shaper mode on Y axis - #define FTM_SHAPING_DEFAULT_X_FREQ 37.0f // (Hz) Default peak frequency used by input shapers - #define FTM_SHAPING_DEFAULT_Y_FREQ 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_X 37.0f // (Hz) Default peak frequency used by input shapers + #define FTM_SHAPING_DEFAULT_FREQ_Y 37.0f // (Hz) Default peak frequency used by input shapers #define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false) #define FTM_LINEAR_ADV_DEFAULT_K 0 // Default linear advance gain, integer value. (Acceleration-based scaling factor.) #define FTM_SHAPING_ZETA_X 0.1f // Zeta used by input shapers for X axis @@ -1186,25 +1192,19 @@ #endif /** - * Input Shaping -- EXPERIMENTAL + * Input Shaping * * Zero Vibration (ZV) Input Shaping for X and/or Y movements. * * This option uses a lot of SRAM for the step buffer. The buffer size is - * calculated automatically from SHAPING_FREQ_[XY], DEFAULT_AXIS_STEPS_PER_UNIT, + * calculated automatically from SHAPING_FREQ_[XYZ], DEFAULT_AXIS_STEPS_PER_UNIT, * DEFAULT_MAX_FEEDRATE and ADAPTIVE_STEP_SMOOTHING. The default calculation can * be overridden by setting SHAPING_MIN_FREQ and/or SHAPING_MAX_FEEDRATE. * The higher the frequency and the lower the feedrate, the smaller the buffer. * If the buffer is too small at runtime, input shaping will have reduced * effectiveness during high speed movements. * - * Tune with M593 D F: - * - * D Set the zeta/damping factor. If axes (X, Y, etc.) are not specified, set for all axes. - * F Set the frequency. If axes (X, Y, etc.) are not specified, set for all axes. - * T[map] Input Shaping type, 0:ZV, 1:EI, 2:2H EI (not implemented yet) - * X<1> Set the given parameters only for the X axis. - * Y<1> Set the given parameters only for the Y axis. + * Tune with M593 D F */ //#define INPUT_SHAPING_X //#define INPUT_SHAPING_Y @@ -1347,8 +1347,6 @@ //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved" - #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm - #define CALIBRATION_FEEDRATE_SLOW 60 // mm/min #define CALIBRATION_FEEDRATE_FAST 1200 // mm/min #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/min @@ -1485,7 +1483,7 @@ // @section lcd #if HAS_MANUAL_MOVE_MENU - #define MANUAL_FEEDRATE { 60*60, 60*60, 8*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel + #define MANUAL_FEEDRATE { 60*60, 60*60, 10*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel #define FINE_MANUAL_MOVE 0.025 // (mm) Smallest manual move (< 0.1mm) applying to Z on most machines #if IS_ULTIPANEL #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position" @@ -1509,8 +1507,17 @@ #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440 #endif +/** + * Probe Offset Wizard + * Add a Probe Z-Offset calibration option to the LCD menu. + * Use this helper to get a perfect 'M851 Z' probe offset. + * When launched this powerful wizard: + * - Measures the bed height at the configured position with the probe. + * - Moves the nozzle to the same position for a "paper" measurement. + * - The difference is used to set the probe Z offset. + */ #if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI) - #define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu + #define PROBE_OFFSET_WIZARD #if ENABLED(PROBE_OFFSET_WIZARD) /** * Enable to init the Probe Z-Offset when starting the Wizard. @@ -1527,6 +1534,10 @@ #if HAS_MARLINUI_MENU #if HAS_BED_PROBE + + // Show Deploy / Stow Probe options in the Motion menu. + #define PROBE_DEPLOY_STOW_MENU + // Add calibration in the Probe Offsets menu to compensate for X-axis twist. //#define X_AXIS_TWIST_COMPENSATION #if ENABLED(X_AXIS_TWIST_COMPENSATION) @@ -1541,8 +1552,6 @@ #define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points #endif - // Show Deploy / Stow Probe options in the Motion menu. - #define PROBE_DEPLOY_STOW_MENU #endif // Include a page of printer information in the LCD Main Menu @@ -1572,6 +1581,9 @@ // BACK menu items keep the highlight at the top //#define TURBO_BACK_MENU_ITEM + // BACK menu items show "Back" instead of the previous menu name + //#define GENERIC_BACK_MENU_ITEM + // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM @@ -2364,7 +2376,7 @@ /** * Use Safe Bed Leveling coordinates to move axes to a useful position before bed probing. - * For example, after homing a rotational axis the Z probe might not be perpendicular to the bed. + * For example, after homing a rotational axis the Z-Probe might not be perpendicular to the bed. * Choose values the orient the bed horizontally and the Z-probe vertically. */ //#define SAFE_BED_LEVELING_START_X 0.0 @@ -2586,7 +2598,7 @@ /** * Minimum stepper driver pulse width (in ns) - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 100 : Minimum for TMC2xxx stepper drivers * 500 : Minimum for LV8729 * 1000 : Minimum for A4988 and A5984 stepper drivers @@ -2600,7 +2612,7 @@ /** * Maximum stepping rate (in Hz) the stepper driver allows - * If undefined, these defaults (from Conditionals_adv.h) apply: + * If undefined, these defaults (from Conditionals-4-adv.h) apply: * 5000000 : Maximum for TMC2xxx stepper drivers * 1000000 : Maximum for LV8729 stepper driver * 500000 : Maximum for A4988 stepper driver @@ -2734,7 +2746,7 @@ /** * Set the number of proportional font spaces required to fill up a typical character space. - * This can help to better align the output of commands like `G29 O` Mesh Output. + * This can help to better align the output of commands like 'G29 O' Mesh Output. * * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0. * Otherwise, adjust according to your client and font. @@ -3002,7 +3014,7 @@ #if AXIS_IS_TMC_CONFIG(X) #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. - #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing + #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for homing. (Typically lower than *_CURRENT.) #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... @@ -3212,6 +3224,13 @@ //#define E7_HOLD_MULTIPLIER 0.5 #endif + /** + * Use the homing current for all probing. (e.g., Current may be reduced to the + * point where a collision makes the motor skip instead of damaging the bed, + * though this is unlikely to save delicate probes from being damaged. + */ + //#define PROBING_USE_CURRENT_HOME + // @section tmc/spi /** @@ -4179,7 +4198,7 @@ * Alternative Supplier: https://reliabuild3d.com/ * * Reliabuild encoders have been modified to improve reliability. - * @section i2c encoders + * @section I2C encoders */ //#define I2C_POSITION_ENCODERS @@ -4411,46 +4430,90 @@ //#define E_MUX0_PIN 40 // Always Required //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs -#elif HAS_PRUSA_MMU2 - // Serial port used for communication with MMU2. +#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 + // Common settings for MMU2/MMU2S/MMU3 + // Serial port used for communication with MMU2/MMU2S/MMU3. #define MMU2_SERIAL_PORT 2 + #define MMU_BAUD 115200 // Use hardware reset for MMU if a pin is defined for it //#define MMU2_RST_PIN 23 - // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) - //#define MMU2_MODE_12V - - // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout - #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" - - // Add an LCD menu for MMU2 - //#define MMU2_MENUS - #if ANY(MMU2_MENUS, HAS_PRUSA_MMU2S) - // Settings for filament load / unload from the LCD menu. - // This is for Průša MK3-style extruders. Customize for your hardware. - #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 - #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ - { 7.2, 1145 }, \ - { 14.4, 871 }, \ - { 36.0, 1393 }, \ - { 14.4, 871 }, \ - { 50.0, 198 } - - #define MMU2_RAMMING_SEQUENCE \ - { 1.0, 1000 }, \ - { 1.0, 1500 }, \ - { 2.0, 2000 }, \ - { 1.5, 3000 }, \ - { 2.5, 4000 }, \ - { -15.0, 5000 }, \ - { -14.0, 1200 }, \ - { -6.0, 600 }, \ - { 10.0, 700 }, \ - { -10.0, 400 }, \ - { -50.0, 2000 } + #if HAS_PRUSA_MMU2 + // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up) + //#define MMU2_MODE_12V + + // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout + #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600" #endif + // Add an LCD menu for MMU2/MMU2S/MMU3 + //#define MMU_MENUS + + // Settings for filament load / unload from the LCD menu. + // This is for Průša MK3-style extruders. Customize for your hardware. + #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 + + /** + * ------------ + * MMU2 / MMU2S + * ------------ + * MMU2 sequences use mm/min. Not compatible with MMU3 (see below). + * #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + * { 4.4, 871 }, \ + * { 10.0, 1393 }, \ + * { 4.4, 871 }, \ + * { 10.0, 198 } + */ + + /* #define MMU2_RAMMING_SEQUENCE \ + * { 1.0, 1000 }, \ + * { 1.0, 1500 }, \ + * { 2.0, 2000 }, \ + * { 1.5, 3000 }, \ + * { 2.5, 4000 }, \ + * { -15.0, 5000 }, \ + * { -14.0, 1200 }, \ + * { -6.0, 600 }, \ + * { 10.0, 700 }, \ + * { -10.0, 400 }, \ + * { -50.0, 2000 } + */ + + /** + * ---- + * MMU3 + * ---- + * These values are compatible with MMU3 as they are defined in mm/s + */ + + #define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm) + #define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm) + + #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \ + { MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \ + { MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak + + #define MMU2_RAMMING_SEQUENCE \ + { 0.2816, MMM_TO_MMS(1339.0) }, \ + { 0.3051, MMM_TO_MMS(1451.0) }, \ + { 0.3453, MMM_TO_MMS(1642.0) }, \ + { 0.3990, MMM_TO_MMS(1897.0) }, \ + { 0.4761, MMM_TO_MMS(2264.0) }, \ + { 0.5767, MMM_TO_MMS(2742.0) }, \ + { 0.5691, MMM_TO_MMS(3220.0) }, \ + { 0.1081, MMM_TO_MMS(3220.0) }, \ + { 0.7644, MMM_TO_MMS(3635.0) }, \ + { 0.8248, MMM_TO_MMS(3921.0) }, \ + { 0.8483, MMM_TO_MMS(4033.0) }, \ + { -15.0, MMM_TO_MMS(6000.0) }, \ + { -24.5, MMM_TO_MMS(1200.0) }, \ + { -7.0, MMM_TO_MMS( 600.0) }, \ + { -3.5, MMM_TO_MMS( 360.0) }, \ + { 20.0, MMM_TO_MMS( 454.0) }, \ + { -20.0, MMM_TO_MMS( 303.0) }, \ + { -35.0, MMM_TO_MMS(2000.0) } + /** * Using a sensor like the MMU2S * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S. @@ -4459,11 +4522,26 @@ #if HAS_PRUSA_MMU2S #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries) + /** + * This is called after the filament runout sensor is triggered to check if + * the filament has been loaded properly by moving the filament back and + * forth to see if the filament runout sensor is going to get triggered + * again, which should not occur if the filament is properly loaded. + * + * Thus, the MMU2_CAN_LOAD_SEQUENCE should contain some forward and + * backward moves. The forward moves should be greater than the backward + * moves. + * + * This is useless if your filament runout sensor is way behind the gears. + * In that case use {0, MMU2_CAN_LOAD_FEEDRATE} + * + * Adjust MMU2_CAN_LOAD_SEQUENCE according to your setup. + */ #define MMU2_CAN_LOAD_FEEDRATE 800 // (mm/min) #define MMU2_CAN_LOAD_SEQUENCE \ - { 0.1, MMU2_CAN_LOAD_FEEDRATE }, \ - { 60.0, MMU2_CAN_LOAD_FEEDRATE }, \ - { -52.0, MMU2_CAN_LOAD_FEEDRATE } + { 5.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { 15.0, MMU2_CAN_LOAD_FEEDRATE }, \ + { -10.0, MMU2_CAN_LOAD_FEEDRATE } #define MMU2_CAN_LOAD_RETRACT 6.0 // (mm) Keep under the distance between Load Sequence values #define MMU2_CAN_LOAD_DEVIATION 0.8 // (mm) Acceptable deviation @@ -4474,6 +4552,68 @@ // Continue unloading if sensor detects filament after the initial unload move //#define MMU_IR_UNLOAD_MOVE + + #elif HAS_PRUSA_MMU3 + + // MMU3 settings + + #define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries) + + // Nominal distance from the extruder gear to the nozzle tip is 87mm + // However, some slipping may occur and we need separate distances for + // LoadToNozzle and ToolChange. + // - +5mm seemed good for LoadToNozzle, + // - but too much (made blobs) for a ToolChange + #define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0 + + // As discussed with our PrusaSlicer profile specialist + // - ToolChange shall not try to push filament into the very tip of the nozzle + // to have some space for additional G-code to tune the extruded filament length + // in the profile + // 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) + // However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething). + // The printer intercepts such a call and sets its extra load distance to match the new value as well. + #define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm) + #define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm) + #define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm) + + #define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s) + #define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s) + + #define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s) + #define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle + + // The first thing the MMU does is initialize its axis. + // Meanwhile the E-motor will unload 20mm of filament in about 1 second. + #define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm) + #define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s) + + // After loading a new filament, the printer will extrude this length of filament + // then retract to the original position. This is used to check if the filament sensor + // reading flickers or filament is jammed. + #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) + + #define MMU_HAS_CUTTER // Enable cutter related functionalities + //#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item + + /** + * SpoolJoin Consumes All Filament -- EXPERIMENTAL + * + * SpoolJoin normally triggers when FINDA sensor untriggers while printing. + * This is the default behaviour and it doesn't consume all the filament + * before triggering a filament change. This leaves some filament in the + * current slot and before switching to the next slot it is unloaded. + * + * Enabling this option will trigger the filament change when both FINDA + * and Filament Runout Sensor triggers during the print and it allows the + * filament in the current slot to be completely consumed before doing the + * filament change. But this can cause problems as a little bit of filament + * will be left between the extruder gears (thinking that the filament + * sensor is triggered through the gears) and the end of the PTFE tube and + * can cause filament load issues. + */ + //#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT + #else /** @@ -4496,7 +4636,7 @@ //#define MMU2_DEBUG // Write debug info to serial output -#endif // HAS_PRUSA_MMU2 +#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 /** * Advanced Print Counter settings diff --git a/configurations/Voxelab Aquila HC32/Version.h b/configurations/Voxelab Aquila HC32/Version.h index 28b65b867d..e6578d6e7e 100644 --- a/configurations/Voxelab Aquila HC32/Version.h +++ b/configurations/Voxelab Aquila HC32/Version.h @@ -28,7 +28,7 @@ /** * Marlin release version identifier */ -#define SHORT_BUILD_VERSION "2.1.3f-8" +#define SHORT_BUILD_VERSION "2.1.3f-9" /** * Verbose version identifier which should contain a reference to the location