mirror of
https://github.com/steeb-k/troodonBackup
synced 2025-01-09 15:03:29 -07:00
924 lines
28 KiB
INI
924 lines
28 KiB
INI
[include fluidd.cfg]
|
||
[virtual_sdcard]
|
||
path: /home/biqu/printer_data/gcodes
|
||
on_error_gcode: CANCEL_PRINT
|
||
|
||
# This file contains common pin mappings for the BigTreeTech Octopus X7
|
||
# To use this config, the firmware should be compiled for the STM32F407 with a "32KiB bootloader"
|
||
|
||
# after running "make", copy the generated "klipper/out/klipper.bin" file to a
|
||
# file named "firmware.bin" on an SD card and then restart the OctoPus with that SD card.
|
||
|
||
# See docs/Config_Reference.md for a description of parameters.
|
||
|
||
## Formbot / Vivedino Troodon Mini
|
||
## Firmware Version: 1.4
|
||
## Compiled By: YGK3D
|
||
## Release Date: 15/02/24
|
||
|
||
## *** THINGS TO CHANGE/CHECK: ***
|
||
## MCU paths [mcu] section
|
||
## Thermistor types [extruder] and [heater_bed] sections - See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types
|
||
## Z Endstop Switch location [safe_z_home] section
|
||
## Homing end position [gcode_macro G32] section
|
||
## Z Endstop Switch offset for Z0 [stepper_z] section
|
||
## Probe points [quad_gantry_level] section
|
||
## Min & Max gantry corner postions [quad_gantry_level] section
|
||
## PID tune [extruder] and [heater_bed] sections
|
||
## Probe pin [probe] section
|
||
## Fine tune E steps [extruder] section
|
||
|
||
[include mainsail.cfg]
|
||
[include KAMP_Settings.cfg]
|
||
[exclude_object]
|
||
[firmware_retraction]
|
||
[exclude_object]
|
||
|
||
[mcu]
|
||
## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify
|
||
##--------------------------------------------------------------------
|
||
serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_340041001047333133343238-if00
|
||
restart_method: command
|
||
##--------------------------------------------------------------------
|
||
|
||
#####################################################################
|
||
# Accelerometer Settings - Uncomment to Enable
|
||
#####################################################################
|
||
|
||
#[mcu adxl]
|
||
## Obtain serial number by "ls -l /dev/serial/by-id/"
|
||
#serial: /dev/serial/by-id/usb-Klipper_rp2040_E6626005A7867B33-if00 #usb-Klipper_rp2040_E6625887D33B9337-if00
|
||
|
||
#[adxl345]
|
||
#cs_pin: adxl:gpio9
|
||
#spi_software_sclk_pin: adxl:gpio10
|
||
#spi_software_mosi_pin: adxl:gpio11
|
||
#spi_software_miso_pin: adxl:gpio12
|
||
|
||
#[resonance_tester]
|
||
#accel_chip: adxl345
|
||
#probe_points:
|
||
# 125, 125, 20
|
||
|
||
##--------------------------------------------------------------------
|
||
|
||
[printer]
|
||
kinematics: corexy
|
||
max_velocity: 600
|
||
max_accel: 20000 #Max 4000
|
||
max_z_velocity: 15 #Max 15 for 12V TMC Drivers, can increase for 24V
|
||
max_z_accel: 350
|
||
square_corner_velocity: 5.0
|
||
|
||
#####################################################################
|
||
# X/Y Stepper Settings
|
||
#####################################################################
|
||
|
||
## B Stepper - Left
|
||
## Connected to MOTOR_0
|
||
## Endstop connected to DIAG_0
|
||
[stepper_x]
|
||
step_pin: PA3
|
||
dir_pin: PA4
|
||
enable_pin: !PA1
|
||
rotation_distance: 40
|
||
microsteps: 32
|
||
full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper
|
||
endstop_pin: PF2
|
||
position_min: 0
|
||
##--------------------------------------------------------------------
|
||
|
||
position_endstop: 250
|
||
position_max: 250
|
||
|
||
##--------------------------------------------------------------------
|
||
homing_speed: 100 #Max 100
|
||
homing_retract_dist: 5
|
||
homing_positive_dir: true
|
||
|
||
[tmc2209 stepper_x]
|
||
uart_pin: PA2
|
||
interpolate: false
|
||
run_current: 0.8
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
## A Stepper - Right
|
||
## Connected to MOTOR_1
|
||
## Endstop connected to DIAG_1
|
||
[stepper_y]
|
||
step_pin: PC2
|
||
dir_pin: PC3
|
||
enable_pin: !PC1
|
||
rotation_distance: 40
|
||
microsteps: 32
|
||
full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper
|
||
endstop_pin: PC15
|
||
position_min: 0
|
||
position_endstop: y
|
||
position_max: y+8
|
||
|
||
##--------------------------------------------------------------------
|
||
|
||
position_endstop: 250
|
||
position_max: 250
|
||
|
||
##--------------------------------------------------------------------
|
||
homing_speed: 100 #Max 100
|
||
homing_retract_dist: 5
|
||
homing_positive_dir: true
|
||
|
||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||
[tmc2209 stepper_y]
|
||
uart_pin: PC0
|
||
interpolate: false
|
||
run_current: 0.8
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
#####################################################################
|
||
# Z Stepper Settings
|
||
#####################################################################
|
||
|
||
## Z0 Stepper - Front Left
|
||
## Connected to MOTOR_4
|
||
## Endstop connected to DIAG_4
|
||
[stepper_z]
|
||
step_pin: PB10
|
||
dir_pin: PB11
|
||
enable_pin: !PE15
|
||
rotation_distance: 40
|
||
gear_ratio: 80:16
|
||
microsteps: 32
|
||
#endstop_pin: PC13
|
||
endstop_pin: probe:z_virtual_endstop
|
||
## Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0)
|
||
## (+) value = endstop above Z0, (-) value = endstop below
|
||
## Increasing position_endstop brings nozzle closer to the bed
|
||
## After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config
|
||
##--------------------------------------------------------------------
|
||
|
||
position_max: 230
|
||
|
||
##--------------------------------------------------------------------
|
||
position_min: -5
|
||
homing_speed: 100
|
||
second_homing_speed: 3
|
||
homing_retract_dist: 3
|
||
|
||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||
[tmc2209 stepper_z]
|
||
uart_pin: PE14
|
||
interpolate: false
|
||
run_current: 0.8
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
## Z1 Stepper - Rear Left
|
||
## Connected to MOTOR_3
|
||
[stepper_z1]
|
||
step_pin: PE11
|
||
dir_pin: !PE12
|
||
enable_pin: !PE10
|
||
rotation_distance: 40
|
||
gear_ratio: 80:16
|
||
microsteps: 32
|
||
|
||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||
[tmc2209 stepper_z1]
|
||
uart_pin: PE9
|
||
interpolate: false
|
||
run_current: 0.8
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
## Z2 Stepper - Rear Right
|
||
## Connected to MOTOR_6
|
||
[stepper_z2]
|
||
step_pin: PE7
|
||
dir_pin: PE8
|
||
enable_pin: !PG1
|
||
rotation_distance: 40
|
||
gear_ratio: 80:16
|
||
microsteps: 32
|
||
|
||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||
[tmc2209 stepper_z2]
|
||
uart_pin: PG0
|
||
interpolate: false
|
||
run_current: 0.8
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
## Z3 Stepper - Front Right
|
||
## Connected to MOTOR_5
|
||
[stepper_z3]
|
||
step_pin: PF13
|
||
dir_pin: !PF14
|
||
enable_pin: !PF12
|
||
rotation_distance: 40
|
||
gear_ratio: 80:16
|
||
microsteps: 32
|
||
|
||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||
[tmc2209 stepper_z3]
|
||
uart_pin: PF11
|
||
interpolate: false
|
||
run_current: 0.8
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
|
||
#####################################################################
|
||
# Extruder
|
||
#####################################################################
|
||
|
||
## Connected to MOTOR_2
|
||
## Heater - HE0
|
||
## Thermistor - T0
|
||
[extruder]
|
||
step_pin: PB0
|
||
dir_pin: PB1
|
||
enable_pin: !PC5
|
||
## Update value below when you perform extruder calibration
|
||
## If you ask for 100mm of filament, but in reality it is 98mm:
|
||
## rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100
|
||
## 22.6789511 is a good starting point
|
||
#rotation_distance: 22.5267 #PLA - perfect #Bondtech 5mm Drive Gears
|
||
#rotation_distance: 22.3464 #PETG
|
||
rotation_distance: 22.22254 #ABS
|
||
## Update Gear Ratio depending on your Extruder Type
|
||
## Use 50:10 for Stealthburner/Clockwork 2
|
||
## Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio)
|
||
## Use 80:20 for M4, M3.1
|
||
gear_ratio: 50:10 #Stealthburner/Clockwork 2
|
||
microsteps: 32
|
||
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
|
||
nozzle_diameter: 0.400
|
||
filament_diameter: 1.75
|
||
heater_pin: PB9
|
||
## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types.
|
||
## Use "Generic 3950" for NTC 100k 3950 thermistors
|
||
sensor_type: PT1000
|
||
sensor_pin: PF3
|
||
min_temp: 10
|
||
max_temp: 270
|
||
max_power: 1.0
|
||
min_extrude_temp: 170
|
||
max_extrude_only_distance: 150
|
||
control = pid
|
||
pid_kp = 26.213
|
||
pid_ki = 1.304
|
||
pid_kd = 131.721
|
||
## Try to keep pressure_advance below 1.0
|
||
#pressure_advance: 0.024
|
||
pressure_advance: 0.0405
|
||
## Default is 0.040, leave stock
|
||
#pressure_advance_smooth_time: 0.040
|
||
|
||
## E0 on MOTOR_2
|
||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||
[tmc2209 extruder]
|
||
uart_pin: PC4
|
||
interpolate: false
|
||
run_current: 0.56 #0.3 #0.5
|
||
sense_resistor: 0.110
|
||
stealthchop_threshold: 0
|
||
|
||
|
||
#####################################################################
|
||
# Bed Heater
|
||
#####################################################################
|
||
|
||
## SSR Pin - HE1
|
||
## Thermistor - TB
|
||
[heater_bed]
|
||
## Uncomment the following line if using the default SSR wiring from the docs site
|
||
#heater_pin: PA3
|
||
## Other wiring guides may use BED_OUT to control the SSR. Uncomment the following line for those cases
|
||
heater_pin: PD12
|
||
## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types.
|
||
## Use "Generic 3950" for Keenovo heaters
|
||
sensor_type: Generic 3950
|
||
sensor_pin: PA0
|
||
## Adjust Max Power so your heater doesn't warp your bed. Rule of thumb is 0.4 watts / cm^2 .
|
||
max_power: 0.6
|
||
min_temp: 0
|
||
max_temp: 120
|
||
#control: pid
|
||
#pid_kp: 58.437
|
||
#pid_ki: 2.347
|
||
#pid_kd: 363.769
|
||
|
||
#####################################################################
|
||
# Probe
|
||
#####################################################################
|
||
|
||
[probe]
|
||
pin: PF4
|
||
x_offset: 0
|
||
y_offset: 0
|
||
#z_offset: 0
|
||
speed: 50.0
|
||
samples: 3
|
||
samples_result: median
|
||
sample_retract_dist: 3.0
|
||
samples_tolerance: 0.05
|
||
samples_tolerance_retries: 5
|
||
|
||
activate_gcode:
|
||
{% set PROBE_TEMP = 150 %}
|
||
{% set MAX_TEMP = PROBE_TEMP + 5 %}
|
||
{% set ACTUAL_TEMP = printer.extruder.temperature %}
|
||
{% set TARGET_TEMP = printer.extruder.target %}
|
||
|
||
{% if TARGET_TEMP > PROBE_TEMP %}
|
||
{ action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) }
|
||
M109 S{ PROBE_TEMP }
|
||
{% else %}
|
||
# Temperature target is already low enough, but nozzle may still be too hot.
|
||
{% if ACTUAL_TEMP > MAX_TEMP %}
|
||
{ action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) }
|
||
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP }
|
||
{% endif %}
|
||
{% endif %}
|
||
|
||
#####################################################################
|
||
# Fan Control
|
||
#####################################################################
|
||
|
||
## Print Cooling Fan - FAN0
|
||
[fan]
|
||
pin: PB7
|
||
kick_start_time: 0.5
|
||
## Depending on your fan, you may need to increase this value
|
||
## if your fan will not start. Can change cycle_time (increase)
|
||
## if your fan is not able to slow down effectively
|
||
off_below: 0.10
|
||
|
||
|
||
## Hotend Fan - FAN1
|
||
[heater_fan hotend_fan]
|
||
pin: PB8
|
||
max_power: 1.0
|
||
kick_start_time: 0.5
|
||
heater: extruder
|
||
heater_temp: 50.0
|
||
## If you are experiencing back flow, you can reduce fan_speed
|
||
#fan_speed: 1.0
|
||
|
||
## Controller fan - FAN2
|
||
[controller_fan controller_fan]
|
||
pin: PC6
|
||
kick_start_time: 0.5
|
||
fan_speed: 1.0
|
||
stepper: extruder
|
||
|
||
## Exhaust fan - FAN3 - Temperature Controlled
|
||
#[heater_fan exhaust_fan]
|
||
#pin: PE5
|
||
#max_power: 1.0
|
||
#shutdown_speed: 0.0
|
||
#kick_start_time: 5.0
|
||
#heater: heater_bed
|
||
#heater_temp: 60
|
||
#fan_speed: 1.0
|
||
|
||
## Exhaust fan - FAN3 - Manually Controlled
|
||
[fan_generic exhaust_fan]
|
||
pin: PE5
|
||
max_power: 1.0
|
||
shutdown_speed: 0.0
|
||
kick_start_time: 5.0
|
||
|
||
#####################################################################
|
||
# LED Control
|
||
#####################################################################
|
||
|
||
## Chamber Lighting - HE2 Connector (Optional)
|
||
|
||
[output_pin case_light]
|
||
pin: PE6
|
||
pwm:false
|
||
shutdown_value: 0
|
||
value:1
|
||
|
||
#####################################################################
|
||
# Homing and Gantry Adjustment Routines
|
||
#####################################################################
|
||
|
||
[idle_timeout]
|
||
timeout: 1800
|
||
|
||
[safe_z_home]
|
||
## XY Location of the Z Endstop Switch
|
||
## Update -10,-10 to the XY coordinates of your endstop pin
|
||
## (such as 157,305) after going through Z Endstop Pin
|
||
## Location Definition step.
|
||
home_xy_position: 125,125
|
||
speed:200
|
||
z_hop:10
|
||
|
||
|
||
## Use QUAD_GANTRY_LEVEL to level a gantry.
|
||
## Min & Max gantry corners - measure from nozzle at MIN (0,0) and
|
||
## MAX (250, 250), (300,300), or (350,350) depending on your printer size
|
||
## to respective belt positions
|
||
[quad_gantry_level]
|
||
|
||
speed: 300
|
||
|
||
#--------------------------------------------------------------------
|
||
## Gantry Corners for 250mm Build
|
||
## Uncomment for 250mm build
|
||
gantry_corners:
|
||
-60,-10
|
||
310, 320
|
||
# Probe points
|
||
points:
|
||
25,25
|
||
25,225
|
||
225,225
|
||
225,25
|
||
#--------------------------------------------------------------------
|
||
speed: 300
|
||
horizontal_move_z: 1
|
||
retries: 5
|
||
retry_tolerance: 0.05
|
||
max_adjust: 10
|
||
|
||
########################################
|
||
# EXP1 / EXP2 (display) pins
|
||
########################################
|
||
|
||
#[board_pins]
|
||
#aliases:
|
||
# # EXP1 header
|
||
# EXP1_1=PG5, EXP1_2=PG4,
|
||
# EXP1_3=PG3, EXP1_4=PG2,
|
||
# EXP1_5=PD15, EXP1_6=PD14, # Slot in the socket on this side
|
||
# EXP1_7=PD13, EXP1_8=PD11,
|
||
# EXP1_9=<GND>, EXP1_10=<5V>,
|
||
|
||
# # EXP2 header
|
||
# EXP2_1=PB14, EXP2_2=PB13,
|
||
# EXP2_3=PD10, EXP2_4=PB12,
|
||
# EXP2_5=PD9, EXP2_6=PB15, # Slot in the socket on this side
|
||
# EXP2_7=PD8, EXP2_8=<RST>,
|
||
# EXP2_9=<GND>, EXP2_10=<5V>
|
||
|
||
#--------------------------------------------------------------------
|
||
|
||
[pause_resume]
|
||
recover_velocity: 50.
|
||
# When capture/restore is enabled, the speed at which to return to
|
||
# the captured position (in mm/s). Default is 50.0 mm/s.
|
||
|
||
[respond]
|
||
default_type: echo
|
||
# Sets the default prefix of the "M118" and "RESPOND" output to one
|
||
# of the following:
|
||
# echo: "echo: " (This is the default)
|
||
# command: "// "
|
||
# error: "!! "
|
||
#default_prefix: echo:
|
||
# Directly sets the default prefix. If present, this value will
|
||
# override the "default_type".
|
||
|
||
#####################################################################
|
||
# Filament Runout Sensor
|
||
#####################################################################
|
||
|
||
[filament_switch_sensor filament_sensor]
|
||
pause_on_runout: True
|
||
# When set to True, a PAUSE will execute immediately after a runout
|
||
# is detected. Note that if pause_on_runout is False and the
|
||
# runout_gcode is omitted then runout detection is disabled. Default
|
||
# is True.
|
||
runout_gcode:
|
||
M600
|
||
# A list of G-Code commands to execute after a filament runout is
|
||
# detected. See docs/Command_Templates.md for G-Code format. If
|
||
# pause_on_runout is set to True this G-Code will run after the
|
||
# PAUSE is complete. The default is not to run any G-Code commands.
|
||
#insert_gcode:
|
||
# A list of G-Code commands to execute after a filament insert is
|
||
# detected. See docs/Command_Templates.md for G-Code format. The
|
||
# default is not to run any G-Code commands, which disables insert
|
||
# detection.
|
||
#event_delay: 3.0
|
||
# The minimum amount of time in seconds to delay between events.
|
||
# Events triggered during this time period will be silently
|
||
# ignored. The default is 3 seconds.
|
||
#pause_delay: 0.5
|
||
# The amount of time to delay, in seconds, between the pause command
|
||
# dispatch and execution of the runout_gcode. It may be useful to
|
||
# increase this delay if OctoPrint exhibits strange pause behavior.
|
||
# Default is 0.5 seconds.
|
||
switch_pin: PC14
|
||
# The pin on which the switch is connected. This parameter must be
|
||
# provided
|
||
|
||
#####################################################################
|
||
# User Modifications
|
||
#####################################################################
|
||
|
||
## Bed Mesh Configuration
|
||
# Uncomment BED_MESH_CALIBRATE in the PRINT_START macro below to enable bed levelling.
|
||
|
||
[bed_mesh]
|
||
speed: 300
|
||
horizontal_move_z: 5
|
||
mesh_min: 50,25
|
||
mesh_max: 200,175
|
||
probe_count: 5, 5
|
||
|
||
# Idle Timeout Configuration
|
||
# This block increases the idle timeout from 10 minutes to 8 hours.
|
||
# This may be longer that you are comfortable with.
|
||
# Reduce the timeout value if you want the heaters to shut off sooner.
|
||
# A longer timeout is necesary if you want to recover from filament runout or M600 filament change.
|
||
|
||
[idle_timeout]
|
||
#gcode:
|
||
# A list of G-Code commands to execute on an idle timeout. See
|
||
# docs/Command_Templates.md for G-Code format. The default is to run
|
||
# "TURN_OFF_HEATERS" and "M84".
|
||
timeout: 28800
|
||
# Idle time (in seconds) to wait before running the above G-Code
|
||
# commands. The default is 600 seconds.
|
||
|
||
|
||
#####################################################################
|
||
# Macros
|
||
#####################################################################
|
||
|
||
|
||
[gcode_macro G32]
|
||
gcode:
|
||
SAVE_GCODE_STATE NAME=STATE_G32
|
||
G90
|
||
G28
|
||
M109 S150
|
||
NOZZLE_CLEAN
|
||
G28 Z
|
||
QUAD_GANTRY_LEVEL
|
||
G0 X125 Y125 Z30 F3600
|
||
RESTORE_GCODE_STATE NAME=STATE_G32
|
||
|
||
|
||
|
||
|
||
# Use PRINT_START for the slicer starting script - please customise for your slicer of choice
|
||
[gcode_macro PRINT_START]
|
||
gcode:
|
||
M104 S150
|
||
{% set temp_extruder = params.EXTRUDER|int %}
|
||
G32 ; home all axes
|
||
BED_MESH_CALIBRATE ; Uncomment to add mesh bed levelling
|
||
G90 ; absolute positioning
|
||
G1 Z20 F3000 ; move nozzle away from bed
|
||
M109 S{temp_extruder}
|
||
NOZZLE_PRIME
|
||
|
||
|
||
[gcode_macro START_PRINT]
|
||
gcode:
|
||
G28 # Home the printer
|
||
G92 E0 # Reset extruder
|
||
M104 S150
|
||
G32
|
||
#BED_MESH_CALIBRATE PROFILE=mesh1 METHOD=automatic
|
||
#BED_MESH_PROFILE LOAD=mesh1
|
||
# Move to wait position
|
||
#G28 X
|
||
G90
|
||
#G1 X175 Y175
|
||
|
||
[gcode_macro END_PRINT]
|
||
#variable_machine_depth: printer.configfile.settings.stepper_z.position_max
|
||
gcode:
|
||
; layer end
|
||
G91 ;relative positioning
|
||
G1 E-5.00 F1000 ;retract 5mm of filament
|
||
G1 Z+1.00 X+20.0 Y+20.0 F20000 ;short quick move to disengage from print
|
||
G1 Z+10.00 F20000 ;move Z-Axis 10mm away from part
|
||
G90 ;absolute positioning
|
||
G28 X0 Y0 ; move gantry close to home
|
||
G91 ; relative positioning
|
||
G1 E-5.00 F500 ;retract additional filament to prevent oozing
|
||
G90 ;absolute positioning
|
||
M104 S0 ;turn off hotend
|
||
M140 S0 ;turn off heatbed
|
||
M106 S0 ; shut off blower
|
||
M84 ;motors off -- disabled so that head can still be moved after print finishes
|
||
|
||
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
|
||
[gcode_macro PRINT_END]
|
||
gcode:
|
||
# safe anti-stringing move coords
|
||
{% set th = printer.toolhead %}
|
||
{% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %}
|
||
{% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %}
|
||
{% set z_safe = [th.position.z + 2, th.axis_maximum.z]|min %}
|
||
|
||
SAVE_GCODE_STATE NAME=STATE_PRINT_END
|
||
|
||
M400 ; wait for buffer to clear
|
||
G92 E0 ; zero the extruder
|
||
G1 E-5.0 F1800 ; retract filament
|
||
|
||
TURN_OFF_HEATERS
|
||
|
||
G90 ; absolute positioning
|
||
G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing
|
||
G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 ; park nozzle at rear
|
||
M107 ; turn off fan
|
||
|
||
BED_MESH_CLEAR
|
||
RESTORE_GCODE_STATE NAME=STATE_PRINT_END
|
||
|
||
#####
|
||
# COLOR CHANGE
|
||
#####
|
||
[gcode_macro M600]
|
||
description: Executes a color change by pausing the printer an unloading the filament.
|
||
gcode:
|
||
PAUSE
|
||
UNLOAD_FILAMENT
|
||
M117 Please load new filament and resume
|
||
RESPOND MSG="Please load new filament and resume"
|
||
|
||
#####
|
||
# FILAMENT MANAGEMENT
|
||
#####
|
||
|
||
[gcode_macro UNLOAD_FILAMENT]
|
||
description: Unloads the filament. Note: be careful with PETG, make sure you inspect the tip of your filament before reloading to avoid jams.
|
||
gcode:
|
||
SAVE_GCODE_STATE NAME=unload_state
|
||
G91
|
||
{% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %}
|
||
M117 Heating...
|
||
# Heat up hotend to provided temp or 220 as default as that should work OK with most filaments.
|
||
M104 S{params.TEMP|default(220, true)}
|
||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)}
|
||
{% endif %}
|
||
M117 Unloading filament...
|
||
# Extract filament to cold end area
|
||
G0 E-5 F3600
|
||
# Wait for three seconds
|
||
G4 P3000
|
||
# Push back the filament to smash any stringing
|
||
G0 E5 F3600
|
||
# Extract back fast in to the cold zone
|
||
G0 E-15 F3600
|
||
# Continue extraction slowly, allow the filament time to cool solid before it reaches the gears
|
||
G0 E-130 F300
|
||
M117 Filament unloaded!
|
||
RESPOND MSG="Filament unloaded! Please inspect the tip of the filament before reloading."
|
||
RESTORE_GCODE_STATE NAME=unload_state
|
||
|
||
[gcode_macro LOAD_FILAMENT]
|
||
description: Loads new filament. Note: be careful with PETG, make sure you inspect the tip of your filament before loading to avoid jams.
|
||
gcode:
|
||
SAVE_GCODE_STATE NAME=load_state
|
||
G91
|
||
# Heat up hotend to provided temp or 220 as default as that should work OK with most filaments.
|
||
{% if params.TEMP is defined or printer.extruder.can_extrude|lower == 'false' %}
|
||
M117 Heating...
|
||
M104 S{params.TEMP|default(220, true)}
|
||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.TEMP|default(220, true)}
|
||
{% endif %}
|
||
M117 Loading filament...
|
||
# Load the filament into the hotend area.
|
||
G0 E100 F600
|
||
# Wait a secod
|
||
G4 P1000
|
||
# Purge
|
||
G0 E40 F100
|
||
# Wait for purge to complete
|
||
M400e
|
||
M117 Filament loaded!
|
||
RESPOND MSG="Filament loaded!"
|
||
RESTORE_GCODE_STATE NAME=load_state
|
||
|
||
[gcode_macro NOZZLE_CLEAN]
|
||
description: wipes nozzle on brush to clean it
|
||
gcode:
|
||
G90
|
||
G1 X95 Y250 F6000
|
||
G1 Z0.5 F3000
|
||
G1 X145 Y250 F10000
|
||
G1 X95 Y250 F10000
|
||
G1 X145 Y250 F10000
|
||
G1 X95 Y250 F10000
|
||
G1 X145 Y250 F10000
|
||
G1 X95 Y250 F10000
|
||
G1 Z10 F6000
|
||
|
||
[gcode_macro NOZZLE_PRIME]
|
||
description: prime the nozzle before printing
|
||
gcode:
|
||
G92 E0
|
||
G1 E-3 F1800
|
||
G1 X0 Y0 F10000
|
||
G1 Z0.3 F500
|
||
G92 E0
|
||
G1 E3 F500
|
||
G92 E0
|
||
G1 E-0.30000 F3600
|
||
G1 Z0.2500 F1000
|
||
G1 X250 Y0 E50 F1000
|
||
G92 E0
|
||
G1 E-0.30000 F5400
|
||
G1 Z10 F500
|
||
|
||
[gcode_macro PAUSE]
|
||
description: Pause the actual running print
|
||
rename_existing: PAUSE_BASE
|
||
gcode:
|
||
PAUSE_BASE
|
||
_TOOLHEAD_PARK_PAUSE_CANCEL
|
||
|
||
[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
|
||
description: Helper: park toolhead used in PAUSE and CANCEL_PRINT
|
||
variable_extrude: 1.0
|
||
gcode:
|
||
##### set park positon for x and y #####
|
||
# default is your max posion from your printer.cfg
|
||
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
|
||
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
|
||
{% set z_park_delta = 10.0 %}
|
||
##### calculate save lift position #####
|
||
{% set max_z = printer.toolhead.axis_maximum.z|float %}
|
||
{% set act_z = printer.toolhead.position.z|float %}
|
||
{% if act_z < (max_z - z_park_delta) %}
|
||
{% set z_safe = z_park_delta %}
|
||
{% else %}
|
||
{% set z_safe = max_z - act_z %}
|
||
{% endif %}
|
||
##### end of definitions #####
|
||
{% if printer.extruder.can_extrude|lower == 'true' %}
|
||
M83
|
||
G1 E-{extrude} F2100
|
||
{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
|
||
{% else %}
|
||
{action_respond_info("Extruder not hot enough")}
|
||
{% endif %}
|
||
{% if "xyz" in printer.toolhead.homed_axes %}
|
||
G91
|
||
G1 Z{z_safe} F900
|
||
G90
|
||
G1 X{x_park} Y{y_park} F6000
|
||
{% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %}
|
||
{% else %}
|
||
{action_respond_info("Printer not homed")}
|
||
{% endif %}
|
||
|
||
[gcode_macro _USER_VARIABLE]
|
||
description: Helper: Contains User defined printer variables
|
||
variable_disable_turnoff: 0
|
||
gcode:
|
||
|
||
[gcode_macro RESONANCES_TEST]
|
||
description: Run input shaper test
|
||
gcode:
|
||
{% set user = printer['gcode_macro _USER_VARIABLE'] %}
|
||
_CG28 ; home if needed
|
||
TURN_OFF_HEATERS ; turn off heaters
|
||
M107 ; turn off fan
|
||
{% if user.hw.chamber.fan %} M141 {% endif %} ; exhaust fan off
|
||
{% if user.hw.filter.ena %} _SET_FILTER {% endif %} ; filter off
|
||
_PRINT_AR T="INPUT SHAPER: Noise values, check if sensor is installed"
|
||
MEASURE_AXES_NOISE ; get noise value in log
|
||
_PRINT_AR T="INPUT SHAPER: Resonance Tests starting"
|
||
_PRINT_AR T="INPUT SHAPER: Mesasure X axis"
|
||
TEST_RESONANCES AXIS=X ; measure X
|
||
_PRINT_AR T="INPUT SHAPER: Mesasure Y axis"
|
||
TEST_RESONANCES AXIS=Y ; measure Y
|
||
_PRINT_AR T="INPUT SHAPER: Resonance Tests done"
|
||
_PRINT_AR T="INPUT SHAPER: Generate graph in backround"
|
||
RUN_SHELL_COMMAND CMD=plot_graph PARAMS=SHAPER
|
||
|
||
[gcode_macro M486]
|
||
gcode:
|
||
# Parameters known to M486 are as follows:
|
||
# [C<flag>] Cancel the current object
|
||
# [P<index>] Cancel the object with the given index
|
||
# [S<index>] Set the index of the current object.
|
||
# If the object with the given index has been canceled, this will cause
|
||
# the firmware to skip to the next object. The value -1 is used to
|
||
# indicate something that isn’t an object and shouldn’t be skipped.
|
||
# [T<count>] Reset the state and set the number of objects
|
||
# [U<index>] Un-cancel the object with the given index. This command will be
|
||
# ignored if the object has already been skipped
|
||
|
||
{% if 'exclude_object' not in printer %}
|
||
{action_raise_error("[exclude_object] is not enabled")}
|
||
{% endif %}
|
||
|
||
{% if 'T' in params %}
|
||
EXCLUDE_OBJECT RESET=1
|
||
|
||
{% for i in range(params.T | int) %}
|
||
EXCLUDE_OBJECT_DEFINE NAME={i}
|
||
{% endfor %}
|
||
{% endif %}
|
||
|
||
{% if 'C' in params %}
|
||
EXCLUDE_OBJECT CURRENT=1
|
||
{% endif %}
|
||
|
||
{% if 'P' in params %}
|
||
EXCLUDE_OBJECT NAME={params.P}
|
||
{% endif %}
|
||
|
||
{% if 'S' in params %}
|
||
{% if params.S == '-1' %}
|
||
{% if printer.exclude_object.current_object %}
|
||
EXCLUDE_OBJECT_END NAME={printer.exclude_object.current_object}
|
||
{% endif %}
|
||
{% else %}
|
||
EXCLUDE_OBJECT_START NAME={params.S}
|
||
{% endif %}
|
||
{% endif %}
|
||
|
||
{% if 'U' in params %}
|
||
EXCLUDE_OBJECT RESET=1 NAME={params.U}
|
||
{% endif %}
|
||
|
||
[gcode_macro Calibrate_Probe_Offset]
|
||
gcode:
|
||
PROBE_CALIBRATE
|
||
|
||
[gcode_macro CANCEL_PRINT]
|
||
description: Cancel the actual running print
|
||
rename_existing: CANCEL_PRINT_BASE
|
||
gcode:
|
||
##### get user parameters or use default #####
|
||
{% set client = printer['gcode_macro _CLIENT_VARIABLE'] | default({}) %}
|
||
{% set allow_park = client.park_at_cancel | default(false) | lower == 'true' %}
|
||
{% set retract = client.cancel_retract | default(5.0) | abs %}
|
||
##### define park position #####
|
||
{% set park_x = "" if (client.park_at_cancel_x | default(none) is none)
|
||
else "X=" ~ client.park_at_cancel_x %}
|
||
{% set park_y = "" if (client.park_at_cancel_y | default(none) is none)
|
||
else "Y=" ~ client.park_at_cancel_y %}
|
||
{% set custom_park = park_x | length > 0 or park_y | length > 0 %}
|
||
##### end of definitions #####
|
||
# restore idle_timeout time if needed
|
||
{% if printer['gcode_macro RESUME'].restore_idle_timeout > 0 %}
|
||
SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro RESUME'].restore_idle_timeout}
|
||
{% endif %}
|
||
#{% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %}
|
||
_TOOLHEAD_PARK_PAUSE_CANCEL
|
||
_CLIENT_RETRACT LENGTH={retract}
|
||
TURN_OFF_HEATERS
|
||
M106 S0
|
||
{client.user_cancel_macro | default("")}
|
||
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
|
||
# clear pause_next_layer and pause_at_layer as preparation for next print
|
||
SET_PAUSE_NEXT_LAYER ENABLE=0
|
||
SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0
|
||
CANCEL_PRINT_BASE
|
||
|
||
#*# <---------------------- SAVE_CONFIG ---------------------->
|
||
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
|
||
#*#
|
||
#*# [input_shaper]
|
||
#*# shaper_type_x = 3hump_ei
|
||
#*# shaper_freq_x = 88.4
|
||
#*# shaper_type_y = zv
|
||
#*# shaper_freq_y = 55.4
|
||
#*#
|
||
#*# [probe]
|
||
#*# z_offset = -1.210
|
||
#*#
|
||
#*# [extruder]
|
||
#*#
|
||
#*# [heater_bed]
|
||
#*# control = pid
|
||
#*# pid_kp = 40.040
|
||
#*# pid_ki = 1.648
|
||
#*# pid_kd = 243.242
|
||
#*#
|
||
#*# [bed_mesh default]
|
||
#*# version = 1
|
||
#*# points =
|
||
#*# 0.083466, 0.032216, 0.105966
|
||
#*# 0.104716, 0.013466, 0.102216
|
||
#*# 0.082216, -0.011534, 0.084716
|
||
#*# 0.098466, 0.039716, 0.154716
|
||
#*# 0.105966, 0.062216, 0.132216
|
||
#*# x_count = 3
|
||
#*# y_count = 5
|
||
#*# mesh_x_pps = 2
|
||
#*# mesh_y_pps = 2
|
||
#*# algo = lagrange
|
||
#*# tension = 0.2
|
||
#*# min_x = 92.43099999999998
|
||
#*# max_x = 157.551
|
||
#*# min_y = 61.08
|
||
#*# max_y = 175.0
|