diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index a973242932..e70942d04b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,2 @@ -github: [thinkyhead] -patreon: thinkyhead -custom: ["https://www.thinkyhead.com/donate-to-marlin"] +github: [thisiskeithb] +ko_fi: thisiskeithb diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml new file mode 100644 index 0000000000..5c1d5a4922 --- /dev/null +++ b/.github/workflows/test-build.yml @@ -0,0 +1,46 @@ +# +# test-build.yml +# Do test build to catch compile errors +# + +name: DIY Prusa Mini CI + +on: + pull_request: + paths-ignore: + - config/** + - data/** + - docs/** + - '**/*.md' + push: + paths-ignore: + - config/** + - data/** + - docs/** + - '**/*.md' + +jobs: + test_builds: + name: Test Build + if: github.repository == 'thisiskeithb/DIY-Prusa-Mini' + + runs-on: ubuntu-latest + + steps: + - name: Check out the PR + uses: actions/checkout@v3 + + - name: Select Python 3.7 + uses: actions/setup-python@v3 + with: + python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax. + architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified + + - name: Install PlatformIO + run: | + pip install -U platformio + pio upgrade --dev + pio pkg update --global + + - name: Build Marlin + run: pio run diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 4fd27c956c..c9604949ae 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -36,6 +36,7 @@ * Advanced settings can be found in Configuration_adv.h */ #define CONFIGURATION_H_VERSION 02010300 +#define DIY_PRUSA_MINI_VERSION 20231220 //=========================================================================== //============================= Getting Started ============================= @@ -61,14 +62,14 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(thisiskeithb, DIY Prusa Mini)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) // @section machine // Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 #endif /** @@ -79,7 +80,7 @@ * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ -#define SERIAL_PORT 0 +#define SERIAL_PORT 2 /** * Serial Port Baud Rate @@ -92,7 +93,7 @@ * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ -#define BAUDRATE 250000 +#define BAUDRATE 115200 //#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate @@ -101,7 +102,7 @@ * Currently Ethernet (-2) is only supported on Teensy 4.1 boards. * :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7] */ -//#define SERIAL_PORT_2 -1 +#define SERIAL_PORT_2 -1 //#define BAUDRATE_2 250000 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE /** @@ -116,7 +117,7 @@ //#define BLUETOOTH // Name displayed in the LCD "Ready" message and Info menu -//#define CUSTOM_MACHINE_NAME "3D Printer" +#define CUSTOM_MACHINE_NAME DIY_PRUSA_MINI_CUSTOM_PRINTER_NAME // Printer's unique ID, used by some programs to differentiate between machines. // Choose your own or use a service like https://www.uuidgenerator.net/version4 @@ -139,9 +140,9 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ -#define X_DRIVER_TYPE A4988 -#define Y_DRIVER_TYPE A4988 -#define Z_DRIVER_TYPE A4988 +#define X_DRIVER_TYPE TMC2209 +#define Y_DRIVER_TYPE TMC2209 +#define Z_DRIVER_TYPE TMC2209 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 @@ -153,7 +154,7 @@ //#define U_DRIVER_TYPE A4988 //#define V_DRIVER_TYPE A4988 //#define W_DRIVER_TYPE A4988 -#define E0_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE TMC2209 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 @@ -544,7 +545,7 @@ * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. */ -#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_0 DIY_PRUSA_MINI_TEMP_SENSOR_0 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 @@ -622,13 +623,13 @@ #define HEATER_5_MINTEMP 5 #define HEATER_6_MINTEMP 5 #define HEATER_7_MINTEMP 5 -#define BED_MINTEMP 5 +#define BED_MINTEMP 10 #define CHAMBER_MINTEMP 5 // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) -#define HEATER_0_MAXTEMP 275 +#define HEATER_0_MAXTEMP 305 // 290 + 15 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 @@ -636,7 +637,7 @@ #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 -#define BED_MAXTEMP 150 +#define BED_MAXTEMP 120 // 110 + 10 #define CHAMBER_MAXTEMP 60 /** @@ -662,7 +663,7 @@ * PIDTEMP : PID temperature control (~4.1K) * MPCTEMP : Predictive Model temperature control. (~1.8K without auto-tune) */ -#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning +//#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning //#define MPCTEMP // ** EXPERIMENTAL ** See https://marlinfw.org/docs/features/model_predictive_control.html #define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current @@ -680,9 +681,11 @@ #define DEFAULT_Ki_LIST { 1.08, 1.08 } #define DEFAULT_Kd_LIST { 114.00, 114.00 } #else - #define DEFAULT_Kp 22.20 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114.00 + // Prusa Mini + #define DEFAULT_Kp DIY_PRUSA_MINI_DEFAULT_Kp + #define DEFAULT_Ki DIY_PRUSA_MINI_DEFAULT_Ki + #define DEFAULT_Kd DIY_PRUSA_MINI_DEFAULT_Kd + #endif #else #define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current @@ -702,16 +705,16 @@ //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) #define MPC_MAX 255 // (0..255) Current to nozzle while MPC is active. - #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers. + #define MPC_HEATER_POWER DIY_PRUSA_MINI_CUSTOM_MPC_HEATER_POWER // (W) Heat cartridge powers. #define MPC_INCLUDE_FAN // Model the fan speed? // Measured physical constants from M306 - #define MPC_BLOCK_HEAT_CAPACITY { 16.7f } // (J/K) Heat block heat capacities. - #define MPC_SENSOR_RESPONSIVENESS { 0.22f } // (K/s per ∆K) Rate of change of sensor temperature from heat block. - #define MPC_AMBIENT_XFER_COEFF { 0.068f } // (W/K) Heat transfer coefficients from heat block to room air with fan off. + #define MPC_BLOCK_HEAT_CAPACITY DIY_PRUSA_MINI_CUSTOM_MPC_BLOCK_HEAT_CAPACITY // (J/K) Heat block heat capacities. + #define MPC_SENSOR_RESPONSIVENESS DIY_PRUSA_MINI_CUSTOM_MPC_SENSOR_RESPONSIVENESS // (K/s per ∆K) Rate of change of sensor temperature from heat block. + #define MPC_AMBIENT_XFER_COEFF DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF // (W/K) Heat transfer coefficients from heat block to room air with fan off. #if ENABLED(MPC_INCLUDE_FAN) - #define MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full. + #define MPC_AMBIENT_XFER_COEFF_FAN255 DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 // (W/K) Heat transfer coefficients from heat block to room air with fan on full. #endif // For one fan and multiple hotends MPC needs to know how to apply the fan cooling effect. @@ -722,10 +725,10 @@ // Filament Heat Capacity (joules/kelvin/mm) // Set at runtime with M306 H - #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). - // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). - // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). - // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). + #define FILAMENT_HEAT_CAPACITY_PERMM DIY_PRUSA_MINI_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). + // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). + // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). + // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). // Advanced options #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization. @@ -762,17 +765,16 @@ * * With this option disabled, bang-bang will be used. BED_LIMIT_SWITCHING enables hysteresis. */ -//#define PIDTEMPBED +#define PIDTEMPBED #if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Print Bed PID debug data to the serial port. - // 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - // from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 + // Prusa Mini + #define DEFAULT_bedKp DIY_PRUSA_MINI_DEFAULT_bedKp + #define DEFAULT_bedKi DIY_PRUSA_MINI_DEFAULT_bedKi + #define DEFAULT_bedKd DIY_PRUSA_MINI_DEFAULT_bedKd // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #else @@ -830,11 +832,11 @@ #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 - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + #define PID_FUNCTIONAL_RANGE 500 // If the temperature difference between the target temperature and the actual temperature // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - //#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) - //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) + #define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) + #define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) #endif // @section safety @@ -854,7 +856,7 @@ * Note: For Bowden Extruders make this large enough to allow load/unload. */ #define PREVENT_LENGTHY_EXTRUDE -#define EXTRUDE_MAXLENGTH 200 +#define EXTRUDE_MAXLENGTH 1000 //=========================================================================== //======================== Thermal Runaway Protection ======================= @@ -1190,7 +1192,7 @@ // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. -//#define ENDSTOP_INTERRUPTS_FEATURE +#define ENDSTOP_INTERRUPTS_FEATURE /** * Endstop Noise Threshold @@ -1234,7 +1236,7 @@ * Override with M92 (when enabled below) * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 } +#define DEFAULT_AXIS_STEPS_PER_UNIT DIY_PRUSA_MINI_DEFAULT_AXIS_STEPS_PER_UNIT /** * Enable support for M92. Disable to save at least ~530 bytes of flash. @@ -1246,7 +1248,7 @@ * Override with M203 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } +#define DEFAULT_MAX_FEEDRATE { 180, 180, 12, 80 } //#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(LIMITED_MAX_FR_EDITING) @@ -1259,7 +1261,7 @@ * Override with M201 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } +#define DEFAULT_MAX_ACCELERATION { 1250, 1250, 400, 4000 } //#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2 #if ENABLED(LIMITED_MAX_ACCEL_EDITING) @@ -1274,9 +1276,9 @@ * M204 R Retract Acceleration * M204 T Travel Acceleration */ -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves +#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E acceleration for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1250 // E acceleration for retracts +#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z acceleration for travel (non printing) moves /** * Default Jerk limits (mm/s) @@ -1286,12 +1288,12 @@ * When changing speed and direction, if the difference is less than the * value set here, it may happen instantaneously. */ -//#define CLASSIC_JERK +#define CLASSIC_JERK #if ENABLED(CLASSIC_JERK) - #define DEFAULT_XJERK 10.0 - #define DEFAULT_YJERK 10.0 - #define DEFAULT_ZJERK 0.3 - #define DEFAULT_EJERK 5.0 + #define DEFAULT_XJERK 8.0 + #define DEFAULT_YJERK 8.0 + #define DEFAULT_ZJERK 2.0 + #define DEFAULT_EJERK 10.0 //#define DEFAULT_IJERK 0.3 //#define DEFAULT_JJERK 0.3 //#define DEFAULT_KJERK 0.3 @@ -1315,7 +1317,7 @@ * https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html */ #if DISABLED(CLASSIC_JERK) - #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge + #define JUNCTION_DEVIATION_MM 0.08 // (mm) Distance from real junction edge #define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle // for small segments (< 1mm) with large junction angles (> 135°). #endif @@ -1344,10 +1346,10 @@ * The probe replaces the Z-MIN endstop and is used for Z homing. * (Automatically enables USE_PROBE_FOR_Z_HOMING.) */ -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // Force the use of the probe for Z-axis homing -//#define USE_PROBE_FOR_Z_HOMING +#define USE_PROBE_FOR_Z_HOMING /** * Z_MIN_PROBE_PIN @@ -1382,7 +1384,7 @@ * A Fix-Mounted Probe either doesn't deploy or needs manual deployment. * (e.g., an inductive probe or a nozzle-based probe-switch.) */ -//#define FIX_MOUNTED_PROBE +#define FIX_MOUNTED_PROBE /** * Use the nozzle as the probe, as with a conductive @@ -1579,7 +1581,7 @@ * | [-] | * O-- FRONT --+ */ -#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +#define NOZZLE_TO_PROBE_OFFSET DIY_PRUSA_MINI_NOZZLE_TO_PROBE_OFFSET // Enable and set to use a specific tool for probing. Disable to allow any tool. #define PROBING_TOOL 0 @@ -1589,16 +1591,16 @@ // Most probes should stay away from the edges of the bed, but // with NOZZLE_AS_PROBE this can be negative for a wider probing area. -#define PROBING_MARGIN 10 +#define PROBING_MARGIN 10 // 5 // X and Y axis travel speed (mm/min) between probes -#define XY_PROBE_FEEDRATE (133*60) +#define XY_PROBE_FEEDRATE (83*60) // Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2) #define Z_PROBE_FEEDRATE_FAST (4*60) // Feedrate (mm/min) for the "accurate" probe of each point -#define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2) +#define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 3) /** * Probe Activation Switch @@ -1645,7 +1647,7 @@ * A total of 2 does fast/slow probes with a weighted average. * A total of 3 or more adds more slow probes, taking the average. */ -//#define MULTIPLE_PROBING 2 +#define MULTIPLE_PROBING 2 //#define EXTRA_PROBING 1 /** @@ -1662,11 +1664,11 @@ * 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 -#define Z_CLEARANCE_MULTI_PROBE 5 // (mm) Z Clearance between multiple probes -#define Z_PROBE_ERROR_TOLERANCE 3 // (mm) Tolerance for early trigger (<= -probe.offset.z + ZPET) -//#define Z_AFTER_PROBING 5 // (mm) Z position after probing is done +#define Z_CLEARANCE_DEPLOY_PROBE 0 // (mm) Z Clearance for Deploy/Stow +#define Z_CLEARANCE_BETWEEN_PROBES 1 // (mm) Z Clearance between probe points +#define Z_CLEARANCE_MULTI_PROBE 0.5 // (mm) Z Clearance between multiple probes +//#define Z_PROBE_ERROR_TOLERANCE 3 // (mm) Tolerance for early trigger (<= -probe.offset.z + ZPET) +#define Z_AFTER_PROBING 2 // (mm) Z position after probing is done #define Z_PROBE_LOW_POINT -2 // (mm) Farthest distance below the trigger-point to go before stopping @@ -1675,11 +1677,11 @@ //#define PROBE_OFFSET_XMAX 50 // (mm) //#define PROBE_OFFSET_YMIN -50 // (mm) //#define PROBE_OFFSET_YMAX 50 // (mm) -//#define PROBE_OFFSET_ZMIN -20 // (mm) -//#define PROBE_OFFSET_ZMAX 20 // (mm) +#define PROBE_OFFSET_ZMIN -5 // (mm) +#define PROBE_OFFSET_ZMAX 1 // (mm) // Enable the M48 repeatability test to test probe accuracy -//#define Z_MIN_PROBE_REPEATABILITY_TEST +#define Z_MIN_PROBE_REPEATABILITY_TEST // Before deploy/stow pause for user confirmation //#define PAUSE_BEFORE_DEPLOY_STOW @@ -1694,7 +1696,7 @@ * These options are most useful for the BLTouch probe, but may also improve * readings with inductive probes and piezo sensors. */ -//#define PROBING_HEATERS_OFF // Turn heaters off when probing +#define PROBING_HEATERS_OFF // Turn heaters off when probing #if ENABLED(PROBING_HEATERS_OFF) //#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy) //#define WAIT_FOR_HOTEND // Wait for hotend to heat back up between probes (to improve accuracy & prevent cold extrude) @@ -1747,9 +1749,9 @@ // @section motion // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false +#define INVERT_X_DIR DIY_PRUSA_MINI_INVERT_X_DIR +#define INVERT_Y_DIR DIY_PRUSA_MINI_INVERT_Y_DIR +#define INVERT_Z_DIR DIY_PRUSA_MINI_INVERT_Z_DIR //#define INVERT_I_DIR false //#define INVERT_J_DIR false //#define INVERT_K_DIR false @@ -1760,7 +1762,7 @@ // @section extruder // For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false +#define INVERT_E0_DIR DIY_PRUSA_MINI_INVERT_E0_DIR #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false @@ -1781,7 +1783,7 @@ */ //#define Z_IDLE_HEIGHT Z_HOME_POS -//#define Z_CLEARANCE_FOR_HOMING 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... +#define Z_CLEARANCE_FOR_HOMING 4 // (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) @@ -1791,7 +1793,7 @@ // Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] -#define X_HOME_DIR -1 +#define X_HOME_DIR 1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 //#define I_HOME_DIR -1 @@ -1819,16 +1821,16 @@ // @section geometry // The size of the printable area -#define X_BED_SIZE 200 -#define Y_BED_SIZE 200 +#define X_BED_SIZE 180 +#define Y_BED_SIZE 180 // Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions. -#define X_MIN_POS 0 -#define Y_MIN_POS 0 +#define X_MIN_POS -2 +#define Y_MIN_POS -3 #define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE -#define Z_MAX_POS 200 +#define Z_MAX_POS 185 //#define I_MIN_POS 0 //#define I_MAX_POS 50 //#define J_MIN_POS 0 @@ -1880,7 +1882,7 @@ #endif #if ANY(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) - //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD + #define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD #endif /** @@ -1896,9 +1898,9 @@ * RAMPS-based boards use SERVO3_PIN for the first runout sensor. * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. */ -//#define FILAMENT_RUNOUT_SENSOR +#define FILAMENT_RUNOUT_SENSOR #if ENABLED(FILAMENT_RUNOUT_SENSOR) - #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500. + #define FIL_RUNOUT_ENABLED_DEFAULT false // Enable the sensor on startup. Override with M412 followed by M500. #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present. @@ -2055,7 +2057,7 @@ * leveling immediately after G28. */ //#define RESTORE_LEVELING_AFTER_G28 -//#define ENABLE_LEVELING_AFTER_G28 +#define ENABLE_LEVELING_AFTER_G28 /** * Auto-leveling needs preheating @@ -2084,7 +2086,7 @@ * at which point movement will be level to the machine's XY plane. * The height can be set with M420 Z */ - #define ENABLE_LEVELING_FADE_HEIGHT + //#define ENABLE_LEVELING_FADE_HEIGHT #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) #define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height. #endif @@ -2116,7 +2118,7 @@ #if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. - #define GRID_MAX_POINTS_X 3 + #define GRID_MAX_POINTS_X 4 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Probe along the Y axis, advancing X after each column @@ -2126,7 +2128,7 @@ // Beyond the probed grid, continue the implied tilt? // Default is to maintain the height of the nearest edge. - //#define EXTRAPOLATE_BEYOND_GRID + #define EXTRAPOLATE_BEYOND_GRID // // Subdivision of the grid by Catmull-Rom method. @@ -2202,7 +2204,7 @@ * Add a bed leveling sub-menu for ABL or MBL. * Include a guided procedure if manual probing is enabled. */ -//#define LCD_BED_LEVELING +#define LCD_BED_LEVELING #if ENABLED(LCD_BED_LEVELING) #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis. @@ -2269,16 +2271,16 @@ * - Allows Z homing only when XY positions are known and trusted. * - If stepper drivers sleep, XY homing may be required again before Z homing. */ -//#define Z_SAFE_HOMING +#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT X_CENTER // (mm) X point for Z homing - #define Z_SAFE_HOMING_Y_POINT Y_CENTER // (mm) Y point for Z homing + #define Z_SAFE_HOMING_X_POINT 147.4 // (mm) X point for Z homing + #define Z_SAFE_HOMING_Y_POINT 21.1 // (mm) Y point for Z homing //#define Z_SAFE_HOMING_POINT_ABSOLUTE // Ignore home offsets (M206) for Z homing position #endif // Homing speeds (linear=mm/min, rotational=°/min) -#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } +#define HOMING_FEEDRATE_MM_M DIY_PRUSA_MINI_HOMING_FEEDRATE_MM_M // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS @@ -2356,13 +2358,13 @@ * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes) * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.) */ -//#define EEPROM_SETTINGS // Persistent storage with M500 and M501 +#define EEPROM_SETTINGS // Persistent storage with M500 and M501 //#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release! #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash. #define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load #if ENABLED(EEPROM_SETTINGS) - //#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. - //#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build. + #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. + #define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build. #endif // @section host @@ -2395,17 +2397,59 @@ // Preheat Constants - Up to 10 are supported without changes // #define PREHEAT_1_LABEL "PLA" -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_TEMP_CHAMBER 35 +#define PREHEAT_1_TEMP_HOTEND 215 +#define PREHEAT_1_TEMP_BED 60 +#define PREHEAT_1_TEMP_CHAMBER 0 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_TEMP_CHAMBER 35 +#define PREHEAT_2_LABEL "PETG" +#define PREHEAT_2_TEMP_HOTEND 230 +#define PREHEAT_2_TEMP_BED 85 +#define PREHEAT_2_TEMP_CHAMBER 0 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_3_LABEL "ASA" +#define PREHEAT_3_TEMP_HOTEND 260 +#define PREHEAT_3_TEMP_BED 100 +#define PREHEAT_3_TEMP_CHAMBER 0 +#define PREHEAT_3_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_4_LABEL "PC" +#define PREHEAT_4_TEMP_HOTEND 275 +#define PREHEAT_4_TEMP_BED 100 +#define PREHEAT_4_TEMP_CHAMBER 0 +#define PREHEAT_4_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_5_LABEL "PVB" +#define PREHEAT_5_TEMP_HOTEND 215 +#define PREHEAT_5_TEMP_BED 75 +#define PREHEAT_5_TEMP_CHAMBER 0 +#define PREHEAT_5_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_6_LABEL "ABS" +#define PREHEAT_6_TEMP_HOTEND 255 +#define PREHEAT_6_TEMP_BED 100 +#define PREHEAT_6_TEMP_CHAMBER 0 +#define PREHEAT_6_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_7_LABEL "HIPS" +#define PREHEAT_7_TEMP_HOTEND 220 +#define PREHEAT_7_TEMP_BED 100 +#define PREHEAT_7_TEMP_CHAMBER 0 +#define PREHEAT_7_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_8_LABEL "PP" +#define PREHEAT_8_TEMP_HOTEND 240 +#define PREHEAT_8_TEMP_BED 100 +#define PREHEAT_8_TEMP_CHAMBER 0 +#define PREHEAT_8_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_9_LABEL "FLEX" +#define PREHEAT_9_TEMP_HOTEND 240 +#define PREHEAT_9_TEMP_BED 50 +#define PREHEAT_9_TEMP_CHAMBER 0 +#define PREHEAT_9_FAN_SPEED 0 // Value from 0 to 255 + // @section motion /** @@ -2419,11 +2463,11 @@ * P1 Raise the nozzle always to Z-park height. * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS. */ -//#define NOZZLE_PARK_FEATURE +#define NOZZLE_PARK_FEATURE #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } + #define NOZZLE_PARK_POINT { (X_MAX_POS - 10), (Y_MIN_POS + 10), 20 } #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 2 // (mm) Always raise Z by at least this distance #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2553,7 +2597,7 @@ * * View the current statistics with M78. */ -//#define PRINTCOUNTER +#define PRINTCOUNTER #if ENABLED(PRINTCOUNTER) #define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print. A value of 0 will save stats at end of print. #endif @@ -2646,7 +2690,7 @@ * SD Card support is disabled by default. If your controller has an SD slot, * you must uncomment the following option or it won't work. */ -//#define SDSUPPORT +#define SDSUPPORT /** * SD CARD: ENABLE CRC @@ -2670,7 +2714,7 @@ // This option overrides the default number of encoder pulses needed to // produce one step. Should be increased for high-resolution encoders. // -//#define ENCODER_PULSES_PER_STEP 4 +#define ENCODER_PULSES_PER_STEP 5 // // Use this option to override the number of step signals required to @@ -2726,8 +2770,8 @@ // // Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. // -//#define INDIVIDUAL_AXIS_HOMING_MENU -//#define INDIVIDUAL_AXIS_HOMING_SUBMENU +#define INDIVIDUAL_AXIS_HOMING_MENU +#define INDIVIDUAL_AXIS_HOMING_SUBMENU // // SPEAKER/BUZZER @@ -2735,7 +2779,7 @@ // If you have a speaker that can produce tones, enable it here. // By default Marlin assumes you have a buzzer with a fixed frequency. // -//#define SPEAKER +#define SPEAKER // // The duration and frequency for the UI feedback sound. @@ -3041,7 +3085,7 @@ // // Connect to EXP1 on RAMPS and compatible boards. // -//#define CR10_STOCKDISPLAY +#define CR10_STOCKDISPLAY // // Ender-2 OEM display, a variant of the MKS_MINI_12864 @@ -3458,20 +3502,20 @@ // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not as annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM +#define FAN_SOFT_PWM // Incrementing this by 1 will double the software PWM frequency, // affecting heaters, and the fan if FAN_SOFT_PWM is enabled. // However, control resolution will be halved for each increment; // at zero value, there are 128 effective control positions. // :[0,1,2,3,4,5,6,7] -#define SOFT_PWM_SCALE 0 +#define SOFT_PWM_SCALE 1 // If SOFT_PWM_SCALE is set to a value higher than 0, dithering can // be used to mitigate the associated resolution loss. If enabled, // some of the PWM cycles are stretched so on average the desired // duty cycle is attained. -//#define SOFT_PWM_DITHER +#define SOFT_PWM_DITHER // @section extras diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 1f22c6d7a5..6ddffbb6f5 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -31,6 +31,7 @@ * Basic settings can be found in Configuration.h */ #define CONFIGURATION_ADV_H_VERSION 02010300 +#define DIY_PRUSA_MINI_VERSION 20231220 // @section develop @@ -335,13 +336,13 @@ * Thermal Protection parameters for the bed are just as above for hotends. */ #if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // (seconds) + #define THERMAL_PROTECTION_BED_PERIOD 45 // (seconds) #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) /** * As described above, except for the bed (M140/M190/M303). */ - #define WATCH_BED_TEMP_PERIOD 60 // (seconds) + #define WATCH_BED_TEMP_PERIOD 180 // (seconds) #define WATCH_BED_TEMP_INCREASE 2 // (°C) #endif @@ -547,10 +548,10 @@ * Hotend Idle Timeout * Prevent filament in the nozzle from charring and causing a critical jam. */ -//#define HOTEND_IDLE_TIMEOUT +#define HOTEND_IDLE_TIMEOUT #if ENABLED(HOTEND_IDLE_TIMEOUT) - #define HOTEND_IDLE_TIMEOUT_SEC (5*60) // (seconds) Time without extruder movement to trigger protection - #define HOTEND_IDLE_MIN_TRIGGER 180 // (°C) Minimum temperature to enable hotend protection + #define HOTEND_IDLE_TIMEOUT_SEC (15*60) // (seconds) Time without extruder movement to trigger protection + #define HOTEND_IDLE_MIN_TRIGGER 160 // (°C) Minimum temperature to enable hotend protection #define HOTEND_IDLE_NOZZLE_TARGET 0 // (°C) Safe temperature for the nozzle after timeout #define HOTEND_IDLE_BED_TARGET 0 // (°C) Safe temperature for the bed after timeout #endif @@ -602,7 +603,7 @@ * gets it spinning reliably for a short time before setting the requested speed. * (Does not work on Sanguinololu with FAN_SOFT_PWM.) */ -//#define FAN_KICKSTART_TIME 100 // (ms) +#define FAN_KICKSTART_TIME 100 // (ms) //#define FAN_KICKSTART_POWER 180 // 64-255 // Some coolers may require a non-zero "off" state. @@ -620,8 +621,8 @@ * * Define one or both of these to override the default 0-255 range. */ -//#define FAN_MIN_PWM 50 -//#define FAN_MAX_PWM 128 +#define FAN_MIN_PWM DIY_PRUSA_MINI_FAN_MIN_PWM +//#define FAN_MAX_PWM 128 // Limit max output /** * Fan Fast PWM @@ -648,7 +649,7 @@ * PWM on pin OC2A. Only use this option if you don't need PWM on 0C2A. (Check your schematic.) * USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies. */ -//#define FAST_PWM_FAN // Increase the fan PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino +#define FAST_PWM_FAN // Increase the fan PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino #if ENABLED(FAST_PWM_FAN) //#define FAST_PWM_FAN_FREQUENCY 31400 // Define here to override the defaults below //#define USE_OCR2A_AS_TOP @@ -681,7 +682,7 @@ * Multiple extruders can be assigned to the same pin in which case * the fan will turn on when any selected extruder is above the threshold. */ -#define E0_AUTO_FAN_PIN -1 +#define E0_AUTO_FAN_PIN FAN1_PIN #define E1_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1 @@ -923,9 +924,9 @@ * the position of the toolhead relative to the workspace. */ -//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing +#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing -#define HOMING_BUMP_MM { 5, 5, 2 } // (linear=mm, rotational=°) Backoff from endstops after first bump +#define HOMING_BUMP_MM { 0, 0, 2 } // (linear=mm, rotational=°) Backoff from endstops after first bump #define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (linear=mm, rotational=°) Backoff from endstops after homing @@ -1243,7 +1244,7 @@ #define DEFAULT_STEPPER_TIMEOUT_SEC 120 #define DISABLE_IDLE_X #define DISABLE_IDLE_Y -#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! +//#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! //#define DISABLE_IDLE_I //#define DISABLE_IDLE_J //#define DISABLE_IDLE_K @@ -1263,7 +1264,7 @@ // Increase the slowdown divisor for larger buffer sizes. #define SLOWDOWN #if ENABLED(SLOWDOWN) - #define SLOWDOWN_DIVISOR 2 + #define SLOWDOWN_DIVISOR 4 #endif /** @@ -1394,7 +1395,7 @@ * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the * lowest stepping frequencies. */ -//#define ADAPTIVE_STEP_SMOOTHING +#define ADAPTIVE_STEP_SMOOTHING /** * Custom Microstepping @@ -1469,7 +1470,7 @@ // @section lcd #if HAS_MANUAL_MOVE_MENU - #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 2*60 } // (mm/min) Feedrates for manual moves along X, Y, Z, E from panel + #define MANUAL_FEEDRATE { 50*60, 50*60, 6*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" @@ -1493,17 +1494,17 @@ #endif #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 // Add a Probe Z Offset calibration option to the LCD menu #if ENABLED(PROBE_OFFSET_WIZARD) /** * Enable to init the Probe Z-Offset when starting the Wizard. * Use a height slightly above the estimated nozzle-to-probe Z offset. * For example, with an offset of -5, consider a starting height of -4. */ - //#define PROBE_OFFSET_WIZARD_START_Z -4.0 + #define PROBE_OFFSET_WIZARD_START_Z -2.0 // Set a convenient position to do the calibration (probing point and nozzle/bed-distance) - //#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER } + #define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER } #endif #endif @@ -1529,7 +1530,7 @@ #endif // Include a page of printer information in the LCD Main Menu - //#define LCD_INFO_MENU + #define LCD_INFO_MENU #if ENABLED(LCD_INFO_MENU) //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages #endif @@ -1553,7 +1554,7 @@ #define MANUAL_MOVE_DISTANCE_DEG 90, 45, 22.5, 5, 1 // (°) // BACK menu items keep the highlight at the top - //#define TURBO_BACK_MENU_ITEM + #define TURBO_BACK_MENU_ITEM // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM @@ -1578,10 +1579,10 @@ #if ENABLED(SHOW_BOOTSCREEN) #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) #if ANY(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) - #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) + //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #endif #if HAS_MARLINUI_U8GLIB - //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. + #define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. #endif #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE) //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. @@ -1592,7 +1593,7 @@ //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. #endif - //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu + #define SOUND_MENU_ITEM // Add a mute option to the LCD menu #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state #if HAS_WIRED_LCD @@ -1603,7 +1604,7 @@ //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) // Scroll a longer status message into view - //#define STATUS_MESSAGE_SCROLLING + #define STATUS_MESSAGE_SCROLLING // Apply a timeout to low-priority status messages //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds) @@ -1612,7 +1613,7 @@ //#define LCD_DECIMAL_SMALL_XY // Show the E position (filament used) during printing - //#define LCD_SHOW_E_TOTAL + #define LCD_SHOW_E_TOTAL // Display a negative temperature instead of "err" //#define SHOW_TEMPERATURE_BELOW_ZERO @@ -1655,7 +1656,7 @@ #endif // Add 'M73' to set print job progress, overrides Marlin's built-in estimate -//#define SET_PROGRESS_MANUALLY +#define SET_PROGRESS_MANUALLY #if ENABLED(SET_PROGRESS_MANUALLY) #define SET_PROGRESS_PERCENT // Add 'P' parameter to set percentage done #define SET_REMAINING_TIME // Add 'R' parameter to set remaining time @@ -1670,7 +1671,7 @@ #if HAS_DISPLAY && ANY(HAS_MEDIA, SET_PROGRESS_MANUALLY) #define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) #define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') - //#define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') + #define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') #if ENABLED(SET_INTERACTION_TIME) #define SHOW_INTERACTION_TIME // Display time until next user interaction ('C' = filament change) #endif @@ -1712,7 +1713,7 @@ #define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished - #define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place + #define SD_FINISHED_RELEASECOMMAND "M84XYE" // Use "M84XYE" to keep Z enabled so your bed stays in place // Reverse SD sort to show "more recent" files first, according to the card's FAT. // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended. @@ -1728,7 +1729,7 @@ //#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu - #define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") + #define EVENT_GCODE_SD_ABORT "G27 P2\n" SD_FINISHED_RELEASECOMMAND // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") #if ENABLED(PRINTER_EVENT_LEDS) #define PE_LEDS_COMPLETED_TIME (30*60) // (seconds) Time to keep the LED "done" color before restoring normal illumination @@ -1789,7 +1790,7 @@ * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!) * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!) */ - //#define SDCARD_SORT_ALPHA + #define SDCARD_SORT_ALPHA // SD Card Sorting options #if ENABLED(SDCARD_SORT_ALPHA) @@ -1797,9 +1798,9 @@ #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each. #define SDSORT_FOLDERS -1 // -1=above 0=none 1=below #define SDSORT_GCODE false // Enable G-code M34 to set sorting behaviors: M34 S<-1|0|1> F<-1|0|1> - #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. + #define SDSORT_USES_RAM true // Pre-allocate a static array for faster pre-sorting. #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) - #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. + #define SDSORT_CACHE_NAMES true // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use! #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting. // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM. @@ -1809,11 +1810,11 @@ // LCD's font must contain the characters. Check your selected LCD language. //#define UTF_FILENAME_SUPPORT - //#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L' + #define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L' //#define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol //#define M20_TIMESTAMP_SUPPORT // Include timestamps by adding the 'T' flag to M20 commands - //#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu + #define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu //#define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!) @@ -1914,7 +1915,7 @@ * * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ] */ - //#define SDCARD_CONNECTION LCD + #define SDCARD_CONNECTION ONBOARD // Enable if SD detect is rendered useless (e.g., by using an SD extender) //#define NO_SD_DETECT @@ -1958,7 +1959,7 @@ // A bigger font is available for edit items. Costs 3120 bytes of flash. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. - //#define USE_BIG_EDIT_FONT + #define USE_BIG_EDIT_FONT // A smaller font may be used on the Info Screen. Costs 2434 bytes of flash. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. @@ -2264,33 +2265,33 @@ * * Warning: Does not respect endstops! */ -//#define BABYSTEPPING +#define BABYSTEPPING #if ENABLED(BABYSTEPPING) - //#define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support + #define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support //#define BABYSTEP_WITHOUT_HOMING //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement) //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! //#define BABYSTEP_INVERT_Z // Enable if Z babysteps should go the other way //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps - #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep + #define BABYSTEP_MULTIPLICATOR_Z 5 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep - //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. + #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) - #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. + #define DOUBLECLICK_MAX_INTERVAL 2250 // Maximum interval between clicks, in milliseconds. // Note: Extra time may be added to mitigate controller latency. - //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. + #define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. #if ENABLED(MOVE_Z_WHEN_IDLE) - #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. + #define MOVE_Z_IDLE_MULTIPLICATOR 2 // Multiply 1mm by this factor for the move step size. #endif #endif //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 - //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping + #define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping #if ENABLED(BABYSTEP_ZPROBE_OFFSET) //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets - //#define BABYSTEP_GFX_OVERLAY // Enable graphical overlay on Z-offset editor + #define BABYSTEP_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #endif #endif @@ -2311,12 +2312,12 @@ * * See https://marlinfw.org/docs/features/lin_advance.html for full instructions. */ -//#define LIN_ADVANCE +#define LIN_ADVANCE #if ENABLED(LIN_ADVANCE) #if ENABLED(DISTINCT_E_FACTORS) - #define ADVANCE_K { 0.22 } // (mm) Compression length per 1mm/s extruder speed, per extruder + #define ADVANCE_K { 0.2 } // (mm) Compression length per 1mm/s extruder speed, per extruder #else - #define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders + #define ADVANCE_K 0.2 // (mm) Compression length applying to all extruders #endif //#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L. //#define LA_DEBUG // Print debug information to serial during operation. Disable for production use. @@ -2408,9 +2409,9 @@ * Specify the GCODE commands that will be executed when leveling succeeds, * between attempts, and after the maximum number of retries have been tried. */ - #define G29_SUCCESS_COMMANDS "M117 Bed leveling done." - #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" - #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" + //#define G29_SUCCESS_COMMANDS "M117 Bed leveling done." + //#define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" + //#define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" #endif @@ -2499,7 +2500,7 @@ #define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle //#define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections - //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles + #define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles //#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure #endif @@ -2596,7 +2597,7 @@ #if ALL(HAS_MEDIA, DIRECT_STEPPING) #define BLOCK_BUFFER_SIZE 8 #elif HAS_MEDIA - #define BLOCK_BUFFER_SIZE 16 + #define BLOCK_BUFFER_SIZE 32 #else #define BLOCK_BUFFER_SIZE 16 #endif @@ -2605,7 +2606,7 @@ // The ASCII buffer for serial input #define MAX_CMD_SIZE 96 -#define BUFSIZE 4 +#define BUFSIZE 32 // Transmission to Host Buffer Size // To save 386 bytes of flash (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. @@ -2614,7 +2615,7 @@ // For debug-echo: 128 bytes for the optimal speed. // Other output doesn't need to be that speedy. // :[0, 2, 4, 8, 16, 32, 64, 128, 256] -#define TX_BUFFER_SIZE 0 +#define TX_BUFFER_SIZE 32 // Host Receive Buffer Size // Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough. @@ -2652,7 +2653,7 @@ * Currently handles M108, M112, M410, M876 * NOTE: Not yet implemented for all platforms. */ -//#define EMERGENCY_PARSER +#define EMERGENCY_PARSER /** * Realtime Reporting (requires EMERGENCY_PARSER) @@ -2683,7 +2684,7 @@ //#define NO_TIMEOUTS 1000 // (ms) // Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK +#define ADVANCED_OK // Printrun may have trouble receiving long strings all at once. // This option inserts short delays between lines of serial output. @@ -2885,28 +2886,28 @@ * * Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park. */ -//#define ADVANCED_PAUSE_FEATURE +#define ADVANCED_PAUSE_FEATURE #if ENABLED(ADVANCED_PAUSE_FEATURE) - #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. + #define PAUSE_PARK_RETRACT_FEEDRATE 40 // (mm/s) Initial retract feedrate. #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. // This short retract is done immediately, before parking the nozzle. - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. + #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 40 // (mm/s) Unload filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. + #define FILAMENT_CHANGE_UNLOAD_LENGTH 420 // (mm) The length of filament for a complete unload. // For Bowden, the full length of the tube and nozzle. // For direct drive, the full length of the nozzle. // Set to 0 for manual unloading. - #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load. - #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material. + #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 10 // (mm/s) Slow move when starting load. + #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 40 // (mm) Slow length, to allow time to insert material. // 0 to disable start loading and skip to fast load only - #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. - #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. + #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 40 // (mm/s) Load filament feedrate. This can be pretty fast. + #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 312 // (mm/s^2) Lower acceleration may allow a faster feedrate. + #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 310 // (mm) Load length of filament, from extruder gear to nozzle. // For Bowden, the full length of the tube and nozzle. // For direct drive, the full length of the nozzle. //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate. - #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading. + #define ADVANCED_PAUSE_PURGE_LENGTH 60 // (mm) Length to extrude after loading. // Set to 0 for manual extrusion. // Filament can be extruded repeatedly from the Filament Change menu // until extrusion is consistent, and to purge old filament. @@ -2914,21 +2915,21 @@ //#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused. // Filament Unload does a Retract, Delay, and Purge first: - #define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length. + #define FILAMENT_UNLOAD_PURGE_RETRACT 30 // (mm) Unload initial retract length. #define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract. - #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged. - #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload + #define FILAMENT_UNLOAD_PURGE_LENGTH 16 // (mm) An unretract is done, then this length is purged. + #define FILAMENT_UNLOAD_PURGE_FEEDRATE 40 // (mm/s) feedrate to purge before unload - #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. + #define PAUSE_PARK_NOZZLE_TIMEOUT (3*60) // (seconds) Time limit before the nozzle is turned off for safety. #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. //#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again. //#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing. - //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. - //#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change + #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. + #define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change - //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. + #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) #define CONFIGURE_FILAMENT_CHANGE // Add M603 G-code and menu items. Requires ~1.3K bytes of flash. #endif @@ -2970,8 +2971,8 @@ #define INTERPOLATE true #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 350 // (mA) RMS current. Multiply by 1.414 for peak current. + #define X_CURRENT_HOME (X_CURRENT/2) // (mA) RMS current for sensorless homing #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 // Multiplied x1000 for TMC26X #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... @@ -2990,8 +2991,8 @@ #endif #if AXIS_IS_TMC_CONFIG(Y) - #define Y_CURRENT 800 - #define Y_CURRENT_HOME Y_CURRENT + #define Y_CURRENT 350 + #define Y_CURRENT_HOME (Y_CURRENT/2) #define Y_MICROSTEPS 16 #define Y_RSENSE 0.11 #define Y_CHAIN_POS -1 @@ -3010,7 +3011,7 @@ #endif #if AXIS_IS_TMC_CONFIG(Z) - #define Z_CURRENT 800 + #define Z_CURRENT 350 #define Z_CURRENT_HOME Z_CURRENT #define Z_MICROSTEPS 16 #define Z_RSENSE 0.11 @@ -3110,7 +3111,7 @@ #endif #if AXIS_IS_TMC_CONFIG(E0) - #define E0_CURRENT 800 + #define E0_CURRENT 350 #define E0_MICROSTEPS 16 #define E0_RSENSE 0.11 #define E0_CHAIN_POS -1 @@ -3301,7 +3302,7 @@ * Define your own with: * { , , hysteresis_start[1..8] } */ - #define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below) + #define CHOPPER_TIMING CHOPPER_DEFAULT_24V // All axes (override below) //#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below) //#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X //#define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below) @@ -3338,7 +3339,7 @@ * M912 - Clear stepper driver overtemperature pre-warn condition flag. * M122 - Report driver parameters (Requires TMC_DEBUG) */ - //#define MONITOR_DRIVER_STATUS + #define MONITOR_DRIVER_STATUS #if ENABLED(MONITOR_DRIVER_STATUS) #define CURRENT_STEP_DOWN 50 // [mA] @@ -3406,13 +3407,13 @@ * Comment *_STALL_SENSITIVITY to disable sensorless homing for that axis. * @section tmc/stallguard */ - //#define SENSORLESS_HOMING // StallGuard capable drivers only + #define SENSORLESS_HOMING // StallGuard capable drivers only #if ANY(SENSORLESS_HOMING, SENSORLESS_PROBING) // TMC2209: 0...255. TMC2130: -64...63 - #define X_STALL_SENSITIVITY 8 + #define X_STALL_SENSITIVITY DIY_PRUSA_MINI_X_STALL_SENSITIVITY #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY - #define Y_STALL_SENSITIVITY 8 + #define Y_STALL_SENSITIVITY DIY_PRUSA_MINI_Y_STALL_SENSITIVITY #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY //#define Z_STALL_SENSITIVITY 8 //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY @@ -3425,7 +3426,7 @@ //#define V_STALL_SENSITIVITY 8 //#define W_STALL_SENSITIVITY 8 //#define SPI_ENDSTOPS // TMC2130/TMC5160 only - //#define IMPROVE_HOMING_RELIABILITY + #define IMPROVE_HOMING_RELIABILITY #endif // @section tmc/config @@ -3445,7 +3446,7 @@ /** * Step on both rising and falling edge signals (as with a square wave). */ - //#define EDGE_STEPPING + #define EDGE_STEPPING /** * Enable M122 debugging command for TMC stepper drivers. @@ -3882,7 +3883,7 @@ /** * Extra options for the M114 "Current Position" report */ -//#define M114_DETAIL // Use 'M114` for details to check planner calculations +#define M114_DETAIL // Use 'M114` for details to check planner calculations //#define M114_REALTIME // Real current position based on forward kinematics //#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed. @@ -3892,7 +3893,7 @@ */ //#define AUTO_REPORT_FANS -//#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others) +#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others) /** * Auto-report temperatures with M155 S @@ -3905,7 +3906,7 @@ /** * Auto-report position with M154 S */ -//#define AUTO_REPORT_POSITION +#define AUTO_REPORT_POSITION #if ENABLED(AUTO_REPORT_POSITION) //#define AUTO_REPORT_REAL_POSITION // Auto-report the real position #endif @@ -3919,7 +3920,7 @@ // Include capabilities in M115 output #define EXTENDED_CAPABILITIES_REPORT #if ENABLED(EXTENDED_CAPABILITIES_REPORT) - //#define M115_GEOMETRY_REPORT + #define M115_GEOMETRY_REPORT #endif #endif @@ -3982,7 +3983,7 @@ * * Execute certain G-code commands immediately after power-on. */ -//#define STARTUP_COMMANDS "M17 Z" +#define STARTUP_COMMANDS "M17 Z" /** * G-code Macros @@ -4006,31 +4007,120 @@ // Custom Menu: Main Menu //#define CUSTOM_MENU_MAIN #if ENABLED(CUSTOM_MENU_MAIN) - //#define CUSTOM_MENU_MAIN_TITLE "Custom Commands" - #define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done" + #define CUSTOM_MENU_MAIN_TITLE "Calibration" + //#define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 Completed" #define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK - //#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script + #define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script #define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle - #define MAIN_MENU_ITEM_1_DESC "Home & UBL Info" - #define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W" - //#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action - - #define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL - #define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) - //#define MAIN_MENU_ITEM_2_CONFIRM - - //#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL - //#define MAIN_MENU_ITEM_3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) - //#define MAIN_MENU_ITEM_3_CONFIRM - - //#define MAIN_MENU_ITEM_4_DESC "Heat Bed/Home/Level" - //#define MAIN_MENU_ITEM_4_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29" - //#define MAIN_MENU_ITEM_4_CONFIRM - - //#define MAIN_MENU_ITEM_5_DESC "Home & Info" - //#define MAIN_MENU_ITEM_5_GCODE "G28\nM503" - //#define MAIN_MENU_ITEM_5_CONFIRM + // Based on Prusa's "meander" first layer calibration: https://github.com/prusa3d/Prusa-Firmware/blob/MK3/Firmware/first_lay_cal.cpp + // TODO: Port Prusa Mini-specific version + #define Z_CAL_DESC " Z Calibration" + #define Z_CAL_PRE_UBL "G28\nM107\nG29 L1\nG29 J2\nG1 X2.0 Y-2.0 Z0.60 F3000\nM140 S" + #define Z_CAL_PRE_ABL "G28\nM107\nM140 S" + #define Z_CAL_END "\nM0 Click to continue...\nG92 E0.00\nG1 Z0.2 X60 E9.0 F1000.0\nG1 X100.0 E12.5 F1000.0\nG92 E0.0\nG21\nG90\nM83\nG1 E-1.50000 F2100.00000\nG1 Z0.150 F7200.000\nM204 S1000\nG1 F4000\nG1 X50 Y155\nG1 F1080\nG1 X75 Y155 E2.5\nG1 X100 Y155 E2\nG1 X200 Y155 E2.62773\nG1 X200 Y135 E0.66174\nG1 X50 Y135 E3.62773\nG1 X50 Y115 E0.49386\nG1 X200 Y115 E3.62773\nG1 X200 Y95 E0.49386\nG1 X50 Y95 E3.62773\nG1 X50 Y75 E0.49386\nG1 X200 Y75 E3.62773\nG1 X200 Y55 E0.49386\nG1 X50 Y55 E3.62773\nG1 X50 Y35 E0.49386\nG1 X70 Y35 E0.49386\nG1 X70 Y34.6 E0\nG1 X50 Y34.6 E0.49386\nG1 X50 Y34.2 E0\nG1 X70 Y34.2 E0.49386\nG1 X70 Y33.8 E0\nG1 X50 Y33.8 E0.49386\nG1 X50 Y33.4 E0\nG1 X70 Y33.4 E0.49386\nG1 X70 Y33.0 E0\nG1 X50 Y33.0 E0.49386\nG1 X50 Y32.6 E0\nG1 X70 Y32.6 E0.49386\nG1 X70 Y32.2 E0\nG1 X50 Y32.2 E0.49386\nG1 X50 Y31.8 E0\nG1 X70 Y31.8 E0.49386\nG1 X70 Y31.4 E0\nG1 X50 Y31.4 E0.49386\nG1 X50 Y31.0 E0\nG1 X70 Y31.0 E0.49386\nG1 X70 Y30.6 E0\nG1 X50 Y30.6 E0.49386\nG1 X50 Y30.2 E0\nG1 X70 Y30.2 E0.49386\nG1 X70 Y29.8 E0\nG1 X50 Y29.8 E0.49386\nG1 X50 Y29.4 E0\nG1 X70 Y29.4 E0.49386\nG1 X70 Y29.0 E0\nG1 X50 Y29.0 E0.49386\nG1 X50 Y28.6 E0\nG1 X70 Y28.6 E0.49386\nG1 X70 Y28.2 E0\nG1 X50 Y28.2 E0.49386\nG1 X50 Y27.8 E0\nG1 X70 Y27.8 E0.49386\nG1 X70 Y27.4 E0\nG1 X50 Y27.4 E0.49386\nG1 X50 Y27.0 E0\nG1 X70 Y27.0 E0.49386\nG1 X70 Y26.6 E0\nG1 X50 Y26.6 E0.49386\nG1 X50 Y26.2 E0\nG1 X70 Y26.2 E0.49386\nG1 X70 Y25.8 E0\nG1 X50 Y25.8 E0.49386\nG1 X50 Y25.4 E0\nG1 X70 Y25.4 E0.49386\nG1 X70 Y25.0 E0\nG1 X50 Y25.0 E0.49386\nG1 X50 Y24.6 E0\nG1 X70 Y24.6 E0.49386\nG1 X70 Y24.2 E0\nG1 X50 Y24.2 E0.49386\nG1 X50 Y23.8 E0\nG1 X70 Y23.8 E0.49386\nG1 X70 Y23.4 E0\nG1 X50 Y23.4 E0.49386\nG1 X50 Y23.0 E0\nG1 X70 Y23.0 E0.49386\nG1 X70 Y22.6 E0\nG1 X50 Y22.6 E0.49386\nG1 X50 Y22.2 E0\nG1 X70 Y22.2 E0.49386\nG1 X70 Y21.8 E0\nG1 X50 Y21.8 E0.49386\nG1 X50 Y21.4 E0\nG1 X70 Y21.4 E0.49386\nG1 X70 Y21.0 E0\nG1 X50 Y21.0 E0.49386\nG1 X50 Y20.6 E0\nG1 X70 Y20.6 E0.49386\nG1 X70 Y20.2 E0\nG1 X50 Y20.2 E0.49386\nG1 X50 Y19.8 E0\nG1 X70 Y19.8 E0.49386\nG1 X70 Y19.4 E0\nG1 X50 Y19.4 E0.49386\nG1 E-0.07500 F2100.00000\nG4\nM107\nM104 S0\nM140 S0\nG1 X10 Y180 F4000\nG1 Z10 F1300.000\nM500\nM0 Happy Printing\nM84 XYE" + + #define MAIN_MENU_ITEM_1_DESC "Nozzle Change" + #define MAIN_MENU_ITEM_1_GCODE "G28\nG1 X125 Y105 Z140 F2000\nM104 S275\nM117 Setting Nozzle to 275C\nG4 S10\nM0 Click when Finished\nM104 S0" + #define MAIN_MENU_ITEM_1_CONFIRM + + #define MAIN_MENU_ITEM_2_DESC "Full Calibration" + #define MAIN_MENU_ITEM_2_GCODE "M140 S60\nM190 S60\nG28\nG34\nG29\nM500\nM140 S0\nG28" + #define MAIN_MENU_ITEM_2_CONFIRM + + #define MAIN_MENU_ITEM_3_DESC "Auto Cold Pull" + #define MAIN_MENU_ITEM_3_GCODE "G28\nM83\nG92 E0.00\nG21\nG1 X125 Y105 Z30\nM109 S250\nG1 E10.00 F6.5\nM109 S95\nM18 E\nM0 Pull your filament out\nM106 S0\nM109 S0" + #define MAIN_MENU_ITEM_3_CONFIRM + + #if ENABLED(DIY_PRUSA_MINI_BED_LEVELING_BILINEAR) + #define MAIN_MENU_ITEM_4_DESC PREHEAT_1_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_4_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_1_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_4_CONFIRM + + #define MAIN_MENU_ITEM_5_DESC PREHEAT_2_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_5_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_2_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_5_CONFIRM + + #define MAIN_MENU_ITEM_6_DESC PREHEAT_3_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_6_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_3_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_3_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_6_CONFIRM + + #define MAIN_MENU_ITEM_7_DESC PREHEAT_4_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_7_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_4_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_4_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_7_CONFIRM + + #define MAIN_MENU_ITEM_8_DESC PREHEAT_5_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_8_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_5_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_5_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_8_CONFIRM + + #define MAIN_MENU_ITEM_9_DESC PREHEAT_6_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_9_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_6_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_6_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_9_CONFIRM + + #define MAIN_MENU_ITEM_10_DESC PREHEAT_7_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_10_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_7_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_7_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_10_CONFIRM + + #define MAIN_MENU_ITEM_11_DESC PREHEAT_8_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_11_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_8_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_8_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_11_CONFIRM + + #define MAIN_MENU_ITEM_12_DESC PREHEAT_9_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_12_GCODE Z_CAL_PRE_ABL STRINGIFY(PREHEAT_9_TEMP_BED) "\nM190 S" STRINGIFY(PREHEAT_9_TEMP_BED) "\nM104 S160\nM109 S160\nG29\nG1 X2.0 Y-2.0 Z0.60\nM104 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) "\nM109 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_12_CONFIRM + + #define MAIN_MENU_ITEM_13_DESC "Reset EEPROM" + #define MAIN_MENU_ITEM_13_GCODE "M502\nM500" + #define MAIN_MENU_ITEM_13_CONFIRM + #elif ENABLED(DIY_PRUSA_MINI_BED_LEVELING_UBL) + #define MAIN_MENU_ITEM_4_DESC PREHEAT_1_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_4_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_4_CONFIRM + + #define MAIN_MENU_ITEM_5_DESC PREHEAT_2_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_5_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_5_CONFIRM + + #define MAIN_MENU_ITEM_6_DESC PREHEAT_3_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_6_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_3_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_3_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_3_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_6_CONFIRM + + #define MAIN_MENU_ITEM_7_DESC PREHEAT_4_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_7_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_4_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_4_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_4_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_7_CONFIRM + + #define MAIN_MENU_ITEM_8_DESC PREHEAT_5_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_8_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_5_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_5_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_5_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_8_CONFIRM + + #define MAIN_MENU_ITEM_9_DESC PREHEAT_6_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_9_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_6_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_6_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_6_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_9_CONFIRM + + #define MAIN_MENU_ITEM_10_DESC PREHEAT_7_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_10_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_7_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_7_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_7_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_10_CONFIRM + + #define MAIN_MENU_ITEM_11_DESC PREHEAT_8_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_11_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_8_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_8_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_8_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_11_CONFIRM + + #define MAIN_MENU_ITEM_12_DESC PREHEAT_9_LABEL Z_CAL_DESC + #define MAIN_MENU_ITEM_12_GCODE Z_CAL_PRE_UBL STRINGIFY(PREHEAT_9_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) "\nM190 S" STRINGIFY(PREHEAT_9_TEMP_BED) "\nM109 S" STRINGIFY(PREHEAT_9_TEMP_HOTEND) Z_CAL_END + #define MAIN_MENU_ITEM_12_CONFIRM + + #define MAIN_MENU_ITEM_13_DESC "UBL Mesh Wizard" + #define MAIN_MENU_ITEM_13_GCODE "M1004" + #define MAIN_MENU_ITEM_13_CONFIRM + + #define MAIN_MENU_ITEM_14_DESC "Adjust Point Near" + #define MAIN_MENU_ITEM_14_GCODE "G29 P4\nM500" + #define MAIN_MENU_ITEM_14_CONFIRM + + #define MAIN_MENU_ITEM_15_DESC "Reset EEPROM" + #define MAIN_MENU_ITEM_15_GCODE "M502\nM500" + #define MAIN_MENU_ITEM_15_CONFIRM + #endif #endif // @section custom config menu @@ -4038,18 +4128,18 @@ // Custom Menu: Configuration Menu //#define CUSTOM_MENU_CONFIG #if ENABLED(CUSTOM_MENU_CONFIG) - //#define CUSTOM_MENU_CONFIG_TITLE "Custom Commands" - #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M117 Wireless Script Done" - #define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK - //#define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script + #define CUSTOM_MENU_CONFIG_TITLE "Sheet Profiles" + #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M500\nM117 Sheet Loaded" + //#define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK + #define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script #define CUSTOM_MENU_CONFIG_ONLY_IDLE // Only show custom menu when the machine is idle - #define CONFIG_MENU_ITEM_1_DESC "Wifi ON" - #define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678" + //#define CONFIG_MENU_ITEM_1_DESC "Wifi ON" + //#define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678" //#define CONFIG_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action - #define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON" - #define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678" + //#define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON" + //#define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678" //#define CONFIG_MENU_ITEM_2_CONFIRM //#define CONFIG_MENU_ITEM_3_DESC "Radio OFF" @@ -4114,10 +4204,10 @@ * Host Prompt Support enables Marlin to use the host for user prompts so * filament runout and other processes can be managed from the host side. */ -//#define HOST_ACTION_COMMANDS +#define HOST_ACTION_COMMANDS #if ENABLED(HOST_ACTION_COMMANDS) //#define HOST_PAUSE_M76 // Tell the host to pause in response to M76 - //#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback + #define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback #if ENABLED(HOST_PROMPT_SUPPORT) //#define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications #endif diff --git a/Marlin/DIY_Prusa_Mini_Configuration.h b/Marlin/DIY_Prusa_Mini_Configuration.h new file mode 100644 index 0000000000..a26837e036 --- /dev/null +++ b/Marlin/DIY_Prusa_Mini_Configuration.h @@ -0,0 +1,305 @@ +#pragma once + +/** + * DIY_Prusa_Mini_Configuration.h + * + * This file includes basic settings like: + * + * - Getting Started with DIY Prusa Mini Firmware + * - Custom Printer Name + * - Printer/Frame Type + * - Motherboard + * - Stepper Motors + * - Extruder + * - Input Shaping + * - Probe & Bed Leveling + * - Fans + * - Thermal & PID Settings + * - LCD / TFT / Controller + * - Custom Menus + */ +#define CONFIGURATION_H_VERSION 02010300 +#define DIY_PRUSA_MINI_VERSION 20231220 + +//=========================================================================== +//============== Getting Started with DIY Prusa Mini Firmware =============== +//=========================================================================== + +/** + * If you find this project helpful, please consider donating: + * + * Keith Bennett, Marlin tester/config builder: https://github.com/sponsors/thisiskeithb + * https://ko-fi.com/thisiskeithb + * Thank you and Happy Printing! + */ + +//=========================================================================== +//=========================== Custom Printer Name =========================== +//=========================================================================== + +// Uncomment to set a custom printer name. +//#define DIY_PRUSA_MINI_CUSTOM_PRINTER_NAME "Mini" + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +/** + * Motherboard Options + * + * BigTreeTech + * + * - SKR Mini E3 V3 (STM32G0B0RE/STM32G0B1RE) + * - SKR Mini E3 V3.0.1 (STM32F401RC) + * - SKR Mini E3 V2 (STM32F103RC/RE) + * + * More board support coming soon! + */ +#define DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0 +//#define DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1 +//#define DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0 + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +/** + * X/Y Stepper Motors + * + * - LDO COOLER LDO-42STH40-1004ASR 1.8°: https://www.printedsolid.com/products/ldo-nema-17-motor-cooler-ldo-42sth40-1004asr + */ +#define DIY_PRUSA_MINI_XY_STEPPERS_LDO_1_8 + +/** + * Z Stepper Motor + * + * - LDO LDO-42STH34-1004L321EC 1.8° with integrated leadscrew: https://www.printedsolid.com/products/ldo-nema-17-motor-mk3-z-motor-qlink-ldo-42sth34-1004l321ec + */ +#define DIY_PRUSA_MINI_Z_STEPPER_LDO_1_8 + +/** + * Extruder Stepper Motor + * + * - LDO COOLER LDO-42STH40-1004ASR 1.8°: https://www.printedsolid.com/products/ldo-nema-17-motor-cooler-ldo-42sth40-1004asr + */ +#define DIY_PRUSA_MINI_E_STEPPER_LDO_1_8 + +// Invert the stepper direction. Enable if an axis goes the wrong way. +//#define DIY_PRUSA_MINI_INVERT_X_DIR +//#define DIY_PRUSA_MINI_INVERT_Y_DIR +//#define DIY_PRUSA_MINI_INVERT_Z_DIR +//#define DIY_PRUSA_MINI_INVERT_E_DIR + +/** + * Sensorless Homing + * + * Sensitivity TMC2209 + * HIGHEST 255 (Too sensitive => False positive) + * LOWEST 0 (Too insensitive => No trigger) + * + * If needed, uncomment DIY_PRUSA_MINI_*_STALL sensorless (StallGuard) settings below. + * Settings can also be customized via LCD under Configuration -> Advanced Settings -> TMC Drivers -> Sensorless Homing + */ +//#define DIY_PRUSA_MINI_X_STALL_SENSITIVITY 75 +//#define DIY_PRUSA_MINI_Y_STALL_SENSITIVITY 75 + +// If needed, uncomment DIY_PRUSA_MINI_HOMING_FEEDRATE_MM_M to customize Homing speeds (mm/min) +//#define DIY_PRUSA_MINI_HOMING_FEEDRATE_MM_M { (50*60), (50*60), (6*60) } + +//=========================================================================== +//================================ Extruder ================================= +//=========================================================================== + +/** + * Extruder + * + * - Stock Prusa Mini Extruder + * - Bondtech Prusa Mini IFS Extruder https://www.bondtech.se/product/ifs-extruder-for-prusa-mini/ + */ +#define DIY_PRUSA_MINI_EXTRUDER_STOCK +//#define DIY_PRUSA_MINI_EXTRUDER_BONDTECH_IFS + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +/** + * Input Shaping -- EXPERIMENTAL + * + * Zero Vibration (ZV) Input Shaping for X and/or Y movements. + * + * See https://github.com/MarlinFirmware/Marlin/pull/24797 for configuration & full details. + * + * 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. + * X<1> Set the given parameters only for the X axis. + * Y<1> Set the given parameters only for the Y axis. + */ +//#define DIY_PRUSA_MINI_INPUT_SHAPING +#if ENABLED(DIY_PRUSA_MINI_INPUT_SHAPING) + #define DIY_PRUSA_MINI_SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. + #define DIY_PRUSA_MINI_SHAPING_FREQ_Y 40 // (Hz) The default dominant resonant frequency on the Y axis. + #define DIY_PRUSA_MINI_SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). + #define DIY_PRUSA_MINI_SHAPING_ZETA_Y 0.15f // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). +#endif + +//=========================================================================== +//========================== Probe & Bed Leveling =========================== +//=========================================================================== + +/* + * Custom Probe Offset + * + * If needed, uncomment to customize probe offset. This can also be customized via LCD + * under Configuration -> Advanced Settings -> Probe Offsets + */ +//#define DIY_PRUSA_MINI_NOZZLE_TO_PROBE_OFFSET { -29, -3, -0.4 } + +/** + * Bed Leveling Type + * + * - Bilinear + * - Unified Bed Leveling + */ +#define DIY_PRUSA_MINI_BED_LEVELING_BILINEAR +//#define DIY_PRUSA_MINI_BED_LEVELING_UBL + +//=========================================================================== +//================================== Fans =================================== +//=========================================================================== + +/** + * Part Cooling Fan + * + * 24V Options: + * + * - Generic (No minimum PWM limit is applied) + * - 24V Delta BFB0524HH + * - 24V SoundOriginal + */ +#define DIY_PRUSA_MINI_PART_COOLING_FAN_GENERIC +//#define DIY_PRUSA_MINI_PART_COOLING_FAN_24V_DELTA_BFB0524HH +//#define DIY_PRUSA_MINI_PART_COOLING_FAN_24V_SOUNDORIGINAL + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +/** + * Standard Thermistor + * + * - Stock Prusa Mini Semitec 104NT + * - Generic NTC 100K (Type 1) + */ +#define DIY_PRUSA_MINI_THERMISTOR_STOCK_SEMITEC_104NT +//#define DIY_PRUSA_MINI_THERMISTOR_GENERIC_100K + +/** + * Custom PID Settings + * + * Stock Prusa Mini hotend and bed PID settings are enabled by default. + * + * If needed, uncomment PDIY_PRUSA_MINI_CUSTOM_HOTEND_PID or DIY_PRUSA_MINI_CUSTOM_BED_PID to customize PID settings. + */ +//#define DIY_PRUSA_MINI_CUSTOM_HOTEND_PID +#if ENABLED(DIY_PRUSA_MINI_CUSTOM_HOTEND_PID) + #define DIY_PRUSA_MINI_DEFAULT_Kp 7.00 + #define DIY_PRUSA_MINI_DEFAULT_Ki 0.50 + #define DIY_PRUSA_MINI_DEFAULT_Kd 45.00 + // Find your own by running "M303 E0 C8 S210" via serial to run autotune on the hotend at 210 °C for 8 cycles. +#endif + +//#define DIY_PRUSA_MINI_CUSTOM_BED_PID +#if ENABLED(DIY_PRUSA_MINI_CUSTOM_BED_PID) + #define DIY_PRUSA_MINI_DEFAULT_bedKp 120.00 + #define DIY_PRUSA_MINI_DEFAULT_bedKi 1.50 + #define DIY_PRUSA_MINI_DEFAULT_bedKd 600.00 + // Find your own by running "M303 E-1 C8 S65" via serial to run autotune on the bed at 65 °C for 8 cycles. +#endif + +/** + * Model Predictive Control for Hotend + * + * Stock Prusa Mini hotend with 40W heater cartridge is configured by default. + * + * Note: Replaces PID for the hotend + */ +//#define DIY_PRUSA_MINI_HOTEND_MPCTEMP + +// If needed, uncomment DIY_PRUSA_MINI_CUSTOM_HOTEND_MPCTEMP to customize MPCTEMP settings. +// Use M306 T to autotune the model. See https://marlinfw.org/docs/gcode/M306.html for full details. +//#define DIY_PRUSA_MINI_CUSTOM_HOTEND_MPCTEMP +#if ALL(DIY_PRUSA_MINI_HOTEND_MPCTEMP, DIY_PRUSA_MINI_CUSTOM_HOTEND_MPCTEMP) + #define DIY_PRUSA_MINI_CUSTOM_MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge power. + #define DIY_PRUSA_MINI_CUSTOM_MPC_BLOCK_HEAT_CAPACITY { 10.46f } // (J/K) Heat block heat capacity. Use M306 T to autotune the model. + #define DIY_PRUSA_MINI_CUSTOM_MPC_SENSOR_RESPONSIVENESS { 0.7801f } // (K/s per ∆K) Rate of change of sensor temperature from heat block. + #define DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF { 0.0564f } // (W/K) Heat transfer coefficients from heat block to room air with fan off. + #define DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 { 0.1264f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full. + + // Filament Heat Capacity (joules/kelvin/mm) + // Set with M306 H in your filament or start G-code. + #define DIY_PRUSA_MINI_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // PLA = 5.6e-3f (0.0056) J/K/mm + // PETG = 3.6e-3f (0.0036) J/K/mm + // ABS = 5.15e-3f (0.00515) J/K/mm + // Nylon = 5.22e-3f (0.00522) J/K/mm +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +/** + * LCD / TFT / Controller + * + * - BigTreeTech TFT35 E3 Dual Mode TFT + */ +#define DIY_PRUSA_MINI_DISPLAY_BTT_TFT35_E3_TFT + +// +// Reverse the encoder direction everywhere. +// +//#define DIY_PRUSA_MINI_REVERSE_ENCODER_DIRECTION + +/** + * LCD LANGUAGE + * + * Select the language to display on the LCD. These languages are available: + * + * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hr, hu, it, + * jp_kana, ko_KR, nl, pl, pt, pt_br, ro, ru, sk, sv, tr, uk, vi, zh_CN, zh_TW + * + * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } + */ +#define DIY_PRUSA_MINI_LCD_LANGUAGE en + + +//=========================================================================== +//============================== Custom Menus =============================== +//=========================================================================== + +/** + * Sheet Profiles Menu + * + * Automatically adjust Z Probe Offset with M851 based on selected Sheet Profile. + * Up to 10 are supported without changes. + */ +//#define DIY_PRUSA_MINI_SHEET_PROFILES_MENU +#if ENABLED(DIY_PRUSA_MINI_SHEET_PROFILES_MENU) + #define DIY_PRUSA_MINI_SHEET_1_DESC "Smooth" // Short description of Sheet + #define DIY_PRUSA_MINI_SHEET_1_OFFSET -0.000 // Sheet offset. This should be a negative value. + + #define DIY_PRUSA_MINI_SHEET_2_DESC "Textured" + #define DIY_PRUSA_MINI_SHEET_2_OFFSET -0.000 + + //#define DIY_PRUSA_MINI_SHEET_3_DESC "Satin" + //#define DIY_PRUSA_MINI_SHEET_3_OFFSET -0.000 +#endif + +/** + * Calibration Menu + * + * Top-level menu with first layer calibration, nozzle change, automated cold pull, and more. + */ +//#define DIY_PRUSA_MINI_CALIBRATION_MENU diff --git a/Marlin/src/inc/DIY_Prusa_Mini_Conditionals.h b/Marlin/src/inc/DIY_Prusa_Mini_Conditionals.h new file mode 100644 index 0000000000..80e886cbdc --- /dev/null +++ b/Marlin/src/inc/DIY_Prusa_Mini_Conditionals.h @@ -0,0 +1,267 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * DIY_Prusa_Mini_Conditionals.h + * Configuration logic based on DIY_Prusa_Mini_Configuration.h options at compile time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define DIY_PRUSA_MINI_VERSION 20231220 + +//=========================================================================== +//============================ Source Code Info ============================= +//=========================================================================== + +#define SOURCE_CODE_URL "bit.ly/426zdX1" +#define WEBSITE_URL SOURCE_CODE_URL + +//=========================================================================== +//============================== Printer Name =============================== +//=========================================================================== + +#ifndef DIY_PRUSA_MINI_CUSTOM_PRINTER_NAME + #define DIY_PRUSA_MINI_CUSTOM_PRINTER_NAME "Mini" +#endif + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +// Define MOTHERBOARD here so preflight-checks.py works +#if ENABLED(DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0 +#elif ENABLED(DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0_1 +#elif ENABLED(DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 +#endif + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +// Default Extruder inverting +#if ENABLED(DIY_PRUSA_MINI_EXTRUDER_STOCK) + #define DIY_PRUSA_MINI_INVERT_E0_DIR false +#elif ENABLED(DIY_PRUSA_MINI_EXTRUDER_BONDTECH_IFS) + #define DIY_PRUSA_MINI_INVERT_E0_DIR true +#endif + +// User Extruder Inverting +#if ENABLED(DIY_PRUSA_MINI_INVERT_E_DIR) + #if DIY_PRUSA_MINI_INVERT_E0_DIR == true + #undef DIY_PRUSA_MINI_INVERT_E0_DIR // Prevent redefined warnings + #define DIY_PRUSA_MINI_INVERT_E0_DIR false + #elif DIY_PRUSA_MINI_INVERT_E0_DIR == false + #undef DIY_PRUSA_MINI_INVERT_E0_DIR // Prevent redefined warnings + #define DIY_PRUSA_MINI_INVERT_E0_DIR true + #endif +#endif + +#if ENABLED(DIY_PRUSA_MINI_EXTRUDER_STOCK) + #define DIY_PRUSA_MINI_EXTRUDER_STEPS_PER_UNIT 325 +#elif ENABLED(DIY_PRUSA_MINI_EXTRUDER_BONDTECH_IFS) + #define DIY_PRUSA_MINI_EXTRUDER_STEPS_PER_UNIT 415 +#endif + +#define DIY_PRUSA_MINI_DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, (DIY_PRUSA_MINI_EXTRUDER_STEPS_PER_UNIT) } + +// StallGuard settings +#ifndef DIY_PRUSA_MINI_X_STALL_SENSITIVITY + #define DIY_PRUSA_MINI_X_STALL_SENSITIVITY 75 +#endif +#ifndef DIY_PRUSA_MINI_Y_STALL_SENSITIVITY + #define DIY_PRUSA_MINI_Y_STALL_SENSITIVITY 75 +#endif + +// Homing speeds (mm/min) +#ifndef DIY_PRUSA_MINI_HOMING_FEEDRATE_MM_M + #define DIY_PRUSA_MINI_HOMING_FEEDRATE_MM_M { (50*60), (50*60), (6*60) } +#endif + +// X inverting +#if ENABLED(DIY_PRUSA_MINI_INVERT_X_DIR) + #define DIY_PRUSA_MINI_INVERT_X_DIR true +#else // Stock + #define DIY_PRUSA_MINI_INVERT_X_DIR false +#endif + +// Y inverting +#if ENABLED(DIY_PRUSA_MINI_INVERT_Y_DIR) + #define DIY_PRUSA_MINI_INVERT_Y_DIR true +#else // Stock + #define DIY_PRUSA_MINI_INVERT_Y_DIR false +#endif + +// Z inverting +#if ENABLED(DIY_PRUSA_MINI_INVERT_Z_DIR) + #define DIY_PRUSA_MINI_INVERT_Z_DIR false +#else // Stock + #define DIY_PRUSA_MINI_INVERT_Z_DIR true +#endif + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +#if ENABLED(DIY_PRUSA_MINI_INPUT_SHAPING) + #define INPUT_SHAPING_X + #define INPUT_SHAPING_Y +#else + #define S_CURVE_ACCELERATION // Not needed/recommended with Input Shaping +#endif + +//=========================================================================== +//================================= Hotend ================================== +//=========================================================================== + +#ifndef DIY_PRUSA_MINI_NOZZLE_TO_PROBE_OFFSET + #define DIY_PRUSA_MINI_NOZZLE_TO_PROBE_OFFSET { -29, -3, -0.4 } +#endif + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +#define NO_VARIANCE_MONITOR_WARNING // Suppress THERMAL_PROTECTION_VARIANCE_MONITOR warning + +#if ENABLED(DIY_PRUSA_MINI_THERMISTOR_STOCK_SEMITEC_104NT) + #define DIY_PRUSA_MINI_TEMP_SENSOR_0 5 +#elif ENABLED(DIY_PRUSA_MINI_THERMISTOR_GENERIC_100K) + #define DIY_PRUSA_MINI_TEMP_SENSOR_0 1 +#endif + +#if ENABLED(DIY_PRUSA_MINI_HOTEND_MPCTEMP) + #define MPCTEMP + + #if DISABLED(DIY_PRUSA_MINI_CUSTOM_HOTEND_MPCTEMP) + #define DIY_PRUSA_MINI_CUSTOM_MPC_HEATER_POWER { 40.0f } + #define DIY_PRUSA_MINI_CUSTOM_MPC_BLOCK_HEAT_CAPACITY { 10.46f } + #define DIY_PRUSA_MINI_CUSTOM_MPC_SENSOR_RESPONSIVENESS { 0.7801f } + #define DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF { 0.0564f } + #define DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 { 0.1264f } + #define DIY_PRUSA_MINI_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } + #endif +#else + #define PIDTEMP + + #if DISABLED(DIY_PRUSA_MINI_CUSTOM_HOTEND_PID) + #define DIY_PRUSA_MINI_DEFAULT_Kp 7.00 // 21.80 + #define DIY_PRUSA_MINI_DEFAULT_Ki 0.50 // 2.75 + #define DIY_PRUSA_MINI_DEFAULT_Kd 45.00 // 43.30 + #endif +#endif + +#if DISABLED(DIY_PRUSA_MINI_CUSTOM_BED_PID) + #define DIY_PRUSA_MINI_DEFAULT_bedKp 120.00 // 36.80 + #define DIY_PRUSA_MINI_DEFAULT_bedKi 1.50 // 2.72 + #define DIY_PRUSA_MINI_DEFAULT_bedKd 600.00 // 332.40 +#endif + +//=========================================================================== +//================================== Fans =================================== +//=========================================================================== + +#if ENABLED(DIY_PRUSA_MINI_PART_COOLING_FAN_GENERIC) + #define DIY_PRUSA_MINI_FAN_MIN_PWM 0 +#elif ENABLED(DIY_PRUSA_MINI_PART_COOLING_FAN_24V_DELTA_BFB0524HH) + #define DIY_PRUSA_MINI_FAN_MIN_PWM 20 +#elif ENABLED(DIY_PRUSA_MINI_PART_COOLING_FAN_24V_SOUNDORIGINAL) + #define DIY_PRUSA_MINI_FAN_MIN_PWM 50 // 26 +#endif + +//=========================================================================== +//============================== Bed Leveling =============================== +//=========================================================================== + +#if ENABLED(DIY_PRUSA_MINI_BED_LEVELING_BILINEAR) + #define AUTO_BED_LEVELING_BILINEAR + #define G29_RETRY_AND_RECOVER +#elif ENABLED(DIY_PRUSA_MINI_BED_LEVELING_UBL) + #define AUTO_BED_LEVELING_UBL + #define MESH_EDIT_GFX_OVERLAY +#endif + +//=========================================================================== +//============================== Custom Menus =============================== +//=========================================================================== + +// Sheet Profiles Menu +#if ENABLED(DIY_PRUSA_MINI_SHEET_PROFILES_MENU) + #define CUSTOM_MENU_CONFIG + + #if defined(DIY_PRUSA_MINI_SHEET_1_DESC) && defined(DIY_PRUSA_MINI_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_DESC DIY_PRUSA_MINI_SHEET_1_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_2_DESC) && defined(DIY_PRUSA_MINI_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_DESC DIY_PRUSA_MINI_SHEET_2_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_3_DESC) && defined(DIY_PRUSA_MINI_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_DESC DIY_PRUSA_MINI_SHEET_3_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_4_DESC) && defined(DIY_PRUSA_MINI_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_DESC DIY_PRUSA_MINI_SHEET_4_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_5_DESC) && defined(DIY_PRUSA_MINI_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_DESC DIY_PRUSA_MINI_SHEET_5_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_6_DESC) && defined(DIY_PRUSA_MINI_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_DESC DIY_PRUSA_MINI_SHEET_6_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_7_DESC) && defined(DIY_PRUSA_MINI_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_DESC DIY_PRUSA_MINI_SHEET_7_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_8_DESC) && defined(DIY_PRUSA_MINI_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_DESC DIY_PRUSA_MINI_SHEET_8_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_9_DESC) && defined(DIY_PRUSA_MINI_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_DESC DIY_PRUSA_MINI_SHEET_9_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_CONFIRM + #endif + + #if defined(DIY_PRUSA_MINI_SHEET_10_DESC) && defined(DIY_PRUSA_MINI_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_DESC DIY_PRUSA_MINI_SHEET_10_DESC ": " STRINGIFY(DIY_PRUSA_MINI_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_GCODE "M851 Z" STRINGIFY(DIY_PRUSA_MINI_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_CONFIRM + #endif +#endif + +// Calibration Menu +#if ENABLED(DIY_PRUSA_MINI_CALIBRATION_MENU) + #define CUSTOM_MENU_MAIN +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +#if ENABLED(DIY_PRUSA_MINI_REVERSE_ENCODER_DIRECTION) + #define REVERSE_ENCODER_DIRECTION +#endif diff --git a/Marlin/src/inc/DIY_Prusa_Mini_SanityCheck.h b/Marlin/src/inc/DIY_Prusa_Mini_SanityCheck.h new file mode 100644 index 0000000000..aff5f2ce30 --- /dev/null +++ b/Marlin/src/inc/DIY_Prusa_Mini_SanityCheck.h @@ -0,0 +1,199 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * DIY_Prusa_Mini_SanityCheck.h + * Validate DIY_Prusa_Mini_Configuration.h options at compile-time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define DIY_PRUSA_MINI_VERSION 20231220 + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +#if MANY(DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #error "Only one DIY_PRUSA_MINI_MOTHERBOARD option can be enabled at a time." +#elif NONE(DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, DIY_PRUSA_MINI_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #error "Invalid DIY_PRUSA_MINI_MOTHERBOARD option." +#endif + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +#if DISABLED(DIY_PRUSA_MINI_E_STEPPER_LDO_1_8) + #error "Invalid DIY_PRUSA_MINI_E_STEPPER option." +#endif + +#if DISABLED(DIY_PRUSA_MINI_XY_STEPPERS_LDO_1_8) + #error "Invalid DIY_PRUSA_MINI_XY_STEPPERS option." +#endif + +#if DISABLED(DIY_PRUSA_MINI_Z_STEPPER_LDO_1_8) + #error "Invalid DIY_PRUSA_MINI_Z_STEPPER option." +#endif + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +#if ENABLED(DIY_PRUSA_MINI_INPUT_SHAPING) + #ifndef DIY_PRUSA_MINI_SHAPING_FREQ_X + #error "DIY_PRUSA_MINI_SHAPING_FREQ_X is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_SHAPING_FREQ_Y) + #error "DIY_PRUSA_MINI_SHAPING_FREQ_Y is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_SHAPING_ZETA_X) + #error "DIY_PRUSA_MINI_SHAPING_ZETA_X is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_SHAPING_ZETA_Y) + #error "DIY_PRUSA_MINI_SHAPING_ZETA_Y is invalid or not defined." + #endif +#endif + +//=========================================================================== +//================================= Hotend ================================== +//=========================================================================== + +#if ALL(DIY_PRUSA_MINI_EXTRUDER_STOCK, DIY_PRUSA_MINI_EXTRUDER_BONDTECH_IFS) + #error "Only one DIY_PRUSA_MINI_EXTRUDER option can be enabled at a time." +#elif NONE(DIY_PRUSA_MINI_EXTRUDER_STOCK, DIY_PRUSA_MINI_EXTRUDER_BONDTECH_IFS) + #error "Invalid DIY_PRUSA_MINI_EXTRUDER option." +#endif + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +#if ALL(DIY_PRUSA_MINI_THERMISTOR_STOCK_SEMITEC_104NT, DIY_PRUSA_MINI_THERMISTOR_GENERIC_100K) + #error "Only one DIY_PRUSA_MINI_THERMISTOR option can be enabled at a time." +#elif NONE(DIY_PRUSA_MINI_THERMISTOR_STOCK_SEMITEC_104NT, DIY_PRUSA_MINI_THERMISTOR_GENERIC_100K) + #error "Invalid DIY_PRUSA_MINI_THERMISTOR option." +#endif + +#if ENABLED(DIY_PRUSA_MINI_CUSTOM_HOTEND_PID) + #ifndef DIY_PRUSA_MINI_DEFAULT_Kp + #error "DIY_PRUSA_MINI_DEFAULT_Kp is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_DEFAULT_Ki) + #error "DIY_PRUSA_MINI_DEFAULT_Ki is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_DEFAULT_Kd) + #error "DIY_PRUSA_MINI_DEFAULT_Kd is invalid or not defined." + #endif +#endif + +#if ENABLED(DIY_PRUSA_MINI_CUSTOM_BED_PID) + #ifndef DIY_PRUSA_MINI_DEFAULT_bedKp + #error "DIY_PRUSA_MINI_DEFAULT_bedKp is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_DEFAULT_bedKi) + #error "DIY_PRUSA_MINI_DEFAULT_bedKi is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_DEFAULT_bedKd) + #error "DIY_PRUSA_MINI_DEFAULT_bedKd is invalid or not defined." + #endif +#endif + +#if ALL(DIY_PRUSA_MINI_HOTEND_MPCTEMP, DIY_PRUSA_MINI_CUSTOM_HOTEND_PID) + #error "DIY_PRUSA_MINI_HOTEND_MPCTEMP and DIY_PRUSA_MINI_CUSTOM_HOTEND_PID cannot be enabled at the same time." +#endif + +#if ENABLED(DIY_PRUSA_MINI_CUSTOM_HOTEND_MPCTEMP) + #if DISABLED(DIY_PRUSA_MINI_HOTEND_MPCTEMP) + #error "DIY_PRUSA_MINI_CUSTOM_HOTEND_MPCTEMP requires DIY_PRUSA_MINI_HOTEND_MPCTEMP." + #elif !defined(DIY_PRUSA_MINI_CUSTOM_MPC_HEATER_POWER) + #error "DIY_PRUSA_MINI_CUSTOM_MPC_HEATER_POWER is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_CUSTOM_MPC_BLOCK_HEAT_CAPACITY) + #error "DIY_PRUSA_MINI_CUSTOM_MPC_BLOCK_HEAT_CAPACITY is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_CUSTOM_MPC_SENSOR_RESPONSIVENESS) + #error "DIY_PRUSA_MINI_CUSTOM_MPC_SENSOR_RESPONSIVENESS is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF) + #error "DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255) + #error "DIY_PRUSA_MINI_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 is invalid or not defined." + #elif !defined(DIY_PRUSA_MINI_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM) + #error "DIY_PRUSA_MINI_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM is invalid or not defined." + #endif +#endif + +//=========================================================================== +//============================ Part Cooling Fan ============================= +//=========================================================================== + +#if MANY(DIY_PRUSA_MINI_PART_COOLING_FAN_GENERIC, DIY_PRUSA_MINI_PART_COOLING_FAN_24V_DELTA_BFB0524HH, DIY_PRUSA_MINI_PART_COOLING_FAN_24V_SOUNDORIGINAL) + #error "Only one DIY_PRUSA_MINI_PART_COOLING_FAN option can be enabled at a time." +#elif NONE(DIY_PRUSA_MINI_PART_COOLING_FAN_GENERIC, DIY_PRUSA_MINI_PART_COOLING_FAN_24V_DELTA_BFB0524HH, DIY_PRUSA_MINI_PART_COOLING_FAN_24V_SOUNDORIGINAL) + #error "Invalid DIY_PRUSA_MINI_PART_COOLING_FAN option." +#endif + +//=========================================================================== +//============================== Bed Leveling =============================== +//=========================================================================== + +#if ALL(DIY_PRUSA_MINI_BED_LEVELING_BILINEAR, DIY_PRUSA_MINI_BED_LEVELING_UBL) + #error "Only one DIY_PRUSA_MINI_BED_LEVELING option can be enabled at a time." +#elif NONE(DIY_PRUSA_MINI_BED_LEVELING_BILINEAR, DIY_PRUSA_MINI_BED_LEVELING_UBL) + #error "Invalid DIY_PRUSA_MINI_BED_LEVELING option." +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +#if DISABLED(DIY_PRUSA_MINI_DISPLAY_BTT_TFT35_E3_TFT) + #error "Invalid DIY_PRUSA_MINI_DISPLAY option." +#endif + +#ifndef DIY_PRUSA_MINI_LCD_LANGUAGE + #error "Invalid DIY_PRUSA_MINI_LCD_LANGUAGE option." +#endif + +//=========================================================================== +//=========================== Sheet Profiles Menu =========================== +//=========================================================================== + +#if ENABLED(DIY_PRUSA_MINI_SHEET_PROFILES_MENU) + // Description is enabled, but no offset + #if defined(DIY_PRUSA_MINI_SHEET_1_DESC) && !defined(DIY_PRUSA_MINI_SHEET_1_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_1_OFFSET is required when DIY_PRUSA_MINI_SHEET_1_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_2_DESC) && !defined(DIY_PRUSA_MINI_SHEET_2_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_2_OFFSET is required when DIY_PRUSA_MINI_SHEET_2_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_3_DESC) && !defined(DIY_PRUSA_MINI_SHEET_3_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_3_OFFSET is required when DIY_PRUSA_MINI_SHEET_3_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_4_DESC) && !defined(DIY_PRUSA_MINI_SHEET_4_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_4_OFFSET is required when DIY_PRUSA_MINI_SHEET_4_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_5_DESC) && !defined(DIY_PRUSA_MINI_SHEET_5_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_5_OFFSET is required when DIY_PRUSA_MINI_SHEET_5_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_6_DESC) && !defined(DIY_PRUSA_MINI_SHEET_6_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_6_OFFSET is required when DIY_PRUSA_MINI_SHEET_6_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_7_DESC) && !defined(DIY_PRUSA_MINI_SHEET_7_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_7_OFFSET is required when DIY_PRUSA_MINI_SHEET_7_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_8_DESC) && !defined(DIY_PRUSA_MINI_SHEET_8_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_8_OFFSET is required when DIY_PRUSA_MINI_SHEET_8_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_9_DESC) && !defined(DIY_PRUSA_MINI_SHEET_9_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_9_OFFSET is required when DIY_PRUSA_MINI_SHEET_9_DESC is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_10_DESC) && !defined(DIY_PRUSA_MINI_SHEET_10_OFFSET) + #error "DIY_PRUSA_MINI_SHEET_10_OFFSET is required when DIY_PRUSA_MINI_SHEET_10_DESC is enabled." + #endif + + // Offset is enabled, but no description + #if defined(DIY_PRUSA_MINI_SHEET_1_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_1_DESC) + #error "DIY_PRUSA_MINI_SHEET_1_DESC is required when DIY_PRUSA_MINI_SHEET_1_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_2_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_2_DESC) + #error "DIY_PRUSA_MINI_SHEET_2_DESC is required when DIY_PRUSA_MINI_SHEET_2_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_3_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_3_DESC) + #error "DIY_PRUSA_MINI_SHEET_3_DESC is required when DIY_PRUSA_MINI_SHEET_3_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_4_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_4_DESC) + #error "DIY_PRUSA_MINI_SHEET_4_DESC is required when DIY_PRUSA_MINI_SHEET_4_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_5_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_5_DESC) + #error "DIY_PRUSA_MINI_SHEET_5_DESC is required when DIY_PRUSA_MINI_SHEET_5_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_6_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_6_DESC) + #error "DIY_PRUSA_MINI_SHEET_6_DESC is required when DIY_PRUSA_MINI_SHEET_6_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_7_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_7_DESC) + #error "DIY_PRUSA_MINI_SHEET_7_DESC is required when DIY_PRUSA_MINI_SHEET_7_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_8_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_8_DESC) + #error "DIY_PRUSA_MINI_SHEET_8_DESC is required when DIY_PRUSA_MINI_SHEET_8_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_9_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_9_DESC) + #error "DIY_PRUSA_MINI_SHEET_9_DESC is required when DIY_PRUSA_MINI_SHEET_9_OFFSET is enabled." + #elif defined(DIY_PRUSA_MINI_SHEET_10_OFFSET) && !defined(DIY_PRUSA_MINI_SHEET_10_DESC) + #error "DIY_PRUSA_MINI_SHEET_10_DESC is required when DIY_PRUSA_MINI_SHEET_10_OFFSET is enabled." + #endif +#endif diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h index c2191ab1b7..297d6e1d09 100644 --- a/Marlin/src/inc/MarlinConfigPre.h +++ b/Marlin/src/inc/MarlinConfigPre.h @@ -36,6 +36,12 @@ #include "../core/macros.h" #include "../core/boards.h" + +// DIY_PRUSA_MINI files +#include "../../DIY_Prusa_Mini_Configuration.h" +#include "DIY_Prusa_Mini_SanityCheck.h" +#include "DIY_Prusa_Mini_Conditionals.h" + #include "../../Configuration.h" #ifdef CUSTOM_VERSION_FILE diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 3f0abecc28..b9779094e8 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -25,7 +25,7 @@ * Release version. Leave the Marlin version or apply a custom scheme. */ #ifndef SHORT_BUILD_VERSION - #define SHORT_BUILD_VERSION "bugfix-2.1.x" + #define SHORT_BUILD_VERSION "DIY Prusa Mini 2.1.x" #endif /** diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index d162881993..d50ed4c4f4 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -621,7 +621,7 @@ #elif MB(BTT_SKR_MINI_E3_V1_2) #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V2_0) - #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RE_btt env:STM32F103RE_btt_USB #elif MB(BTT_SKR_MINI_MZ_V1_0) #include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_E3_DIP) diff --git a/README.md b/README.md index ac496aac21..c66dc9889f 100644 --- a/README.md +++ b/README.md @@ -1,154 +1,96 @@ -

MarlinFirmware's logo

+

MarlinFirmware's logo

-

Marlin 3D Printer Firmware

+

DIY Prusa Mini Marlin Firmware

- GPL-V3.0 License - Contributors - Last Release Date - CI Status - GitHub Sponsors + GPL-V3.0 License + Contributors + Last Commit Date + CI Status + GitHub Sponsors
- Follow MarlinFirmware on Mastodon + Follow thisiskeithb on Twitter + Follow thisiskeithb on Mastodon

-Additional documentation can be found at the [Marlin Home Page](https://marlinfw.org/). -Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by! +

⚠️ This is a work in progress and parts list will likely change ⚠️

-## Marlin 2.1 Bugfix Branch +## Configuring DIY Prusa Mini Firmware -__Not for production use. Use with caution!__ +To configure this firmware, enable options in [`DIY_Prusa_Mini_Configuration.h`](Marlin/DIY_Prusa_Mini_Configuration.h). No other config file editing is required! -Marlin 2.1 takes this popular RepRap firmware to the next level by adding support for much faster 32-bit and ARM-based boards while improving support for 8-bit AVR boards. Read about Marlin's decision to use a "Hardware Abstraction Layer" below. +## Building DIY Prusa Mini Firmware -This branch is for patches to the latest 2.1.x release version. Periodically this branch will form the basis for the next minor 2.1.x release. +To build this firmware, you'll need [Visual Studio Code](https://code.visualstudio.com/) with [PlatformIO](https://docs.platformio.org/en/latest/integration/ide/vscode.html#platformio-ide-for-vscode). Detailed setup instructions can be found in the [Installing Marlin (PlatformIO with VSCode)](https://marlinfw.org/docs/basics/install_platformio_vscode.html) guide. -Download earlier versions of Marlin on the [Releases page](https://github.com/MarlinFirmware/Marlin/releases). +## Specs -## Example Configurations +This firmware is configured for a DIY Prusa Mini powered by the following hardware: -Before you can build Marlin for your machine you'll need a configuration for your specific hardware. Upon request, your vendor will be happy to provide you with the complete source code and configurations for your machine, but you'll need to get updated configuration files if you want to install a newer version of Marlin. Fortunately, Marlin users have contributed dozens of tested configurations to get you started. Visit the [MarlinFirmware/Configurations](https://github.com/MarlinFirmware/Configurations) repository to find the right configuration for your hardware. +### Frame +* [Prusa Mini 3030 Extrusion, Y carriage, Z bottom plate, 10mm & 8mm rods](https://www.aliexpress.com/item/2255800461956892.html) +* [Prusa Mini hardware kit](https://www.aliexpress.com/item/2255800703957883.html) -## Building Marlin 2.1 +### Motherboard +* [BigTreeTech SKR Mini E3 V3/V3.01](https://biqu.equipment/collections/control-board/products/bigtreetech-skr-mini-e3-v2-0-32-bit-control-board-for-ender-3?variant=39982232174690) or [BigTreeTech SKR Mini E3 V2](https://www.biqu.equipment/products/bigtreetech-skr-mini-e3-v2-0-32-bit-control-board-integrated-tmc2209-uart-for-ender-3) +* Modded Prusa Mini control box (link tbd) -To build and upload Marlin you will use one of these tools: +### Power +* [MEAN WELL 24V 160W 6.67A GST160A24-R7B desktop AC->DC power adapter](https://www.mouser.com/ProductDetail/MEAN-WELL/GST160A24-R7B?qs=XfZQyRplo5SmNuFq2sVqQA%3D%3D) +* [Kycon KPJX-PM-4S DC power connector](https://www.mouser.com/ProductDetail/Kycon/KPJX-PM-4S?qs=zorda86t5M%2Fdp%252BTtr6by2g%3D%3D) -- The free [Visual Studio Code](https://code.visualstudio.com/download) using the [Auto Build Marlin](https://marlinfw.org/docs/basics/auto_build_marlin.html) extension. -- The free [Arduino IDE](https://www.arduino.cc/en/main/software) : See [Building Marlin with Arduino](https://marlinfw.org/docs/basics/install_arduino.html) -- You can also use VSCode with devcontainer : See [Installing Marlin (VSCode devcontainer)](http://marlinfw.org/docs/basics/install_devcontainer_vscode.html). +### Hotend / Extruder + * [Prusa Mini heatsink](https://www.prusa3d.com/product/hotend-heatsink-mini/) + * [Prusa Mini heaterblock](https://www.prusa3d.com/product/hotend-heaterblock-mini/) + * [Bondtech Prusa Mini heatbreak](https://www.bondtech.se/product/bondtech-heat-break-for-prusa-mini/) + * [*Optional* Bondtech Prusa Mini IFS extruder](https://www.bondtech.se/product/ifs-extruder-for-prusa-mini/) + * [Prusa Mini PTFE](https://www.prusa3d.com/product/extruder-print-head-ptfe-tube-mini/) + * [Mechatronics G4010L24B-RSR 24v 40mm fan](https://www.digikey.com/en/products/detail/G4010L24B-RSR/1570-G4010L24B-RSR-ND/11492597) (hotend cooling) + * [SoundOriginal 24V 5015 fan](https://www.amazon.com/dp/B0755BY9RH) (parts cooling) + * [SuperPINDA probe](https://www.prusa3d.com/product/superpinda/) -Marlin is optimized to build with the **PlatformIO IDE** extension for **Visual Studio Code**. You can still build Marlin with **Arduino IDE**, and we hope to improve the Arduino build experience, but at this time PlatformIO is the better choice. +### Bed +* Original Prusa Magnetic heatbed MINI/+ 24V (assembly) [Printed Solid](https://www.printedsolid.com/products/original-prusa-magnetic-heatbed-mini-24v-assembly) | [AliExpress](https://www.aliexpress.us/item/2255800712071652.html) +* [Original Prusa Mini Spring Steel Sheet With Smooth Double-sided PEI](https://www.printedsolid.com/products/original-prusa-mini-spring-steel-sheet-with-smooth-double-sided-pei) +* [Original Prusa Mini Double-sided Textured PEI Powder-coated Spring Steel Sheet](https://www.printedsolid.com/products/original-prusa-mini-double-sided-textured-pei-powder-coated-spring-steel-sheet) +* [Original Prusa Mini Double-sided Powder-coated PEI SATIN Spring Steel Sheet](https://www.printedsolid.com/products/original-prusa-mini-double-sided-powder-coated-pei-satin-spring-steel-sheet) -## Hardware Abstraction Layer (HAL) +### LCD Controller +* [BigTreeTech TFT35 E3 V3](https://www.biqu.equipment/collections/lcd/products/btt-tft35-e3-v3-0-display-touch-screen-two-working-modes) +* Modded Prusa Mini Ender LCD Remix mount (link tbd) -Marlin includes an abstraction layer to provide a common API for all the platforms it targets. This allows Marlin code to address the details of motion and user interface tasks at the lowest and highest levels with no system overhead, tying all events directly to the hardware clock. +### Steppers +* **X-axis:** [LDO COOLER LDO-42STH40-1004ASR](https://www.printedsolid.com/products/ldo-nema-17-motor-cooler-ldo-42sth40-1004asr) 1.8° +* **Y-axis:** [LDO COOLER LDO-42STH40-1004ASR](https://www.printedsolid.com/products/ldo-nema-17-motor-cooler-ldo-42sth40-1004asr) 1.8° +* **Z-axis:** [LDO LDO-42STH34-1004L321EC](https://www.printedsolid.com/products/ldo-nema-17-motor-mk3-z-motor-qlink-ldo-42sth34-1004l321ec) 1.8° with integrated leadscrew +* **E-axis:** [LDO COOLER LDO-42STH40-1004ASR](https://www.printedsolid.com/products/ldo-nema-17-motor-cooler-ldo-42sth40-1004asr) 1.8° + -Every new HAL opens up a world of hardware. At this time we need HALs for RP2040 and the Duet3D family of boards. A HAL that wraps an RTOS is an interesting concept that could be explored. Did you know that Marlin includes a Simulator that can run on Windows, macOS, and Linux? Join the Discord to help move these sub-projects forward! +### Motion System +* **X-axis** [Gates 2GT PowerGrip belt](https://www.prusa3d.com/product/belt-x-axis/) +* **Y-axis** [Gates 2GT PowerGrip belt](https://www.prusa3d.com/product/belt-y-axis/) +* 2 x [Timing pulley T16-2GT](https://www.prusa3d.com/product/timing-pulley-t16-2gt/) +* 2 x [Bearing housing 623h](https://www.prusa3d.com/product/bearing-housing-623h/) +* [LM8UU & LM10LUU bearing package](https://www.aliexpress.com/item/2255800569099702.html) -## 8-Bit AVR Boards +## SuperPINDA Wiring -A core tenet of this project is to keep supporting 8-bit AVR boards while also maintaining a single codebase that applies equally to all machines. We want casual hobbyists to benefit from the community's innovations as much as possible just as much as those with fancier machines. Plus, those old AVR-based machines are often the best for your testing and feedback! +| SKR Mini E3 V2 & V3
Z-Probe Connector | SKR Mini E3 V3.01
Z-Probe Connector | SuperPINDA Wire Colors | +|:-:|:-:|:-:| +| PC1 | PA1 | BLACK | +| GND | GND | BLUE | +| PA1 | PA0 | | +| +5V | +5V | BROWN | +| GND | GND | | -### Supported Platforms +## Credits - Platform|MCU|Example Boards - --------|---|------- - [Arduino AVR](https://www.arduino.cc/)|ATmega|RAMPS, Melzi, RAMBo - [Teensy++ 2.0](https://www.microchip.com/en-us/product/AT90USB1286)|AT90USB1286|Printrboard - [Arduino Due](https://www.arduino.cc/en/Guide/ArduinoDue)|SAM3X8E|RAMPS-FD, RADDS, RAMPS4DUE - [ESP32](https://github.com/espressif/arduino-esp32)|ESP32|FYSETC E4, E4d@BOX, MRR - [LPC1768](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-cortex-m3/512-kb-flash-64-kb-sram-ethernet-usb-lqfp100-package:LPC1768FBD100)|ARM® Cortex-M3|MKS SBASE, Re-ARM, Selena Compact - [LPC1769](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-cortex-m3/512-kb-flash-64-kb-sram-ethernet-usb-lqfp100-package:LPC1769FBD100)|ARM® Cortex-M3|Smoothieboard, Azteeg X5 mini, TH3D EZBoard - [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)|ARM® Cortex-M3|Malyan M200, GTM32 Pro, MKS Robin, BTT SKR Mini - [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)|ARM® Cortex-M4|ARMED, Rumba32, SKR Pro, Lerdge, FYSETC S6, Artillery Ruby - [STM32F7x6](https://www.st.com/en/microcontrollers-microprocessors/stm32f7x6.html)|ARM® Cortex-M7|The Borg, RemRam V1 - [STM32G0B1RET6](https://www.st.com/en/microcontrollers-microprocessors/stm32g0x1.html)|ARM® Cortex-M0+|BigTreeTech SKR mini E3 V3.0 - [STM32H743xIT6](https://www.st.com/en/microcontrollers-microprocessors/stm32h743-753.html)|ARM® Cortex-M7|BigTreeTech SKR V3.0, SKR EZ V3.0, SKR SE BX V2.0/V3.0 - [SAMD51P20A](https://www.adafruit.com/product/4064)|ARM® Cortex-M4|Adafruit Grand Central M4 - [Teensy 3.5](https://www.pjrc.com/store/teensy35.html)|ARM® Cortex-M4| - [Teensy 3.6](https://www.pjrc.com/store/teensy36.html)|ARM® Cortex-M4| - [Teensy 4.0](https://www.pjrc.com/store/teensy40.html)|ARM® Cortex-M7| - [Teensy 4.1](https://www.pjrc.com/store/teensy41.html)|ARM® Cortex-M7| - Linux Native|x86/ARM/etc.|Raspberry Pi +If you find this project helpful, please consider donating! -## Submitting Patches + - Keith Bennett [[thisiskeithb](https://github.com/thisiskeithb)], DIY Prusa Mini Creator - [💸 Github Sponsors](https://github.com/sponsors/thisiskeithb) / [☕ Ko-fi](https://ko-fi.com/thisiskeithb) -Proposed patches should be submitted as a Pull Request against the ([bugfix-2.1.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.1.x)) branch. - -- This branch is for fixing bugs and integrating any new features for the duration of the Marlin 2.1.x life-cycle. -- Follow the [Coding Standards](https://marlinfw.org/docs/development/coding_standards.html) to gain points with the maintainers. -- Please submit Feature Requests and Bug Reports to the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues/new/choose). Support resources are also listed there. -- Whenever you add new features, be sure to add tests to `buildroot/tests` and then run your tests locally, if possible. - - It's optional: Running all the tests on Windows might take a long time, and they will run anyway on GitHub. - - If you're running the tests on Linux (or on WSL with the code on a Linux volume) the speed is much faster. - - You can use `make tests-all-local` or `make tests-single-local TEST_TARGET=...`. - - If you prefer Docker you can use `make tests-all-local-docker` or `make tests-all-local-docker TEST_TARGET=...`. - -## Marlin Support - -The Issue Queue is reserved for Bug Reports and Feature Requests. To get help with configuration and troubleshooting, please use the following resources: - -- [Marlin Documentation](https://marlinfw.org) - Official Marlin documentation -- [Marlin Discord](https://discord.gg/n5NJ59y) - Discuss issues with Marlin users and developers -- Facebook Group ["Marlin Firmware"](https://www.facebook.com/groups/1049718498464482/) -- RepRap.org [Marlin Forum](https://forums.reprap.org/list.php?415) -- Facebook Group ["Marlin Firmware for 3D Printers"](https://www.facebook.com/groups/3Dtechtalk/) -- [Marlin Configuration](https://www.youtube.com/results?search_query=marlin+configuration) on YouTube - -## Contributors - -Marlin is constantly improving thanks to a huge number of contributors from all over the world bringing their specialties and talents. Huge thanks are due to [all the contributors](https://github.com/MarlinFirmware/Marlin/graphs/contributors) who regularly patch up bugs, help direct traffic, and basically keep Marlin from falling apart. Marlin's continued existence would not be possible without them. - -## Administration - -Regular users can open and close their own issues, but only the administrators can do project-related things like add labels, merge changes, set milestones, and kick trolls. The current Marlin admin team consists of: - - - - -
Project Maintainer
- - 🇺🇸  **Scott Lahteine** -       [@thinkyhead](https://github.com/thinkyhead) -       [  Donate 💸  ](https://www.thinkyhead.com/donate-to-marlin) - - - - 🇺🇸  **Roxanne Neufeld** -       [@Roxy-3D](https://github.com/Roxy-3D) - - 🇺🇸  **Keith Bennett** -       [@thisiskeithb](https://github.com/thisiskeithb) -       [  Donate 💸  ](https://github.com/sponsors/thisiskeithb) - - 🇺🇸  **Jason Smith** -       [@sjasonsmith](https://github.com/sjasonsmith) - - - - 🇧🇷  **Victor Oliveira** -       [@rhapsodyv](https://github.com/rhapsodyv) - - 🇬🇧  **Chris Pepper** -       [@p3p](https://github.com/p3p) - -🇳🇿  **Peter Ellens** -       [@ellensp](https://github.com/ellensp) -       [  Donate 💸  ](https://ko-fi.com/ellensp) - - - - 🇺🇸  **Bob Kuhn** -       [@Bob-the-Kuhn](https://github.com/Bob-the-Kuhn) - - 🇳🇱  **Erik van der Zalm** -       [@ErikZalm](https://github.com/ErikZalm) -       [  Donate 💸  ](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software) - -
+First layer calibration based on [Prusa's MK3/S/+ "meander" first layer calibration](https://github.com/prusa3d/Prusa-Firmware/blob/MK3/Firmware/first_lay_cal.cpp). ## License -Marlin is published under the [GPL license](/LICENSE) because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork. - -While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own. +Marlin and the DIY Prusa Mini Firmware is published under the [GPL license](/LICENSE) because we believe in open development. diff --git a/buildroot/share/pixmaps/logo/diy-prusa-mini.png b/buildroot/share/pixmaps/logo/diy-prusa-mini.png new file mode 100644 index 0000000000..3274a7e78a Binary files /dev/null and b/buildroot/share/pixmaps/logo/diy-prusa-mini.png differ diff --git a/config/README.md b/config/README.md deleted file mode 100644 index b19527ccc3..0000000000 --- a/config/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Where have all the configurations gone? - -Marlin configurations for specific machines are now maintained in their own repository at: - -## https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x - -Configuration files for use with the nightly `bugfix-2.1.x` branch can be downloaded from: - -## https://github.com/MarlinFirmware/Configurations/archive/bugfix-2.1.x.zip diff --git a/platformio.ini b/platformio.ini index 76200cbbd5..006199e0ac 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,10 +10,17 @@ # Automatic targets - enable auto-uploading #targets = upload +# DIY Prusa Mini Environment Options: +; STM32F401RC_btt +; STM32G0B1RE_btt +; STM32F103RC_btt +; STM32F103RE_btt +; STM32F103RE_btt_USB + [platformio] src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards -default_envs = mega2560 +default_envs = STM32G0B1RE_btt include_dir = Marlin extra_configs = Marlin/config.ini