New Backup on boot - 16/04/25 - 14:15:33
This commit is contained in:
commit
73be850f66
16 files changed
+2294
No files matched your search
@@ -0,0 +1,9 @@
|
||||
.env
|
||||
secrets.conf
|
||||
*.swp
|
||||
*.tmp
|
||||
printer-[0-9]*_[0-9]*.cfg
|
||||
*.bak
|
||||
*.bkp
|
||||
*.csv
|
||||
*.zip
|
||||
@@ -0,0 +1,4 @@
|
||||
# Klipper-Backup 💾
|
||||
Klipper backup script for manual or automated GitHub backups
|
||||
|
||||
This backup is provided by [Klipper-Backup](https://github.com/Staubgeborener/klipper-backup).
|
||||
@@ -0,0 +1,77 @@
|
||||
# This file contains common pin mappings for the BIGTREETECH EBB USB board.
|
||||
# To use this config, the firmware should be compiled for the RP2040 with "USB".
|
||||
# The "EBB Can" micro-controller will be used to control the components on the nozzle.
|
||||
|
||||
# See docs/Config_Reference.md for a description of parameters.
|
||||
|
||||
[mcu EBB]
|
||||
serial: /dev/serial/by-id/usb-Klipper_rp2040_5044340310A5581C-if00
|
||||
|
||||
[temperature_sensor EBB_NTC]
|
||||
sensor_type: Generic 3950
|
||||
sensor_pin: EBB:gpio27
|
||||
|
||||
[lis2dw]
|
||||
cs_pin: EBB:gpio1
|
||||
spi_bus: spi0a
|
||||
axes_map: z,x,y
|
||||
|
||||
[resonance_tester]
|
||||
probe_points: 175, 175, 20
|
||||
accel_chip: lis2dw
|
||||
|
||||
[extruder]
|
||||
step_pin: EBB:gpio18
|
||||
dir_pin: !EBB:gpio19
|
||||
enable_pin: !EBB:gpio17
|
||||
gear_ratio: 50:10
|
||||
microsteps: 16
|
||||
rotation_distance: 22.6789511
|
||||
full_steps_per_rotation: 200
|
||||
nozzle_diameter: 0.600
|
||||
filament_diameter: 1.750
|
||||
heater_pin: EBB:gpio7
|
||||
pullup_resistor: 2200 # 2.2K
|
||||
sensor_type: PT1000
|
||||
sensor_pin: EBB:gpio26
|
||||
max_extrude_cross_section: 5
|
||||
min_temp: 0
|
||||
max_temp: 350
|
||||
|
||||
#sensor_type: MAX31865
|
||||
#sensor_pin: EBB:gpio9
|
||||
#spi_bus: spi1a
|
||||
#rtd_nominal_r: 1000
|
||||
#rtd_reference_r: 4300
|
||||
#rtd_num_of_wires: 2
|
||||
#rtd_use_50Hz_filter: True
|
||||
|
||||
[tmc2209 extruder]
|
||||
uart_pin: EBB:gpio20
|
||||
run_current: 0.650
|
||||
stealthchop_threshold: 999999
|
||||
|
||||
#[fan] # fan1
|
||||
#pin: EBB:gpio14
|
||||
|
||||
[heater_fan hotend_fan] # fan2
|
||||
pin: EBB:gpio14
|
||||
heater: extruder
|
||||
heater_temp: 50.0
|
||||
|
||||
#[fan_generic fan3]
|
||||
#pin: EBB:gpio5
|
||||
|
||||
#[fan_generic 4W_FAN]
|
||||
#pin: EBB:gpio16
|
||||
#tachometer_pin: EBB:gpio12
|
||||
#tachometer_ppr: 1
|
||||
|
||||
[filament_switch_sensor toolhead_switch_sensor]
|
||||
switch_pin: EBB:gpio13
|
||||
pause_on_runout: True
|
||||
runout_gcode:
|
||||
PAUSE # [pause_resume] is required in printer.cfg
|
||||
M117 Toolhead Filament switch runout
|
||||
insert_gcode:
|
||||
M117 Toolhead Filament switch inserted
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
[mcu eddy]
|
||||
serial: /dev/serial/by-id/usb-Klipper_rp2040_504450612086291C-if00 # This is the serial address of your eddy probe. This can be found by using the terminal of your klipper instance (typically through SSH) and using the command ```ls /dev/serial/by-id```
|
||||
restart_method: command
|
||||
|
||||
[probe_eddy_ng btt_eddy]
|
||||
sensor_type: btt_eddy
|
||||
i2c_mcu: eddy
|
||||
i2c_bus: i2c0f
|
||||
x_offset: 0 # INSERT VALUE FOR YOUR PROBE POSITION
|
||||
y_offset: 36 # INSERT VALUE FOR YOUR PROBE POSITION
|
||||
reg_drive_current: 15
|
||||
tap_target_z: -0.6
|
||||
tap_start_z: 3
|
||||
tap_mode: butter
|
||||
tap_threshold: 135
|
||||
tap_samples: 5
|
||||
tap_max_samples: 10
|
||||
tap_samples_stddev: 0.025
|
||||
tap_speed: 2
|
||||
tap_adjust_z: -0.225
|
||||
|
||||
[temperature_sensor btt_eddy_mcu]
|
||||
sensor_type: temperature_mcu
|
||||
sensor_mcu: eddy
|
||||
min_temp: 10
|
||||
max_temp: 100
|
||||
|
||||
[temperature_sensor btt_eddy]
|
||||
sensor_type: Generic 3950
|
||||
sensor_pin: eddy:gpio26
|
||||
@@ -0,0 +1,19 @@
|
||||
[filament_switch_sensor switch_sensor]
|
||||
switch_pin: ^PG10
|
||||
pause_on_runout: True
|
||||
runout_gcode:
|
||||
PAUSE # [pause_resume] is required in printer.cfg
|
||||
M117 Filament switch runout
|
||||
insert_gcode:
|
||||
M117 Filament switch inserted
|
||||
|
||||
[filament_motion_sensor encoder_sensor]
|
||||
switch_pin: ^PG11
|
||||
detection_length: 5.0 #2.88 minimum
|
||||
extruder: extruder
|
||||
pause_on_runout: True
|
||||
runout_gcode:
|
||||
PAUSE # [pause_resume] is required in printer.cfg
|
||||
M117 Filament encoder runout
|
||||
insert_gcode:
|
||||
M117 Filament encoder inserted
|
||||
@@ -0,0 +1,110 @@
|
||||
[bed_mesh]
|
||||
mesh_min = 10, 40
|
||||
mesh_max = 340, 335
|
||||
speed = 200
|
||||
horizontal_move_z = 2
|
||||
probe_count = 10,10
|
||||
algorithm = bicubic
|
||||
##[(7x7)-1] / 2 = 24
|
||||
##[(5x5)-1] / 2 = 12
|
||||
##[(9x9)-1] / 2 = 40
|
||||
#relative_reference_index: 40
|
||||
#zero_reference_position: 175, 175
|
||||
#relative_reference_index: 15
|
||||
split_delta_z = 0.0125
|
||||
|
||||
[gcode_macro QUAD_GANTRY_LEVEL]
|
||||
rename_existing: _QUAD_GANTRY_LEVEL
|
||||
gcode:
|
||||
STATUS_LEVELING
|
||||
SAVE_GCODE_STATE NAME=STATE_QGL
|
||||
BED_MESH_CLEAR
|
||||
# If QGL has not been done yet, correct for any major skew first
|
||||
# at 8mm height
|
||||
{% if not printer.quad_gantry_level.applied %}
|
||||
_QUAD_GANTRY_LEVEL horizontal_move_z=8 retry_tolerance=1
|
||||
{% endif %}
|
||||
# Compelte with a full QGL at the configured height
|
||||
_QUAD_GANTRY_LEVEL
|
||||
RESTORE_GCODE_STATE NAME=STATE_QGL
|
||||
|
||||
#####################################################################
|
||||
# Macros
|
||||
#####################################################################
|
||||
## customize BED MESH CALIBRATE gcode
|
||||
|
||||
## use BED_MESH_STORE -> generate MESH and save immediately and park in the middle
|
||||
## use BED_MESH_STORE PARK=false -> generate MESH and save immediately
|
||||
## use BED_MESH_STORE SAVE=false -> generate MESH and save it later
|
||||
## use BED_MESH_STORE SAVE=false PARK=false -> would be most likely be used in your macros
|
||||
[gcode_macro BED_MESH_STORE]
|
||||
description: Generate a mesh, name it and run save_config if requested
|
||||
variable_save_at_end: 'false'
|
||||
gcode:
|
||||
##### set default parameter value #####
|
||||
{% set save = params.SAVE|default('true') %}
|
||||
{% set park = params.PARK|default('true') %}
|
||||
############# Get user defines #############
|
||||
{% set center = printer["gcode_macro _USER_VARIABLE"].center %}
|
||||
{% set z_hop = printer["gcode_macro _USER_VARIABLE"].z_hop %}
|
||||
{% set bed_temp = printer.heater_bed.target|int %}
|
||||
##### define plate name: Voron (default) or flexplate name #####
|
||||
{% set plate_name = 'Voron' %}
|
||||
{% if 'save_variables' in printer.configfile.config %}
|
||||
{% if printer.save_variables.variables.plate_array is defined %}
|
||||
{% set plate_index = printer.save_variables.variables.plate_index|int %}
|
||||
{% set plate_name = printer.save_variables.variables.plate_array[plate_index][0] %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
##### join everything to a single mesh name #####
|
||||
{% set mesh_name = "Voron-Bed_Temp-" + bed_temp|string + "C" %}
|
||||
##### end of definitions #####
|
||||
BED_MESH_CALIBRATE
|
||||
BED_MESH_PROFILE SAVE={mesh_name}
|
||||
BED_MESH_PROFILE REMOVE=default
|
||||
{% if park|lower == 'true' %}
|
||||
G90 ; set absolute
|
||||
G0 Z{z_hop} F1800 ; move nozzle to z high first
|
||||
G0 X{center[0]} Y{center[1]} F18000 ; home to get toolhead in the middle
|
||||
{% endif %}
|
||||
{% if save|lower == 'true' %}
|
||||
_PRINT_AR T="BED_MESH: Save Config!"
|
||||
SAVE_CONFIG
|
||||
{% else %}
|
||||
_PRINT_AR T="BED_MESH: Save Config after print done"
|
||||
SET_GCODE_VARIABLE MACRO=BED_MESH_STORE VARIABLE=save_at_end VALUE='"true"'
|
||||
{% endif %}
|
||||
|
||||
|
||||
## use BED_MESH_LOAD -> load an existing MESH
|
||||
## use BED_MESH_LOAD AUTO=true -> load an existing MESH or generate a new one and prepare it to be saved after print end
|
||||
[gcode_macro BED_MESH_LOAD]
|
||||
description: Load an existing mesh or generate a new one
|
||||
gcode:
|
||||
##### set default parameter value #####
|
||||
{% set auto = params.AUTO|default('false') %}
|
||||
{% set bed_temp = printer.heater_bed.target|int %}
|
||||
##### join everything to a single mesh name #####
|
||||
{% set mesh_name = "Voron-Bed_Temp-" + bed_temp|string + "C" %}
|
||||
##### end of definitions #####
|
||||
{% if printer.configfile.config["bed_mesh " + mesh_name] is defined %}
|
||||
BED_MESH_CLEAR
|
||||
BED_MESH_PROFILE LOAD={mesh_name}
|
||||
_PRINT_AR T="{"BED_MESH: " + mesh_name + " loaded"}"
|
||||
{% else %}
|
||||
{% if auto|lower == 'true' %}
|
||||
_PRINT_AR T="{"BED_MESH: " + mesh_name + " needs to be generated"}"
|
||||
BED_MESH_STORE SAVE=false PARK=false
|
||||
{% else %}
|
||||
_PRINT_AR T="{"BED_MESH ERROR: " + mesh_name + " not defined"}"
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
## add this to your PRINT_END to save a mesh if needed 10 seconds after print ended
|
||||
## UPDATE_DELAYED_GCODE ID=_BED_MESH_SAVE DURATION=10
|
||||
[delayed_gcode _BED_MESH_SAVE]
|
||||
gcode:
|
||||
{% if printer["gcode_macro BED_MESH_STORE"].save_at_end == 'true' %}
|
||||
_PRINT_AR T="BED_MESH: Save Config!"
|
||||
SAVE_CONFIG
|
||||
{% endif %}
|
||||
@@ -0,0 +1,95 @@
|
||||
# Note you may need to add the following to your printer.cfg somewhere (without the comments of course) for the Kinematic position stuff below to work.
|
||||
#[force_move]
|
||||
#enable_force_move: True
|
||||
|
||||
#[safe_z_home]
|
||||
#home_xy_position: 175, 175
|
||||
#speed: 150.0
|
||||
#z_hop: 2
|
||||
#z_hop_speed: 15.0
|
||||
#move_to_previous: False
|
||||
|
||||
[gcode_macro _HOME_X]
|
||||
gcode:
|
||||
# Home
|
||||
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %}
|
||||
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %}
|
||||
{% set HOME_CURRENT = 0.49 %}
|
||||
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT}
|
||||
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT}
|
||||
|
||||
SET_KINEMATIC_POSITION X=5
|
||||
G91
|
||||
G1 X-5 F1200
|
||||
|
||||
#G4 P2000
|
||||
#M400 to finish all pending moves/process the buffer
|
||||
M400
|
||||
G28 X
|
||||
|
||||
# Move away
|
||||
G91
|
||||
G1 X-5 F1200
|
||||
|
||||
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
|
||||
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
|
||||
|
||||
[gcode_macro _HOME_Y]
|
||||
gcode:
|
||||
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %}
|
||||
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %}
|
||||
{% set HOME_CURRENT = 0.49 %}
|
||||
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT}
|
||||
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT}
|
||||
|
||||
SET_KINEMATIC_POSITION Y=5
|
||||
G91
|
||||
G1 Y-5 F1200
|
||||
|
||||
#G4 P2000
|
||||
#M400 to finish all pending moves/process the buffer
|
||||
M400
|
||||
|
||||
# Home
|
||||
G28 Y
|
||||
# Move away
|
||||
G91
|
||||
G1 Y-5 F1200
|
||||
|
||||
# Wait just a second… (give StallGuard registers time to clear)
|
||||
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
|
||||
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
|
||||
|
||||
[homing_override]
|
||||
axes: xyz
|
||||
gcode:
|
||||
{% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %}
|
||||
|
||||
SET_KINEMATIC_POSITION Z=0
|
||||
G1 Z5 F1200
|
||||
|
||||
{% if home_all or 'X' in params %}
|
||||
_HOME_X
|
||||
{% endif %}
|
||||
|
||||
{% if home_all or 'Y' in params %}
|
||||
_HOME_Y
|
||||
{% endif %}
|
||||
|
||||
{% if home_all or 'Z' in params %}
|
||||
|
||||
G90
|
||||
G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } F4500
|
||||
|
||||
G28 Z
|
||||
|
||||
G1 Z10 F1500
|
||||
{% endif %}
|
||||
|
||||
|
||||
[gcode_macro _CG28]
|
||||
description: Homing only if necessary
|
||||
gcode:
|
||||
{% if "xyz" not in printer.toolhead.homed_axes %}
|
||||
G28
|
||||
{% endif %}
|
||||
@@ -0,0 +1,225 @@
|
||||
#######################################################################################################################################
|
||||
|
||||
# Sample macro config to be used in conjunction with the Decontaminator Purge Bucket & Nozzle Scrubber mod. Created by Hernsl
|
||||
# (hernsl#8860 on Discord) and edited by Edwardyeeks (edwardyeeks#6042 on Discord). Several ideas that made it as features by
|
||||
# Deutherius (deutherius#3295 on Discord).
|
||||
|
||||
# The goal of this macro is to provide a nozzle scrubbing and purging routine that is easily copied/referenced into your printer.cfg.
|
||||
# Users can simply change parameters and enable/disable options in the first half. Descriptions are plentiful, making this macro
|
||||
# look huge but informative and are laid out in sequence to be read first describing the line below; PLEASE READ CAREFULLY.
|
||||
|
||||
# This sample config assumes the following: The user has implemented the default decontaminator purge bucket & nozzle scrubber mod
|
||||
# for the VORON 1/2. It can be tweaked to customised purge bucket geometries and brushes.
|
||||
|
||||
# Features in this macro: option of putting the bucket at the rear or front of the bed. Purge routine that can be enabled/disabled.
|
||||
# By default, bucket is located at rear left of bed and purge routine is enabled. The purge and scrubbing routine is randomized
|
||||
# in either left or right bucket to ensure as even as possible distribution of filament gunk.
|
||||
|
||||
# Default parameters are set for safe speeds and movements. Where necessary, tweak the parameters for the nozzle scrub procedure
|
||||
# to fit your printer.
|
||||
|
||||
# To avoid adding length of lines to your main printer.cfg config file, one can upload a config file separately into klipper and
|
||||
# include it into the main printer config. Upload nozzle_scrub.cfg to the same directory as printer.cfg. Usually, it is in /home/pi/.
|
||||
# Users of Fluidd, Mainsail and other klipper front ends would find it under /home/pi/klipper_config/.
|
||||
|
||||
# Once uploaded, add the following to your printer.cfg in the Macros section: [include /home/pi/nozzle_scrub.cfg]
|
||||
# Those running Fluidd, Mainsail and other front ends will need to use the following location instead:
|
||||
# [include /home/pi/klipper_config/nozzle_scrub.cfg]
|
||||
|
||||
#######################################################################################################################################
|
||||
|
||||
# Name of the macro is clean_nozzle.
|
||||
|
||||
[gcode_macro clean_nozzle]
|
||||
|
||||
# If you are putting your purge bucket at the rear left of the bed as per default installation, enable True on your location_bucket_rear
|
||||
# variable. If you want to put your purge bucket elsewhere (perhaps the front), then set it to False. See diagrams and description
|
||||
# further below on how to set your XY position.
|
||||
variable_location_bucket_rear: True
|
||||
|
||||
# If you want the purging routine in your bucket enabled, set to True (and vice versa).
|
||||
variable_enable_purge: True
|
||||
|
||||
# These parameters define your filament purging. The retract variable is used to retract right after purging to prevent unnecessary
|
||||
# oozing. Some filament are particularly oozy and may continue to ooze out of the nozzle for a second or two after retracting. The
|
||||
# ooze dwell variable makes allowance for this. Update as necessary. If you decided to not enable purge, you can ignore this section.
|
||||
variable_purge_len: 10 ; Amount of filament, in mm, to purge.
|
||||
variable_purge_spd: 150 ; Speed, in mm/min, of the purge.
|
||||
variable_purge_temp_min: 240 ; Minimum nozzle temperature to permit a purge. Otherwise, purge will not occur.
|
||||
variable_purge_ret: 2 ; Retract length, in mm, after purging to prevent slight oozing. Adjust as necessary.
|
||||
variable_ooze_dwell: 2 ; Dwell/wait time, in seconds, after purging and retracting.
|
||||
|
||||
# Adjust this so that your nozzle scrubs within the brush. Currently defaulted to be a lot higher for safety. Be careful not to go too low!
|
||||
variable_brush_top: .3
|
||||
|
||||
# These parameters define your scrubbing, travel speeds, safe z clearance and how many times you want to wipe. Update as necessary. Wipe
|
||||
# direction is randomized based off whether the left or right bucket is randomly selected in the purge & scrubbing routine.
|
||||
variable_clearance_z: 5 ; When traveling, but not cleaning, the clearance along the z-axis between nozzle and brush.
|
||||
variable_wipe_qty: 7 ; Number of complete (A complete wipe: left, right, left OR right, left, right) wipes.
|
||||
variable_prep_spd_xy: 3000 ; Travel (not cleaning) speed along x and y-axis in mm/min.
|
||||
variable_prep_spd_z: 1500 ; Travel (not cleaning) speed along z axis in mm/min.
|
||||
variable_wipe_spd_xy: 5000 ; Nozzle wipe speed in mm/min.
|
||||
|
||||
|
||||
# These parameters define the size of the brush. Update as necessary. A visual reference is provided below. Note that orientation of
|
||||
# parameters remain the same whether bucket is at rear or front.
|
||||
#
|
||||
# ← brush_width →
|
||||
# _________________ ↑
|
||||
# | | ↑ If you chose location_bucket_rear = True, Y position is acquired
|
||||
# brush_start (x) | | brush_depth from your stepper_y position_max. Adjust your brush physically in
|
||||
# |_________________| ↓ Y so that the nozzle scrubs within the brush.
|
||||
# (y) ↓
|
||||
# brush_front
|
||||
# __________________________________________________________
|
||||
# PRINTER FRONT
|
||||
#
|
||||
#
|
||||
## For V1.8, you may need to measure where your brush is on the x axis and input manually into any of the variable_brush_start uncommented.
|
||||
## For V2.4 250mm build, uncomment this below:
|
||||
#variable_brush_start: 25
|
||||
|
||||
## For V2.4 300mm build, uncomment this below:
|
||||
#variable_brush_start: 50
|
||||
|
||||
## For V2.4 350mm build, uncomment this below:
|
||||
variable_brush_start: 230
|
||||
|
||||
# This value is defaulted from brush location in CAD (rear left). Change if your brush width is different.
|
||||
variable_brush_width: 52
|
||||
|
||||
## These are only used if location_bucket_rear is False. You specify a custom location in y axis for your brush - see diagram above. ##
|
||||
variable_brush_front: 0
|
||||
variable_brush_depth: 0
|
||||
|
||||
|
||||
# These parameters define the size of your purge bucket. Update as necessary. If you decided to not enable purge, you can ignore
|
||||
# this section. A visual reference is provided below. Note that orientation of parameters remain the same whether bucket is at rear
|
||||
# or front.
|
||||
#
|
||||
# bucket_gap
|
||||
# ← ---- →
|
||||
# __________________________________________
|
||||
# | | | |
|
||||
# | | | |
|
||||
# bucket_start (x) | |______| |
|
||||
# | | | |
|
||||
# | | | |
|
||||
# |_________________|. . . |_________________|
|
||||
# ← ------------- → ← ------------- →
|
||||
# bucket_left_width bucket_right_width
|
||||
# _______________________________________________________________________________________
|
||||
# PRINTER FRONT
|
||||
#
|
||||
## For V2.4 250mm build, uncomment below
|
||||
#variable_bucket_left_width: 42
|
||||
|
||||
## For V2.4 300mm build, uncomment below
|
||||
#variable_bucket_left_width: 67
|
||||
|
||||
## For V2.4 350mm build, uncomment below
|
||||
#variable_bucket_left_width: 92
|
||||
variable_bucket_left_width: 40
|
||||
|
||||
# These values are defaulted from bucket geometry in CAD (rear left location). Change only if you're using a custom bucket.
|
||||
#variable_bucket_right_width: 40
|
||||
variable_bucket_right_width: 92
|
||||
variable_bucket_gap: 22
|
||||
|
||||
# For V1.8, you may need to measure where your bucket start is and input into bucket_start. Otherwise, a value of 0 is for a default
|
||||
# installation of purge bucket at rear left.
|
||||
variable_bucket_start: 200
|
||||
|
||||
|
||||
###############################################################################################################################################
|
||||
###############################################################################################################################################
|
||||
|
||||
### From here on, unless you know what you're doing, it's recommended not to change anything. Feel free to peruse the code and reach out to me
|
||||
### (edwardyeeks#6042) on Discord if you spot any problems!
|
||||
|
||||
###############################################################################################################################################
|
||||
###############################################################################################################################################
|
||||
|
||||
# Placeholder. The variable will later be set to contain, at random, a number representing the left or right bucket.
|
||||
variable_bucket_pos: 1
|
||||
|
||||
gcode:
|
||||
# First, check if the axes are homed.
|
||||
{% if "xyz" in printer.toolhead.homed_axes %}
|
||||
|
||||
## Save the gcode state in this macro instance.
|
||||
SAVE_GCODE_STATE NAME=clean_nozzle
|
||||
STATUS_CLEANING
|
||||
## Set to absolute positioning.
|
||||
G90
|
||||
|
||||
## Grab max position of Y-axis from config to use in setting a fixed y position for location_bucket_rear = True.
|
||||
{% set Ry = printer.configfile.config["stepper_y"]["position_max"]|float %}
|
||||
|
||||
## Check if user enabled purge option or not.
|
||||
{% if enable_purge %}
|
||||
|
||||
### Randomly select left or right bin for purge. 0 = left, 1 = right
|
||||
SET_GCODE_VARIABLE MACRO=clean_nozzle VARIABLE=bucket_pos VALUE={(range(2) | random)}
|
||||
|
||||
### Raise Z for travel.
|
||||
G1 Z{brush_top + clearance_z} F{prep_spd_z}
|
||||
|
||||
### Check if user chose to use rear location.
|
||||
{% if location_bucket_rear %}
|
||||
G1 Y{Ry} F{prep_spd_xy}
|
||||
{% else %}
|
||||
G1 Y{brush_front + (brush_depth / 2)} F{prep_spd_xy}
|
||||
{% endif %}
|
||||
|
||||
### Position for purge. Randomly selects middle of left or right bucket. It references from the middle of the left bucket.
|
||||
G1 X{bucket_start + (bucket_left_width / (2 - bucket_pos)) + (bucket_pos * bucket_gap) + (bucket_pos * (bucket_right_width / 2))}
|
||||
|
||||
### Perform purge if the temp is up to min temp. If not, it will skip and continue executing rest of macro. Small retract after
|
||||
### purging to minimize any persistent oozing at 5x purge_spd. G4 dwell is in milliseconds, hence * 1000 in formula.
|
||||
{% if printer.extruder.temperature >= purge_temp_min %}
|
||||
M83 ; relative mode
|
||||
G1 E{purge_len} F{purge_spd}
|
||||
G1 E-{purge_ret} F{purge_spd * 5}
|
||||
G4 P{ooze_dwell * 1000}
|
||||
G92 E0 ; reset extruder
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
## Position for wipe. Either left or right of brush based off bucket_pos to avoid unnecessary travel.
|
||||
G1 Z{brush_top + clearance_z} F{prep_spd_z}
|
||||
G1 X{brush_start + (brush_width * bucket_pos)} F{prep_spd_xy}
|
||||
|
||||
## Check if user chose to use rear location.
|
||||
{% if location_bucket_rear %}
|
||||
G1 Y{Ry}
|
||||
{% else %}
|
||||
G1 Y{brush_front + (brush_depth / 2)}
|
||||
{% endif %}
|
||||
|
||||
## Move nozzle down into brush.
|
||||
G1 Z{brush_top} F{prep_spd_z}
|
||||
|
||||
## Perform wipe. Wipe direction based off bucket_pos for cool random scrubby routine.
|
||||
{% for wipes in range(1, (wipe_qty + 1)) %}
|
||||
G1 X{brush_start + (brush_width * (1 - bucket_pos))} F{wipe_spd_xy}
|
||||
G1 X{brush_start + (brush_width * bucket_pos)} F{wipe_spd_xy}
|
||||
{% endfor %}
|
||||
|
||||
## Clear from area.
|
||||
M117 Cleaned!
|
||||
G1 Z{brush_top + clearance_z} F{prep_spd_z}
|
||||
##G1 X{bucket_left_width / 4} F{prep_spd_xy}
|
||||
G1 X{bucket_left_width * 3} F{prep_spd_xy}
|
||||
|
||||
## Restore the gcode state to how it was before the macro.
|
||||
RESTORE_GCODE_STATE NAME=clean_nozzle
|
||||
|
||||
{% else %}
|
||||
|
||||
## raise error will stop any macros that clean_nozzle is referenced in from proceeding for safety.
|
||||
{ action_raise_error("Please home your axes!") }
|
||||
M117 Please home first!
|
||||
|
||||
{% endif %}
|
||||
@@ -0,0 +1,669 @@
|
||||
[gcode_macro SET_MATERIAL]
|
||||
description: Dynamically adjust chamber temps, fans, and behavior based on material
|
||||
|
||||
# === OVERVIEW ===
|
||||
# This macro sets print parameters based on the selected filament type.
|
||||
# It includes logic for fan control, pressure advance tuning, and chamber temperature management.
|
||||
# Each material is uniquely handled with comments, proper defaults, and warnings where applicable.
|
||||
#
|
||||
# === WHY USE THIS ===
|
||||
# - Ensures consistent print settings per material
|
||||
# - Automatically adjusts temperature and environment conditions
|
||||
# - Reduces manual tuning between material changes
|
||||
# - Helps enforce safety (drying warnings, chamber heat warnings, etc.)
|
||||
#
|
||||
# === HOW TO USE ===
|
||||
# Call the macro with:
|
||||
# SET_MATERIAL MATERIAL=<your_material>
|
||||
#
|
||||
# Example:
|
||||
# SET_MATERIAL MATERIAL=ABS
|
||||
#
|
||||
# === SETUP REQUIREMENTS ===
|
||||
# You MUST configure:
|
||||
# - A chamber temperature sensor (e.g., temperature_sensor chamber_combined_mean)
|
||||
# - A bed heater (e.g., heater_bed)
|
||||
# - Optionally, a chamber heater (e.g., heater_generic chamber_heater)
|
||||
# - A chamber circulation fan (e.g., nevermore_fan)
|
||||
#
|
||||
# === PARAMETERS ===
|
||||
# MATERIAL: Name of the filament material preset to apply
|
||||
# Supported: PLA, ABS, PETG, ASA, PC, PA, PEEK, PEK, TPU, etc.
|
||||
# Extended support for exotic blends like ESD-ABS, PVDF, MetalFill, Foam PLA
|
||||
#
|
||||
# === NOTES ===
|
||||
# - Each material includes chamber temp, fan speed, PA, and smoothing settings
|
||||
# - Some materials apply Z offset compensation or recommend special nozzle/hardware
|
||||
# - Certain blocks include warnings (e.g., "dry before use" or "use hardened nozzle")
|
||||
# - If you do not have a chamber heater, set `ACTIVE_CHAMBER_HEATING = False`
|
||||
# - You can expand this macro to include more materials as needed
|
||||
# - Unknown materials fall back to a safe PLA-like default
|
||||
#
|
||||
# === ADVANCED ===
|
||||
# This macro can be tied into slicer startup G-code or multi-material toolchanging macros.
|
||||
# You can also use it in combination with filament sensors or manual menu macros.
|
||||
|
||||
gcode:
|
||||
{% set CHAMBER_SENSOR = "temperature_sensor chamber_combined_mean" %}
|
||||
{% set BED_HEATER = "heater_bed" %}
|
||||
{% set BED_FAN = "nevermore_fan" %}
|
||||
{% set ACTIVE_CHAMBER_HEATING = False %} # Set to True if you have a dedicated chamber heater configured
|
||||
{% set CHAMBER_HEATER = "chamber_heater" if ACTIVE_CHAMBER_HEATING else "" %}
|
||||
{% set MATERIAL = params.MATERIAL|default("PLA")|string %}
|
||||
|
||||
# --- Chamber-less Materials ---
|
||||
|
||||
{% if MATERIAL in ['PLA', 'PLA-CF', 'PE', 'PE-CF'] %}
|
||||
# PLA: Easy to print, low warping, no chamber needed. CF = carbon fiber, stiffer and more abrasive.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.035 | Chamber: 25°C" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.035 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['PLA+', 'SILK-PLA'] %}
|
||||
# PLA+: Stronger, tougher PLA. Silk PLA has glossy finish but may string more.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.038 | Chamber: 25°C" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.038 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['PVDF', 'PVDF-CF', 'PVDF-GF'] %}
|
||||
# PVDF: Chemical-resistant and strong. Requires high chamber temps and dry storage.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.055 | Chamber: 90°C | ⚠️ Moisture-sensitive. Dry before use." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET=90 SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['ESD-PLA', 'ESD-ABS', 'ESD-PC', 'ESD-PEEK'] %}
|
||||
# ESD-safe filaments for sensitive electronics. Can be brittle, dry before use.
|
||||
{% set chamber_temp = 60 if 'PLA' in MATERIAL else 80 %}
|
||||
{% set pa_val = 0.04 if 'PLA' in MATERIAL else 0.05 %}
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: " ~ pa_val|string ~ " | Chamber: " ~ chamber_temp|string ~ "°C | ⚠️ Dry before use for best performance." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={chamber_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA={pa_val} SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'LW-PLA' %}
|
||||
# LW-PLA: Lightweight PLA expands with heat. MUST reduce flow to ~65% manually.
|
||||
{% set message = "Material: LW-PLA | PA: 0.03 | Chamber: 25°C | Reminder: Set flow to ~65%" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.2
|
||||
SET_PA PA=0.03 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL == 'PLA-FOAM' %}
|
||||
# PLA-FOAM: Similar to LW-PLA, foams up at extrusion temps. Lower flow ~60%.
|
||||
{% set message = "Material: PLA-FOAM | PA: 0.03 | Chamber: 25°C | Reminder: Set flow to ~60%" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.3
|
||||
SET_PA PA=0.03 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['PETG', 'PETG-GF', 'PETG-CF', 'PET-CF'] %}
|
||||
# PETG: Good strength/flexibility, more durable than PLA. May string. CF/GF are abrasive.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.03 | Chamber: 40°C" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S40
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.03 SMOOTH=0.05
|
||||
SET_GCODE_OFFSET Z=0.02 # PETG can be sticky; lift Z slightly to prevent nozzle drag
|
||||
|
||||
{% elif MATERIAL in ['ABS', 'ABS+', 'ABS-GF', 'ABS-CF'] %}
|
||||
# ABS: Tough and heat-resistant, good for functional parts. Warps easily—requires enclosed chamber.
|
||||
# CF (Carbon Fiber) / GF (Glass Fiber) versions are more rigid and very abrasive.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.05 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.05 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['ASA', 'ASA+', 'ASA-GF', 'ASA-CF', 'ASA-Aero'] %}
|
||||
# ASA: UV-resistant alternative to ABS. Great for outdoor parts. Needs similar chamber temps to ABS.
|
||||
# ASA-GF and ASA-CF are even more rigid and more abrasive.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.05 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.05 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'HIPS' %}
|
||||
# HIPS: Used primarily as a dissolvable support for ABS. Requires similar chamber temps.
|
||||
# ⚠️ Requires limonene bath for dissolution. Keep dry. May warp without chamber.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: HIPS | PA: 0.045 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Dissolves in limonene. Keep dry." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.045 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'BVOH' %}
|
||||
# BVOH: Superior water-soluble support material. Less stringy than PVA but still moisture sensitive.
|
||||
# ⚠️ Store in drybox. Dissolves faster in warm water. Do not overcool during print.
|
||||
{% set message = "Material: BVOH | PA: 0.035 | Chamber: 25°C | ⚠️ Store dry. Dissolves in water." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.2
|
||||
SET_PA PA=0.035 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL == 'PP' %}
|
||||
# PP: Light and chemical-resistant. Warps easily and has poor adhesion. Needs chamber and special bed surface.
|
||||
# ⚠️ Use PP-specific bed surface. Avoid cooling drafts. May require brim or raft.
|
||||
{% set target_temp = 55 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PP | PA: 0.04 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Warps easily. PP bed surface recommended." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.04 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'PPSU' %}
|
||||
# PPSU: High-performance thermoplastic. Chemical and heat-resistant. Needs very hot chamber and drying.
|
||||
# ⚠️ Print with hardened nozzle. Needs chamber and high temps. Store dry.
|
||||
{% set target_temp = 100 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PPSU | PA: 0.055 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Needs high temp & dry storage" %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'ULTEM' or MATERIAL == 'PEI' %}
|
||||
# ULTEM / PEI: Extremely strong. High temp aerospace/engineering plastic. Needs chamber + hardened nozzle.
|
||||
# ⚠️ Only for high-end printers. Dry thoroughly. Print hot.
|
||||
{% set target_temp = 120 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: ULTEM/PEI | PA: 0.06 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Industrial use only. Dry & hot." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.06 SMOOTH=0.05
|
||||
|
||||
{% elif MATERIAL == 'POLYMAX-PC' %}
|
||||
# Polymaker PolyMax PC: Easier-to-print Polycarbonate blend. Good strength and clarity. Less prone to warping.
|
||||
# ⚠️ Still requires chamber and hardened nozzle for long-term use.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PolyMax PC | PA: 0.05 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Tough and clear. Handle like PC." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.05 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'ULTRAFUSE-PAHT-CF15' %}
|
||||
# BASF Ultrafuse PAHT CF15: High-temp nylon, 15% carbon fiber. Stiff, light, durable.
|
||||
# ⚠️ Dry thoroughly. Use hardened nozzle. Requires chamber.
|
||||
{% set target_temp = 70 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: Ultrafuse PAHT CF15 | PA: 0.06 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ High strength & very abrasive." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.06 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'PRUSAMENT-PETG-CF' %}
|
||||
# Prusament PETG CF: Stiffer than normal PETG, reduced warping, excellent layer adhesion.
|
||||
# ⚠️ Abrasive. Use hardened nozzle. Watch for brittle breakages if overcooled.
|
||||
{% set message = "Material: Prusament PETG-CF | PA: 0.04 | Chamber: 45°C | ⚠️ Abrasive. Great dimensional stability." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S45
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.4
|
||||
SET_PA PA=0.04 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'PRUSAMENT-PLA-TOUGH' %}
|
||||
# Prusament PLA Tough: Improved impact resistance vs. standard PLA. Still easy to print.
|
||||
{% set message = "Material: Prusament PLA Tough | PA: 0.038 | Chamber: 25°C | Tougher than normal PLA." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.038 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['TPU-SOFT', 'TPU-85A'] %}
|
||||
# TPU-Soft: Ultra-flexible variant. Requires extremely slow printing and short retractions.
|
||||
# ⚠️ Direct drive required. Reduce speed to <20mm/s. Keep dry to avoid stringing.
|
||||
{% set message = "Material: TPU-SOFT | PA: 0.055 | Chamber: 30°C | ⚠️ Print very slowly. Direct drive only." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S30
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.3
|
||||
SET_PA PA=0.055 SMOOTH=0.035
|
||||
SET_GCODE_OFFSET Z=0.02
|
||||
|
||||
{% elif MATERIAL == 'PA12-GF' %}
|
||||
# PA12-GF: Glass-fiber filled Nylon 12. High strength, dimensional stability, very abrasive.
|
||||
# ⚠️ Requires dry storage. Use hardened nozzle. Enclosure strongly recommended.
|
||||
{% set target_temp = 70 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PA12-GF | PA: 0.06 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Dry thoroughly, very abrasive." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.06 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'BREAKAWAY' %}
|
||||
# Breakaway: Rigid support material that peels away instead of dissolving. Great with ABS, ASA, PETG.
|
||||
# ⚠️ Store dry. Avoid excessive cooling. Easy to print, good layer adhesion.
|
||||
{% set message = "Material: Breakaway | PA: 0.035 | Chamber: 35°C | ⚠️ Peel-away support. Store dry." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S35
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.3
|
||||
SET_PA PA=0.035 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'NGEN' %}
|
||||
# ColorFabb nGen: Easy-to-print PETG-like with smoother finish and less stringing. Based on Amphora AM3300.
|
||||
{% set message = "Material: nGen | PA: 0.035 | Chamber: 30°C | Smoother than PETG, low stringing." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S30
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.035 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'COLORFABB-HT' %}
|
||||
# ColorFabb HT: High-temp, semi-crystalline Amphora-based copolyester. Tough and heat-resistant.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: ColorFabb HT | PA: 0.045 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | Tough and heat-tolerant. Dry before use." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.045 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'PPS' %}
|
||||
# PPS: Exceptional chemical resistance, dimensional stability, and flame retardance. Used in automotive/aerospace.
|
||||
{% set target_temp = 95 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PPS | PA: 0.06 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Industrial. Dry thoroughly. Print hot." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.06 SMOOTH=0.05
|
||||
|
||||
{% elif MATERIAL in ['PVDF-BLEND', 'KYNAR', 'SOLEF'] %}
|
||||
# PVDF Blend: Enhanced versions of PVDF for strength/flexibility. Used in semiconductors, chemical labs.
|
||||
{% set target_temp = 85 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PVDF Blend | PA: 0.055 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Chemical resistant. Dry required." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'CARBONX-PC' %}
|
||||
# CarbonX CFR-PC+: Carbon fiber-reinforced PC with excellent stiffness and heat performance.
|
||||
# ⚠️ Use hardened nozzle. Dry before use. Requires enclosure.
|
||||
{% set target_temp = 65 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: CarbonX PC+ | PA: 0.055 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ High stiffness, abrasive." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'ESUN-ABS+' %}
|
||||
# eSun ABS+: Modified ABS with lower warping and easier layer adhesion. Still benefits from chamber heat.
|
||||
{% set target_temp = 55 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: eSun ABS+ | PA: 0.045 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | Easier than regular ABS." %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.045 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'RAISE3D-PLA+' %}
|
||||
# Raise3D PLA+: Tougher PLA variant optimized for layer adhesion and strength.
|
||||
{% set message = "Material: Raise3D PLA+ | PA: 0.038 | Chamber: 25°C | Tougher PLA with good printability." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.038 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['PA', 'PA-GF', 'PA-CF', 'PAHT-CF', 'PA12-CF'] %}
|
||||
# Nylon (PA): Strong, flexible, and wear-resistant. Extremely moisture-sensitive — dry before printing!
|
||||
# CF = Carbon Fiber, GF = Glass Fiber, PAHT = high-temp nylon. Abrasive: use a hardened nozzle.
|
||||
{% set target_temp = 65 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.06 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Dry thoroughly before use" %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.06 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['PC', 'PC-CF', 'PCTG'] %}
|
||||
# PC (Polycarbonate): Very strong and heat resistant. Needs hot chamber. Tends to warp and absorb moisture.
|
||||
# PC-CF is stiffer and more rigid. PCTG is a more forgiving blend.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.055 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['PC-ABS', 'PCABS'] %}
|
||||
# PC-ABS: Blend of PC and ABS. Easier to print than pure PC. Still wants a hot chamber and enclosure.
|
||||
{% set target_temp = 70 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.055 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL == 'PEEK' %}
|
||||
# PEEK: Ultra high-performance. Requires extremely hot chamber (110°C+). Dry thoroughly before use.
|
||||
# Used in aerospace, medical, and industrial applications. Hardened nozzle & all-metal hotend required.
|
||||
{% set target_temp = 110 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PEEK | PA: 0.06 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.06 SMOOTH=0.05
|
||||
|
||||
{% elif MATERIAL == 'PEK' %}
|
||||
# PEK: Slightly lower-temp cousin of PEEK. Still high performance and needs special hardware.
|
||||
{% set target_temp = 90 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PEK | PA: 0.055 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.055 SMOOTH=0.05
|
||||
|
||||
{% elif MATERIAL == 'TPU' %}
|
||||
# TPU: Flexible filament. Needs slow print speed. Watch for oozing. Can stretch during retraction.
|
||||
# ⚠️ Tips: Print very slowly (15-30mm/s). Use direct drive. Avoid long Bowden tubes. Dry before use if soft or stringy.
|
||||
{% set message = "Material: TPU | PA: 0.055 | Chamber: 35°C | ⚠️ Go slow, direct drive recommended" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S35
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.055 SMOOTH=0.04
|
||||
SET_GCODE_OFFSET Z=0.02
|
||||
|
||||
{% elif MATERIAL == 'TPE' %}
|
||||
# TPE: Very soft rubber-like filament. Print slowly. Use direct drive extruder.
|
||||
# ⚠️ Tips: Reduce retraction. Very flexible – print <25mm/s. May require increased nozzle temp. Dry before use.
|
||||
{% set message = "Material: TPE | PA: 0.05 | Chamber: 30°C | ⚠️ Slow speed, direct drive only" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S30
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.05 SMOOTH=0.04
|
||||
SET_GCODE_OFFSET Z=0.02
|
||||
|
||||
{% elif MATERIAL in ['NINJAFLEX', 'NINJA-FLEX'] %}
|
||||
# NinjaFlex: Ultra-flexible. Print extremely slow. Hard to control extrusion. Direct drive required.
|
||||
# ⚠️ Tips: Dry well. No retraction if possible. Tight filament path. Print 10–20mm/s.
|
||||
{% set message = "Material: Ninjaflex | PA: 0.045 | Chamber: 30°C | ⚠️ Print <20mm/s. No Bowden setups." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S30
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.3
|
||||
SET_PA PA=0.045 SMOOTH=0.035
|
||||
SET_GCODE_OFFSET Z=0.02
|
||||
|
||||
{% elif MATERIAL in ['METALFILL', 'BRONZEFILL', 'COPPERFILL'] %}
|
||||
# MetalFill: PLA blended with metal powder. Heavy, beautiful finish. Extremely abrasive—use hardened nozzle.
|
||||
# ⚠️ Tips: Slower speed, hardened nozzle, check for settling in filament spool.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.04 | Chamber: 35°C | ⚠️ Abrasive – use hardened nozzle" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S35
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.04 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['IRONFILL', 'MAGNETICFILL'] %}
|
||||
# Magnetic/iron PLA: Similar to MetalFill but can rust. Very abrasive. Hardened steel nozzle recommended.
|
||||
# ⚠️ Store dry to avoid rust. May interfere with inductive sensors.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.04 | Chamber: 35°C | ⚠️ Abrasive. Keep dry." %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S35
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.04 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['WOODFILL', 'CARBONFILL', 'KEVLARFILL'] %}
|
||||
# Filled composites: Can clog if retracted too much. Lower print speeds. Use wider nozzle (0.6mm+) and hardened tip.
|
||||
# ⚠️ Avoid retraction-heavy prints. Watch for clogs. WoodFill can scorch – keep nozzle temp moderate.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.045 | Chamber: 40°C | ⚠️ Composite: Use 0.6mm+ hardened nozzle" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S40
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.045 SMOOTH=0.045
|
||||
|
||||
{% elif MATERIAL in ['MOLDLAY', 'CASTFIL', 'CASTING'] %}
|
||||
# MoldLay: Used for casting. Can be melted out like wax. Brittle and needs low chamber temps.
|
||||
# ⚠️ Avoid excessive cooling. Brittle at room temp. Supports should be minimal.
|
||||
{% set message = "Material: " ~ MATERIAL ~ " | PA: 0.035 | Chamber: 25°C | ⚠️ Brittle – handle gently post-print" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.035 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['PVA', 'SUPPORT-PVA'] %}
|
||||
# PVA: Water-soluble support material. Store in airtight container. Extremely moisture-sensitive.
|
||||
{% set message = "Material: PVA | PA: 0.035 | Chamber: 25°C | ⚠️ Water Soluble & Moisture Sensitive" %}
|
||||
RESPOND MSG="{message}"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.0 # No fan to avoid drafts/drying out
|
||||
SET_PA PA=0.035 SMOOTH=0.04
|
||||
|
||||
{% elif MATERIAL in ['PMMA', 'ACRYLIC'] %}
|
||||
# PMMA: Transparent, acrylic-like. Shrinks a lot—needs chamber. Often cracks if too cold. Store dry.
|
||||
{% set target_temp = 60 %}
|
||||
{% set passive_wait = target_temp - 25 %}
|
||||
{% set CHAMBER_LABEL = "(active heater)" if ACTIVE_CHAMBER_HEATING else "(passive via bed, will start at ≥" ~ passive_wait|string ~ "°C)" %}
|
||||
{% set message = "Material: PMMA | PA: 0.04 | Chamber: " ~ target_temp|string ~ "°C " ~ CHAMBER_LABEL ~ " | ⚠️ Brittle when moist, dry thoroughly" %}
|
||||
RESPOND MSG="{message}"
|
||||
SET_CHAMBER_HEAT TARGET={target_temp} SENSOR="{CHAMBER_SENSOR}" HEATER={CHAMBER_HEATER} BED_HEATER={BED_HEATER} FAN={BED_FAN} ACTIVE={ACTIVE_CHAMBER_HEATING}
|
||||
SET_PA PA=0.04 SMOOTH=0.045
|
||||
|
||||
{% else %}
|
||||
# Default fallback for unknown materials
|
||||
RESPOND MSG="Material: Unknown | Default PA: 0.04 | Chamber: 25°C"
|
||||
M141 S25
|
||||
SET_FAN_SPEED FAN={BED_FAN} SPEED=0.5
|
||||
SET_PA PA=0.04 SMOOTH=0.045
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro SET_PA]
|
||||
description: Set Pressure Advance for the printer
|
||||
variable_pa: 0.04
|
||||
|
||||
# === OVERVIEW ===
|
||||
# This macro sets the Pressure Advance (PA) and smoothing values for your printer.
|
||||
# Pressure Advance compensates for pressure build-up in the nozzle, improving corners and extrusion consistency.
|
||||
# The smoothing value reduces sudden changes by blending movement transitions.
|
||||
#
|
||||
# This macro is useful when tuning PA per-material or per-print, and can be used dynamically during a print or via your slicer.
|
||||
#
|
||||
# === HOW TO USE ===
|
||||
# Call the macro with:
|
||||
# SET_PA PA=<advance_value> [SMOOTH=<smoothing_value>]
|
||||
#
|
||||
# Example:
|
||||
# SET_PA PA=0.045
|
||||
# SET_PA PA=0.050 SMOOTH=0.04
|
||||
#
|
||||
# === PARAMETERS ===
|
||||
# PA: The desired pressure advance value (required)
|
||||
# SMOOTH: Optional smoothing value (default: 0.045)
|
||||
#
|
||||
# === NOTES ===
|
||||
# - Pressure Advance tuning is material- and setup-dependent.
|
||||
# - You can call this from your slicer as a custom G-code before the print starts.
|
||||
# - The value is stored in a macro variable (variable_pa) so it can be referenced or reset easily.
|
||||
|
||||
gcode:
|
||||
{% set pa = params.PA|float %}
|
||||
{% set smooth = params.SMOOTH|default(0.045)|float %}
|
||||
|
||||
# Apply Pressure Advance and smoothing time
|
||||
SET_PRESSURE_ADVANCE ADVANCE={pa} SMOOTH_TIME={smooth}
|
||||
|
||||
# Store the value for reference
|
||||
SET_GCODE_VARIABLE MACRO=SET_PA VARIABLE=pa VALUE={pa}
|
||||
|
||||
# Optional: echo back confirmation (uncomment if desired)
|
||||
# {% set message = "Pressure Advance set to " ~ pa|string ~ " | Smoothing: " ~ smooth|string %}
|
||||
# RESPOND MSG="{message}"
|
||||
|
||||
|
||||
|
||||
[gcode_macro SET_CHAMBER_HEAT]
|
||||
description: Modular chamber heating logic with active/passive support, includes safety checks and debug output
|
||||
|
||||
# === OVERVIEW ===
|
||||
# This macro heats the chamber to a target temperature using either:
|
||||
# 1. An active heater (like a dedicated chamber heater), or
|
||||
# 2. Passive heating (using the bed heater).
|
||||
# It controls the bed heater, an optional chamber heater, and a circulation fan.
|
||||
# It will block until the target temperature is reached.
|
||||
|
||||
# === SAFETY WARNINGS ===
|
||||
# - Ensure your chamber temperature sensor is correctly installed and reporting.
|
||||
# - Watch your printer during the first few uses of this macro.
|
||||
# - Passive mode may take a long time to reach temperature.
|
||||
# - Don't overheat your enclosure — check max safe temps for your printer!
|
||||
|
||||
# === PARAMETERS ===
|
||||
# TARGET : (required) Target chamber temperature in °C.
|
||||
# SENSOR : (optional) Temperature sensor name (default: temperature_sensor chamber_combined_mean).
|
||||
# HEATER : (optional) Chamber heater name (used only if ACTIVE=True).
|
||||
# BED_HEATER : (optional) Bed heater name (default: heater_bed).
|
||||
# FAN : (optional) Circulation fan name (default: nevermore_fan).
|
||||
# ACTIVE : (optional) If True, uses a dedicated heater; otherwise uses passive heating.
|
||||
|
||||
# === USAGE ===
|
||||
# SET_CHAMBER_HEAT TARGET=60 ACTIVE=True HEATER="heater_generic chamber_heater"
|
||||
# SET_CHAMBER_HEAT TARGET=60 ACTIVE=False
|
||||
|
||||
gcode:
|
||||
# === Parse Parameters ===
|
||||
{% set target = params.TARGET|int %} # Desired chamber temperature
|
||||
{% set sensor = params.SENSOR|default('temperature_sensor chamber_combined_mean') %} # Sensor to read chamber temp
|
||||
{% set heater = params.HEATER|default('') %} # Optional active chamber heater
|
||||
{% set bed_heater = params.BED_HEATER|default('heater_bed') %} # Bed heater
|
||||
{% set bed_fan = params.FAN|default('nevermore_fan') %} # Circulation fan
|
||||
|
||||
# Normalize ACTIVE to a proper boolean
|
||||
{% set active = params.ACTIVE|default("false")|lower == 'true' %} # True = use chamber heater, False = use bed only
|
||||
|
||||
# Calculate the temperature to wait for — passive mode waits for less (25°C below target)
|
||||
{% set wait_temp = target if active else target - 25 %}
|
||||
|
||||
# === Initial Message ===
|
||||
{% set message = "[CHAMBER HEAT] Starting chamber heat routine (Target: " ~ target|string ~ "°C, Wait: " ~ wait_temp|string ~ "°C, Mode: " ~ ("Active" if active else "Passive") ~ ")" %}
|
||||
RESPOND MSG="{message}"
|
||||
|
||||
# Set M141 for visual tools (slicer/monitor) to track chamber temperature
|
||||
M141 S{target}
|
||||
|
||||
# === ACTIVE MODE ===
|
||||
{% if active %}
|
||||
{% set message = "[CHAMBER HEAT] Activating chamber heater and bed heater to " ~ target|string ~ "°C" %}
|
||||
RESPOND MSG="{message}"
|
||||
|
||||
# Set chamber heater temp (if provided)
|
||||
{% if heater|length > 0 %}
|
||||
SET_HEATER_TEMPERATURE HEATER={heater} TARGET={target}
|
||||
{% endif %}
|
||||
|
||||
# Set bed heater to the same target (helps speed up heating)
|
||||
SET_HEATER_TEMPERATURE HEATER={bed_heater} TARGET={target}
|
||||
|
||||
# Turn circulation fan on full to spread heat
|
||||
SET_FAN_SPEED FAN={bed_fan} SPEED=1
|
||||
|
||||
# === PASSIVE MODE ===
|
||||
{% else %}
|
||||
# If the chamber is below the passive-mode target threshold
|
||||
{% if printer[sensor].temperature < wait_temp %}
|
||||
{% set message = "[CHAMBER HEAT] Chamber below " ~ wait_temp|string ~ "°C — passively heating via bed" %}
|
||||
RESPOND MSG="{message}"
|
||||
|
||||
# Turn on fan at half speed (gentle circulation)
|
||||
SET_FAN_SPEED FAN={bed_fan} SPEED=0.5
|
||||
|
||||
# Set bed heater to a high temp (120°C) to warm chamber indirectly
|
||||
SET_HEATER_TEMPERATURE HEATER={bed_heater} TARGET=120
|
||||
|
||||
# Wait until bed reaches temperature
|
||||
TEMPERATURE_WAIT SENSOR="{bed_heater}" MINIMUM=120
|
||||
|
||||
{% else %}
|
||||
# Chamber is already close enough to the desired temperature
|
||||
{% set message = "[CHAMBER HEAT] Chamber already warm enough for passive mode (" ~ printer[sensor].temperature|round(1)|string ~ "°C)" %}
|
||||
RESPOND MSG="{message}"
|
||||
{% endif %}
|
||||
|
||||
# Once warmed, run the circulation fan at full speed
|
||||
SET_FAN_SPEED FAN={bed_fan} SPEED=1
|
||||
{% endif %}
|
||||
|
||||
# === FINAL BLOCKING WAIT ===
|
||||
{% set message = "[CHAMBER HEAT] Waiting for chamber to reach " ~ wait_temp|string ~ "°C..." %}
|
||||
RESPOND MSG="{message}"
|
||||
|
||||
# Block until the chamber temp sensor reads the required temp
|
||||
TEMPERATURE_WAIT SENSOR="{sensor}" MINIMUM={wait_temp}
|
||||
|
||||
# Confirm chamber is ready
|
||||
{% set message = "[CHAMBER HEAT] Chamber ready at " ~ printer[sensor].temperature|round(1)|string ~ "°C" %}
|
||||
RESPOND MSG="{message}"
|
||||
|
||||
|
||||
|
||||
[gcode_macro M106]
|
||||
rename_existing: G106
|
||||
description: Compresses fan speeds into 10–30% range if bed temp ≥ 70°C
|
||||
|
||||
# === OVERVIEW ===
|
||||
# This macro overrides the default M106 behavior to apply a thermal-aware fan speed limiter.
|
||||
# When the bed temperature is at or above 70°C, it compresses the part cooling fan speed range
|
||||
# into a safer 10–30% range (i.e., 26–76 PWM) to reduce warping or delamination in high-temp materials.
|
||||
#
|
||||
# === WHY USE THIS ===
|
||||
# - Prevents excessive part cooling when printing materials like ABS, ASA, or PC.
|
||||
# - Helps maintain stable chamber temperatures and reduce thermal shock.
|
||||
# - Minimizes curling or layer splitting due to sudden cooling on hot beds.
|
||||
#
|
||||
# === HOW TO USE ===
|
||||
# Simply use M106 S<value> as usual in your G-code or slicer.
|
||||
# The macro will automatically adjust the fan speed if needed based on bed temperature.
|
||||
#
|
||||
# === NOTES ===
|
||||
# - This logic only applies when the bed temperature is 70°C or higher.
|
||||
# - Below 70°C, full-range fan control is allowed.
|
||||
# - You can customize the input/output compression range if needed.
|
||||
|
||||
# === PARAMETERS ===
|
||||
# S: Standard fan speed in 0–255 (required by M106)
|
||||
|
||||
# Internal constants:
|
||||
# min_input = 26 (10% of 255)
|
||||
# max_input = 255 (100%)
|
||||
# min_output = 26 (10%)
|
||||
# max_output = 76 (30%)
|
||||
|
||||
gcode:
|
||||
{% set fan_speed = params.S|default(0)|int %}
|
||||
{% set bed_temp = printer["heater_bed"].temperature %}
|
||||
{% set min_input = 26 %}
|
||||
{% set max_input = 255 %}
|
||||
{% set min_output = 26 %}
|
||||
{% set max_output = 76 %}
|
||||
|
||||
{% if bed_temp >= 70 %}
|
||||
# If below threshold, limit fan to the lower compressed range (10–30%)
|
||||
{% if fan_speed < min_input %}
|
||||
{% set compressed_speed = min_output %}
|
||||
{% else %}
|
||||
{% set compressed_speed = (min_output + ((fan_speed - min_input) * (max_output - min_output) / (max_input - min_input)))|int %}
|
||||
{% endif %}
|
||||
G106 S{compressed_speed}
|
||||
{% else %}
|
||||
# Below threshold, allow full fan speed as requested
|
||||
G106 S{fan_speed}
|
||||
{% endif %}
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
# Macros for setting the status leds on the Voron StealthBurner toolhead (or for any neopixel-type leds).
|
||||
#
|
||||
# You will need to configure a neopixel (or other addressable led, such as dotstar). See
|
||||
# https://www.klipper3d.org/Config_Reference.html#neopixel for configuration details.
|
||||
|
||||
|
||||
#####################################
|
||||
# INSTRUCTIONS #
|
||||
#####################################
|
||||
# How to use all this stuff:
|
||||
#
|
||||
# 1. Copy this .cfg file into your Klipper config directory and then add [include stealthburner_leds.cfg]
|
||||
# to the top of your printer.cfg in order to register the LEDs and macros with Klipper.
|
||||
# 2. Define your LEDs by editing [neopixel sb_leds] below and entering the data pin from your control board
|
||||
# as well as the color order.
|
||||
#
|
||||
# Note: RGB and RGBW are different and must be defined explicitly. RGB and RGBW are also not able to
|
||||
# be mix-and-matched in the same chain. A separate data line would be needed for proper functioning.
|
||||
#
|
||||
# RGBW LEDs will have a visible yellow-ish phosphor section to the chip. If your LEDs do not have
|
||||
# this yellow portion, you have RGB LEDs.
|
||||
#
|
||||
# 3. Save your config and restart Klipper.
|
||||
#
|
||||
# Note: We set RED and BLUE to 1.0 to make it easier for users and supporters to detect
|
||||
# misconfigurations or miswiring. The default color format is for Neopixels with a dedicated
|
||||
# white LED. On startup, all three SB LEDs should light up.
|
||||
#
|
||||
# If you get random colors across your LEDs, change the color_order to GRB and restart. Then
|
||||
# omit the W for each suggested color_order in the next paragraph.
|
||||
#
|
||||
# If you get MAGENTA, your color order is correct. If you get CYAN, you need to use RGBW. If
|
||||
# you get YELLOW, you need to use BRGW (note that BRG is only supported in the latest Klipper
|
||||
# version).
|
||||
#
|
||||
# 4. Once you have confirmed that the LEDs are set up correctly, you must now decide where you want
|
||||
# these macros called up...which means adding them to your existing gcode macros. NOTHING will happen
|
||||
# unless you add the STATUS_????? macros to your existing gcode macros.
|
||||
#
|
||||
# Example: add STATUS_LEVELING to the beginning of your QGL gcode macro, and then add STATUS_READY
|
||||
# to the end of it to set the logo LED and nozzle LEDs back to the `ready` state.
|
||||
#
|
||||
# Example: add STATUS_CLEANING to the beginning of your nozzle-cleaning macro, and then STATUS_READY
|
||||
# to the end of it to return the LEDs back to `ready` state.
|
||||
#
|
||||
# 5. Feel free to change colors of each macro, create new ones if you have a need to. The macros provided below
|
||||
# are just an example of what is possible. If you want to try some more complex animations, you will most
|
||||
# likely have to use WLED with Moonraker and a small micro-controller
|
||||
#
|
||||
#####################################
|
||||
# END INSTRUCTRUCTIONS #
|
||||
#####################################
|
||||
|
||||
|
||||
|
||||
[neopixel sb_leds]
|
||||
pin: EBB:gpio15
|
||||
# The pin connected to the neopixel. This parameter must be provided.
|
||||
chain_count: 3
|
||||
# The number of Neopixel chips that are "daisy chained" to the
|
||||
# provided pin. The default is 1 (which indicates only a single
|
||||
# Neopixel is connected to the pin).
|
||||
color_order: GRBW
|
||||
# Set the pixel order required by the LED hardware. Options are GRB,
|
||||
# RGB, GRBW, or RGBW. The default is GRB.
|
||||
initial_RED: 1.0
|
||||
initial_GREEN: 0.0
|
||||
initial_BLUE: 1.0
|
||||
initial_WHITE: 0.0
|
||||
# Sets the initial LED color of the Neopixel. Each value should be
|
||||
# between 0.0 and 1.0. The WHITE option is only available on RGBW
|
||||
# LEDs. The default for each color is 0.#
|
||||
|
||||
# Most configuration for the macros can be done by modifying the variables in the _sb_vars macro
|
||||
# at the start of this file.
|
||||
|
||||
##########
|
||||
# MACROS #
|
||||
##########
|
||||
|
||||
# The following status macros are available (these go inside of your macros):
|
||||
#
|
||||
# STATUS_READY
|
||||
# STATUS_OFF
|
||||
# STATUS_BUSY
|
||||
# STATUS_HEATING
|
||||
# STATUS_LEVELING
|
||||
# STATUS_HOMING
|
||||
# STATUS_CLEANING
|
||||
# STATUS_MESHING
|
||||
# STATUS_CALIBRATING_Z
|
||||
#
|
||||
# With additional macros for basic control:
|
||||
#
|
||||
# SET_NOZZLE_LEDS_ON
|
||||
# SET_LOGO_LEDS_OFF
|
||||
# SET_NOZZLE_LEDS_OFF
|
||||
#
|
||||
# Contributed by Voron discord users wile.e, Tetsunosuke, and etherwalker
|
||||
|
||||
|
||||
[gcode_macro _sb_vars]
|
||||
# User settings for the StealthBurner status leds. You can change the status colors and led
|
||||
# configurations for the logo and nozzle here.
|
||||
variable_colors: {
|
||||
'logo': { # Colors for logo states
|
||||
'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||
'cleaning': {'r': 0.0, 'g': 0.02, 'b': 0.5, 'w': 0.0},
|
||||
'calibrating_z': {'r': 0.8, 'g': 0., 'b': 0.35, 'w': 0.0},
|
||||
'heating': {'r': 0.3, 'g': 0.18, 'b': 0.0, 'w': 0.0},
|
||||
'homing': {'r': 0.0, 'g': 0.6, 'b': 0.2, 'w': 0.0},
|
||||
'leveling': {'r': 0.5, 'g': 0.1, 'b': 0.4, 'w': 0.0},
|
||||
'meshing': {'r': 0.2, 'g': 1.0, 'b': 0.0, 'w': 0.0},
|
||||
'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||
'printing': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||
'standby': {'r': 0.01, 'g': 0.01, 'b': 0.01, 'w': 0.1},
|
||||
},
|
||||
'nozzle': { # Colors for nozzle states
|
||||
'heating': {'r': 0.8, 'g': 0.35, 'b': 0.0, 'w':0.0},
|
||||
'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||
'on': {'r': 0.8, 'g': 0.8, 'b': 0.8, 'w':1.0},
|
||||
'standby': {'r': 0.6, 'g': 0.0, 'b': 0.0, 'w':0.0},
|
||||
},
|
||||
'thermal': {
|
||||
'hot': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||
'cold': {'r': 0.3, 'g': 0.0, 'b': 0.3, 'w': 0.0}
|
||||
}
|
||||
}
|
||||
variable_logo_led_name: "sb_leds"
|
||||
# The name of the addressable LED chain that contains the logo LED(s)
|
||||
variable_logo_idx: "1"
|
||||
# A comma-separated list of indexes LEDs in the logo
|
||||
variable_nozzle_led_name: "sb_leds"
|
||||
# The name of the addressable LED chain that contains the nozzle LED(s). This will
|
||||
# typically be the same LED chain as the logo.
|
||||
variable_nozzle_idx: "2,3"
|
||||
# A comma-separated list of indexes of LEDs in the nozzle
|
||||
gcode:
|
||||
# This section is required. Do Not Delete.
|
||||
|
||||
[gcode_macro _set_sb_leds]
|
||||
gcode:
|
||||
{% set red = params.RED|default(0)|float %}
|
||||
{% set green = params.GREEN|default(0)|float %}
|
||||
{% set blue = params.BLUE|default(0)|float %}
|
||||
{% set white = params.WHITE|default(0)|float %}
|
||||
{% set led = params.LED|string %}
|
||||
{% set idx = (params.IDX|string).split(',') %}
|
||||
{% set transmit_last = params.TRANSMIT|default(1) %}
|
||||
|
||||
{% for led_index in idx %}
|
||||
{% set transmit=transmit_last if loop.last else 0 %}
|
||||
set_led led={led} red={red} green={green} blue={blue} white={white} index={led_index} transmit={transmit}
|
||||
{% endfor %}
|
||||
|
||||
[gcode_macro _set_sb_leds_by_name]
|
||||
gcode:
|
||||
{% set leds_name = params.LEDS %}
|
||||
{% set color_name = params.COLOR %}
|
||||
{% set color = printer["gcode_macro _sb_vars"].colors[leds_name][color_name] %}
|
||||
{% set led = printer["gcode_macro _sb_vars"][leds_name + "_led_name"] %}
|
||||
{% set idx = printer["gcode_macro _sb_vars"][leds_name + "_idx"] %}
|
||||
{% set transmit = params.TRANSMIT|default(1) %}
|
||||
|
||||
_set_sb_leds led={led} red={color.r} green={color.g} blue={color.b} white={color.w} idx="{idx}" transmit={transmit}
|
||||
|
||||
[gcode_macro _set_logo_leds]
|
||||
gcode:
|
||||
{% set red = params.RED|default(0)|float %}
|
||||
{% set green = params.GREEN|default(0)|float %}
|
||||
{% set blue = params.BLUE|default(0)|float %}
|
||||
{% set white = params.WHITE|default(0)|float %}
|
||||
{% set led = printer["gcode_macro _sb_vars"].logo_led_name %}
|
||||
{% set idx = printer["gcode_macro _sb_vars"].logo_idx %}
|
||||
{% set transmit=params.TRANSMIT|default(1) %}
|
||||
|
||||
_set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit}
|
||||
|
||||
[gcode_macro _set_nozzle_leds]
|
||||
gcode:
|
||||
{% set red = params.RED|default(0)|float %}
|
||||
{% set green = params.GREEN|default(0)|float %}
|
||||
{% set blue = params.BLUE|default(0)|float %}
|
||||
{% set white = params.WHITE|default(0)|float %}
|
||||
{% set led = printer["gcode_macro _sb_vars"].nozzle_led_name %}
|
||||
{% set idx = printer["gcode_macro _sb_vars"].nozzle_idx %}
|
||||
{% set transmit=params.TRANSMIT|default(1) %}
|
||||
|
||||
_set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit}
|
||||
|
||||
[gcode_macro set_logo_leds_off]
|
||||
gcode:
|
||||
{% set transmit=params.TRANSMIT|default(1) %}
|
||||
_set_logo_leds red=0 blue=0 green=0 white=0 transmit={transmit}
|
||||
|
||||
[gcode_macro set_nozzle_leds_on]
|
||||
gcode:
|
||||
{% set transmit=params.TRANSMIT|default(1) %}
|
||||
_set_sb_leds_by_name leds="nozzle" color="on" transmit={transmit}
|
||||
|
||||
[gcode_macro set_nozzle_leds_off]
|
||||
gcode:
|
||||
{% set transmit=params.TRANSMIT|default(1) %}
|
||||
_set_sb_leds_by_name leds="nozzle" color="off" transmit={transmit}
|
||||
|
||||
[gcode_macro status_off]
|
||||
gcode:
|
||||
set_logo_leds_off transmit=0
|
||||
set_nozzle_leds_off
|
||||
|
||||
[gcode_macro status_ready]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="standby" transmit=0
|
||||
_set_sb_leds_by_name leds="nozzle" color="standby" transmit=1
|
||||
|
||||
[gcode_macro status_busy]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="busy" transmit=0
|
||||
set_nozzle_leds_on
|
||||
|
||||
[gcode_macro status_heating]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="heating" transmit=0
|
||||
_set_sb_leds_by_name leds="nozzle" color="heating" transmit=1
|
||||
|
||||
[gcode_macro status_leveling]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="leveling" transmit=0
|
||||
set_nozzle_leds_on
|
||||
|
||||
[gcode_macro status_homing]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="homing" transmit=0
|
||||
set_nozzle_leds_on
|
||||
|
||||
[gcode_macro status_cleaning]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="cleaning" transmit=0
|
||||
set_nozzle_leds_on
|
||||
|
||||
[gcode_macro status_meshing]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="meshing" transmit=0
|
||||
set_nozzle_leds_on
|
||||
|
||||
[gcode_macro status_calibrating_z]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="calibrating_z" transmit=0
|
||||
set_nozzle_leds_on
|
||||
|
||||
[gcode_macro status_printing]
|
||||
gcode:
|
||||
_set_sb_leds_by_name leds="logo" color="printing" transmit=0
|
||||
set_nozzle_leds_on
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
[thermistor Trianglelab-NTC100K-B3950]
|
||||
temperature1: 25
|
||||
resistance1: 103180
|
||||
temperature2: 150
|
||||
resistance2: 1366.2
|
||||
temperature3: 250
|
||||
resistance3: 168.6
|
||||
|
||||
[temperature_sensor _chamber_1]
|
||||
sensor_type: Trianglelab-NTC100K-B3950
|
||||
sensor_pin: PF4
|
||||
min_temp: 0
|
||||
max_temp: 80
|
||||
gcode_id: CH1
|
||||
|
||||
[temperature_sensor _chamber_2]
|
||||
sensor_type: Trianglelab-NTC100K-B3950
|
||||
sensor_pin: PF5
|
||||
min_temp: 0
|
||||
max_temp: 80
|
||||
gcode_id: CH2
|
||||
|
||||
[temperature_sensor _chamber_3]
|
||||
sensor_type: Trianglelab-NTC100K-B3950
|
||||
sensor_pin: PF6
|
||||
min_temp: 0
|
||||
max_temp: 80
|
||||
gcode_id: CH3
|
||||
|
||||
[temperature_sensor _chamber_4]
|
||||
sensor_type: Trianglelab-NTC100K-B3950
|
||||
sensor_pin: PF7
|
||||
min_temp: 0
|
||||
max_temp: 80
|
||||
gcode_id: CH4
|
||||
|
||||
#[temperature_sensor chamber_combined_floor]
|
||||
#sensor_type: temperature_combined
|
||||
#sensor_list: temperature_sensor _chamber_1,temperature_sensor _chamber_2,temperature_sensor _chamber_3,temperature_sensor _chamber_4
|
||||
#combination_method: min
|
||||
#maximum_deviation: 999
|
||||
|
||||
[temperature_sensor chamber_combined_mean]
|
||||
sensor_type: temperature_combined
|
||||
sensor_list: temperature_sensor _chamber_1,temperature_sensor _chamber_2,temperature_sensor _chamber_3,temperature_sensor _chamber_4
|
||||
combination_method: mean
|
||||
maximum_deviation: 999
|
||||
|
||||
#[temperature_sensor chamber_combined_ceiling]
|
||||
#sensor_type: temperature_combined
|
||||
#sensor_list: temperature_sensor _chamber_1,temperature_sensor _chamber_2,temperature_sensor _chamber_3,temperature_sensor _chamber_4
|
||||
#combination_method: max
|
||||
#maximum_deviation: 999
|
||||
@@ -0,0 +1,36 @@
|
||||
# Below you can include specific configuration files depending on what you want KAMP to do:
|
||||
|
||||
#[include ./KAMP/Adaptive_Meshing.cfg] # Include to enable adaptive meshing configuration.
|
||||
[include ../KAMP/Line_Purge.cfg] # Include to enable adaptive line purging configuration.
|
||||
#[include ./KAMP/Voron_Purge.cfg] # Include to enable adaptive Voron logo purging configuration.
|
||||
[include ../KAMP/Smart_Park.cfg] # Include to enable the Smart Park function, which parks the printhead near the print area for final heating.
|
||||
|
||||
[gcode_macro _KAMP_Settings]
|
||||
description: This macro contains all adjustable settings for KAMP
|
||||
|
||||
# The following variables are settings for KAMP as a whole.
|
||||
variable_verbose_enable: True # Set to True to enable KAMP information output when running. This is useful for debugging.
|
||||
|
||||
# The following variables are for adjusting adaptive mesh settings for KAMP.
|
||||
variable_mesh_margin: 0 # Expands the mesh size in millimeters if desired. Leave at 0 to disable.
|
||||
variable_fuzz_amount: 0 # Slightly randomizes mesh points to spread out wear from nozzle-based probes. Leave at 0 to disable.
|
||||
|
||||
# The following variables are for those with a dockable probe like Klicky, Euclid, etc. # ---------------- Attach Macro | Detach Macro
|
||||
variable_probe_dock_enable: False # Set to True to enable the usage of a dockable probe. # ---------------------------------------------
|
||||
variable_attach_macro: 'Attach_Probe' # The macro that is used to attach the probe. # Klicky Probe: 'Attach_Probe' | 'Dock_Probe'
|
||||
variable_detach_macro: 'Dock_Probe' # The macro that is used to store the probe. # Euclid Probe: 'Deploy_Probe' | 'Stow_Probe'
|
||||
# Legacy Gcode: 'M401' | 'M402'
|
||||
|
||||
# The following variables are for adjusting adaptive purge settings for KAMP.
|
||||
variable_purge_height: 0.8 # Z position of nozzle during purge, default is 0.8.
|
||||
variable_tip_distance: 0 # Distance between tip of filament and nozzle before purge. Should be similar to PRINT_END final retract amount.
|
||||
variable_purge_margin: 10 # Distance the purge will be in front of the print area, default is 10.
|
||||
variable_purge_amount: 30 # Amount of filament to be purged prior to printing.
|
||||
variable_flow_rate: 12 # Flow rate of purge in mm3/s. Default is 12.
|
||||
|
||||
# The following variables are for adjusting the Smart Park feature for KAMP, which will park the printhead near the print area at a specified height.
|
||||
variable_smart_park_height: 10 # Z position for Smart Park, default is 10.
|
||||
|
||||
gcode: # Gcode section left intentionally blank. Do not disturb.
|
||||
|
||||
{action_respond_info(" Running the KAMP_Settings macro does nothing, it is only used for storing KAMP settings. ")}
|
||||
@@ -0,0 +1,47 @@
|
||||
#### crowsnest.conf
|
||||
#### This is a typical default config.
|
||||
#### Also used as default in mainsail / MainsailOS
|
||||
#### See:
|
||||
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
|
||||
#### for details to configure to your needs.
|
||||
|
||||
|
||||
#####################################################################
|
||||
#### #####
|
||||
#### Information about ports and according URL's #####
|
||||
#### #####
|
||||
#####################################################################
|
||||
#### #####
|
||||
#### Port 8080 equals /webcam/?action=[stream/snapshot] #####
|
||||
#### Port 8081 equals /webcam2/?action=[stream/snapshot] #####
|
||||
#### Port 8082 equals /webcam3/?action=[stream/snapshot] #####
|
||||
#### Port 8083 equals /webcam4/?action=[stream/snapshot] #####
|
||||
#### #####
|
||||
#### Note: These ports are default for most Mainsail #####
|
||||
#### installations. To use any other port would involve #####
|
||||
#### changing the proxy configuration or using directly #####
|
||||
#### http://<ip>:<port>/?action=[stream/snapshot] #####
|
||||
#### #####
|
||||
#####################################################################
|
||||
#### RTSP Stream URL: ( if enabled and supported ) #####
|
||||
#### rtsp://<ip>:<rtsp_port>/stream.h264 #####
|
||||
#####################################################################
|
||||
|
||||
|
||||
[crowsnest]
|
||||
log_path: /home/pi/printer_data/logs/crowsnest.log
|
||||
log_level: verbose # Valid Options are quiet/verbose/debug
|
||||
delete_log: false # Deletes log on every restart, if set to true
|
||||
no_proxy: false
|
||||
|
||||
[cam 1]
|
||||
mode: ustreamer # ustreamer - Provides mjpg and snapshots. (All devices)
|
||||
# camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
|
||||
enable_rtsp: false # If camera-streamer is used, this enables also usage of an rtsp server
|
||||
rtsp_port: 8554 # Set different ports for each device!
|
||||
port: 8080 # HTTP/MJPG Stream/Snapshot Port
|
||||
device: /dev/video0 # See Log for available ...
|
||||
resolution: 1920x1080 # widthxheight format
|
||||
max_fps: 30 # If Hardware Supports this it will be forced, otherwise ignored/coerced.
|
||||
#custom_flags: # You can run the Stream Services with custom flags.
|
||||
#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.
|
||||
@@ -0,0 +1,118 @@
|
||||
[server]
|
||||
host: 0.0.0.0
|
||||
port: 7125
|
||||
# The maximum size allowed for a file upload (in MiB). Default 1024 MiB
|
||||
max_upload_size: 1024
|
||||
# Path to klippy Unix Domain Socket
|
||||
klippy_uds_address: ~/printer_data/comms/klippy.sock
|
||||
|
||||
[file_manager]
|
||||
# post processing for object cancel. Not recommended for low resource SBCs such as a Pi Zero. Default False
|
||||
enable_object_processing: False
|
||||
|
||||
[authorization]
|
||||
force_logins: False
|
||||
|
||||
cors_domains:
|
||||
https://*.backup.equipment
|
||||
http://*.backup.equipment
|
||||
http://*.local
|
||||
http://*.lan
|
||||
trusted_clients:
|
||||
10.0.0.0/8
|
||||
127.0.0.0/8
|
||||
169.254.0.0/16
|
||||
172.16.0.0/12
|
||||
192.168.2.101
|
||||
192.168.2.102
|
||||
192.168.2.103
|
||||
192.168.2.0/24
|
||||
FE80::/10
|
||||
::1/128
|
||||
|
||||
# enables partial support of Octoprint API
|
||||
[octoprint_compat]
|
||||
|
||||
# enables moonraker to track and store print history.
|
||||
[history]
|
||||
|
||||
# this enables moonraker announcements for mainsail
|
||||
[announcements]
|
||||
subscriptions:
|
||||
mainsail
|
||||
|
||||
# this enables moonraker's update manager
|
||||
[update_manager]
|
||||
refresh_interval: 168
|
||||
enable_auto_refresh: True
|
||||
|
||||
[update_manager mainsail]
|
||||
type: web
|
||||
channel: stable
|
||||
repo: mainsail-crew/mainsail
|
||||
path: ~/mainsail
|
||||
|
||||
[update_manager mainsail-config]
|
||||
type: git_repo
|
||||
primary_branch: master
|
||||
path: ~/mainsail-config
|
||||
origin: https://github.com/mainsail-crew/mainsail-config.git
|
||||
managed_services: klipper
|
||||
|
||||
### moonraker-timelapse
|
||||
### Don't forget to include timelapse.cfg to your printer.cfg
|
||||
### Uncomment to enable moonraker-timelapse
|
||||
|
||||
|
||||
[update_manager timelapse]
|
||||
type: git_repo
|
||||
primary_branch: main
|
||||
path: ~/moonraker-timelapse
|
||||
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
|
||||
managed_services: klipper moonraker
|
||||
|
||||
[timelapse]
|
||||
## Directory where the generated video will be saved
|
||||
output_path: ~/timelapse/
|
||||
## Directory where ffmpeg is installed
|
||||
ffmpeg_binary_path: /usr/bin/ffmpeg
|
||||
|
||||
# Crowsnest update_manager entry
|
||||
[update_manager crowsnest]
|
||||
type: git_repo
|
||||
path: ~/crowsnest
|
||||
origin: https://github.com/mainsail-crew/crowsnest.git
|
||||
managed_services: crowsnest
|
||||
install_script: tools/pkglist.sh
|
||||
|
||||
# Sonar update_manager entry
|
||||
[update_manager sonar]
|
||||
type: git_repo
|
||||
path: ~/sonar
|
||||
origin: https://github.com/mainsail-crew/sonar.git
|
||||
primary_branch: main
|
||||
managed_services: sonar
|
||||
install_script: tools/install.sh
|
||||
|
||||
# Sonar update_manager entry
|
||||
[update_manager eddy-ng]
|
||||
type: git_repo
|
||||
path: ~/eddy-ng
|
||||
origin: https://github.com/vvuk/eddy-ng.git
|
||||
primary_branch: main
|
||||
managed_services: eddy-ng
|
||||
install_script: ./install.sh
|
||||
|
||||
[update_manager Klipper-Adaptive-Meshing-Purging]
|
||||
type: git_repo
|
||||
channel: dev
|
||||
path: ~/Klipper-Adaptive-Meshing-Purging
|
||||
origin: https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging.git
|
||||
managed_services: klipper
|
||||
primary_branch: main
|
||||
[update_manager klipper-backup]
|
||||
type: git_repo
|
||||
path: ~/klipper-backup
|
||||
origin: https://github.com/Staubgeborener/klipper-backup.git
|
||||
managed_services: moonraker
|
||||
primary_branch: main
|
||||
@@ -0,0 +1,529 @@
|
||||
# This file contains common pin mappings for the BigTreeTech OctoPus V1.
|
||||
# To use this config, the firmware should be compiled for the STM32F446 with a "32KiB bootloader"
|
||||
# Enable "extra low-level configuration options" and select the "12MHz crystal" as clock reference
|
||||
|
||||
# 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.
|
||||
|
||||
## Voron Design VORON2 250/300/350mm BigTreeTech OctoPus V1 TMC2209 UART config
|
||||
|
||||
## *** THINGS TO CHANGE/CHECK: ***
|
||||
## MCU paths [mcu] section
|
||||
## Thermistor types [extruder] and [heater_bed] sections - See 'sensor types' list at end of file
|
||||
## 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
|
||||
## Fine tune E steps [extruder] section
|
||||
|
||||
[include ./SYSTEM/*.cfg]
|
||||
[include ./BTT/*.cfg]
|
||||
[include ./CUSTOM/*.cfg]
|
||||
|
||||
[mcu]
|
||||
## [X in MOTOR0] - B Motor
|
||||
## [Y in MOTOR1] - A Motor
|
||||
## [E in MOTOR6] - Extruder
|
||||
## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify
|
||||
##--------------------------------------------------------------------
|
||||
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_360026001950534146373920-if00
|
||||
restart_method: command
|
||||
##--------------------------------------------------------------------
|
||||
|
||||
[printer]
|
||||
kinematics: corexy
|
||||
max_velocity: 500
|
||||
max_accel: 4200 #Max 4000
|
||||
#max_y_accel: 4200
|
||||
#max_x_accel: 8000
|
||||
#max_accel: 10000 #Testing - revert back to above line after!
|
||||
#max_accel_to_decel: 10000 #Testing - revert back to above line after!
|
||||
max_z_velocity: 30 #Max 15 for 12V TMC Drivers, can increase for 24V
|
||||
max_z_accel: 500
|
||||
square_corner_velocity: 5.0
|
||||
|
||||
[force_move]
|
||||
enable_force_move: True
|
||||
|
||||
[skew_correction]
|
||||
[exclude_object]
|
||||
[firmware_retraction]
|
||||
[gcode_arcs]
|
||||
resolution: 0.1
|
||||
|
||||
|
||||
#####################################################################
|
||||
# X/Y Stepper Settings
|
||||
#####################################################################
|
||||
|
||||
## X Stepper on MOTOR0(B Motor)
|
||||
[stepper_x]
|
||||
step_pin: PF13
|
||||
dir_pin: PF12
|
||||
enable_pin: !PF14
|
||||
rotation_distance: 40
|
||||
microsteps: 16
|
||||
full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper
|
||||
endstop_pin: tmc2209_stepper_x:virtual_endstop
|
||||
position_min: 0
|
||||
position_endstop: 352
|
||||
position_max: 352
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
homing_speed: 50 #Max 100
|
||||
homing_retract_dist: 0
|
||||
homing_positive_dir: true
|
||||
|
||||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||||
[tmc2209 stepper_x]
|
||||
uart_pin: PC4
|
||||
interpolate: False
|
||||
run_current: 0.9
|
||||
hold_current: 0.7
|
||||
sense_resistor: 0.110
|
||||
#stealthchop_threshold: 400
|
||||
diag_pin: ^PG6
|
||||
driver_SGTHRS: 60 #255 Most Sensitive 0 Least Sensitive
|
||||
|
||||
## Y Stepper on MOTOR1 (A Motor)
|
||||
[stepper_y]
|
||||
step_pin: PG0
|
||||
dir_pin: PG1
|
||||
enable_pin: !PF15
|
||||
rotation_distance: 40
|
||||
microsteps: 16
|
||||
full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper
|
||||
endstop_pin: tmc2209_stepper_y:virtual_endstop
|
||||
position_min: 0
|
||||
position_endstop: 359
|
||||
position_max: 359
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
homing_speed: 50 #Max 100
|
||||
homing_retract_dist: 0
|
||||
homing_positive_dir: true
|
||||
|
||||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||||
[tmc2209 stepper_y]
|
||||
uart_pin: PD11
|
||||
interpolate: False
|
||||
run_current: 0.9
|
||||
hold_current: 0.7
|
||||
sense_resistor: 0.110
|
||||
#stealthchop_threshold: 400
|
||||
diag_pin: ^PG9
|
||||
driver_SGTHRS: 63 #255 Most Sensitive 0 Least Sensitive
|
||||
|
||||
#####################################################################
|
||||
# Z Stepper Settings
|
||||
#####################################################################
|
||||
|
||||
## Z0 Stepper - Front Left on MOTOR2_1
|
||||
[stepper_z]
|
||||
step_pin: PF9
|
||||
dir_pin: PF10
|
||||
enable_pin: !PG2
|
||||
rotation_distance: 40
|
||||
gear_ratio: 80:16
|
||||
microsteps: 16
|
||||
endstop_pin: EBB:gpio6
|
||||
## 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_endstop: -0.5
|
||||
##--------------------------------------------------------------------
|
||||
|
||||
## Uncomment below for 250mm build
|
||||
#position_max: 240
|
||||
|
||||
## Uncomment below for 300mm build
|
||||
#position_max: 290
|
||||
|
||||
## Uncomment below for 350mm build
|
||||
position_max: 300
|
||||
|
||||
##--------------------------------------------------------------------
|
||||
position_min: -2
|
||||
homing_speed: 15
|
||||
second_homing_speed: 1
|
||||
homing_retract_dist: 3
|
||||
|
||||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||||
[tmc2209 stepper_z]
|
||||
uart_pin: PF2
|
||||
interpolate: true
|
||||
run_current: 0.8
|
||||
hold_current: 0.8
|
||||
sense_resistor: 0.110
|
||||
stealthchop_threshold: 0
|
||||
|
||||
## Z1 Stepper - Rear Left on MOTOR3
|
||||
[stepper_z1]
|
||||
step_pin: PC13
|
||||
dir_pin: !PF0
|
||||
enable_pin: !PF1
|
||||
rotation_distance: 40
|
||||
gear_ratio: 80:16
|
||||
microsteps: 16
|
||||
|
||||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||||
[tmc2209 stepper_z1]
|
||||
uart_pin: PE4
|
||||
interpolate: true
|
||||
run_current: 0.8
|
||||
hold_current: 0.8
|
||||
sense_resistor: 0.110
|
||||
stealthchop_threshold: 0
|
||||
|
||||
## Z2 Stepper - Rear Right on MOTOR4
|
||||
[stepper_z2]
|
||||
step_pin: PE2
|
||||
dir_pin: PE3
|
||||
enable_pin: !PD4
|
||||
rotation_distance: 40
|
||||
gear_ratio: 80:16
|
||||
microsteps: 16
|
||||
|
||||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||||
[tmc2209 stepper_z2]
|
||||
uart_pin: PE1
|
||||
interpolate: true
|
||||
run_current: 0.8
|
||||
hold_current: 0.80
|
||||
sense_resistor: 0.110
|
||||
stealthchop_threshold: 0
|
||||
|
||||
## Z3 Stepper - Front Right on MOTOR5
|
||||
[stepper_z3]
|
||||
step_pin: PE6
|
||||
dir_pin: !PA14
|
||||
enable_pin: !PE0
|
||||
rotation_distance: 40
|
||||
gear_ratio: 80:16
|
||||
microsteps: 16
|
||||
|
||||
## Make sure to update below for your relevant driver (2208 or 2209)
|
||||
[tmc2209 stepper_z3]
|
||||
uart_pin: PD3
|
||||
interpolate: true
|
||||
run_current: 0.8
|
||||
hold_current: 0.80
|
||||
sense_resistor: 0.110
|
||||
stealthchop_threshold: 0
|
||||
|
||||
#####################################################################
|
||||
# Bed Heater
|
||||
#####################################################################
|
||||
|
||||
[heater_bed]
|
||||
## SSR Pin - BED_OUT
|
||||
heater_pin: PA1
|
||||
sensor_type: Generic 3950
|
||||
sensor_pin: PF3
|
||||
## Adjust Max Power so your heater doesn't warp your bed
|
||||
max_power: 1.0
|
||||
min_temp: 0
|
||||
max_temp: 125
|
||||
#control: pid
|
||||
#pid_kp: 58.437
|
||||
#pid_ki: 2.347
|
||||
#pid_kd: 363.769
|
||||
|
||||
#####################################################################
|
||||
# Fan Control
|
||||
#####################################################################
|
||||
|
||||
[fan]
|
||||
## Part Cooling Fan - CPAP 7040
|
||||
pin: PG15
|
||||
max_power: 1.0
|
||||
kick_start_time: 0.05
|
||||
hardware_pwm: False
|
||||
cycle_time: 0.005
|
||||
off_below: 0.1
|
||||
|
||||
|
||||
[controller_fan stepper_fan]
|
||||
## Controller fan - CNC_FAN2
|
||||
pin: PD12
|
||||
max_power: 0.9
|
||||
kick_start_time: 0.5
|
||||
fan_speed: 0.7
|
||||
|
||||
[controller_fan electronic_chamber_fans]
|
||||
## Controller fan - CNC_FAN2
|
||||
pin: PD13
|
||||
max_power: 0.8
|
||||
kick_start_time: 0.5
|
||||
fan_speed: 0.4
|
||||
|
||||
|
||||
[temperature_fan exhaust_fan]
|
||||
pin: PE5
|
||||
shutdown_speed: 0.0
|
||||
kick_start_time: 5.0
|
||||
cycle_time: 0.05
|
||||
hardware_pwm: True
|
||||
off_below: 0.15
|
||||
|
||||
sensor_type: temperature_combined
|
||||
sensor_list: temperature_sensor _chamber_1, temperature_sensor _chamber_2, temperature_sensor _chamber_3, temperature_sensor _chamber_4
|
||||
combination_method: mean
|
||||
maximum_deviation: 999
|
||||
|
||||
control: pid
|
||||
pid_Kp: 35.0
|
||||
pid_Ki: 12
|
||||
pid_Kd: 4.0
|
||||
pid_deriv_time: 2.0
|
||||
|
||||
target_temp: 50.0
|
||||
min_temp: 0
|
||||
max_temp: 110
|
||||
min_speed: 0.149
|
||||
max_speed: 1.0
|
||||
|
||||
gcode_id: C
|
||||
|
||||
#[temperature_fan exhaust_fan]
|
||||
## Exhaust fan - CNC_FAN3
|
||||
#pin: PE5
|
||||
#max_power: 1.0
|
||||
#shutdown_speed: 0.0
|
||||
#kick_start_time: 5.0
|
||||
#cycle_time:0.05
|
||||
#off_below:0.1
|
||||
#sensor_type: temperature_combined
|
||||
#sensor_list: temperature_sensor _chamber_1,temperature_sensor _chamber_2,temperature_sensor _chamber_3,temperature_sensor _chamber_4
|
||||
#combination_method: mean
|
||||
#maximum_deviation: 999
|
||||
#min_temp: 0
|
||||
#max_temp: 80
|
||||
#target_temp: 35.0
|
||||
#max_delta: 0.5
|
||||
#max_speed: 1.0
|
||||
#min_speed: 0.3
|
||||
#control: watermark
|
||||
#gcode_id: C
|
||||
|
||||
[gcode_macro M141]
|
||||
gcode:
|
||||
{% set s = params.S|default(0)|float %}
|
||||
SET_TEMPERATURE_FAN_TARGET temperature_fan="exhaust_fan" target={s}
|
||||
|
||||
[fan_generic nevermore_fan]
|
||||
pin: PD15
|
||||
max_power: 1.0
|
||||
kick_start_time: 1.0
|
||||
cycle_time: 0.05
|
||||
off_below: 0.13
|
||||
|
||||
#####################################################################
|
||||
# LED Control
|
||||
#####################################################################
|
||||
|
||||
#[output_pin caselight]
|
||||
# Chamber Lighting - HE1 Connector (Optional)
|
||||
#pin: PB11
|
||||
#pwm:true
|
||||
#shutdown_value: 0
|
||||
#value:1
|
||||
#cycle_time: 0.01
|
||||
|
||||
[output_pin daylight]
|
||||
pin: PB11
|
||||
pwm: True
|
||||
cycle_time: 0.01
|
||||
|
||||
#####################################################################
|
||||
# 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:175,175
|
||||
#speed:100
|
||||
#z_hop:10
|
||||
|
||||
[quad_gantry_level]
|
||||
## 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
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
## Gantry Corners for 250mm Build
|
||||
## Uncomment for 250mm build
|
||||
#gantry_corners:
|
||||
# -60,-10
|
||||
# 310, 320
|
||||
## Probe points
|
||||
#points:
|
||||
# 50,25
|
||||
# 50,175
|
||||
# 200,175
|
||||
# 200,25
|
||||
|
||||
## Gantry Corners for 300mm Build
|
||||
## Uncomment for 300mm build
|
||||
#gantry_corners:
|
||||
# -60,-10
|
||||
# 360,370
|
||||
## Probe points
|
||||
#points:
|
||||
# 50,25
|
||||
# 50,225
|
||||
# 250,225
|
||||
# 250,25
|
||||
|
||||
## Gantry Corners for 350mm Build
|
||||
## Uncomment for 350mm build
|
||||
gantry_corners:
|
||||
-60,-10
|
||||
410,420
|
||||
# Probe points
|
||||
points:
|
||||
50,25
|
||||
50,275
|
||||
300,275
|
||||
300,25
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
speed: 200
|
||||
horizontal_move_z: 2
|
||||
retries: 15
|
||||
retry_tolerance: 0.015
|
||||
max_adjust: 5
|
||||
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
|
||||
[neopixel front_logo]
|
||||
|
||||
pin: PB0
|
||||
# The pin connected to the neopixel. This parameter must be
|
||||
# provided.
|
||||
chain_count: 7
|
||||
# The number of Neopixel chips that are "daisy chained" to the
|
||||
# provided pin. The default is 1 (which indicates only a single
|
||||
# Neopixel is connected to the pin).
|
||||
color_order: GRB
|
||||
# Set the pixel order required by the LED hardware (using a string
|
||||
# containing the letters R, G, B, W with W optional). Alternatively,
|
||||
# this may be a comma separated list of pixel orders - one for each
|
||||
# LED in the chain. The default is GRB.
|
||||
initial_RED: 1.0
|
||||
initial_GREEN: 0.0
|
||||
initial_BLUE: 0.0
|
||||
initial_WHITE: 0.0
|
||||
# See the "led" section for information on these parameters.
|
||||
#--------------------------------------------------------------------
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Macros
|
||||
#####################################################################
|
||||
|
||||
|
||||
[gcode_macro G32]
|
||||
description: Home XYZ mesh calibrate
|
||||
gcode:
|
||||
STATUS_HOMING
|
||||
BED_MESH_CLEAR
|
||||
G28
|
||||
QUAD_GANTRY_LEVEL
|
||||
G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } F4500
|
||||
PROBE_EDDY_NG_TAP
|
||||
STATUS_MESHING
|
||||
BED_MESH_CALIBRATE METHOD=rapid_scan
|
||||
G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } Z30 F4500
|
||||
STATUS_READY
|
||||
#--------------------------------------------------------------------
|
||||
|
||||
[gcode_macro FAST_CALIBRATE]
|
||||
description: Quickly home axis and mesh area to be printed. QGL if needed
|
||||
gcode:
|
||||
BED_MESH_CLEAR
|
||||
_CG28
|
||||
{% if printer.quad_gantry_level.applied|lower == 'false' %}
|
||||
STATUS_LEVELING
|
||||
QUAD_GANTRY_LEVEL
|
||||
{% endif %}
|
||||
G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } F4500
|
||||
PROBE_EDDY_NG_TAP
|
||||
STATUS_MESHING
|
||||
BED_MESH_CALIBRATE ADAPTIVE=1 METHOD=rapid_scan
|
||||
|
||||
|
||||
[gcode_macro PRINT_START]
|
||||
# Use PRINT_START for the slicer starting script - please customise for your slicer of choice
|
||||
gcode:
|
||||
CLEAN_NOZZLE
|
||||
STATUS_PRINTING
|
||||
LINE_PURGE
|
||||
|
||||
[gcode_macro PRINT_END]
|
||||
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
|
||||
gcode:
|
||||
M400 ; wait for buffer to clear
|
||||
G92 E0 ; zero the extruder
|
||||
G1 E-10.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
|
||||
M106 S0
|
||||
G1 Z5 F3000 ; move nozzle up 5mm
|
||||
G90 ; absolute positioning
|
||||
BED_MESH_CLEAR
|
||||
SET_PIN PIN=daylight VALUE=0.0
|
||||
|
||||
## Thermistor 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"
|
||||
|
||||
#*# <---------------------- SAVE_CONFIG ---------------------->
|
||||
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
|
||||
#*#
|
||||
#*# [extruder]
|
||||
#*# control = pid
|
||||
#*# pid_kp = 15.921
|
||||
#*# pid_ki = 3.553
|
||||
#*# pid_kd = 12.717
|
||||
#*#
|
||||
#*# [heater_bed]
|
||||
#*# control = pid
|
||||
#*# pid_kp = 38.431
|
||||
#*# pid_ki = 1.601
|
||||
#*# pid_kd = 230.586
|
||||
#*#
|
||||
#*# [stepper_z]
|
||||
#*# position_endstop = -0.65
|
||||
#*#
|
||||
#*# [input_shaper]
|
||||
#*# shaper_type_x = mzv
|
||||
#*# shaper_freq_x = 52.2
|
||||
#*# shaper_type_y = mzv
|
||||
#*# shaper_freq_y = 37.8
|
||||
#*#
|
||||
#*# [probe_eddy_ng btt_eddy]
|
||||
#*# calibrated_drive_currents = 15
|
||||
#*# calibration_version = 5
|
||||
#*# tap_drive_current = 15
|
||||
#*# calibration_15 = gASVoQMAAAAAAAB9lCiMAXaUSwWMBGZ0b2iUjBtudW1weS5wb2x5bm9taWFsLnBvbHlub21pYWyUjApQb2x5bm9taWFslJOUKYGUfZQojARjb2VmlIwVbnVtcHkuY29yZS5tdWx0aWFycmF5lIwMX3JlY29uc3RydWN0lJOUjAVudW1weZSMB25kYXJyYXmUk5RLAIWUQwFilIeUUpQoSwFLCoWUaAyMBWR0eXBllJOUjAJmOJSJiIeUUpQoSwOMATyUTk5OSv////9K/////0sAdJRiiUNQn+aN39hb9z8/OHa46Cf/P8xmbpDGSuY/TArwgQh11z8GZ2TeE7zfP1HKo4hgKtY/9ScY9mKv27/4TtMKrB7ev2RXmVPR79E/rDGV/2Jl0z+UdJRijAZkb21haW6UaAtoDksAhZRoEIeUUpQoSwFLAoWUaBiJQxAu1cudmhGVPlhL1toQO5U+lHSUYowGd2luZG93lGgLaA5LAIWUaBCHlFKUKEsBSwKFlGgYiUMQAAAAAAAA8L8AAAAAAADwP5R0lGJ1YowJZnRvaF9oaWdolGgFKYGUfZQoaAhoC2gOSwCFlGgQh5RSlChLAUsKhZRoGIlDUD5GKGz/rxtADFUy9G1IDEDMtyppwlL6P0TfqqcJq/Y/jcNK+uTT8z9niReUDlH3v3ZSneV5Bui/Ss2awfq8CEDbrCavOHHqPzKSjHWPivO/lHSUYmgdaAtoDksAhZRoEIeUUpQoSwFLAoWUaBiJQxCLCsJSfDmVPsrh2xZLRZU+lHSUYmgkaAtoDksAhZRoEIeUUpQoSwFLAoWUaBiJQxAAAAAAAADwvwAAAAAAAPA/lHSUYnVijARodG9mlGgFKYGUfZQoaAhoC2gOSwCFlGgQh5RSlChLAUsKhZRoGIlDUKU4ImxpL5U+sAOXuiuRET5V9UJTo+IBvgrDO7v20vA9SXCYSQkJ3T2vIUizKLbsvaT2crlGm+694rFcWLkC8z0dessvYkbdPeqYiMqbauG9lHSUYmgdaAtoDksAhZRoEIeUUpQoSwFLAoWUaBiJQxC4M1cmk+BpP2ZATiKo9BNAlHSUYmgkaAtoDksAhZRoEIeUUpQoSwFLAoWUaBiJQxAAAAAAAADwvwAAAAAAAPA/lHSUYnVijAdoX3JhbmdllF2UKEc/aeCTJlczuEdALgAAAAAAAWWMB2ZfcmFuZ2WUXZQoR0FIEhkh0sgAR0FITScAOzgAZYwCZGOUSw91Lg==
|
||||
@@ -0,0 +1,17 @@
|
||||
#### Sonar - A WiFi Keepalive daemon
|
||||
####
|
||||
#### Written by Stephan Wendel aka KwadFan <me@stephanwe.de>
|
||||
#### Copyright 2022
|
||||
#### https://github.com/mainsail-crew/sonar
|
||||
####
|
||||
#### This File is distributed under GPLv3
|
||||
####
|
||||
|
||||
[sonar]
|
||||
enable: false # false to disable till next reboot (will stop again if not set to true)
|
||||
debug_log: false # if set to true, sonar will log ever ping with triptime and date/time
|
||||
persistent_log: false # If true logs in /var/log/sonar.log, false logs to systemd
|
||||
target: auto # IP Address, URL or auto as ping target
|
||||
count: 3 # How often should be pinged?
|
||||
interval: 60 # Ping again after X seconds
|
||||
restart_threshold: 10 # If failed, restart WiFi after X seconds
|
||||
Reference in new issue
Block a user