From 376167b80bca453c4329355e16c58e7be997f870 Mon Sep 17 00:00:00 2001 From: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com> Date: Mon, 11 May 2020 18:56:15 -0700 Subject: [PATCH] Improve BigTreeTech BTT002 config (#97) --- .../Configuration.h | 53 +++++++-------- .../Configuration_adv.h | 27 ++++---- .../BTT002 - Prusa MK3S - TMC2209/README.md | 65 ++++++++++++++++++- 3 files changed, 104 insertions(+), 41 deletions(-) diff --git a/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration.h b/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration.h index ed5fc931e8..f49dcb2d76 100644 --- a/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration.h +++ b/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration.h @@ -71,7 +71,7 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(thisiskeithb, BTT002 MK3S w/TMC2209s)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(thisiskeithb & codiac2600: BTT002 MK3S/TMC2209s)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) /** @@ -437,12 +437,12 @@ #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 #define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109 -#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer -#define TEMP_HYSTERESIS 5 // (°C) Temperature proximity considered "close enough" to the target +#define TEMP_WINDOW 3 // (°C) Temperature proximity for the "temperature reached" timer +#define TEMP_HYSTERESIS 8 // (°C) Temperature proximity considered "close enough" to the target #define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to "settle" in M190 -#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer -#define TEMP_BED_HYSTERESIS 5 // (°C) Temperature proximity considered "close enough" to the target +#define TEMP_BED_WINDOW 3 // (°C) Temperature proximity for the "temperature reached" timer +#define TEMP_BED_HYSTERESIS 8 // (°C) Temperature proximity considered "close enough" to the target // Below this temperature the heater will be switched off // because it probably indicates a broken thermistor wire. @@ -459,7 +459,7 @@ // 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 295 +#define HEATER_0_MAXTEMP 310 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 @@ -467,7 +467,7 @@ #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 -#define BED_MAXTEMP 120 +#define BED_MAXTEMP 135 //=========================================================================== //============================= PID Settings ================================ @@ -729,7 +729,7 @@ * Override with M203 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 120 } +#define DEFAULT_MAX_FEEDRATE { 200, 200, 30, 80 } //#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(LIMITED_MAX_FR_EDITING) @@ -742,7 +742,7 @@ * Override with M201 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_ACCELERATION { 2000, 2000, 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) @@ -757,9 +757,9 @@ * M204 R Retract Acceleration * M204 T Travel Acceleration */ -#define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves -#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts -#define DEFAULT_TRAVEL_ACCELERATION 2000 // 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) @@ -783,7 +783,7 @@ #endif #endif -#define DEFAULT_EJERK 3.5 // May be used by Linear Advance +#define DEFAULT_EJERK 4 // May be used by Linear Advance /** * Junction Deviation Factor @@ -793,7 +793,7 @@ * http://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html */ #if DISABLED(CLASSIC_JERK) - #define JUNCTION_DEVIATION_MM 0.017 // (mm) Distance from real junction edge + #define JUNCTION_DEVIATION_MM 0.02 // (mm) Distance from real junction edge #endif /** @@ -992,9 +992,9 @@ * 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 2 // Z Clearance for Deploy/Stow +#define Z_CLEARANCE_DEPLOY_PROBE 0 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 2 // Z Clearance between probe points -#define Z_CLEARANCE_MULTI_PROBE 2 // Z Clearance between multiple probes +#define Z_CLEARANCE_MULTI_PROBE 1 // Z Clearance between multiple probes //#define Z_AFTER_PROBING 5 // Z position after probing is done #define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping @@ -1093,7 +1093,7 @@ // Travel limits (mm) after homing, corresponding to endstop positions. #define X_MIN_POS 0 #define Y_MIN_POS -4 -#define Z_MIN_POS 0.15 +#define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #define Z_MAX_POS 210 @@ -1112,7 +1112,7 @@ #if ENABLED(MIN_SOFTWARE_ENDSTOPS) #define MIN_SOFTWARE_ENDSTOP_X #define MIN_SOFTWARE_ENDSTOP_Y - //#define MIN_SOFTWARE_ENDSTOP_Z + #define MIN_SOFTWARE_ENDSTOP_Z #endif // Max software endstops constrain movement within maximum coordinate bounds @@ -1359,7 +1359,7 @@ // Homing speeds (mm/m) #define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) +#define HOMING_FEEDRATE_Z (5*60) // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS @@ -1394,7 +1394,7 @@ * +-------------->X +-------------->X +-------------->Y * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR */ -#define SKEW_CORRECTION +//#define SKEW_CORRECTION #if ENABLED(SKEW_CORRECTION) // Input all length measurements here: @@ -1404,21 +1404,21 @@ // Or, set the default skew factors directly here // to override the above measurements: - //#define XY_SKEW_FACTOR 0.0 + #define XY_SKEW_FACTOR 0.0 - #define SKEW_CORRECTION_FOR_Z + //#define SKEW_CORRECTION_FOR_Z #if ENABLED(SKEW_CORRECTION_FOR_Z) #define XZ_DIAG_AC 282.8427124746 #define XZ_DIAG_BD 282.8427124746 #define YZ_DIAG_AC 282.8427124746 #define YZ_DIAG_BD 282.8427124746 #define YZ_SIDE_AD 200 - //#define XZ_SKEW_FACTOR 0.0 - //#define YZ_SKEW_FACTOR 0.0 + #define XZ_SKEW_FACTOR 0.0 + #define YZ_SKEW_FACTOR 0.0 #endif // Enable this option for M852 to set skew at runtime - #define SKEW_CORRECTION_GCODE + //#define SKEW_CORRECTION_GCODE #endif //============================================================================= @@ -1439,6 +1439,7 @@ #define EEPROM_SETTINGS // Persistent storage with M500 and M501 //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM. +#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. #endif @@ -1692,7 +1693,7 @@ // Use this option to override the number of step signals required to // move between next/prev menu items. // -//#define ENCODER_STEPS_PER_MENU_ITEM 1 +#define ENCODER_STEPS_PER_MENU_ITEM 1 /** * Encoder Direction Options diff --git a/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration_adv.h b/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration_adv.h index f0e6b2e904..18f3292292 100644 --- a/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration_adv.h +++ b/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/Configuration_adv.h @@ -170,21 +170,21 @@ * below 2. */ #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 8 // Degrees Celsius + #define WATCH_TEMP_INCREASE 2 // Degrees Celsius #endif /** * Thermal Protection parameters for the bed are just as above for hotends. */ #if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 40 // Seconds + #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds #define THERMAL_PROTECTION_BED_HYSTERESIS 8 // Degrees Celsius /** * As described above, except for the bed (M140/M190/M303). */ #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 8 // Degrees Celsius + #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius #endif /** @@ -380,7 +380,7 @@ * * Define one or both of these to override the default 0-255 range. */ -#define FAN_MIN_PWM 55 +#define FAN_MIN_PWM 80 //#define FAN_MAX_PWM 128 /** @@ -775,6 +775,9 @@ // Slow down the machine if the look ahead buffer is (by default) half full. // Increase the slowdown divisor for larger buffer sizes. #define SLOWDOWN +#if ENABLED(SLOWDOWN) + #define SLOWDOWN_DIVISOR 2 +#endif /** * XY Frequency limit @@ -1069,7 +1072,7 @@ //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files - #define EVENT_GCODE_SD_STOP "G28XY" // G-code to run on Stop Print (e.g., "G28XY" or "G27") + #define EVENT_GCODE_SD_STOP "G28XYE" // G-code to run on Stop 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 @@ -1865,7 +1868,7 @@ */ #if EXTRUDERS > 1 // Z raise distance for tool-change, as needed for some extruders - #define TOOLCHANGE_ZRAISE 2 // (mm) + #define TOOLCHANGE_ZRAISE 2 // (mm) //#define TOOLCHANGE_ZRAISE_BEFORE_RETRACT // Apply raise before swap retraction (if enabled) //#define TOOLCHANGE_NO_RETURN // Never return to previous position on tool-change #if ENABLED(TOOLCHANGE_NO_RETURN) @@ -2149,7 +2152,7 @@ #if AXIS_IS_TMC(Z) #define Z_CURRENT 600 - #define Z_CURRENT_HOME ((Z_CURRENT) / 2) + #define Z_CURRENT_HOME Z_CURRENT #define Z_MICROSTEPS 16 #define Z_RSENSE 0.11 #define Z_CHAIN_POS -1 @@ -2353,13 +2356,13 @@ * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD. * M913 X/Y/Z/E to live tune the setting */ - //#define HYBRID_THRESHOLD + #define HYBRID_THRESHOLD - #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X_HYBRID_THRESHOLD 120 // [mm/s] #define X2_HYBRID_THRESHOLD 100 - #define Y_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 120 #define Y2_HYBRID_THRESHOLD 100 - #define Z_HYBRID_THRESHOLD 3 + #define Z_HYBRID_THRESHOLD 100 #define Z2_HYBRID_THRESHOLD 3 #define Z3_HYBRID_THRESHOLD 3 #define Z4_HYBRID_THRESHOLD 3 @@ -2399,7 +2402,7 @@ #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) // TMC2209: 0...255. TMC2130: -64...63 - #define X_STALL_SENSITIVITY 100 + #define X_STALL_SENSITIVITY 90 #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY #define Y_STALL_SENSITIVITY 100 #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY diff --git a/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/README.md b/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/README.md index 54f21cc14c..fd5f6532c0 100644 --- a/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/README.md +++ b/config/examples/BigTreeTech/BTT002 - Prusa MK3S - TMC2209/README.md @@ -1,11 +1,70 @@ # BigTreeTech BTT002/TMC2209 Config for Prusa MK3S ## Requirements -- [Prusa MK3S](https://www.prusa3d.com/original-prusa-i3-mk3/) or MK3 with MK3S upgrade +- [Prusa MK3S](https://www.prusa3d.com/original-prusa-i3-mk3/) or MK3 with MK3S upgrade (required for filament runout to work properly) - BigTreeTech BTT002 motherboard -- 4 x TMC2209s +- 4 x BigTreeTech TMC2209s (DIAG pin location differs from Watterott's & similarl designs) ## Upgrade Notes * ⚠️ Cut or desolder the Z & E driver DIAG pins or they will interfere with PINDA & filament runout detection. ⚠️ * Set the jumpers under your drivers to "TMC2208-UART MODE": -![image](https://user-images.githubusercontent.com/13375512/74117621-24415000-4b6d-11ea-8811-f867e187ea0c.png) \ No newline at end of file +![image](https://user-images.githubusercontent.com/13375512/74117621-24415000-4b6d-11ea-8811-f867e187ea0c.png) + +## Changes to Start G-code +The `W` in Prusa's `G28 W ; home all without mesh bed level` G-code does not exist in Marlin and [`G80 ; mesh bed leveling`](https://marlinfw.org/docs/gcode/G080.html) cancels the current motion mode, so no bed leveling will take place. + +### PrusaSlicer +Paste the start g-code block below in the Printer Settings tab's Custom G-code section. Use the Filament Settings tab's Custom G-code section to add the [Linear Advance](https://marlinfw.org/docs/features/lin_advance.html) (`M900 K0.0`) value since it can be saved on a per-filament basis. +```gcode +G90 ; use absolute coordinates +M83 ; extruder relative mode +M104 S170 ; preheat extruder to 170 +M140 S[first_layer_bed_temperature] ; set bed temp +M190 S[first_layer_bed_temperature] ; wait for bed temp +G28 ; home all +G29 ; mesh bed leveling +G1 X0 Z0.6 Y-3.0 F1000.0 ; go outside print area +M109 S[first_layer_temperature] ; wait for extruder temp +G92 E0.0 +G1 X60.0 E9.0 F1000.0 ; intro line +G1 X100.0 E12.5 F1000.0 ; intro line +G92 E0.0 +``` + +### Cura +Paste the start g-code block below in the Start G-code section. Don't forget to add your [Linear Advance](https://marlinfw.org/docs/features/lin_advance.html) (`M900 K0.0`) value in the start G-code block below: +```gcode +G90 ; use absolute coordinates +M83 ; extruder relative mode +M900 K0.0 ; place your linear advance value here +M104 S170 ; preheat extruder to 170 +M140 S{material_bed_temperature_layer_0} ; set bed temp +M190 S{material_bed_temperature_layer_0} ; wait for bed temp +G28 ; home all +G29 ; mesh bed leveling +G1 X0 Z0.6 Y-3.0 F1000.0 ; go outside print area +M109 S{material_print_temperature_layer_0} ; wait for extruder temp +G92 E0.0 +G1 X60.0 E9.0 F1000.0 ; intro line +G1 X100.0 E12.5 F1000.0 ; intro line +G92 E0.0 +``` + +### Simplify3D +Paste the start g-code block below in the Starting Script section. Don't forget to add your [Linear Advance](https://marlinfw.org/docs/features/lin_advance.html) (`M900 K0.0`) value in the start G-code block below: +```gcode +G90 ; use absolute coordinates +M83 ; extruder relative mode +M900 K0.0 ; place your linear advance value here +M104 S170 ; preheat extruder to 170 +M140 S[bed0_temperature] ; set bed temp +M190 S[bed0_temperature] ; wait for bed temp +G28 ; home all +G29 ; mesh bed leveling +G1 X0 Z0.6 Y-3.0 F1000.0 ; go outside print area +M109 S[extruder0_temperature] T0 ; wait for extruder temp +G92 E0.0 +G1 X60.0 E9.0 F1000.0 ; intro line +G1 X100.0 E12.5 F1000.0 ; intro line +G92 E0.0 +``` \ No newline at end of file