实现二喷头的偏移值校准功能

This commit is contained in:
张开科 2024-12-17 15:55:28 +08:00
parent 9be203c58f
commit 9925c78644
6 changed files with 252 additions and 24 deletions
config
CreatBot_D1000
CreatBot_D1000_V0
CreatBot_D600Pro2
CreatBot_D600Pro2_V0
CreatBot_F430NX
scripts

@ -362,7 +362,11 @@ gcode:
gcode:
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z=0
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z=0 MOVE=1
{% else %}
SET_GCODE_OFFSET Z=0
{% endif %}
SET_GCODE_OFFSET Y=0
SET_GCODE_OFFSET X=0
SET_SERVO SERVO=switch_nozzle angle=45
@ -372,12 +376,17 @@ gcode:
[gcode_macro T1]
gcode:
{% set sv = printer.save_variables.variables %}
{% set x_offset = sv.dual_x_offset|default(60)|float %}
{% set y_offset = sv.dual_y_offset|default(0)|float %}
{% set z_offset = sv.dual_z_offset|default(0)|float %}
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set x_offset = x_offset - 59 %}
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z={z_offset}
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z={z_offset} MOVE=1
{% else %}
SET_GCODE_OFFSET Z={z_offset}
{% endif %}
SET_GCODE_OFFSET Y={y_offset}
SET_GCODE_OFFSET X={x_offset}
SET_SERVO SERVO=switch_nozzle angle=225
@ -1001,3 +1010,27 @@ gcode:
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
BED_MESH_PROFILE LOAD={default_profile}
########################################
# Nozzle Calibrate
########################################
[gcode_shell_command fetch_assets]
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
timeout: 5.
verbose: False
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
gcode:
G28 X Y
G28 Z
G91
G0 x-60 F6000
SET_GCODE_OFFSET Z=0 MOVE=0
SET_SERVO SERVO=switch_nozzle angle=225
ACTIVATE_EXTRUDER EXTRUDER=extruder1
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
gcode:
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D1000HS\" \"NozzleAglin.zip\""
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"

@ -298,7 +298,11 @@ gcode:
gcode:
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z=0
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z=0 MOVE=1
{% else %}
SET_GCODE_OFFSET Z=0
{% endif %}
SET_GCODE_OFFSET Y=0
SET_GCODE_OFFSET X=0
SET_SERVO SERVO=switch_nozzle angle=45
@ -308,12 +312,17 @@ gcode:
[gcode_macro T1]
gcode:
{% set sv = printer.save_variables.variables %}
{% set x_offset = sv.dual_x_offset|default(60)|float %}
{% set y_offset = sv.dual_y_offset|default(0)|float %}
{% set z_offset = sv.dual_z_offset|default(0)|float %}
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set x_offset = x_offset - 59 %}
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z={z_offset}
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z={z_offset} MOVE=1
{% else %}
SET_GCODE_OFFSET Z={z_offset}
{% endif %}
SET_GCODE_OFFSET Y={y_offset}
SET_GCODE_OFFSET X={x_offset}
SET_SERVO SERVO=switch_nozzle angle=225
@ -937,3 +946,27 @@ gcode:
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
BED_MESH_PROFILE LOAD={default_profile}
########################################
# Nozzle Calibrate
########################################
[gcode_shell_command fetch_assets]
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
timeout: 5.
verbose: False
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
gcode:
G28 X Y
G28 Z
G91
G0 x-60 F6000
SET_GCODE_OFFSET Z=0 MOVE=0
SET_SERVO SERVO=switch_nozzle angle=225
ACTIVATE_EXTRUDER EXTRUDER=extruder1
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
gcode:
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D1000HS\" \"NozzleAglin.zip\""
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"

@ -362,7 +362,11 @@ gcode:
gcode:
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z=0
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z=0 MOVE=1
{% else %}
SET_GCODE_OFFSET Z=0
{% endif %}
SET_GCODE_OFFSET Y=0
SET_GCODE_OFFSET X=0
SET_SERVO SERVO=switch_nozzle angle=45
@ -372,12 +376,17 @@ gcode:
[gcode_macro T1]
gcode:
{% set sv = printer.save_variables.variables %}
{% set x_offset = sv.dual_x_offset|default(60)|float %}
{% set y_offset = sv.dual_y_offset|default(0)|float %}
{% set z_offset = sv.dual_z_offset|default(0)|float %}
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set x_offset = x_offset - 59 %}
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z={z_offset}
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z={z_offset} MOVE=1
{% else %}
SET_GCODE_OFFSET Z={z_offset}
{% endif %}
SET_GCODE_OFFSET Y={y_offset}
SET_GCODE_OFFSET X={x_offset}
SET_SERVO SERVO=switch_nozzle angle=225
@ -994,3 +1003,27 @@ gcode:
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
BED_MESH_PROFILE LOAD={default_profile}
########################################
# Nozzle Calibrate
########################################
[gcode_shell_command fetch_assets]
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
timeout: 5.
verbose: False
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
gcode:
G28 X Y
G28 Z
G91
G0 x-60 F6000
SET_GCODE_OFFSET Z=0 MOVE=0
SET_SERVO SERVO=switch_nozzle angle=225
ACTIVATE_EXTRUDER EXTRUDER=extruder1
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
gcode:
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D600Pro2HS\" \"NozzleAglin.zip\""
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"

@ -298,7 +298,11 @@ gcode:
gcode:
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z=0
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z=0 MOVE=1
{% else %}
SET_GCODE_OFFSET Z=0
{% endif %}
SET_GCODE_OFFSET Y=0
SET_GCODE_OFFSET X=0
SET_SERVO SERVO=switch_nozzle angle=45
@ -308,12 +312,17 @@ gcode:
[gcode_macro T1]
gcode:
{% set sv = printer.save_variables.variables %}
{% set x_offset = sv.dual_x_offset|default(60)|float %}
{% set y_offset = sv.dual_y_offset|default(0)|float %}
{% set z_offset = sv.dual_z_offset|default(0)|float %}
{% set x_offset = sv.nozzle_x_offset_val|default(0)|float %}
{% set y_offset = sv.nozzle_y_offset_val|default(0)|float %}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set x_offset = x_offset - 59 %}
SET_SERVO SERVO=switch_nozzle angle=135
G4 P500
SET_GCODE_OFFSET Z={z_offset}
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z={z_offset} MOVE=1
{% else %}
SET_GCODE_OFFSET Z={z_offset}
{% endif %}
SET_GCODE_OFFSET Y={y_offset}
SET_GCODE_OFFSET X={x_offset}
SET_SERVO SERVO=switch_nozzle angle=225
@ -930,3 +939,27 @@ gcode:
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
BED_MESH_PROFILE LOAD={default_profile}
########################################
# Nozzle Calibrate
########################################
[gcode_shell_command fetch_assets]
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
timeout: 5.
verbose: False
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
gcode:
G28 X Y
G28 Z
G91
G0 x-60 F6000
SET_GCODE_OFFSET Z=0 MOVE=0
SET_SERVO SERVO=switch_nozzle angle=225
ACTIVATE_EXTRUDER EXTRUDER=extruder1
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
gcode:
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D600Pro2HS\" \"NozzleAglin.zip\""
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"

@ -447,11 +447,15 @@ gcode:
_PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=0
SET_GCODE_OFFSET Z=0
RESTORE_GCODE_STATE NAME=park0
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z=0 MOVE=1
{% else %}
SET_GCODE_OFFSET Z=0
{% endif %}
SET_GCODE_OFFSET Y=0
SET_GCODE_OFFSET X=0
G1 X0 F6000
RESTORE_GCODE_STATE NAME=park0
{% endif %}
[gcode_macro _PARK_extruder1]
@ -478,11 +482,15 @@ gcode:
_PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
SET_GCODE_OFFSET Z={z_offset}
RESTORE_GCODE_STATE NAME=park1
{% if "z" in printer.toolhead.homed_axes | lower %}
SET_GCODE_OFFSET Z={z_offset} MOVE=1
{% else %}
SET_GCODE_OFFSET Z={z_offset}
{% endif %}
SET_GCODE_OFFSET Y={y_offset}
SET_GCODE_OFFSET X={x_offset}
G1 X455 F6000
RESTORE_GCODE_STATE NAME=park1
{% endif %}
@ -1157,3 +1165,28 @@ gcode:
_BED_MESH_CALIBRATE PROFILE={default_profile} mesh_min={adapted_x_min},{adapted_y_min} mesh_max={adapted_x_max},{adapted_y_max} ALGORITHM={algorithm} PROBE_COUNT={points_x},{points_y} # End of verbose
BED_MESH_PROFILE LOAD={default_profile}
########################################
# Nozzle Calibrate
########################################
[gcode_shell_command fetch_assets]
command: sh /home/klipper/klipper/scripts/fetch_assets.sh
timeout: 5.
verbose: False
[gcode_macro _NOZZLE_Z_OFFSET_CALIBRATE]
gcode:
G28
G90
_PARK_extruder
G0 Z5
SET_GCODE_OFFSET Z=0 MOVE=0
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
G1 X200 F6000
[gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE]
gcode:
RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"F430NX\" \"NozzleAglin.zip\""
SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode"

63
scripts/fetch_assets.sh Normal file

@ -0,0 +1,63 @@
#!/bin/bash
# Get model name and type
Type="$1"
Model="$2"
Filename="$3"
echo "Type: ${Type}"
echo "Model: ${Model}"
echo "Filename: ${Filename}"
# Check if model name is provided
if [ -z "$Model" ]; then
echo "Error: Model name not provided"
exit 1
fi
# Check if the Type is Gcode
if [ "$Type" = "Gcode" ]; then
# Define download path and filename
download_path="$HOME/.temp/"
download_filename="${download_path}NozzleAglin.zip"
download_url="https://www.creatbot.com/downloads/3dmodels/gcode/${Model}/NozzleAglin.zip"
# Create temporary download directory
mkdir -p "${download_path}"
# Define target folder for extracted file
target_folder="$HOME/printer_data/gcodes/.PresetModel/"
# Check if the target folder already contains the extracted file
if [ -f "${target_folder}NozzleAglin.gcode" ]; then
echo "Target file 'NozzleAglin.gcode' already exists, skipping download and extraction."
exit 0
fi
# If the file does not exist, start downloading the file
wget -q -O "${download_filename}" "${download_url}"
# Check if wget successfully downloaded the file
if [ $? -ne 0 ]; then
echo "Error: Download failed, the URL might be invalid or there is a network issue."
exit 1
fi
# Create target extraction directory if it doesn't exist
mkdir -p "$target_folder"
# Extract the downloaded file to the target directory, using -o to overwrite existing files
unzip -o -q "${download_filename}" -d "$target_folder"
# Check if the extraction was successful
if [ $? -ne 0 ]; then
echo "Error: Extraction failed, please check if the file is corrupted or the path is correct."
exit 1
fi
# Remove the temporary download folder
rm -rf "${download_path}"
echo "Download and extraction completed successfully."
fi