add z-offset for multiple bed plates
This commit is contained in:
parent
568fff23c1
commit
c8b5b9a262
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,5 @@
|
||||||
*
|
*
|
||||||
!.gitignore
|
!.gitignore
|
||||||
!printer.cfg
|
!printer.cfg
|
||||||
!btt-ebb36.cfg
|
|
||||||
!macros.cfg
|
!macros.cfg
|
||||||
|
!flexplate.cfg
|
||||||
|
|
211
flexplate.cfg
Normal file
211
flexplate.cfg
Normal file
|
@ -0,0 +1,211 @@
|
||||||
|
#####################################################################
|
||||||
|
# Preperation
|
||||||
|
#####################################################################
|
||||||
|
# copy this file in the same directory as your printer.cfg
|
||||||
|
# add
|
||||||
|
# [include flexplate.cfg]
|
||||||
|
# to your printer.cfg
|
||||||
|
#
|
||||||
|
# add
|
||||||
|
# _SET_PLATE_OFFSET
|
||||||
|
# to your print start gcode to apply the offset before you print the first line of filament
|
||||||
|
#
|
||||||
|
# A [save_variables] block is needed since a printer save variable needs to be used to have it available after power up.
|
||||||
|
# You can skip this if you already have an [save_variables] config block
|
||||||
|
# e.g:
|
||||||
|
# [save_variables]
|
||||||
|
# filename: /home/pi/klipper_config/.variables.stb
|
||||||
|
# I like to hide that file as there is nothing in that should be modified by the user.
|
||||||
|
# Do a klipper restart after adding the stuff above
|
||||||
|
#
|
||||||
|
# After klipper is back you need define your first plate e.g.
|
||||||
|
# ADD_NEW_PLATE NAME=Texture OFFSET=-0.010
|
||||||
|
#
|
||||||
|
#####################################################################
|
||||||
|
# Macro for the print_start gcode section of your slicer
|
||||||
|
# or your print start macro
|
||||||
|
#####################################################################
|
||||||
|
# _SET_PLATE_OFFSET [MOVE=0|1] : Set the z offset
|
||||||
|
# Set the offset of the active flexplate as an Z_ADJUST offset. MOVE=0 (default)
|
||||||
|
# will add the offset with the next z move, MOVE=1 imitate change the z offset.
|
||||||
|
#
|
||||||
|
# !!! Caution: Insure that SET_GCODE_OFFSET Z=0 is set once at every
|
||||||
|
# print start. Please read also the desribtion of the gcode SET_GCODE_OFFSET
|
||||||
|
# at https://www.klipper3d.org/G-Codes.html#extended-g-code-commands !!!
|
||||||
|
#
|
||||||
|
#####################################################################
|
||||||
|
# Console ussage
|
||||||
|
#####################################################################
|
||||||
|
# LIST_PLATES: List all plates
|
||||||
|
# Use the index shown there for all other macros
|
||||||
|
#
|
||||||
|
# SET_PLATE INDEX=<index>: Set the active flexplate
|
||||||
|
# The flexplate stored at index will be activated.
|
||||||
|
#
|
||||||
|
# ADD_PLATE [NAME=<name>] [OFFSET=<offset>]: Add a new flexplate to the list
|
||||||
|
# If NAME or OFFSET is not defined than the defaults 'New' and 0.000 will be used.
|
||||||
|
# !!! Caution do not use special characters like äüö or anything else in the name !!!
|
||||||
|
#
|
||||||
|
# REMOVE_PLATE INDEX=<index>: Remove a flexplate of the list
|
||||||
|
# Remove plate with INDEX from the list. Note the last or active plate can not be removed.
|
||||||
|
#
|
||||||
|
# CHANGE_PLATE_VALUE [INDEX=<index>] [NAME=<name>] [OFFSET=<offset>]: Change name or/and offset of an flexplate
|
||||||
|
# If INDEX is not defined the name and/or offset value of the active plate will be changed.
|
||||||
|
# !!! Caution do not use special characters like äüö or anything else in the name !!!
|
||||||
|
#
|
||||||
|
#####################################################################
|
||||||
|
# LCD menu usage
|
||||||
|
#####################################################################
|
||||||
|
# Change the active flexplate and the offset of that flexplate.
|
||||||
|
#
|
||||||
|
#####################################################################
|
||||||
|
# Get offset_z and name for own usage
|
||||||
|
#####################################################################
|
||||||
|
# {% set offset = printer.save_variables.variables.plates.array[printer.save_variables.variables.plates.index].offset %}
|
||||||
|
# {% set name = printer.save_variables.variables.plates.array[printer.save_variables.variables.plates.index].name %}
|
||||||
|
#
|
||||||
|
#####################################################################
|
||||||
|
[gcode_macro _SET_PLATE_OFFSET]
|
||||||
|
description: Helper: Apply the z-offset of the active flexplate
|
||||||
|
gcode:
|
||||||
|
{% if not printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: No Plate Array defined. ABORDED")}
|
||||||
|
{% else %}
|
||||||
|
{% set plates = printer.save_variables.variables.plates %}
|
||||||
|
SET_GCODE_OFFSET Z_ADJUST={plates.array[plates.index].offset} MOVE={params.MOVE|default(0)}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro LIST_PLATES]
|
||||||
|
description: List all flexplates
|
||||||
|
gcode:
|
||||||
|
{% if not printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: No Plate Array defined. ABORDED")}
|
||||||
|
{% else %}
|
||||||
|
{% set plates = printer.save_variables.variables.plates %}
|
||||||
|
{% set out = ["FLEXPLATE: Defined Plates"] %}
|
||||||
|
{% for elem in range(plates.array|length) %}
|
||||||
|
{% set _dummy = out.append("INDEX: %d -> %s -> offset: %.3fmm" %
|
||||||
|
(elem, plates.array[elem].name, plates.array[elem].offset)) %}
|
||||||
|
{% endfor %}
|
||||||
|
{% set _dummy = out.append("\n Active Plate: %s" % plates.array[plates.index].name) %}
|
||||||
|
{action_respond_info(out|join("\n"))}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro SET_PLATE]
|
||||||
|
description: Set an flexplate
|
||||||
|
gcode:
|
||||||
|
{% if not printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: No Plate Array defined. ABORDED")}
|
||||||
|
{% else %}
|
||||||
|
{% set plates = printer.save_variables.variables.plates %}
|
||||||
|
{% if 'INDEX' not in params|upper %}
|
||||||
|
{action_respond_info("FLEXPLATE: No INDEX defined, use SET_PLATE INDEX=index. ABORDED")}
|
||||||
|
{% elif params.INDEX|int < 0 or params.INDEX|int >= plates.array|length %}
|
||||||
|
{action_respond_info("FLEXPLATE: Index out of range [0..%d]. ABORDED" % (plates.array|length-1))}
|
||||||
|
{% else %}
|
||||||
|
{% set _dummy = plates.update({'index' : params.INDEX|int}) %}
|
||||||
|
SAVE_VARIABLE VARIABLE=plates VALUE="{plates}"
|
||||||
|
M117 Plate: {plates.array[plates.index].name}
|
||||||
|
{action_respond_info("FLEXPLATE: Set plate: %s with offset: %.3fmm" % (
|
||||||
|
plates.array[plates.index].name,plates.array[plates.index].offset))}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro ADD_PLATE]
|
||||||
|
description: Add a flexplate to the list
|
||||||
|
gcode:
|
||||||
|
{% set name = params.NAME|default('New')|string %}
|
||||||
|
{% set offset = params.OFFSET|default(0.0)|float|round(3) %}
|
||||||
|
{% if not printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: Initialize Plate Array
|
||||||
|
Add plate: %s with offset: %.3fmm at INDEX: 0" % (name,offset))}
|
||||||
|
{% set plates = {'array': [{'name': name, 'offset': offset}], 'index' : 0} %}
|
||||||
|
{% else %}
|
||||||
|
{% set plates = printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: Add plate: %s with offset: %.3fmm at INDEX: %d" % (name,offset,plates.array|length))}
|
||||||
|
{% set _dummy = plates.array.append({'name': name, 'offset': offset}) %}
|
||||||
|
{% endif %}
|
||||||
|
SAVE_VARIABLE VARIABLE=plates VALUE="{plates}"
|
||||||
|
|
||||||
|
[gcode_macro REMOVE_PLATE]
|
||||||
|
description: Remove a flexplate from the list
|
||||||
|
gcode:
|
||||||
|
{% if not printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: No Plate Array defined. ABORDED")}
|
||||||
|
{% else %}
|
||||||
|
{% set plates = printer.save_variables.variables.plates %}
|
||||||
|
{% if 'INDEX' not in params|upper %}
|
||||||
|
{action_respond_info("FLEXPLATE: No INDEX defined, use REMOVE_PLATE INDEX=index. ABORDED")}
|
||||||
|
{% elif plates.array|length == 1 or params.INDEX|int == plates.index %}
|
||||||
|
{action_respond_info("FLEXPLATE: Last or active plate can not be removed. ABORDED")}
|
||||||
|
{% elif params.INDEX|int < 0 or params.INDEX|int >= plates.array|length %}
|
||||||
|
{action_respond_info("FLEXPLATE: Index out of range [0..%d]. ABORDED" % (plates.array|length-1))}
|
||||||
|
{% else %}
|
||||||
|
{action_respond_info("FLEXPLATE: Remove plate with INDEX %d from list " % params.INDEX|int)}
|
||||||
|
{% set _dummy = plates.array.pop(params.INDEX|int) %}
|
||||||
|
SAVE_VARIABLE VARIABLE=plates VALUE="{plates}"
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro CHANGE_PLATE_VALUE]
|
||||||
|
description: Change name or offset of an flexplate in the list
|
||||||
|
gcode:
|
||||||
|
{% if not printer.save_variables.variables.plates %}
|
||||||
|
{action_respond_info("FLEXPLATE: No Plate Array defined. ABORDED")}
|
||||||
|
{% else %}
|
||||||
|
{% set plates = printer.save_variables.variables.plates %}
|
||||||
|
{% set index = params.INDEX|default(plates.index)|int %}
|
||||||
|
{% if index < 0 or index >= plates.array|length %}
|
||||||
|
{action_respond_info("FLEXPLATE: Index out of range [0..%d]. ABORDED" % (plates.array|length-1))}
|
||||||
|
{% else %}
|
||||||
|
{% set change_txt = [] %}
|
||||||
|
{% if 'NAME' in params|upper %}
|
||||||
|
{% set _dummy = change_txt.append("name to %s" % params.NAME|string) %}
|
||||||
|
{% set _dummy = plates.array[index].update({'name': params.NAME|string}) %}
|
||||||
|
{% endif %}
|
||||||
|
{% if 'OFFSET' in params|upper %}
|
||||||
|
{% set _dummy = change_txt.append("offset to %.3fmm" % params.OFFSET|float|round(3)) %}
|
||||||
|
{% set _dummy = plates.array[index].update({'offset': params.OFFSET|float|round(3)}) %}
|
||||||
|
{% endif %}
|
||||||
|
{% if change_txt|length > 0 %}
|
||||||
|
{action_respond_info("FLEXPLATE: Changed %s at plate with INDEX %d" % (change_txt|join(" and "),index))}
|
||||||
|
SAVE_VARIABLE VARIABLE=plates VALUE="{plates}"
|
||||||
|
{% else %}
|
||||||
|
{action_respond_info("FLEXPLATE: Nothing changed at plate with INDEX %d" % index)}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# Display Menu
|
||||||
|
# !!! Caution: I use my own menu root __voron_main !!!
|
||||||
|
# If you use a stock menu un comment this here
|
||||||
|
#[menu __main __flexplate]
|
||||||
|
#type: list
|
||||||
|
#name: Flexplate: {printer.save_variables.variables.plates.array[printer.save_variables.variables.plates.index].name}
|
||||||
|
#enable: {'plates' in printer.save_variables.variables}
|
||||||
|
#index: 1
|
||||||
|
|
||||||
|
#[menu __main __flexplate __set]
|
||||||
|
#type: input
|
||||||
|
#name: Set: {printer.save_variables.variables.plates.array[menu.input|int].name}
|
||||||
|
#enable: {printer.print_stats.state != "printing" and printer.print_stats.state != "paused"}
|
||||||
|
#input: {printer.save_variables.variables.plates.index}
|
||||||
|
#input_min: 0
|
||||||
|
#input_max: {printer.save_variables.variables.plates.array|length - 1}
|
||||||
|
#gcode:
|
||||||
|
# {%- if menu.event == 'long_click' -%}
|
||||||
|
# SET_PLATE INDEX={menu.input|int}
|
||||||
|
# {%- endif -%}
|
||||||
|
|
||||||
|
#[menu __main __flexplate __offset]
|
||||||
|
#type: input
|
||||||
|
#name: Offset:{'%01.3f' % menu.input}
|
||||||
|
#enable: {printer.print_stats.state != "printing" and printer.print_stats.state != "paused"}
|
||||||
|
#input: {printer.save_variables.variables.plates.array[printer.save_variables.variables.plates.index].offset}
|
||||||
|
#input_min: -1.0
|
||||||
|
#input_max: 1.0
|
||||||
|
#input_step: 0.001
|
||||||
|
#gcode:
|
||||||
|
# {%- if menu.event == 'long_click' -%}
|
||||||
|
# CHANGE_PLATE_VALUE OFFSET={menu.input|float}
|
||||||
|
# {%- endif -%}
|
|
@ -16,6 +16,10 @@ gcode:
|
||||||
{% set target_bed = params.BED|int %}
|
{% set target_bed = params.BED|int %}
|
||||||
{% set target_extruder = params.EXTRUDER|int %}
|
{% set target_extruder = params.EXTRUDER|int %}
|
||||||
|
|
||||||
|
# Apply our z-offset
|
||||||
|
SET_GCODE_OFFSET Z=0
|
||||||
|
_SET_PLATE_OFFSET
|
||||||
|
|
||||||
# Homes the printer, sets absolute positioning, update the Stealthburner leds and clear old bed mesh.
|
# Homes the printer, sets absolute positioning, update the Stealthburner leds and clear old bed mesh.
|
||||||
STATUS_PRINTING # Sets SB-leds to printing-mode
|
STATUS_PRINTING # Sets SB-leds to printing-mode
|
||||||
SET_NOZZLE_LEDS_OFF # Disable SB nozzle leds
|
SET_NOZZLE_LEDS_OFF # Disable SB nozzle leds
|
||||||
|
|
68
printer.cfg
68
printer.cfg
|
@ -21,6 +21,7 @@
|
||||||
[include stealthburner_leds.cfg]
|
[include stealthburner_leds.cfg]
|
||||||
[include OrbiterSensor.cfg]
|
[include OrbiterSensor.cfg]
|
||||||
# Plugins
|
# Plugins
|
||||||
|
[include flexplate.cfg]
|
||||||
[include KAMP_Settings.cfg]
|
[include KAMP_Settings.cfg]
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
@ -54,6 +55,9 @@ retract_length: 0.5
|
||||||
retract_speed: 35
|
retract_speed: 35
|
||||||
unretract_speed: 35
|
unretract_speed: 35
|
||||||
|
|
||||||
|
[save_variables]
|
||||||
|
filename: /home/biqu/printer_data/config/variables.stb
|
||||||
|
|
||||||
[virtual_sdcard]
|
[virtual_sdcard]
|
||||||
path: /home/biqu/printer_data/gcodes
|
path: /home/biqu/printer_data/gcodes
|
||||||
on_error_gcode: CANCEL_PRINT
|
on_error_gcode: CANCEL_PRINT
|
||||||
|
@ -85,8 +89,8 @@ sensor_pin: ^EBBCan:PB8
|
||||||
control_pin: EBBCan:PB9
|
control_pin: EBBCan:PB9
|
||||||
x_offset: 0
|
x_offset: 0
|
||||||
y_offset: 22.5
|
y_offset: 22.5
|
||||||
z_offset: 2.005
|
z_offset: 2.04
|
||||||
speed: 20
|
speed: 3
|
||||||
samples: 3
|
samples: 3
|
||||||
sample_retract_dist: 5.0
|
sample_retract_dist: 5.0
|
||||||
samples_result: median
|
samples_result: median
|
||||||
|
@ -112,6 +116,31 @@ pid_Kd: 1029.416
|
||||||
min_temp: 0
|
min_temp: 0
|
||||||
max_temp: 130
|
max_temp: 130
|
||||||
|
|
||||||
|
[extruder]
|
||||||
|
step_pin: EBBCan: PD0
|
||||||
|
dir_pin: EBBCan: PD1
|
||||||
|
enable_pin: !EBBCan: PD2
|
||||||
|
microsteps: 16
|
||||||
|
full_steps_per_rotation: 200
|
||||||
|
rotation_distance: 4.729266
|
||||||
|
nozzle_diameter: 0.400
|
||||||
|
filament_diameter: 1.750
|
||||||
|
max_extrude_cross_section: 5
|
||||||
|
max_extrude_only_distance: 500
|
||||||
|
max_extrude_only_velocity: 120
|
||||||
|
pressure_advance: 0.025 #to be calibrated
|
||||||
|
pressure_advance_smooth_time: 0.03 #to be calibrated
|
||||||
|
heater_pin: EBBCan: PB13
|
||||||
|
sensor_type: DREMC NTC100K B3950
|
||||||
|
sensor_pin: EBBCan: PA3
|
||||||
|
control: pid
|
||||||
|
pid_Kp: 25.194
|
||||||
|
pid_Ki: 1.312
|
||||||
|
pid_Kd: 120.930
|
||||||
|
min_extrude_temp: 180
|
||||||
|
min_temp: 0
|
||||||
|
max_temp: 300
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# Stepper Configuration
|
# Stepper Configuration
|
||||||
########################################
|
########################################
|
||||||
|
@ -147,7 +176,7 @@ enable_pin: !PD3
|
||||||
microsteps: 16
|
microsteps: 16
|
||||||
rotation_distance: 8
|
rotation_distance: 8
|
||||||
endstop_pin: probe:z_virtual_endstop
|
endstop_pin: probe:z_virtual_endstop
|
||||||
position_min: -1
|
position_min: 0
|
||||||
position_max: 260
|
position_max: 260
|
||||||
|
|
||||||
[stepper_z1]
|
[stepper_z1]
|
||||||
|
@ -157,53 +186,28 @@ enable_pin: !PB4
|
||||||
microsteps: 16
|
microsteps: 16
|
||||||
rotation_distance: 8
|
rotation_distance: 8
|
||||||
|
|
||||||
[extruder]
|
|
||||||
step_pin: EBBCan: PD0
|
|
||||||
dir_pin: EBBCan: PD1
|
|
||||||
enable_pin: !EBBCan: PD2
|
|
||||||
microsteps: 16
|
|
||||||
full_steps_per_rotation: 200
|
|
||||||
rotation_distance: 4.729266
|
|
||||||
nozzle_diameter: 0.400
|
|
||||||
filament_diameter: 1.750
|
|
||||||
max_extrude_cross_section: 5
|
|
||||||
max_extrude_only_distance: 500
|
|
||||||
max_extrude_only_velocity: 120
|
|
||||||
pressure_advance: 0.025 #to be calibrated
|
|
||||||
pressure_advance_smooth_time: 0.03 #to be calibrated
|
|
||||||
heater_pin: EBBCan: PB13
|
|
||||||
sensor_type: DREMC NTC100K B3950
|
|
||||||
sensor_pin: EBBCan: PA3
|
|
||||||
control: pid
|
|
||||||
pid_Kp: 25.60
|
|
||||||
pid_Ki: 1.369
|
|
||||||
pid_Kd: 116.510
|
|
||||||
min_extrude_temp: 180
|
|
||||||
min_temp: 0
|
|
||||||
max_temp: 300
|
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# TMC2209 Configuration
|
# TMC2209 Configuration
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
[tmc2209 stepper_x]
|
[tmc2209 stepper_x]
|
||||||
uart_pin: PB8
|
uart_pin: PB8
|
||||||
run_current: 0.580
|
run_current: 0.594
|
||||||
interpolate: True
|
interpolate: True
|
||||||
|
|
||||||
[tmc2209 stepper_y]
|
[tmc2209 stepper_y]
|
||||||
uart_pin: PC9
|
uart_pin: PC9
|
||||||
run_current: 0.580
|
run_current: 0.594
|
||||||
interpolate: True
|
interpolate: True
|
||||||
|
|
||||||
[tmc2209 stepper_z]
|
[tmc2209 stepper_z]
|
||||||
uart_pin: PD0
|
uart_pin: PD0
|
||||||
run_current: 0.580
|
run_current: 0.594
|
||||||
interpolate: True
|
interpolate: True
|
||||||
|
|
||||||
[tmc2209 stepper_z1]
|
[tmc2209 stepper_z1]
|
||||||
uart_pin: PB5
|
uart_pin: PB5
|
||||||
run_current: 0.580
|
run_current: 0.594
|
||||||
interpolate: True
|
interpolate: True
|
||||||
|
|
||||||
[tmc2209 extruder]
|
[tmc2209 extruder]
|
||||||
|
|
Loading…
Reference in a new issue