779 lines
22 KiB
INI
779 lines
22 KiB
INI
[include moonraker_obico_macros.cfg]
|
|
#[include mmu/base/*.cfg]
|
|
#[include mmu/optional/client_macros.cfg]
|
|
[include mainsail.cfg]
|
|
|
|
# host MCU service is preinstalled and ready to use with:
|
|
[mcu CB1]
|
|
serial: /tmp/klipper_host_mcu
|
|
|
|
[mcu]
|
|
canbus_uuid: a39755b6c75c
|
|
|
|
[mcu printhead]
|
|
canbus_uuid: 6e5db542668c
|
|
|
|
[printer]
|
|
kinematics: corexy
|
|
max_velocity: 700
|
|
max_accel: 25000
|
|
max_z_velocity: 20
|
|
max_z_accel: 350
|
|
square_corner_velocity: 5.0
|
|
|
|
[temperature_sensor Electronics]
|
|
sensor_type: temperature_mcu
|
|
|
|
[temperature_sensor CPU]
|
|
sensor_type: temperature_host
|
|
|
|
#####################################################################
|
|
# X/Y Stepper Settings
|
|
#####################################################################
|
|
|
|
[motor_constants ldo-42sth60-2004mac]
|
|
resistance: 1.4
|
|
inductance: 0.003
|
|
holding_torque: 0.5884
|
|
max_current: 2.0
|
|
steps_per_revolution: 400
|
|
|
|
## X Stepper on Motor1(B Motor)
|
|
[stepper_x]
|
|
step_pin: PE6
|
|
dir_pin: PE5
|
|
enable_pin: !PC14
|
|
microsteps: 16
|
|
rotation_distance: 40.1209
|
|
full_steps_per_rotation:400 #set to 400 for 0.9 degree stepper
|
|
endstop_pin: ^PF4
|
|
position_min: 0
|
|
position_endstop: 350
|
|
position_max: 350
|
|
homing_speed: 25 #Max 100
|
|
homing_retract_dist: 5
|
|
homing_positive_dir: true
|
|
|
|
[tmc5160 stepper_x]
|
|
cs_pin: PC13
|
|
spi_software_mosi_pin: PG6
|
|
spi_software_miso_pin: PG7
|
|
spi_software_sclk_pin: PG8
|
|
run_current: 1.414
|
|
stealthchop_threshold: 0
|
|
|
|
[autotune_tmc stepper_x]
|
|
motor: ldo-42sth60-2004mac
|
|
tuning_goal: performance
|
|
voltage: 48.0
|
|
|
|
# Y Stepper on Motor2 (A Motor)
|
|
[stepper_y]
|
|
step_pin: PE2
|
|
dir_pin: PE1
|
|
enable_pin: !PE4
|
|
microsteps: 16
|
|
rotation_distance: 40.3964
|
|
endstop_pin: ^PF3
|
|
full_steps_per_rotation:400 #set to 400 for 0.9 degree stepper
|
|
position_min: 0
|
|
position_endstop: 355
|
|
position_max: 355
|
|
homing_speed: 25 #Max 100
|
|
homing_retract_dist: 5
|
|
homing_positive_dir: true
|
|
|
|
[tmc5160 stepper_y]
|
|
cs_pin: PE3
|
|
spi_software_mosi_pin: PG6
|
|
spi_software_miso_pin: PG7
|
|
spi_software_sclk_pin: PG8
|
|
run_current: 1.414
|
|
stealthchop_threshold: 0
|
|
|
|
[autotune_tmc stepper_y]
|
|
motor: ldo-42sth60-2004mac
|
|
tuning_goal: performance
|
|
voltage: 48.0
|
|
|
|
|
|
#####################################################################
|
|
# Z Stepper Settings
|
|
#####################################################################
|
|
|
|
## Z0 Stepper - Front Left on MOTOR3_A
|
|
[stepper_z]
|
|
step_pin: PB8
|
|
dir_pin: PB7
|
|
enable_pin: !PE0
|
|
rotation_distance: 41.3288
|
|
gear_ratio: 80:16
|
|
microsteps: 16
|
|
endstop_pin: probe:z_virtual_endstop
|
|
## Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0)
|
|
## (+) value = endstop above Z0, (-) value = endstop below
|
|
## Increasing position_endstop brings nozzle closer to the bed
|
|
## After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config
|
|
#position_endstop: -2
|
|
position_max: 300
|
|
position_min: -10
|
|
homing_speed: 5
|
|
second_homing_speed: 3
|
|
homing_retract_dist: 3
|
|
|
|
[tmc5160 stepper_z]
|
|
cs_pin: PB9
|
|
spi_software_mosi_pin: PG6
|
|
spi_software_miso_pin: PG7
|
|
spi_software_sclk_pin: PG8
|
|
run_current: 1
|
|
stealthchop_threshold: 0
|
|
|
|
# [autotune_tmc stepper_z]
|
|
# motor: moons-ms17hd6p420I-05
|
|
# tuning_goal: silent
|
|
# voltage: 48.0
|
|
|
|
## Z1 Stepper - Rear Left on Motor5
|
|
[stepper_z1]
|
|
step_pin: PG13
|
|
dir_pin: !PG12
|
|
enable_pin: !PG15
|
|
rotation_distance: 40
|
|
gear_ratio: 80:16
|
|
microsteps: 16
|
|
|
|
[tmc5160 stepper_z1]
|
|
cs_pin: PG14
|
|
spi_software_mosi_pin: PG6
|
|
spi_software_miso_pin: PG7
|
|
spi_software_sclk_pin: PG8
|
|
run_current: 1
|
|
stealthchop_threshold: 0
|
|
|
|
# [autotune_tmc stepper_z1]
|
|
# motor: moons-ms17hd6p420I-05
|
|
# tuning_goal: silent
|
|
# voltage: 48.0
|
|
|
|
## Z2 Stepper - Rear Right on Motor6
|
|
[stepper_z2]
|
|
step_pin: PG9
|
|
dir_pin: PD7
|
|
enable_pin: !PG11
|
|
rotation_distance: 40
|
|
gear_ratio: 80:16
|
|
microsteps: 16
|
|
|
|
[tmc5160 stepper_z2]
|
|
cs_pin: PG10
|
|
spi_software_mosi_pin: PG6
|
|
spi_software_miso_pin: PG7
|
|
spi_software_sclk_pin: PG8
|
|
run_current: 1
|
|
stealthchop_threshold: 0
|
|
|
|
# [autotune_tmc stepper_z2]
|
|
# motor: moons-ms17hd6p420I-05
|
|
# tuning_goal: silent
|
|
# voltage: 48.0
|
|
|
|
## Z3 Stepper - Front Right on Motor7
|
|
[stepper_z3]
|
|
step_pin: PD4
|
|
dir_pin: !PD3
|
|
enable_pin: !PD6
|
|
rotation_distance: 40
|
|
gear_ratio: 80:16
|
|
microsteps: 16
|
|
|
|
[tmc5160 stepper_z3]
|
|
cs_pin: PD5
|
|
spi_software_mosi_pin: PG6
|
|
spi_software_miso_pin: PG7
|
|
spi_software_sclk_pin: PG8
|
|
run_current: 1
|
|
stealthchop_threshold: 0
|
|
|
|
# [autotune_tmc stepper_z3]
|
|
# motor: moons-ms17hd6p420I-05
|
|
# tuning_goal: silent
|
|
# voltage: 48.0
|
|
|
|
#####################################################################
|
|
# Extruder
|
|
#####################################################################
|
|
|
|
[extruder]
|
|
step_pin: printhead: PD0
|
|
dir_pin: printhead: PD1
|
|
enable_pin: !printhead: PD2
|
|
rotation_distance: 5.7
|
|
gear_ratio: 1:1
|
|
microsteps: 16
|
|
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
|
|
nozzle_diameter: 0.400
|
|
filament_diameter: 1.75
|
|
spi_speed: 4000000
|
|
heater_pin: printhead: PB13
|
|
sensor_type: MAX31865
|
|
sensor_pin: printhead: PA4
|
|
spi_bus: spi1
|
|
rtd_nominal_r: 1000
|
|
rtd_reference_r: 4300
|
|
rtd_num_of_wires: 4
|
|
min_temp: 10
|
|
max_temp: 350
|
|
max_power: 1.0
|
|
min_extrude_temp: 170
|
|
control = pid
|
|
pid_kp = 23.189
|
|
pid_ki = 1.562
|
|
pid_kd = 86.089
|
|
## Try to keep pressure_advance below 1.0
|
|
pressure_advance: 0.05
|
|
## Default is 0.040, leave stock
|
|
pressure_advance_smooth_time: 0.040
|
|
|
|
[tmc2209 extruder]
|
|
uart_pin: printhead: PA15
|
|
interpolate: false
|
|
run_current: 0.707
|
|
stealthchop_threshold: 0
|
|
|
|
[motor_constants moon-36h020h-1004a-001]
|
|
resistance: 2.37
|
|
inductance: 0.0012
|
|
holding_torque: 0.0883
|
|
max_current: 0.6
|
|
steps_per_revolution: 200
|
|
|
|
|
|
[autotune_tmc extruder]
|
|
motor: moon-36h020h-1004a-001
|
|
tuning_goal: performance
|
|
voltage: 24.0
|
|
|
|
[adxl345]
|
|
cs_pin: printhead: PB12
|
|
spi_software_sclk_pin: printhead: PB10
|
|
spi_software_mosi_pin: printhead: PB11
|
|
spi_software_miso_pin: printhead: PB2
|
|
axes_map: x,z,y
|
|
|
|
[resonance_tester]
|
|
accel_chip: adxl345
|
|
probe_points:
|
|
175, 175, 30
|
|
|
|
#####################################################################
|
|
# Filament Sensor
|
|
#####################################################################
|
|
[filament_switch_sensor switch_sensor]
|
|
switch_pin: ^PF0
|
|
pause_on_runout: True
|
|
runout_gcode:
|
|
PAUSE
|
|
M117 Filament switch runout
|
|
insert_gcode:
|
|
M117 Filament switch inserted
|
|
|
|
[filament_motion_sensor encoder_sensor]
|
|
switch_pin: ^PC15
|
|
detection_length: 15
|
|
extruder: extruder
|
|
pause_on_runout: True
|
|
runout_gcode:
|
|
PAUSE
|
|
M117 Filament encoder runout
|
|
insert_gcode:
|
|
M117 Filament encoder inserted
|
|
|
|
#####################################################################
|
|
# Bed Heater
|
|
#####################################################################
|
|
|
|
## SSR Pin - HE2
|
|
[heater_bed]
|
|
heater_pin: PA3
|
|
sensor_type: Generic 3950
|
|
sensor_pin: PB1
|
|
max_power: 1
|
|
min_temp: 0
|
|
max_temp: 120
|
|
control = pid
|
|
pid_kp = 62.274
|
|
pid_ki = 3.218
|
|
pid_kd = 301.250
|
|
|
|
#####################################################################
|
|
# Probe
|
|
#####################################################################
|
|
|
|
[probe]
|
|
## Inductive Probe
|
|
## This probe is not used for Z height, only Quad Gantry Leveling
|
|
## NPN and PNP proximity switch types can be set by jumper
|
|
pin: printhead: PB6
|
|
x_offset: 0
|
|
y_offset: 25.0
|
|
#z_offset: 0
|
|
speed: 30.0
|
|
samples: 3
|
|
samples_result: median
|
|
sample_retract_dist: 5.0
|
|
samples_tolerance: 0.01
|
|
samples_tolerance_retries: 6
|
|
activate_gcode:
|
|
{% set PROBE_TEMP = 150 %}
|
|
{% set MAX_TEMP = PROBE_TEMP + 5 %}
|
|
{% set ACTUAL_TEMP = printer.extruder.temperature %}
|
|
{% set TARGET_TEMP = printer.extruder.target %}
|
|
|
|
{% if TARGET_TEMP > PROBE_TEMP %}
|
|
{ action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) }
|
|
M106 S255
|
|
M109 S{ PROBE_TEMP }
|
|
M106 S0
|
|
{% else %}
|
|
# Temperature target is already low enough, but nozzle may still be too hot.
|
|
{% if ACTUAL_TEMP > MAX_TEMP %}
|
|
{ action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) }
|
|
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP }
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
#####################################################################
|
|
# Enclosure Temperature Control
|
|
#####################################################################
|
|
[temperature_sensor chamber]
|
|
sensor_type: Generic 3950
|
|
sensor_pin: PB0
|
|
|
|
#####################################################################
|
|
# Fan Control
|
|
#####################################################################
|
|
|
|
[fan_generic part_cooling_fan]
|
|
## Print Cooling Fan - CNC_FAN0
|
|
pin: !PA4
|
|
kick_start_time: 0
|
|
## Depending on your fan, you may need to increase this value
|
|
## if your fan will not start. Can change cycle_time (increase)
|
|
## if your fan is not able to slow down effectively
|
|
off_below: 0.28
|
|
|
|
[heater_fan hotend_fan]
|
|
## Hotend Fan - CNC_FAN1
|
|
pin: printhead: PA0
|
|
max_power: 1.0
|
|
kick_start_time: 0.5
|
|
heater: extruder
|
|
heater_temp: 50.0
|
|
fan_speed: 1.0
|
|
|
|
[fan_generic exhaust_fan]
|
|
# Exhaust fan - CNC_FAN3
|
|
pin: PF6
|
|
max_power: 1.0
|
|
shutdown_speed: 0.0
|
|
kick_start_time: 5.0
|
|
|
|
[multi_pin controller_fans]
|
|
pins: PF7,PF9
|
|
|
|
[controller_fan controller_fan]
|
|
## Controller fan - CNC_FAN2
|
|
pin: multi_pin:controller_fans
|
|
kick_start_time: 0.5
|
|
idle_speed: 0.5
|
|
heater: heater_bed
|
|
idle_timeout: 120
|
|
|
|
|
|
|
|
#####################################################################
|
|
# LED Control
|
|
#####################################################################
|
|
|
|
[neopixel caselight]
|
|
pin: PD15
|
|
chain_count: 30
|
|
color_order: GRB
|
|
|
|
[neopixel hotend_rgb]
|
|
pin: printhead: PD3
|
|
chain_count: 6
|
|
color_order: GRB,RBG,GRB,RGB,RGB,RGB
|
|
|
|
#####################################################################
|
|
# Idle Timeout
|
|
#####################################################################
|
|
[idle_timeout]
|
|
timeout: 600
|
|
gcode:
|
|
TURN_OFF_HEATERS
|
|
M84
|
|
|
|
#####################################################################
|
|
# Homing and Gantry Adjustment Routines
|
|
#####################################################################
|
|
|
|
[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:170,170
|
|
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:
|
|
-60,-60
|
|
410,410
|
|
points:
|
|
50,50
|
|
50,300
|
|
300,300
|
|
300,50
|
|
speed: 500
|
|
horizontal_move_z: 10
|
|
retries: 10
|
|
retry_tolerance: 0.02
|
|
max_adjust: 15
|
|
|
|
[bed_mesh]
|
|
speed: 500
|
|
horizontal_move_z: 5
|
|
mesh_min: 30,50
|
|
mesh_max: 320,340
|
|
probe_count: 5,5
|
|
|
|
#####################################################################
|
|
# Pin Definitions
|
|
#####################################################################
|
|
|
|
[board_pins]
|
|
aliases:
|
|
# EXP1 header
|
|
EXP1_1=PE9, EXP1_2=PE10,
|
|
EXP1_3=PE11, EXP1_4=PE12,
|
|
EXP1_5=PE13, EXP1_6=PE14, # Slot in the socket on this side
|
|
EXP1_7=PE15, EXP1_8=PB10,
|
|
EXP1_9=<GND>, EXP1_10=<5V>,
|
|
|
|
# EXP2 header
|
|
EXP2_1=PB14, EXP2_2=PB13,
|
|
EXP2_3=PF7, EXP2_4=PB12,
|
|
EXP2_5=PE7, EXP2_6=PB11, # Slot in the socket on this side
|
|
EXP2_7=PE8, EXP2_8=<RST>,
|
|
EXP2_9=<GND>, EXP2_10=PC5
|
|
#####################################################################
|
|
# Optional G-Codes
|
|
#####################################################################
|
|
[gcode_arcs]
|
|
resolution: 0.1
|
|
|
|
[exclude_object]
|
|
|
|
[pause_resume]
|
|
recover_velocity: 100
|
|
|
|
[firmware_retraction]
|
|
retract_length: 0.8
|
|
retract_speed: 40
|
|
unretract_extra_length: 0
|
|
unretract_speed: 40
|
|
|
|
[respond]
|
|
default_type: echo
|
|
|
|
#####################################################################
|
|
# Macros
|
|
#####################################################################
|
|
|
|
[gcode_macro CANCEL_PRINT]
|
|
rename_existing: BASE_CANCEL_PRINT
|
|
gcode:
|
|
M220 S100 ; reset speed factor override percentage to default (100%)
|
|
M221 S100 ; reset extrusion factor override percentage to default (100%)
|
|
{% if printer.extruder.temperature > 170 %} ; if extruder is hot, retract filament
|
|
G1 E-3.0 F3600 ; retract filament by 3mm
|
|
{% endif %}
|
|
{% if printer.toolhead.homed_axis == "xyz" %} ; if XYZ is homed, we can move the nozzle
|
|
G91 ; relative positioning
|
|
G1 Z+5 F3600 ; move nozzle up 5mm
|
|
G90 ; absolute positioning
|
|
PARK_NOZZLE_REAR ; park nozzle
|
|
{% endif %}
|
|
CLEAR_PAUSE
|
|
BASE_CANCEL_PRINT
|
|
|
|
[gcode_macro G32]
|
|
gcode:
|
|
G28
|
|
QUAD_GANTRY_LEVEL
|
|
BED_MESH_CALIBRATE
|
|
G28
|
|
G0 X345 Y345 Z30 F3600
|
|
|
|
[gcode_macro PARK_NOZZLE_REAR]
|
|
gcode:
|
|
G0 X345 Y345 F3600
|
|
|
|
[gcode_macro PARK_NOZZLE_FRONT]
|
|
gcode:
|
|
G0 X15 Y15 F3600
|
|
|
|
[gcode_macro PRINT_START]
|
|
gcode:
|
|
UPDATE_DELAYED_GCODE ID=TURN_ON_LIGHTS DURATION=0
|
|
SET_LED LED="caselight" RED=0.898 GREEN=1 BLUE=0 SYNC=0 TRANSMIT=1
|
|
M140 S{ params.BED | float } ; set bed temperature
|
|
|
|
{% set PROBE_TEMP = 150 %}
|
|
{% set ACTUAL_TEMP = printer.extruder.temperature %}
|
|
|
|
{% if ACTUAL_TEMP > PROBE_TEMP %}
|
|
M106 S255
|
|
M109 S{ PROBE_TEMP }
|
|
M106 S0
|
|
{% else %}
|
|
M109 S{ PROBE_TEMP }
|
|
{% endif %}
|
|
; get nozzle to probing temperture
|
|
M190 S{ params.BED | float } ; wait for bed to reach temperture
|
|
; If QGL is NO, only do G28 (axis homing)
|
|
; If QGL is YES or not defined, do G32 (axis homing + QGL)
|
|
; First Check if QGL exists, then check if it is YES
|
|
{% if params.QGL is defined and params.QGL == "NO" %}
|
|
G28
|
|
{% else %}
|
|
; Is QGL applied already?
|
|
{% if printer.quad_gantry_level.applied %}
|
|
; QGL is applied, so just home the axis
|
|
G28
|
|
PARK_NOZZLE_REAR
|
|
{% else %}
|
|
; QGL is not applied, so home the axis and apply QGL and calibrate the mesh
|
|
G32
|
|
{% endif %}
|
|
{% endif %}
|
|
G1 Z20 F3000 ; move nozzle away from bed
|
|
M109 S{ params.EXTRUDER | float } ; wait for nozzle to reach temperture
|
|
SET_LED LED="hotend_rgb" RED=1 GREEN=0 BLUE=1 SYNC=0 TRANSMIT=1 ; turn on hotend LED
|
|
SET_LED LED="caselight" RED=1 GREEN=1 BLUE=1 SYNC=0 TRANSMIT=1 ; turn on case light
|
|
[gcode_macro PRINT_PURGE_LINE]
|
|
gcode:
|
|
G0 X10Y10Z0.25 F10000
|
|
G0 X200Y10Z0.25 E50 F1000
|
|
|
|
[gcode_macro PRINT_END]
|
|
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 ; turn off heaters
|
|
M107 ; turn off fan
|
|
G1 Z2 F3000 ; move nozzle up 2mm
|
|
G90 ; absolute positioning
|
|
PARK_NOZZLE_REAR ; park nozzle
|
|
#M84 ; disable motors (optional)
|
|
UPDATE_DELAYED_GCODE ID=TURN_OFF_LIGHTS DURATION=300
|
|
|
|
[delayed_gcode TURN_OFF_LIGHTS]
|
|
gcode:
|
|
SET_LED LED="caselight" RED=0 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1
|
|
SET_LED LED="hotend_rgb" RED=0 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1
|
|
|
|
[gcode_macro LOAD_FILAMENT]
|
|
gcode:
|
|
M83
|
|
G1 E50 F300
|
|
G1 E30 F150
|
|
|
|
[gcode_macro UNLOAD_FILAMENT]
|
|
gcode:
|
|
M83
|
|
G1 E-35 F8000
|
|
G1 E26 F750
|
|
G4 P1000
|
|
G1 E-50 F8000
|
|
G1 E-50 F8000
|
|
|
|
[gcode_macro M106]
|
|
gcode:
|
|
# P0: Part cooling fan, P3: Exhaust fan
|
|
# If no P parameter is given, assume Part Cooling Fan
|
|
{% set speed = (params.S|float / 255 if params.S is defined else 1.0) %}
|
|
{% set fan_id = (params.P)|int if params.P is defined else 0 %}
|
|
{% if fan_id == 0 %}
|
|
SET_FAN_SPEED FAN=part_cooling_fan SPEED={speed}
|
|
{% elif fan_id == 3 %}
|
|
SET_FAN_SPEED FAN=exhaust_fan SPEED={speed}
|
|
{% endif %}
|
|
|
|
|
|
# Home, get position, throw around toolhead, home again.
|
|
# If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured.
|
|
# We only measure to a full step to accomodate for endstop variance.
|
|
# Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10
|
|
[gcode_macro TEST_SPEED]
|
|
gcode:
|
|
# Speed
|
|
{% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
|
|
# Iterations
|
|
{% set iterations = params.ITERATIONS|default(5)|int %}
|
|
# Acceleration
|
|
{% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
|
|
# Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
|
|
{% set bound = params.BOUND|default(20)|int %}
|
|
# Size for small pattern box
|
|
{% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %}
|
|
|
|
# Large pattern
|
|
# Max positions, inset by BOUND
|
|
{% set x_min = printer.toolhead.axis_minimum.x + bound %}
|
|
{% set x_max = printer.toolhead.axis_maximum.x - bound %}
|
|
{% set y_min = printer.toolhead.axis_minimum.y + bound %}
|
|
{% set y_max = printer.toolhead.axis_maximum.y - bound %}
|
|
|
|
# Small pattern at center
|
|
# Find X/Y center point
|
|
{% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %}
|
|
{% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %}
|
|
|
|
# Set small pattern box around center point
|
|
{% set x_center_min = x_center - (smallpatternsize/2) %}
|
|
{% set x_center_max = x_center + (smallpatternsize/2) %}
|
|
{% set y_center_min = y_center - (smallpatternsize/2) %}
|
|
{% set y_center_max = y_center + (smallpatternsize/2) %}
|
|
|
|
# Save current gcode state (absolute/relative, etc)
|
|
SAVE_GCODE_STATE NAME=TEST_SPEED
|
|
|
|
# Output parameters to g-code terminal
|
|
{ action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) }
|
|
|
|
# Home and get position for comparison later:
|
|
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
|
|
G28
|
|
# QGL if not already QGLd (only if QGL section exists in config)
|
|
{% if printer.configfile.settings.quad_gantry_level %}
|
|
{% if printer.quad_gantry_level.applied == False %}
|
|
QUAD_GANTRY_LEVEL
|
|
G28 Z
|
|
{% endif %}
|
|
{% endif %}
|
|
# Move 50mm away from max position and home again (to help with hall effect endstop accuracy - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/24)
|
|
G90
|
|
G1 X{printer.toolhead.axis_maximum.x-50} Y{printer.toolhead.axis_maximum.y-50} F{30*60}
|
|
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
|
|
G28 X Y
|
|
G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
|
|
G4 P1000
|
|
GET_POSITION
|
|
|
|
# Go to starting position
|
|
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}
|
|
|
|
# Set new limits
|
|
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}
|
|
|
|
{% for i in range(iterations) %}
|
|
# Large pattern diagonals
|
|
G0 X{x_min} Y{y_min} F{speed*60}
|
|
G0 X{x_max} Y{y_max} F{speed*60}
|
|
G0 X{x_min} Y{y_min} F{speed*60}
|
|
G0 X{x_max} Y{y_min} F{speed*60}
|
|
G0 X{x_min} Y{y_max} F{speed*60}
|
|
G0 X{x_max} Y{y_min} F{speed*60}
|
|
|
|
# Large pattern box
|
|
G0 X{x_min} Y{y_min} F{speed*60}
|
|
G0 X{x_min} Y{y_max} F{speed*60}
|
|
G0 X{x_max} Y{y_max} F{speed*60}
|
|
G0 X{x_max} Y{y_min} F{speed*60}
|
|
|
|
# Small pattern diagonals
|
|
G0 X{x_center_min} Y{y_center_min} F{speed*60}
|
|
G0 X{x_center_max} Y{y_center_max} F{speed*60}
|
|
G0 X{x_center_min} Y{y_center_min} F{speed*60}
|
|
G0 X{x_center_max} Y{y_center_min} F{speed*60}
|
|
G0 X{x_center_min} Y{y_center_max} F{speed*60}
|
|
G0 X{x_center_max} Y{y_center_min} F{speed*60}
|
|
|
|
# Small patternbox
|
|
G0 X{x_center_min} Y{y_center_min} F{speed*60}
|
|
G0 X{x_center_min} Y{y_center_max} F{speed*60}
|
|
G0 X{x_center_max} Y{y_center_max} F{speed*60}
|
|
G0 X{x_center_max} Y{y_center_min} F{speed*60}
|
|
{% endfor %}
|
|
|
|
# Restore max speed/accel/accel_to_decel to their configured values
|
|
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
|
|
|
|
# Re-home and get position again for comparison:
|
|
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
|
|
G28 # This is a full G28 to fix an issue with CoreXZ - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/12
|
|
# Go to XY home positions (in case your homing override leaves it elsewhere)
|
|
G90
|
|
G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
|
|
G4 P1000
|
|
GET_POSITION
|
|
|
|
# Restore previous gcode state (absolute/relative, etc)
|
|
RESTORE_GCODE_STATE NAME=TEST_SPEED
|
|
|
|
#####################################################################
|
|
# Palette 2
|
|
#####################################################################
|
|
[palette2]
|
|
serial: /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_DM02HVOW-if00-port0
|
|
feedrate_splice: 0.3
|
|
feedrate_normal: 1.0
|
|
auto_load_speed: 2
|
|
auto_cancel_variation: 0.1
|
|
|
|
#*# <---------------------- SAVE_CONFIG ---------------------->
|
|
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
|
|
#*#
|
|
#*# [input_shaper]
|
|
#*# shaper_type_x = zv
|
|
#*# shaper_freq_x = 57.6
|
|
#*# shaper_type_y = 3hump_ei
|
|
#*# shaper_freq_y = 48.0
|
|
#*#
|
|
#*# [probe]
|
|
#*# z_offset = -1.455
|
|
#*#
|
|
#*# [extruder]
|
|
#*#
|
|
#*# [heater_bed]
|
|
#*#
|
|
#*# [bed_mesh default]
|
|
#*# version = 1
|
|
#*# points =
|
|
#*# 0.592323, 0.690479, 0.687896, 0.682730, 0.618154
|
|
#*# 0.625903, 0.662065, 0.690479, 0.685313, 0.633652
|
|
#*# 0.594906, 0.625903, 0.618154, 0.612987, 0.638818
|
|
#*# 0.579408, 0.615570, 0.612987, 0.659482, 0.576825
|
|
#*# 0.636235, 0.703394, 0.659482, 0.654316, 0.607821
|
|
#*# x_count = 5
|
|
#*# y_count = 5
|
|
#*# mesh_x_pps = 2
|
|
#*# mesh_y_pps = 2
|
|
#*# algo = lagrange
|
|
#*# tension = 0.2
|
|
#*# min_x = 30.0
|
|
#*# max_x = 320.0
|
|
#*# min_y = 50.0
|
|
#*# max_y = 340.0
|