diff --git a/firmware/klipper/configurations/VORON2_stock_250_printer.cfg b/firmware/klipper/configurations/VORON2_stock_250_printer.cfg index 8ac2c1e..0bf1393 100644 --- a/firmware/klipper/configurations/VORON2_stock_250_printer.cfg +++ b/firmware/klipper/configurations/VORON2_stock_250_printer.cfg @@ -37,29 +37,29 @@ # E1_STEP_PIN ar36 # E1_DIR_PIN ar34 # E1_ENABLE_PIN ar30 -# D10 ar10 -# D9 ar9 -# D8 ar8 +# D10 ar10 +# D9 ar9 +# D8 ar8 # TEMP_0_PIN analog13 # TEMP_1_PIN analog14 -# TEMP_2_PIN analog15 -# SERVO 1 (TOP) D11 -# SERVO 2 D6 -# SERVO 3 D5 -# SERVO 4 D4 +# TEMP_2_PIN analog15 +# SERVO 1 (TOP) D11 +# SERVO 2 D6 +# SERVO 3 D5 +# SERVO 4 D4 # use the following modifiers before the pin definition (ex: ^!ar99) -# ! invert the logic -# ^ activate 5v pullup (does not apply to all pins) -# mcu_name: use pins on additional MCU (ex: z:ar10) +# ! invert the logic +# ^ activate 5v pullup (does not apply to all pins) +# mcu_name: use pins on additional MCU (ex: z:ar10) # *** THINGS TO CHANGE/CHECK: *** # Arduino paths [mcu] section # Thermistor types [extruder] and [heater_bed] sections - See 'sensor types' list at end of file -# Microswitch (z endstop) location [homing_override] section -# Microswitch (z endstop) offset for Z0 [stepper_z] section +# Microswitch (z endstop) location [homing_override] section +# Microswitch (z endstop) offset for Z0 [stepper_z] section # Probe points [quad_gantry_level] section -# Min & Max gantry corner positions [quad_gantry_level] section +# Min & Max gantry corner positions [quad_gantry_level] section # PID tune [extruder] and [heater_bed] sections # Fine tune E steps [extruder] section @@ -215,6 +215,16 @@ heater_pin: ar10 # D10 on mcu_xye max_power: 1.0 sensor_type: ATC Semitec 104GT-2 +# use "ATC Semitec 104GT-2" for Trianglelab 104GT-2 and 104NT-4-R025H42G sensors +# Other sensor types +# "EPCOS 100K B57560G104F" +# "ATC Semitec 104GT-2" +# "NTC 100K beta 3950" +# "Honeywell 100K 135-104LAG-J01" +# "NTC 100K MGB18-104F39050L32" (Keenovo Heater Pad) +# "AD595" +# "PT100 INA826" + sensor_pin: analog13 # T0 on mcu_xye smooth_time: 3.0 @@ -225,13 +235,13 @@ pid_Kd: 89.337 min_extrude_temp: 170 min_temp: 0 max_temp: 270 -pressure_advance: 0 +# pressure_advance: 0 # The amount of raw filament to push into the extruder during # extruder acceleration. An equal amount of filament is retracted # during deceleration. It is measured in millimeters per # millimeter/second. The default is 0, which disables pressure # advance. -pressure_advance_lookahead_time: 0.010 +# pressure_advance_lookahead_time: 0.010 # A time (in seconds) to "look ahead" at future extrusion moves when # calculating pressure advance. This is used to reduce the # application of pressure advance during cornering moves that would @@ -408,9 +418,9 @@ sensor_pin: z:analog15 smooth_time: 3.0 max_power: 0.75 control: pid -pid_Kp=47.690 -pid_Ki=1.556 -pid_Kd=365.338 +pid_Kp: 47.690 +pid_Ki: 1.556 +pid_Kd: 365.338 min_temp: 0 max_temp: 110 @@ -456,11 +466,10 @@ set_position_z: 0 gcode: G90 G0 Z5 F600 - G90 G28 X Y G0 X179 Y250 F3600 -# XY Location of the FSR Switch. Update to your machines XY location. - G28 Z0 +# XY Location of the FSR Switch + G28 Z G0 Z10 F1800 G0 X125 Y125 Z20 F3600 @@ -488,19 +497,19 @@ retry_tolerance: 0.0075 # if retries are enabled then retry if any z_stepper movement was greater # than the retry_tolerance -[display] -# RepRapDiscount 128x64 Full Graphic Smart Controller -lcd_type: st7920 -cs_pin: z:ar16 -sclk_pin: z:ar23 -sid_pin: z:ar17 -# LCD connector on mcu_z -menu_timeout: 40 -# Timeout for menu. Being inactive this amount of seconds will exit the menu -# Default is 0 seconds (disabled) -encoder_pins: ^z:ar33, ^z:ar31 -click_pin: ^!z:ar35 -kill_pin: ^!z:ar41 +# [display] +# # RepRapDiscount 128x64 Full Graphic Smart Controller +# lcd_type: st7920 +# cs_pin: z:ar16 +# sclk_pin: z:ar23 +# sid_pin: z:ar17 +# # LCD connector on mcu_z +# menu_timeout: 40 +# # Timeout for menu. Being inactive this amount of seconds will exit the menu +# # Default is 0 seconds (disabled) +# encoder_pins: ^z:ar33, ^z:ar31 +# click_pin: ^!z:ar35 +# kill_pin: ^!z:ar41 ### Macros ### @@ -508,13 +517,17 @@ kill_pin: ^!z:ar41 [gcode_macro G32] gcode: - G28 - QUAD_GANTRY_LEVEL - G28 Z0 - G0 X125 Y125 Z20 F6000 + {% if printer.toolhead.status == "Ready" %} + G28 + QUAD_GANTRY_LEVEL + G28 Z0 + G0 X125 Y125 Z20 F6000 + {% else %} + { printer.gcode.action_respond_info("G32 is disabled while printing!") } + {% endif %} [gcode_macro PRINT_START] -# Use PRINT_START for the slicer starting script - please customize for your slicer of choice +# Use PRINT_START for the slicer starting script - PLEASE CUSTOMISE THE SCRIPT FOR YOUR SLICER OF CHOICE gcode: M117 Homing... ; display message G28 ; home all axes @@ -522,7 +535,7 @@ gcode: M117 Preheat (Print) ; display message [gcode_macro PRINT_END] -# Use PRINT_END for the slicer ending script - please customize for your slicer of choice +# Use PRINT_END for the slicer ending script - PLEASE CUSTOMISE THE SCRIPT FOR YOUR SLICER OF CHOICE gcode: M400 ; wait for buffer to clear G92 E0 ; zero the extruder @@ -539,25 +552,26 @@ gcode: [gcode_macro UNLOAD_FILAMENT] # Extrusion lengths must be adjusted for your particular configuration before use gcode: - M83 ; set extruder to relative - G1 E10 F300 ; extrude a little to soften tip - G1 E-780 F1800 ; retract filament completely - M82 ; set extruder to absolute + {% if printer.toolhead.status == "Ready" %} + M83 ; set extruder to relative + G1 E10 F300 ; extrude a little to soften tip + G1 E-780 F1800 ; retract filament completely + M82 ; set extruder to absolute + {% else %} + { printer.gcode.action_respond_info("Filament unloading disabled while printing!") } + {% endif %} + [gcode_macro LOAD_FILAMENT] # Extrusion lengths must be adjusted for your particular configuration before use gcode: - M83 ; set extruder to relative - G1 E750 F1800 ; quickly load filament to down bowden - G1 E30 F300 ; slower extrusion for hotend path - G1 E15 F150 ; prime nozzle with filament - M82 ; set extruder to absolute + {% if printer.toolhead.status == "Ready" %} + M83 ; set extruder to relative + G1 E750 F1800 ; quickly load filament to down bowden + G1 E30 F300 ; slower extrusion for hotend path + G1 E15 F150 ; prime nozzle with filament + M82 ; set extruder to absolute + {% else %} + { printer.gcode.action_respond_info("Filament loading disabled while printing!") } + {% endif %} -# Sensor Types -# "EPCOS 100K B57560G104F" -# "ATC Semitec 104GT-2" -# "NTC 100K beta 3950" -# "Honeywell 100K 135-104LAG-J01" -# "NTC 100K MGB18-104F39050L32" (Keenovo Heater Pad) -# "AD595" -# "PT100 INA826" diff --git a/firmware/klipper/configurations/VORON2_stock_300_printer.cfg b/firmware/klipper/configurations/VORON2_stock_300_printer.cfg index 02794ad..d8d4901 100644 --- a/firmware/klipper/configurations/VORON2_stock_300_printer.cfg +++ b/firmware/klipper/configurations/VORON2_stock_300_printer.cfg @@ -37,29 +37,29 @@ # E1_STEP_PIN ar36 # E1_DIR_PIN ar34 # E1_ENABLE_PIN ar30 -# D10 ar10 -# D9 ar9 -# D8 ar8 +# D10 ar10 +# D9 ar9 +# D8 ar8 # TEMP_0_PIN analog13 # TEMP_1_PIN analog14 -# TEMP_2_PIN analog15 -# SERVO 1 (TOP) D11 -# SERVO 2 D6 -# SERVO 3 D5 -# SERVO 4 D4 +# TEMP_2_PIN analog15 +# SERVO 1 (TOP) D11 +# SERVO 2 D6 +# SERVO 3 D5 +# SERVO 4 D4 # use the following modifiers before the pin definition (ex: ^!ar99) -# ! invert the logic -# ^ activate 5v pullup (does not apply to all pins) -# mcu_name: use pins on additional MCU (ex: z:ar10) +# ! invert the logic +# ^ activate 5v pullup (does not apply to all pins) +# mcu_name: use pins on additional MCU (ex: z:ar10) # *** THINGS TO CHANGE/CHECK: *** # Arduino paths [mcu] section # Thermistor types [extruder] and [heater_bed] sections - See 'sensor types' list at end of file -# Microswitch (z endstop) location [homing_override] section -# Microswitch (z endstop) offset for Z0 [stepper_z] section +# Microswitch (z endstop) location [homing_override] section +# Microswitch (z endstop) offset for Z0 [stepper_z] section # Probe points [quad_gantry_level] section -# Min & Max gantry corner positions [quad_gantry_level] section +# Min & Max gantry corner positions [quad_gantry_level] section # PID tune [extruder] and [heater_bed] sections # Fine tune E steps [extruder] section @@ -81,10 +81,23 @@ restart_method: arduino [printer] kinematics: corexy -max_velocity: 350 -max_accel: 3000 -max_z_velocity: 25 -max_z_accel: 350 +# Velocities and accels may be increased for better performance +# but should be tested and increased incrementally +max_velocity: 250 +max_accel: 2500 +max_z_velocity: 35 +max_z_accel: 800 +square_corner_velocity: 8.0 +# The maximum velocity (in mm/s) that the toolhead may travel a 90 +# degree corner at. The default is 5mm/s. +# For more information, refer to Klipper docs. + +[idle_timeout] +gcode: + TURN_OFF_HEATERS + M84 ; disable steppers +# 30 min +timeout: 1800 [stepper_x] # B Stepper @@ -100,7 +113,9 @@ position_min: 0 position_endstop: 300 position_max: 300 homing_speed: 100 +second_homing_speed: 25 homing_retract_dist: 5 +homing_positive_dir: true [stepper_y] # A Stepper @@ -116,7 +131,9 @@ position_min: 0 position_endstop: 300 position_max: 300 homing_speed: 100 +second_homing_speed: 25 homing_retract_dist: 5 +homing_positive_dir: true [stepper_z] # Z0 Stepper - Front Left @@ -128,14 +145,16 @@ step_distance: 0.00250 # 400 steps per mm - 1.8 deg - 1/16 microstepping endstop_pin: ^!z:ar18 # Z_MIN on mcu_z -position_endstop: -.05 -# Offset (in mm) for nozzle to bed off z switch, For MY PRINTER the further negative, the bigger Z gap from bed. -position_max: 300 -position_min: -3 -# Set to -2 to allow room for squaring gantry with quad_gantry_level -homing_speed: 5.0 -second_homing_speed: 1.0 +position_endstop: 0 +# Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0) +# (+) value = endstop above Z0, (-) value = endstop below +position_max: 290 +position_min: -5 +# Set to -5 to allow room for squaring gantry with quad_gantry_level +homing_speed: 15.0 +second_homing_speed: 1.5 homing_retract_dist: 3.0 +homing_positive_dir: false [stepper_z1] # Z1 Stepper - Rear Left @@ -170,15 +189,43 @@ dir_pin: ar28 enable_pin: !ar24 # E0 on mcu_xye step_distance: 0.00180180 -# 555 steps per mm - 1.8 deg - 1/16 microstepping (Mobius2) +# 555 steps per mm - 1.8 deg - 1/16 microstepping (Mobius3) +# This must be calibrated to your specific machine for best results nozzle_diameter: 0.400 filament_diameter: 1.750 -max_extrude_only_distance: 780.0 +max_extrude_only_distance: 780 # This is set high to allow the load/unload filament macros to run +# Adjust to match your approximate filament path length +#max_extrude_cross_section: +# Maximum area (in mm^2) of an extrusion cross section (eg. +# extrusion width multiplied by layer height). This setting prevents +# excessive amounts of extrusion during relatively small XY moves. +# If a move requests an extrusion rate that would exceed this value +# it will cause an error to be returned. The default is: 4.0 * +# nozzle_diameter^2 +#max_extrude_only_velocity: +#max_extrude_only_accel: +# Maximum velocity (in mm/s) and acceleration (in mm/s^2) of the +# extruder motor for retractions and extrude-only moves. These +# settings do not place any limit on normal printing moves. If not +# specified then they are calculated to match the limit an XY +# printing move with a cross section of 4.0*nozzle_diameter^2 would +# have. heater_pin: ar10 # D10 on mcu_xye max_power: 1.0 +# use "ATC Semitec 104GT-2" for Trianglelab 104GT-2 and 104NT-4-R025H42G sensors sensor_type: ATC Semitec 104GT-2 +# use "ATC Semitec 104GT-2" for Trianglelab 104GT-2 and 104NT-4-R025H42G sensors +# Other sensor types +# "EPCOS 100K B57560G104F" +# "ATC Semitec 104GT-2" +# "NTC 100K beta 3950" +# "Honeywell 100K 135-104LAG-J01" +# "NTC 100K MGB18-104F39050L32" (Keenovo Heater Pad) +# "AD595" +# "PT100 INA826" + sensor_pin: analog13 # T0 on mcu_xye smooth_time: 3.0 @@ -188,79 +235,185 @@ pid_Ki: 0.755 pid_Kd: 89.337 min_extrude_temp: 170 min_temp: 0 -max_temp: 300 +max_temp: 270 +# pressure_advance: 0 +# The amount of raw filament to push into the extruder during +# extruder acceleration. An equal amount of filament is retracted +# during deceleration. It is measured in millimeters per +# millimeter/second. The default is 0, which disables pressure +# advance. +# pressure_advance_lookahead_time: 0.010 +# A time (in seconds) to "look ahead" at future extrusion moves when +# calculating pressure advance. This is used to reduce the +# application of pressure advance during cornering moves that would +# otherwise cause retraction followed immediately by pressure +# buildup. This setting only applies if pressure_advance is +# non-zero. The default is 0.010 (10 milliseconds). [probe] # Inductive Probe +# Z height probe. One may define this section to enable Z height +# probing hardware. When this section is enabled, PROBE and +# QUERY_PROBE extended g-code commands become available. The probe +# section also creates a virtual "probe:z_virtual_endstop" pin. One +# may set the stepper_z endstop_pin to this virtual pin on cartesian +# style printers that use the probe in place of a z endstop. pin: ^!z:ar19 # Z_MAX on mcu_z x_offset: 0.0 y_offset: 25.0 -z_offset: 0.00 +# Offset (in mm) for inductive probe Y direction from nozzle +z_offset: 0.0 +# Offset (in mm) for inductive probe in Z height speed: 2.0 +# Speed (in mm/s) of the Z axis when probing. The default is 5mm/s. samples: 4 # Number of times to probe a point -sample_retract_dist: 2 +sample_retract_dist: 3.0 # How far to retract (in mm) from the probe point for multi-probe samples +samples_result: average +# The calculation method when sampling more than once - either +# "median" or "average". The default is average. +#samples_tolerance: 0.100 +# The maximum Z distance (in mm) that a sample may differ from other +# samples. If this tolerance is exceeded then either an error is +# reported or the attempt is restarted (see +# samples_tolerance_retries). The default is 0.100mm. +#samples_tolerance_retries: 0 +# The number of times to retry if a sample is found that exceeds +# samples_tolerance. On a retry, all current samples are discarded +# and the probe attempt is restarted. If a valid set of samples are +# not obtained in the given number of retries then an error is +# reported. The default is zero which causes an error to be reported +# on the first sample that exceeds samples_tolerance. [fan] # Print cooling fan pin: ar9 # D9 on mcu_xye +max_power: 1.0 +# The maximum power (expressed as a value from 0.0 to 1.0) that the +# pin may be set to. The value 1.0 allows the pin to be set fully +# enabled for extended periods, while a value of 0.5 would allow the +# pin to be enabled for no more than half the time. This setting may +# be used to limit the total power output (over extended periods) to +# the fan. If this value is less than 1.0 then fan speed requests +# will be scaled between zero and max_power (for example, if +# max_power is .9 and a fan speed of 80% is requested then the fan +# power will be set to 72%). The default is 1.0. +shutdown_speed: 0 +# The desired fan speed (expressed as a value from 0.0 to 1.0) if +# the micro-controller software enters an error state. The default +# is 0. +cycle_time: 0.010 +# The amount of time (in seconds) for each PWM power cycle to the +# fan. It is recommended this be 10 milliseconds or greater when +# using software based PWM. The default is 0.010 seconds. +hardware_pwm: false +# Enable this to use hardware PWM instead of software PWM. The +# default is False. kick_start_time: 0.500 -cycle_time: 0.001 +# Time (in seconds) to run the fan at full speed when first enabling +# it (helps get the fan spinning). The default is 0.100 seconds. +# See the "fan" section in example.cfg for a description of the +# above parameters. [heater_fan hotend_fan] # Hotend fan +# See the "heater_fan" section in example-extras.cfg for a complete +# description of this sections parameters. pin: z:ar9 # D9 on mcu_z +max_power: 1.0 +shutdown_speed: 1.0 +cycle_time: 0.010 +hardware_pwm: false kick_start_time: 0.500 heater: extruder -heater_temp: 50.0 +heater_temp: 75.0 +# A temperature (in Celsius) that the heater must drop below before +# the fan is disabled. The default is 50 Celsius. +fan_speed: 1.0 +# The fan speed (expressed as a value from 0.0 to 1.0) that the fan +# will be set to when its associated heater is enabled. The default +# is 1.0 -[heater_fan controller_fan] +[controller_fan controller_fan] # Controller fan +# See the "controller_fan" section in example-extras.cfg for a complete +# description of this sections parameters. pin: z:ar10 # D10 on mcu_z +max_power: 1.0 +shutdown_speed: 0 +cycle_time: 0.010 +hardware_pwm: false kick_start_time: 0.500 -heater: heater_bed -heater_temp: 40 +idle_timeout: 30 +# The ammount of time (in seconds) after a stepper driver or heater +# was active and the fan should be kept running. The default +# is 30 seconds. +idle_speed: 0.4 +# The fan speed (expressed as a value from 0.0 to 1.0) that the fan +# will be set to when a heater or stepper driver was active and before +# the idle_timeout is reached. This must be greater or equal +# max_power. The default is max_power +heater: extruder,heater_bed +# Name of the config section defining the heater that this fan is +# associated with. If a comma separated list of heater names is +# provided here, then the fan will be enabled when any of the given +# heaters are enabled. The default is "extruder". -#[controller_fan my_controller_fan] -#pin: z:ar10 -## D10 on mcu_z -#max_power: 1.0 -#shutdown_speed: 0 -#kick_start_time:0.500 -## See the "fan" section in example.cfg for a description of the -## above parameters. -#idle_timeout: 30 -## The ammount of time (in seconds) after a stepper driver or heater -## was active and the fan should be kept running. The default -## is 30 seconds. -#idle_speed: 1.0 -## The fan speed (expressed as a value from 0.0 to 1.0) that the fan -## will be set to when a heater or stepper driver was active and before -## the idle_timeout is reached. This must be greater or equal -## max_power. The default is max_power -#heater: extruder, heater_bed -## Name of the config section defining the heater that this fan is -## associated with. If a comma separated list of heater names is -## provided here, then the fan will be enabled when any of the given -## heaters are enabled. The default is "extruder". - -[heater_fan exhaust_fan] -# Exhaust fan -pin: z:ar8 -# D8 on mcu_z -kick_start_time: 0.500 -heater: heater_bed -heater_temp: 60.0 +# [temperature_fan chamber] +# # Chamber temp and Exhaust fan +# # See the "temperature_fan" section in example-extras.cfg for a complete +# # description of this sections parameters. +# pin: z:ar8 +# # D8 on mcu_z +# max_power: 1.0 +# shutdown_speed: 0 +# cycle_time: 0.010 +# hardware_pwm: false +# kick_start_time: 0.500 +# sensor_type: ATC Semitec 104GT-2 +# sensor_pin: analog15 +# min_temp: 0 +# max_temp: 100 +# # The maximum range of valid temperatures (in Celsius) that the +# # sensor must remain within. This controls a safety feature +# # implemented in the micro-controller code - should the measured +# # temperature ever fall outside this range then the micro-controller +# # will go into a shutdown state. Set this range just wide enough so +# # that reasonable temperatures do not result in an error. These +# # parameters must be provided. +# target_temp: 50 +# # A temperature (in Celsius) that will be the target temperature. +# # The default is 40 degrees. +# max_speed: 1.0 +# # The fan speed (expressed as a value from 0.0 to 1.0) that the fan +# # will be set to when the sensor temperature exceeds the set value. +# # The default is 1.0. +# min_speed: 0 +# # The minimum fan speed (expressed as a value from 0.0 to 1.0) that +# # the fan will be set to for PID temperature fans. +# # The default is 0.3. +# control: pid +# pid_Kp: 40 +# pid_Ki: 0.2 +# pid_Kd: 0.1 +# pid_deriv_time: 2.0 +# #pid_integral_max: +# # The maximum "windup" the integral term may accumulate. The default +# # is to use the same value as max_power. +# gcode_id: C +# # If set, the temperature will be reported in M105 queries using the +# # given id. The default is to not report the temperature via M105. [heater_bed] heater_pin: z:ar11 # D11 (servo) on mcu_z -sensor_type: NTC 100K beta 3950 +sensor_type: NTC 100K MGB18-104F39050L32 +# NTC 100K MGB18-104F39050L32 is for Keenovo thermistors sensor_pin: z:analog15 # T2 on mcu_z smooth_time: 3.0 @@ -270,15 +423,43 @@ pid_Kp: 47.690 pid_Ki: 1.556 pid_Kd: 365.338 min_temp: 0 -max_temp: 115 - -[idle_timeout] -# 30 min -timeout: 1800 +max_temp: 110 [verify_heater heater_bed] -hysteresis: 0.5 -check_gain_time: 120 +max_error: 120 +# The maximum "cumulative temperature error" before raising an +# error. Smaller values result in stricter checking and larger +# values allow for more time before an error is reported. +# Specifically, the temperature is inspected once a second and if it +# is close to the target temperature then an internal "error +# counter" is reset; otherwise, if the temperature is below the +# target range then the counter is increased by the amount the +# reported temperature differs from that range. Should the counter +# exceed this "max_error" then an error is raised. The default is +# 120. +check_gain_time: 60 +# This controls heater verification during initial heating. Smaller +# values result in stricter checking and larger values allow for +# more time before an error is reported. Specifically, during +# initial heating, as long as the heater increases in temperature +# within this time frame (specified in seconds) then the internal +# "error counter" is reset. The default is 20 seconds for extruders +# and 60 seconds for heater_bed. +hysteresis: 5 +# The maximum temperature difference (in Celsius) to a target +# temperature that is considered in range of the target. This +# controls the max_error range check. It is rare to customize this +# value. The default is 5. +heating_gain: 2 +# The minimum temperature (in Celsius) that the heater must increase +# by during the check_gain_time check. It is rare to customize this +# value. The default is 2. + +[verify_heater extruder] +max_error: 120 +check_gain_time: 20 +hysteresis: 5 +heating_gain: 2 [homing_override] axes: z @@ -288,7 +469,7 @@ gcode: G0 Z5 F600 G28 X Y G0 X222 Y300 F3600 -# XY Location of the FSR Switch +# XY Location of the FSR Switch. Update to your machines XY location. G28 Z G0 Z10 F1800 G0 X150 Y150 Z10 F3600 @@ -296,81 +477,102 @@ gcode: [quad_gantry_level] # Use QUAD_GANTRY_LEVEL to level a gantry. gantry_corners: - -60,-10 - 360,310 + -60,-10 + 360,310 # Min & Max gantry corners - measure from nozzle at MIN (0,0) and MAX (250,250) to respective belt positions points: - 60,60 - 60,240 - 240,240 - 240,60 + 60,60 + 60,240 + 240,240 + 240,60 # Probe points -speed: 100 -horizontal_move_z: 10 +speed: 200 +# The speed (in mm/s) of non-probing moves during the calibration. +# The default is 50. +horizontal_move_z: 5 +# The height (in mm) that the head should be commanded to move to +# just prior to starting a probe operation. The default is 5 retries: 5 # number of times to retry if the stepper movements aren't within tolerance retry_tolerance: 0.0075 # if retries are enabled then retry if any z_stepper movement was greater # than the retry_tolerance -#[display] -## RepRapDiscount 128x64 Full Graphic Smart Controller -#lcd_type: st7920 -#cs_pin: z:ar16 -#sclk_pin: z:ar23 -#sid_pin: z:ar17 -## LCD connector on mcu_z -#menu_timeout: 40 -#encoder_pins: ^z:ar33, ^z:ar31 -#click_pin: ^!z:ar35 -#kill_pin: ^!z:ar41 +# [display] +# # RepRapDiscount 128x64 Full Graphic Smart Controller +# lcd_type: st7920 +# cs_pin: z:ar16 +# sclk_pin: z:ar23 +# sid_pin: z:ar17 +# # LCD connector on mcu_z +# menu_timeout: 40 +# # Timeout for menu. Being inactive this amount of seconds will exit the menu +# # Default is 0 seconds (disabled) +# encoder_pins: ^z:ar33, ^z:ar31 +# click_pin: ^!z:ar35 +# kill_pin: ^!z:ar41 ### Macros ### + [gcode_macro G32] gcode: - G28 - QUAD_GANTRY_LEVEL - G28 Z0 - G0 X125 Y125 Z20 F6000 + {% if printer.toolhead.status == "Ready" %} + G28 + QUAD_GANTRY_LEVEL + G28 Z0 + G0 X125 Y125 Z20 F6000 + {% else %} + { printer.gcode.action_respond_info("G32 is disabled while printing!") } + {% endif %} [gcode_macro PRINT_START] # Use PRINT_START for the slicer starting script - PLEASE CUSTOMISE THE SCRIPT FOR YOUR SLICER OF CHOICE gcode: - M117 Homing... ; display message - G28 ; home all axes - G1 Z20 F3000 ; move nozzle away from bed - M117 Preheat (Print) ; display message - + M117 Homing... ; display message + G28 ; home all axes + G1 Z20 F3000 ; move nozzle away from bed + M117 Preheat (Print) ; display message [gcode_macro PRINT_END] # Use PRINT_END for the slicer ending script - PLEASE CUSTOMISE THE SCRIPT FOR YOUR SLICER OF CHOICE gcode: - M400 ; wait for buffer to clear - G92 E0 ; zero the extruder - G1 E-4.0 F3600 ; retract - G91 ; relative positioning - G0 Z1.00 X20.0 Y20.0 F20000 ; move nozzle to remove stringing - M104 S0 ; turn off hotend - M140 S0 ; turn off bed - M106 S0 ; turn off fan - G1 Z2 F3000 ; move nozzle up 2mm - G90 ; absolute positioning - G0 X150 Y300 F3600 ; park nozzle at the center rear - M117 Finished! ; display message + M400 ; wait for buffer to clear + G92 E0 ; zero the extruder + G1 E-4.0 F3600 ; retract filament + G91 ; relative positioning + G0 Z1.00 X20.0 Y20.0 F20000 ; move nozzle to remove stringing + TURN_OFF_HEATERS + M107 ; turn off fan + G1 Z5 F3000 ; move nozzle up 5mm + G90 ; absolute positioning + G0 X150 Y300 F3600 ; park nozzle at rear + M117 Finished! ; display message [gcode_macro UNLOAD_FILAMENT] +# Extrusion lengths must be adjusted for your particular configuration before use gcode: - M83 - G1 E10 F300 - G1 E-780 F1800 - M82 + {% if printer.toolhead.status == "Ready" %} + M83 ; set extruder to relative + G1 E10 F300 ; extrude a little to soften tip + G1 E-780 F1800 ; retract filament completely + M82 ; set extruder to absolute + {% else %} + { printer.gcode.action_respond_info("Filament unloading disabled while printing!") } + {% endif %} + [gcode_macro LOAD_FILAMENT] +# Extrusion lengths must be adjusted for your particular configuration before use gcode: - M83 - G1 E750 F1800 - G1 E30 F300 - G1 E15 F150 - M82 + {% if printer.toolhead.status == "Ready" %} + M83 ; set extruder to relative + G1 E750 F1800 ; quickly load filament to down bowden + G1 E30 F300 ; slower extrusion for hotend path + G1 E15 F150 ; prime nozzle with filament + M82 ; set extruder to absolute + {% else %} + { printer.gcode.action_respond_info("Filament loading disabled while printing!") } + {% endif %} + diff --git a/firmware/klipper/configurations/VORON2_stock_350_printer.cfg b/firmware/klipper/configurations/VORON2_stock_350_printer.cfg index ef7a24a..39136d1 100644 --- a/firmware/klipper/configurations/VORON2_stock_350_printer.cfg +++ b/firmware/klipper/configurations/VORON2_stock_350_printer.cfg @@ -37,29 +37,29 @@ # E1_STEP_PIN ar36 # E1_DIR_PIN ar34 # E1_ENABLE_PIN ar30 -# D10 ar10 -# D9 ar9 -# D8 ar8 +# D10 ar10 +# D9 ar9 +# D8 ar8 # TEMP_0_PIN analog13 # TEMP_1_PIN analog14 -# TEMP_2_PIN analog15 -# SERVO 1 (TOP) D11 -# SERVO 2 D6 -# SERVO 3 D5 -# SERVO 4 D4 +# TEMP_2_PIN analog15 +# SERVO 1 (TOP) D11 +# SERVO 2 D6 +# SERVO 3 D5 +# SERVO 4 D4 # use the following modifiers before the pin definition (ex: ^!ar99) -# ! invert the logic -# ^ activate 5v pullup (does not apply to all pins) -# mcu_name: use pins on additional MCU (ex: z:ar10) +# ! invert the logic +# ^ activate 5v pullup (does not apply to all pins) +# mcu_name: use pins on additional MCU (ex: z:ar10) # *** THINGS TO CHANGE/CHECK: *** # Arduino paths [mcu] section # Thermistor types [extruder] and [heater_bed] sections - See 'sensor types' list at end of file -# Microswitch (z endstop) location [homing_override] section -# Microswitch (z endstop) offset for Z0 [stepper_z] section +# Microswitch (z endstop) location [homing_override] section +# Microswitch (z endstop) offset for Z0 [stepper_z] section # Probe points [quad_gantry_level] section -# Min & Max gantry corner positions [quad_gantry_level] section +# Min & Max gantry corner positions [quad_gantry_level] section # PID tune [extruder] and [heater_bed] sections # Fine tune E steps [extruder] section @@ -81,10 +81,23 @@ restart_method: arduino [printer] kinematics: corexy -max_velocity: 350 -max_accel: 3000 +# Velocities and accels may be increased for better performance +# but should be tested and increased incrementally +max_velocity: 250 +max_accel: 2500 max_z_velocity: 25 -max_z_accel: 350 +max_z_accel: 300 +square_corner_velocity: 8.0 +# The maximum velocity (in mm/s) that the toolhead may travel a 90 +# degree corner at. The default is 5mm/s. +# For more information, refer to Klipper docs. + +[idle_timeout] +gcode: + TURN_OFF_HEATERS + M84 ; disable steppers +# 30 min +timeout: 1800 [stepper_x] # B Stepper @@ -100,7 +113,9 @@ position_min: 0 position_endstop: 350 position_max: 350 homing_speed: 100 +second_homing_speed: 25 homing_retract_dist: 5 +homing_positive_dir: true [stepper_y] # A Stepper @@ -116,7 +131,9 @@ position_min: 0 position_endstop: 350 position_max: 350 homing_speed: 100 +second_homing_speed: 25 homing_retract_dist: 5 +homing_positive_dir: true [stepper_z] # Z0 Stepper - Front Left @@ -128,14 +145,16 @@ step_distance: 0.00250 # 400 steps per mm - 1.8 deg - 1/16 microstepping endstop_pin: ^!z:ar18 # Z_MIN on mcu_z -position_endstop: -.05 -# Offset (in mm) for nozzle to bed off z switch, For MY PRINTER the further negative, the bigger Z gap from bed. -position_max: 350 -position_min: -3 -# Set to -2 to allow room for squaring gantry with quad_gantry_level -homing_speed: 5.0 -second_homing_speed: 1.0 +position_endstop: 0 +# Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0) +# (+) value = endstop above Z0, (-) value = endstop below +position_max: 340 +position_min: -5 +# Set to -5 to allow room for squaring gantry with quad_gantry_level +homing_speed: 15.0 +second_homing_speed: 1.5 homing_retract_dist: 3.0 +homing_positive_dir: false [stepper_z1] # Z1 Stepper - Rear Left @@ -170,15 +189,42 @@ dir_pin: ar28 enable_pin: !ar24 # E0 on mcu_xye step_distance: 0.00180180 -# 555 steps per mm - 1.8 deg - 1/16 microstepping (Mobius2) +# 555 steps per mm - 1.8 deg - 1/16 microstepping (Mobius3) +# This must be calibrated to your specific machine for best results nozzle_diameter: 0.400 filament_diameter: 1.750 -max_extrude_only_distance: 780.0 +max_extrude_only_distance: 780 # This is set high to allow the load/unload filament macros to run +# Adjust to match your approximate filament path length +#max_extrude_cross_section: +# Maximum area (in mm^2) of an extrusion cross section (eg. +# extrusion width multiplied by layer height). This setting prevents +# excessive amounts of extrusion during relatively small XY moves. +# If a move requests an extrusion rate that would exceed this value +# it will cause an error to be returned. The default is: 4.0 * +# nozzle_diameter^2 +#max_extrude_only_velocity: +#max_extrude_only_accel: +# Maximum velocity (in mm/s) and acceleration (in mm/s^2) of the +# extruder motor for retractions and extrude-only moves. These +# settings do not place any limit on normal printing moves. If not +# specified then they are calculated to match the limit an XY +# printing move with a cross section of 4.0*nozzle_diameter^2 would +# have. heater_pin: ar10 # D10 on mcu_xye max_power: 1.0 sensor_type: ATC Semitec 104GT-2 +# use "ATC Semitec 104GT-2" for Trianglelab 104GT-2 and 104NT-4-R025H42G sensors +# Other sensor types +# "EPCOS 100K B57560G104F" +# "ATC Semitec 104GT-2" +# "NTC 100K beta 3950" +# "Honeywell 100K 135-104LAG-J01" +# "NTC 100K MGB18-104F39050L32" (Keenovo Heater Pad) +# "AD595" +# "PT100 INA826" + sensor_pin: analog13 # T0 on mcu_xye smooth_time: 3.0 @@ -188,79 +234,185 @@ pid_Ki: 0.755 pid_Kd: 89.337 min_extrude_temp: 170 min_temp: 0 -max_temp: 300 +max_temp: 270 +# pressure_advance: 0 +# The amount of raw filament to push into the extruder during +# extruder acceleration. An equal amount of filament is retracted +# during deceleration. It is measured in millimeters per +# millimeter/second. The default is 0, which disables pressure +# advance. +# pressure_advance_lookahead_time: 0.010 +# A time (in seconds) to "look ahead" at future extrusion moves when +# calculating pressure advance. This is used to reduce the +# application of pressure advance during cornering moves that would +# otherwise cause retraction followed immediately by pressure +# buildup. This setting only applies if pressure_advance is +# non-zero. The default is 0.010 (10 milliseconds). [probe] # Inductive Probe +# Z height probe. One may define this section to enable Z height +# probing hardware. When this section is enabled, PROBE and +# QUERY_PROBE extended g-code commands become available. The probe +# section also creates a virtual "probe:z_virtual_endstop" pin. One +# may set the stepper_z endstop_pin to this virtual pin on cartesian +# style printers that use the probe in place of a z endstop. pin: ^!z:ar19 # Z_MAX on mcu_z x_offset: 0.0 y_offset: 25.0 -z_offset: 0.00 +# Offset (in mm) for inductive probe Y direction from nozzle +z_offset: 0.0 +# Offset (in mm) for inductive probe in Z height speed: 2.0 +# Speed (in mm/s) of the Z axis when probing. The default is 5mm/s. samples: 4 # Number of times to probe a point -sample_retract_dist: 2 +sample_retract_dist: 3.0 # How far to retract (in mm) from the probe point for multi-probe samples +samples_result: average +# The calculation method when sampling more than once - either +# "median" or "average". The default is average. +#samples_tolerance: 0.100 +# The maximum Z distance (in mm) that a sample may differ from other +# samples. If this tolerance is exceeded then either an error is +# reported or the attempt is restarted (see +# samples_tolerance_retries). The default is 0.100mm. +#samples_tolerance_retries: 0 +# The number of times to retry if a sample is found that exceeds +# samples_tolerance. On a retry, all current samples are discarded +# and the probe attempt is restarted. If a valid set of samples are +# not obtained in the given number of retries then an error is +# reported. The default is zero which causes an error to be reported +# on the first sample that exceeds samples_tolerance. [fan] # Print cooling fan pin: ar9 # D9 on mcu_xye +max_power: 1.0 +# The maximum power (expressed as a value from 0.0 to 1.0) that the +# pin may be set to. The value 1.0 allows the pin to be set fully +# enabled for extended periods, while a value of 0.5 would allow the +# pin to be enabled for no more than half the time. This setting may +# be used to limit the total power output (over extended periods) to +# the fan. If this value is less than 1.0 then fan speed requests +# will be scaled between zero and max_power (for example, if +# max_power is .9 and a fan speed of 80% is requested then the fan +# power will be set to 72%). The default is 1.0. +shutdown_speed: 0 +# The desired fan speed (expressed as a value from 0.0 to 1.0) if +# the micro-controller software enters an error state. The default +# is 0. +cycle_time: 0.010 +# The amount of time (in seconds) for each PWM power cycle to the +# fan. It is recommended this be 10 milliseconds or greater when +# using software based PWM. The default is 0.010 seconds. +hardware_pwm: false +# Enable this to use hardware PWM instead of software PWM. The +# default is False. kick_start_time: 0.500 -cycle_time: 0.001 +# Time (in seconds) to run the fan at full speed when first enabling +# it (helps get the fan spinning). The default is 0.100 seconds. +# See the "fan" section in example.cfg for a description of the +# above parameters. [heater_fan hotend_fan] # Hotend fan +# See the "heater_fan" section in example-extras.cfg for a complete +# description of this sections parameters. pin: z:ar9 # D9 on mcu_z +max_power: 1.0 +shutdown_speed: 1.0 +cycle_time: 0.010 +hardware_pwm: false kick_start_time: 0.500 heater: extruder -heater_temp: 50.0 +heater_temp: 75.0 +# A temperature (in Celsius) that the heater must drop below before +# the fan is disabled. The default is 50 Celsius. +fan_speed: 1.0 +# The fan speed (expressed as a value from 0.0 to 1.0) that the fan +# will be set to when its associated heater is enabled. The default +# is 1.0 -[heater_fan controller_fan] +[controller_fan controller_fan] # Controller fan +# See the "controller_fan" section in example-extras.cfg for a complete +# description of this sections parameters. pin: z:ar10 # D10 on mcu_z +max_power: 1.0 +shutdown_speed: 0 +cycle_time: 0.010 +hardware_pwm: false kick_start_time: 0.500 -heater: heater_bed -heater_temp: 40 +idle_timeout: 30 +# The ammount of time (in seconds) after a stepper driver or heater +# was active and the fan should be kept running. The default +# is 30 seconds. +idle_speed: 0.4 +# The fan speed (expressed as a value from 0.0 to 1.0) that the fan +# will be set to when a heater or stepper driver was active and before +# the idle_timeout is reached. This must be greater or equal +# max_power. The default is max_power +heater: extruder,heater_bed +# Name of the config section defining the heater that this fan is +# associated with. If a comma separated list of heater names is +# provided here, then the fan will be enabled when any of the given +# heaters are enabled. The default is "extruder". -#[controller_fan my_controller_fan] -#pin: z:ar10 -## D10 on mcu_z -#max_power: 1.0 -#shutdown_speed: 0 -#kick_start_time:0.500 -## See the "fan" section in example.cfg for a description of the -## above parameters. -#idle_timeout: 30 -## The ammount of time (in seconds) after a stepper driver or heater -## was active and the fan should be kept running. The default -## is 30 seconds. -#idle_speed: 1.0 -## The fan speed (expressed as a value from 0.0 to 1.0) that the fan -## will be set to when a heater or stepper driver was active and before -## the idle_timeout is reached. This must be greater or equal -## max_power. The default is max_power -#heater: extruder, heater_bed -## Name of the config section defining the heater that this fan is -## associated with. If a comma separated list of heater names is -## provided here, then the fan will be enabled when any of the given -## heaters are enabled. The default is "extruder". - -[heater_fan exhaust_fan] -# Exhaust fan -pin: z:ar8 -# D8 on mcu_z -kick_start_time: 0.500 -heater: heater_bed -heater_temp: 60.0 +# [temperature_fan chamber] +# # Chamber temp and Exhaust fan +# # See the "temperature_fan" section in example-extras.cfg for a complete +# # description of this sections parameters. +# pin: z:ar8 +# # D8 on mcu_z +# max_power: 1.0 +# shutdown_speed: 0 +# cycle_time: 0.010 +# hardware_pwm: false +# kick_start_time: 0.500 +# sensor_type: ATC Semitec 104GT-2 +# sensor_pin: analog15 +# min_temp: 0 +# max_temp: 100 +# # The maximum range of valid temperatures (in Celsius) that the +# # sensor must remain within. This controls a safety feature +# # implemented in the micro-controller code - should the measured +# # temperature ever fall outside this range then the micro-controller +# # will go into a shutdown state. Set this range just wide enough so +# # that reasonable temperatures do not result in an error. These +# # parameters must be provided. +# target_temp: 50 +# # A temperature (in Celsius) that will be the target temperature. +# # The default is 40 degrees. +# max_speed: 1.0 +# # The fan speed (expressed as a value from 0.0 to 1.0) that the fan +# # will be set to when the sensor temperature exceeds the set value. +# # The default is 1.0. +# min_speed: 0 +# # The minimum fan speed (expressed as a value from 0.0 to 1.0) that +# # the fan will be set to for PID temperature fans. +# # The default is 0.3. +# control: pid +# pid_Kp: 40 +# pid_Ki: 0.2 +# pid_Kd: 0.1 +# pid_deriv_time: 2.0 +# #pid_integral_max: +# # The maximum "windup" the integral term may accumulate. The default +# # is to use the same value as max_power. +# gcode_id: C +# # If set, the temperature will be reported in M105 queries using the +# # given id. The default is to not report the temperature via M105. [heater_bed] heater_pin: z:ar11 # D11 (servo) on mcu_z -sensor_type: NTC 100K beta 3950 +sensor_type: NTC 100K MGB18-104F39050L32 +# NTC 100K MGB18-104F39050L32 is for Keenovo thermistors sensor_pin: z:analog15 # T2 on mcu_z smooth_time: 3.0 @@ -270,15 +422,43 @@ pid_Kp: 47.690 pid_Ki: 1.556 pid_Kd: 365.338 min_temp: 0 -max_temp: 115 - -[idle_timeout] -# 30 min -timeout: 1800 +max_temp: 110 [verify_heater heater_bed] -hysteresis: 0.5 -check_gain_time: 120 +max_error: 120 +# The maximum "cumulative temperature error" before raising an +# error. Smaller values result in stricter checking and larger +# values allow for more time before an error is reported. +# Specifically, the temperature is inspected once a second and if it +# is close to the target temperature then an internal "error +# counter" is reset; otherwise, if the temperature is below the +# target range then the counter is increased by the amount the +# reported temperature differs from that range. Should the counter +# exceed this "max_error" then an error is raised. The default is +# 120. +check_gain_time: 60 +# This controls heater verification during initial heating. Smaller +# values result in stricter checking and larger values allow for +# more time before an error is reported. Specifically, during +# initial heating, as long as the heater increases in temperature +# within this time frame (specified in seconds) then the internal +# "error counter" is reset. The default is 20 seconds for extruders +# and 60 seconds for heater_bed. +hysteresis: 5 +# The maximum temperature difference (in Celsius) to a target +# temperature that is considered in range of the target. This +# controls the max_error range check. It is rare to customize this +# value. The default is 5. +heating_gain: 2 +# The minimum temperature (in Celsius) that the heater must increase +# by during the check_gain_time check. It is rare to customize this +# value. The default is 2. + +[verify_heater extruder] +max_error: 120 +check_gain_time: 20 +hysteresis: 5 +heating_gain: 2 [homing_override] axes: z @@ -296,44 +476,55 @@ gcode: [quad_gantry_level] # Use QUAD_GANTRY_LEVEL to level a gantry. gantry_corners: - -60,-10 - 410,360 + -60,-10 + 410,360 # Min & Max gantry corners - measure from nozzle at MIN (0,0) and MAX (250,250) to respective belt positions points: - 60,60 - 60,290 - 290,290 - 290,60 + 60,60 + 60,290 + 290,290 + 290,60 # Probe points speed: 100 -horizontal_move_z: 10 +# The speed (in mm/s) of non-probing moves during the calibration. +# The default is 50. +horizontal_move_z: 5 +# The height (in mm) that the head should be commanded to move to +# just prior to starting a probe operation. The default is 5 retries: 5 # number of times to retry if the stepper movements aren't within tolerance retry_tolerance: 0.0075 # if retries are enabled then retry if any z_stepper movement was greater # than the retry_tolerance -#[display] -## RepRapDiscount 128x64 Full Graphic Smart Controller -#lcd_type: st7920 -#cs_pin: z:ar16 -#sclk_pin: z:ar23 -#sid_pin: z:ar17 -## LCD connector on mcu_z -#menu_timeout: 40 -#encoder_pins: ^z:ar33, ^z:ar31 -#click_pin: ^!z:ar35 -#kill_pin: ^!z:ar41 +# [display] +# # RepRapDiscount 128x64 Full Graphic Smart Controller +# lcd_type: st7920 +# cs_pin: z:ar16 +# sclk_pin: z:ar23 +# sid_pin: z:ar17 +# # LCD connector on mcu_z +# menu_timeout: 40 +# # Timeout for menu. Being inactive this amount of seconds will exit the menu +# # Default is 0 seconds (disabled) +# encoder_pins: ^z:ar33, ^z:ar31 +# click_pin: ^!z:ar35 +# kill_pin: ^!z:ar41 ### Macros ### + [gcode_macro G32] gcode: - G28 - QUAD_GANTRY_LEVEL - G28 Z0 - G0 X125 Y125 Z20 F6000 + {% if printer.toolhead.status == "Ready" %} + G28 + QUAD_GANTRY_LEVEL + G28 Z0 + G0 X125 Y125 Z20 F6000 + {% else %} + { printer.gcode.action_respond_info("G32 is disabled while printing!") } + {% endif %} [gcode_macro PRINT_START] # Use PRINT_START for the slicer starting script - PLEASE CUSTOMISE THE SCRIPT FOR YOUR SLICER OF CHOICE @@ -347,30 +538,41 @@ gcode: [gcode_macro PRINT_END] # Use PRINT_END for the slicer ending script - PLEASE CUSTOMISE THE SCRIPT FOR YOUR SLICER OF CHOICE gcode: - M400 ; wait for buffer to clear - G92 E0 ; zero the extruder - G1 E-4.0 F3600 ; retract - G91 ; relative positioning - G0 Z1.00 X20.0 Y20.0 F20000 ; move nozzle to remove stringing - M104 S0 ; turn off hotend - M140 S0 ; turn off bed - M106 S0 ; turn off fan - G1 Z2 F3000 ; move nozzle up 2mm - G90 ; absolute positioning - G0 X175 Y350 F3600 ; park nozzle at rear - M117 Finished! ; display message + M400 ; wait for buffer to clear + G92 E0 ; zero the extruder + G1 E-4.0 F3600 ; retract filament + G91 ; relative positioning + G0 Z1.00 X20.0 Y20.0 F20000 ; move nozzle to remove stringing + TURN_OFF_HEATERS + M107 ; turn off fan + G1 Z5 F3000 ; move nozzle up 5mm + G90 ; absolute positioning + G0 X175 Y350 F3600 ; park nozzle at rear + M117 Finished! ; display message [gcode_macro UNLOAD_FILAMENT] +# Extrusion lengths must be adjusted for your particular configuration before use gcode: - M83 - G1 E10 F300 - G1 E-780 F1800 - M82 + {% if printer.toolhead.status == "Ready" %} + M83 ; set extruder to relative + G1 E10 F300 ; extrude a little to soften tip + G1 E-780 F1800 ; retract filament completely + M82 ; set extruder to absolute + {% else %} + { printer.gcode.action_respond_info("Filament unloading disabled while printing!") } + {% endif %} + [gcode_macro LOAD_FILAMENT] +# Extrusion lengths must be adjusted for your particular configuration before use gcode: - M83 - G1 E750 F1800 - G1 E30 F300 - G1 E15 F150 - M82 + {% if printer.toolhead.status == "Ready" %} + M83 ; set extruder to relative + G1 E750 F1800 ; quickly load filament to down bowden + G1 E30 F300 ; slower extrusion for hotend path + G1 E15 F150 ; prime nozzle with filament + M82 ; set extruder to absolute + {% else %} + { printer.gcode.action_respond_info("Filament loading disabled while printing!") } + {% endif %} +