Skip to content

Blog

3D Printing and Max Volumetric Speed

Finding Your 3D Printer’s Sweet Spot - A Guide to Maximizing Print Speed

Section titled “Finding Your 3D Printer’s Sweet Spot - A Guide to Maximizing Print Speed”

Have you ever wondered how fast your 3D printer can truly go? When I get a new printer or see a new model released, the first question that pops into my head is always, “How fast can I print with this thing?”

This post will explore how to determine the optimal print speed for your 3D printer, ensuring both speed and quality.

  • Infill: While not a major time-saver, adjusting infill patterns and density can slightly reduce print time.
  • Wall Thickness: Reducing the number of walls can significantly decrease print time, but it can also compromise the model’s strength.
  • Layer Height: Increasing layer height generally speeds up printing, but it can also affect print quality and part strength.
  • Other Parameters: Factors like print speed, infill density, and layer height also impact the mechanical properties of the printed part, according to research. Finding the balance between speed and strength is crucial.
  • Max Flow Rate: Each extruder has a maximum flow rate, which determines how much filament it can push out per second. Exceeding this limit leads to inconsistent extrusion, poor print quality, and weaker parts.

Ellis’s Print Tuning Guide provides valuable information and equations to calculate your extruder’s max flow rate. A simple test involves extruding a known length of filament at increasing speeds until you observe a noticeable drop in extrusion quality.

One of the key points that Ellis’ guide points out is that using approximate values (Table 1) is possible.

HotendFlow Rate (mm3/s)
E3D V611
E3D V6 Volcano20
E3D Revo11
Dragon SF15
Sailfish20
Dragon HF24
Dragonfly BMO13
Rapido HF24
Rapido UHF30
Mosquito20
Mosquito Magnum30
Bambu X135

Determine Max Flow Rate: Conduct tests as described above to find your extruder’s maximum volumetric flow rate. Set Volumetric Speed: Adjust the volumetric speed setting in your slicer software to match your calculated max flow rate. Optimize Print Profiles: Experiment with different print speed settings for various parts of the model, ensuring that the speeds for visible features do not exceed the calculated safe limit. Test and Iterate: Print test parts and adjust parameters based on the results. Observe print quality, part strength, and overall print time.

  • Model Size: Smaller models may not allow the printer to reach maximum speed due to acceleration and deceleration times.

  • Part Complexity: Complex models with intricate details may require slower print speeds to ensure accurate and high-quality results.

By carefully considering these factors and conducting thorough testing, you can optimize your 3D printer’s print speed while maintaining excellent print quality and part strength.

Disclaimer: This information is for general guidance only. Always refer to your printer’s manual and manufacturer’s recommendations for specific instructions and safety guidelines.

I hope this guide helps you unlock your 3D printer’s full potential!

Ender 3 S1 Plus (e3s1p) Klipper Config

3.6
# !Ender-3 S1 Plus
# printer_size: 300x300x300
# This file contains pin mappings for the stock 2021 Creality Ender 3
# S1 & S1 Pro. To use this config, check the STM32 Chip on the
# Mainboard, during "make menuconfig" select accordingly either the
# STM32F103 with "28KiB bootloader" or the STM32F401 with
# "64KiB bootloader" and serial (on USART1 PA10/PA9) for both.
# For a direct serial connection, in "make menuconfig" select
# "Enable extra low-level configuration options" and Serial
# (on USART2 PA3/PA2), which is on the 10 pin IDC cable used
# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The filename
# must be changed to "firmware.bin"
# With STM32F401, you might need to put "firmware.bin" in a
# folder on the SD card called "STM32F4_UPDATE" in order to flash.
# See docs/Config_Reference.md for a description of parameters.
###fluidd set
[include cx_printer.cfg]
[display_status]
[pause_resume]
[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 2.0) %}
{% set z_safe = 2.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
PAUSE_BASE
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G1 Z{z_safe} F900
G90
G1 X{x_park} Y{y_park} F6000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
G91
G1 E{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
RESUME_BASE {get_params}
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
TURN_OFF_HEATERS
{% if "xyz" in printer.toolhead.homed_axes %}
G91
G1 Z4.5 F300
G90
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
G28 X Y
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
G1 Y{y_park} F2000
M84
CANCEL_PRINT_BASE
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
rotation_distance: 40
microsteps: 16
endstop_pin: !PA5
position_min: -5
position_endstop: -5
position_max: 305
homing_speed: 80
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
rotation_distance: 40
microsteps: 16
endstop_pin: !PA6
position_min: -2
position_endstop: -2
position_max: 305
homing_speed: 80
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
rotation_distance: 8
microsteps: 16
endstop_pin: probe:z_virtual_endstop #enable to use bltouch
#endstop_pin: !PA15 #disable to use bltouch
#position_endstop: -0.1
position_min: -10
position_max: 305
homing_speed: 4
second_homing_speed: 1
homing_retract_dist: 2.0
[extruder]
max_extrude_only_distance: 1000.0
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
rotation_distance: 7.74
microsteps: 16
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
#control: pid
# tuned for stock hardware with 200 degree Celsius target
#pid_Kp: 23.904
#pid_Ki: 1.476
#pid_Kd: 96.810
min_temp: 0
max_temp: 265
[idle_timeout]
timeout: 172800
[heater_bed]
heater_pin: PA7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
#control: pid
# tuned for stock hardware with 50 degree Celsius target
#pid_Kp: 74.000
#pid_Ki: 1.965
#pid_Kd: 696.525
min_temp: 0
max_temp: 130
[verify_heater extruder]
check_gain_time: 200
hysteresis: 5
[fan]
pin: PA0
kick_start_time: 0.5
#set heater fan runnig with temperature over 60;
[heater_fan my_nozzle_fan]
pin: PC0
max_power: 0.8
shutdown_speed : 0
heater:extruder
heater_temp : 60
fan_speed : 1.0
[mcu]
serial: /dev/serial/by-id/usb_serial_1
restart_method: command
# [mcu rpi]
# serial: /tmp/klipper_host_mcu
# [adxl345]
# cs_pin: rpi:None
# spi_speed: 2000000
# spi_bus: spidev2.0
# [resonance_tester]
# accel_chip: adxl345
# accel_per_hz: 70
# probe_points:
# 150,150,10
[input_shaper]
shaper_type_x = mzv
shaper_freq_x = 59.2
shaper_type_y = mzv
shaper_freq_y = 30.0
[filament_switch_sensor filament_sensor]
pause_on_runout: true
switch_pin: ^!PC15
[bltouch]
sensor_pin: ^PC14 #signal check port ^stand for pull up
control_pin: PC13 #singal control prot
x_offset: -30.0
y_offset: -40.0
#z_offset: 0 #z off_set configuration
stow_on_each_sample = false #high speed for bltoch,
speed: 3.0
samples: 2
samples_result: median
sample_retract_dist: 6.0
samples_tolerance: 0.01
samples_tolerance_retries: 3
[safe_z_home]
home_xy_position:185,195
speed: 200
z_hop: 10
z_hop_speed: 10
[bed_mesh]
speed: 150
mesh_min: 25,30 #need to handle head distance with bl_touch
mesh_max: 273,250 #max probe range
probe_count: 5,5
fade_start: 1
fade_end: 10
algorithm: bicubic
[bed_screws]
screw1: 25, 33
screw2: 262, 33
screw3: 262, 272
screw4: 25, 272
[gcode_arcs]
#resolution: 1.0
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 4000
max_z_velocity: 10
max_z_accel: 1000
square_corner_velocity: 5.0
[exclude_object]
[include timelapse.cfg]
[include cx_gmcro.cfg]

Zero G Mercury One.1 Klipper Config

GitHub Backup

[include shell_command.cfg]
[include mainsail.cfg]
# host MCU service is preinstalled and ready to use with:
[mcu CB1]
serial: /tmp/klipper_host_mcu
# This file contains common pin mappings for the BIGTREETECH Manta M8P
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" "8 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PD12/PD13)".
# https://github.com/Klipper3d/klipper/blob/master/config/generic-bigtreetech-manta-m8p-v1.1.cfg
# See docs/Config_Reference.md for a description of parameters.
[mcu]
#@serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_3C001B000B504B4633373520-if00
canbus_uuid=5b426f4e5253
[mcu HermitCrab]
#serial: /dev/serial/by-id/usb-Klipper_stm32f072xb_28002C000757434331363920-if00
canbus_uuid=00ee6e545867
[printer]
kinematics: corexy
max_velocity: 300
max_accel: 4000 #Max 4000
max_z_velocity: 15 #Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 350
square_corner_velocity: 5.0
[stepper_x] # B M1
step_pin: PE2
dir_pin: !PB4
enable_pin: !PC11
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: ^PF3
position_endstop: 357
position_max: 377
homing_speed: 50
homing_retract_dist: 10
[tmc5160 stepper_x]
cs_pin: PC10
#spi_bus: spi1
interpolate: False
run_current: .7
#diag1_pin: ^!PF3
sense_resistor: 0.110
#driver_SGTHRS: 125
driver_SGT: 0
stealthchop_threshold: 0
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
[stepper_y] # A M2
step_pin: PF12
dir_pin: !PF11
enable_pin: !PB3
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: ^PF4
position_endstop: 365
position_max: 370
homing_speed: 50
homing_retract_dist: 10
[tmc5160 stepper_y]
cs_pin: PF13
#spi_bus: spi1
interpolate: False
run_current: .7
#hold_current: 1.0
#diag1_pin: ^!PF4
sense_resistor: 0.110
#driver_SGTHRS: 125
driver_SGT: 2
stealthchop_threshold: 0
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
[stepper_z] # M3 Left
step_pin: PD7
dir_pin: !PD6
enable_pin: !PF10
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: probe:z_virtual_endstop
position_max: 350
position_min: -50
homing_speed: 8.0
second_homing_speed: 3
[tmc2209 stepper_z]
uart_pin: PF9
##diag_pin: PF5
run_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0
[stepper_z1] # M4 Center
step_pin: PD3
dir_pin: !PD2
enable_pin: !PD5
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
[tmc2209 stepper_z1]
uart_pin: PD4
##diag_pin: PC0
run_current: 0.7
sense_resistor: 0.110
interpolate: False
stealthchop_threshold: 0
[stepper_z2] # M6 Right
step_pin: PA10
dir_pin: !PA14
enable_pin: !PA15
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
[tmc2209 stepper_z2]
uart_pin: PF8
run_current: 0.7
sense_resistor: 0.110
interpolate: False
stealthchop_threshold: 0
[extruder]
step_pin: HermitCrab: PA6
dir_pin: !HermitCrab: PA7
enable_pin: !HermitCrab: PA5
microsteps: 16
rotation_distance: 24.235
gear_ratio: 7:1
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: HermitCrab: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: HermitCrab: PA1
#control: pid
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 250
max_extrude_cross_section: 4
pressure_advance: 0.05
[tmc2209 extruder]
uart_pin: HermitCrab: PB0
run_current: 0.650
sense_resistor: 0.110
interpolate: false
stealthchop_threshold: 0
[fan]
pin: HermitCrab: PA4
[heater_fan hotend_fan]
pin: HermitCrab: PA3
heater: extruder
heater_temp: 50.0
#####################################################################
# Bed Heater
#####################################################################
[heater_bed]
## SSR Pin - BED_OUT
heater_pin: PB5
sensor_type: ATC Semitec 104GT-2
sensor_pin: PA0
## Adjust Max Power so your heater doesn't warp your bed
max_power: 0.7
min_temp: 0
max_temp: 120
#control: pid
#pid_kp: 58.437
#pid_ki: 2.347
#pid_kd: 363.769
[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=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
#####################################################################
# Probe
#####################################################################
[safe_z_home]
home_xy_position: 188,185
speed: 150
z_hop: 10 # Move up 10mm
z_hop_speed: 5
[bltouch]
sensor_pin: ^HermitCrab:PB2
control_pin: HermitCrab:PB1
x_offset: -31.8
y_offset: -40.5
#z_offset: 4 # Uncomment if starting fresh; Distance should be enough to keep the z-offset positive.
speed: 5.0
pin_move_time: 0.7
lift_speed: 8
pin_up_touch_mode_reports_triggered: True
probe_with_touch_mode: True
samples: 2
samples_result: median
sample_retract_dist: 6.0
samples_tolerance: 0.05
samples_tolerance_retries: 3
[bed_mesh]
speed: 300
mesh_min: 30,30
mesh_max: 345,329
probe_count: 5,5
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2
move_check_distance: 3.0
split_delta_z: .010
fade_start: 1.0
fade_end: 10.0
[screws_tilt_adjust]
screw1: 360,13.5
screw1_name: front_left
screw2: 360,363
screw2_name: front_right
screw3: 185,10
screw3_name: back_middle
# Additional bed leveling screws. At least two screws must be
# defined.
speed: 50
horizontal_move_z: 5
screw_thread: CW-M3
[bed_screws]
screw1: 360,13.5
screw2: 360,363
screw3: 185,10
[z_tilt]
z_positions:
10,13.5
185,350
355,13.5
points:
0,55
155,365
325,55
speed: 200
horizontal_move_z: 15
retries: 10
retry_tolerance: 0.03 #0.0075
#####################################################################
# PInput Shaping
#####################################################################
[adxl345]
cs_pin: HermitCrab: PB12
spi_bus: spi2
axes_map: y,z,-x
[resonance_tester]
accel_chip: adxl345
probe_points:
188,185, 20 # middle of bed as an example
[input_shaper]
shaper_freq_x: 43.0
shaper_type_x: 2hump_ei
shaper_freq_y: 52.6
shaper_type_y: 2hump_ei
#####################################################################
# Macros
#####################################################################
# All customizations are documented in globals.cfg. Just copy a variable from
# there into the section below, and change the value to meet your needs.
[gcode_macro _km_options]
# These are examples of some likely customizations:
# Any sheets in the below list will be available with a configurable offset.
#variable_bed_surfaces: ['smooth_1','texture_1']
# Length (in mm) of filament to load (bowden tubes will be longer).
variable_load_length: 50.0
# Hide the Octoprint LCD menu since I don't use it.
#variable_menu_show_octoprint: False
# Customize the filament menus (up to 10 entries).
#variable_menu_temperature: [
# {'name' : 'PLA', 'extruder' : 200.0, 'bed' : 60.0},
# {'name' : 'PETG', 'extruder' : 230.0, 'bed' : 85.0},
# {'name' : 'ABS', 'extruder' : 245.0, 'bed' : 110.0, 'chamber' : 60}]
# Length of filament (in millimeters) to purge at print start.
variable_start_purge_length: 30 # This value works for most setups.
gcode: # This line is required by Klipper.
# Any code you put here will run at klipper startup, after the initialization
# for these macros. For example, you could uncomment the following line to
# automatically adjust your bed surface offsets to account for any changes made
# to your Z endstop or probe offset.
# ADJUST_SURFACE_OFFSETS
variable_park_x: 10.0
# Y position to park toolhead (set "max" or "min" to infer from stepper config).
variable_park_y: 350.0
# This line includes all the standard macros.
[include klipper-macros/*.cfg]
# Uncomment to include features that require specific hardware support.
# LCD menu support for features like bed surface selection and pause next layer.
#[include klipper-macros/optional/lcd_menus.cfg]
# Optimized bed leveling
[include klipper-macros/optional/bed_mesh.cfg]
# The sections below here are required for the macros to work. If your config
# already has some of these sections you should merge the duplicates into one
# (or if they are identical just remove one of them).
[idle_timeout]
gcode:
_KM_IDLE_TIMEOUT # This line must be in your idle_timeout section.
[pause_resume]
[respond]
[save_variables]
filename: ~/printer_data/config/variables.cfg # UPDATE THIS FOR YOUR PATH!!!
[virtual_sdcard]
path: ~/printer_data/gcodes # UPDATE THIS FOR YOUR PATH!!!
on_error_gcode: CANCEL_PRINT
[display_status]
[exclude_object]
[gcode_macro update_git]
gcode:
RUN_SHELL_COMMAND CMD=update_git_script
[gcode_shell_command update_git_script]
command: bash -c "bash $HOME/klipper-backup/script.sh"
timeout: 90.0
verbose: True

Zero G Mercury One.1 Klipper Config

GitHub Backup

[include shell_command.cfg]
[include mainsail.cfg]
# host MCU service is preinstalled and ready to use with:
[mcu CB1]
serial: /tmp/klipper_host_mcu
# This file contains common pin mappings for the BIGTREETECH Manta M8P
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" "8 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PD12/PD13)".
# https://github.com/Klipper3d/klipper/blob/master/config/generic-bigtreetech-manta-m8p-v1.1.cfg
# See docs/Config_Reference.md for a description of parameters.
[mcu]
#@serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_3C001B000B504B4633373520-if00
canbus_uuid=5b426f4e5253
[mcu HermitCrab]
#serial: /dev/serial/by-id/usb-Klipper_stm32f072xb_28002C000757434331363920-if00
canbus_uuid=00ee6e545867
[printer]
kinematics: corexy
max_velocity: 300
max_accel: 4000 #Max 4000
max_z_velocity: 15 #Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 350
square_corner_velocity: 5.0
[stepper_x] # B M1
step_pin: PE2
dir_pin: !PB4
enable_pin: !PC11
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: ^PF3
position_endstop: 357
position_max: 377
homing_speed: 50
homing_retract_dist: 10
[tmc5160 stepper_x]
cs_pin: PC10
#spi_bus: spi1
interpolate: False
run_current: .7
#diag1_pin: ^!PF3
sense_resistor: 0.110
#driver_SGTHRS: 125
driver_SGT: 0
stealthchop_threshold: 0
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
[stepper_y] # A M2
step_pin: PF12
dir_pin: !PF11
enable_pin: !PB3
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: ^PF4
position_endstop: 365
position_max: 370
homing_speed: 50
homing_retract_dist: 10
[tmc5160 stepper_y]
cs_pin: PF13
#spi_bus: spi1
interpolate: False
run_current: .7
#hold_current: 1.0
#diag1_pin: ^!PF4
sense_resistor: 0.110
#driver_SGTHRS: 125
driver_SGT: 2
stealthchop_threshold: 0
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
[stepper_z] # M3 Left
step_pin: PD7
dir_pin: !PD6
enable_pin: !PF10
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: probe:z_virtual_endstop
position_max: 350
position_min: -50
homing_speed: 8.0
second_homing_speed: 3
[tmc2209 stepper_z]
uart_pin: PF9
##diag_pin: PF5
run_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0
[stepper_z1] # M4 Center
step_pin: PD3
dir_pin: !PD2
enable_pin: !PD5
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
[tmc2209 stepper_z1]
uart_pin: PD4
##diag_pin: PC0
run_current: 0.7
sense_resistor: 0.110
interpolate: False
stealthchop_threshold: 0
[stepper_z2] # M6 Right
step_pin: PA10
dir_pin: !PA14
enable_pin: !PA15
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
[tmc2209 stepper_z2]
uart_pin: PF8
run_current: 0.7
sense_resistor: 0.110
interpolate: False
stealthchop_threshold: 0
[extruder]
step_pin: HermitCrab: PA6
dir_pin: !HermitCrab: PA7
enable_pin: !HermitCrab: PA5
microsteps: 16
rotation_distance: 24.235
gear_ratio: 7:1
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: HermitCrab: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: HermitCrab: PA1
#control: pid
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 250
max_extrude_cross_section: 4
pressure_advance: 0.05
[tmc2209 extruder]
uart_pin: HermitCrab: PB0
run_current: 0.650
sense_resistor: 0.110
interpolate: false
stealthchop_threshold: 0
[fan]
pin: HermitCrab: PA4
[heater_fan hotend_fan]
pin: HermitCrab: PA3
heater: extruder
heater_temp: 50.0
#####################################################################
# Bed Heater
#####################################################################
[heater_bed]
## SSR Pin - BED_OUT
heater_pin: PB5
sensor_type: ATC Semitec 104GT-2
sensor_pin: PA0
## Adjust Max Power so your heater doesn't warp your bed
max_power: 0.7
min_temp: 0
max_temp: 120
#control: pid
#pid_kp: 58.437
#pid_ki: 2.347
#pid_kd: 363.769
[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=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
#####################################################################
# Probe
#####################################################################
[safe_z_home]
home_xy_position: 188,185
speed: 150
z_hop: 10 # Move up 10mm
z_hop_speed: 5
[bltouch]
sensor_pin: ^HermitCrab:PB2
control_pin: HermitCrab:PB1
x_offset: -31.8
y_offset: -40.5
#z_offset: 4 # Uncomment if starting fresh; Distance should be enough to keep the z-offset positive.
speed: 5.0
pin_move_time: 0.7
lift_speed: 8
pin_up_touch_mode_reports_triggered: True
probe_with_touch_mode: True
samples: 2
samples_result: median
sample_retract_dist: 6.0
samples_tolerance: 0.05
samples_tolerance_retries: 3
[bed_mesh]
speed: 300
mesh_min: 30,30
mesh_max: 345,329
probe_count: 5,5
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2
move_check_distance: 3.0
split_delta_z: .010
fade_start: 1.0
fade_end: 10.0
[screws_tilt_adjust]
screw1: 360,13.5
screw1_name: front_left
screw2: 360,363
screw2_name: front_right
screw3: 185,10
screw3_name: back_middle
# Additional bed leveling screws. At least two screws must be
# defined.
speed: 50
horizontal_move_z: 5
screw_thread: CW-M3
[bed_screws]
screw1: 360,13.5
screw2: 360,363
screw3: 185,10
[z_tilt]
z_positions:
10,13.5
185,350
355,13.5
points:
0,55
155,365
325,55
speed: 200
horizontal_move_z: 15
retries: 10
retry_tolerance: 0.03 #0.0075
#####################################################################
# PInput Shaping
#####################################################################
[adxl345]
cs_pin: HermitCrab: PB12
spi_bus: spi2
axes_map: y,z,-x
[resonance_tester]
accel_chip: adxl345
probe_points:
188,185, 20 # middle of bed as an example
[input_shaper]
shaper_freq_x: 43.0
shaper_type_x: 2hump_ei
shaper_freq_y: 52.6
shaper_type_y: 2hump_ei
#####################################################################
# Macros
#####################################################################
# All customizations are documented in globals.cfg. Just copy a variable from
# there into the section below, and change the value to meet your needs.
[gcode_macro _km_options]
# These are examples of some likely customizations:
# Any sheets in the below list will be available with a configurable offset.
#variable_bed_surfaces: ['smooth_1','texture_1']
# Length (in mm) of filament to load (bowden tubes will be longer).
variable_load_length: 50.0
# Hide the Octoprint LCD menu since I don't use it.
#variable_menu_show_octoprint: False
# Customize the filament menus (up to 10 entries).
#variable_menu_temperature: [
# {'name' : 'PLA', 'extruder' : 200.0, 'bed' : 60.0},
# {'name' : 'PETG', 'extruder' : 230.0, 'bed' : 85.0},
# {'name' : 'ABS', 'extruder' : 245.0, 'bed' : 110.0, 'chamber' : 60}]
# Length of filament (in millimeters) to purge at print start.
variable_start_purge_length: 30 # This value works for most setups.
gcode: # This line is required by Klipper.
# Any code you put here will run at klipper startup, after the initialization
# for these macros. For example, you could uncomment the following line to
# automatically adjust your bed surface offsets to account for any changes made
# to your Z endstop or probe offset.
# ADJUST_SURFACE_OFFSETS
variable_park_x: 10.0
# Y position to park toolhead (set "max" or "min" to infer from stepper config).
variable_park_y: 350.0
# This line includes all the standard macros.
[include klipper-macros/*.cfg]
# Uncomment to include features that require specific hardware support.
# LCD menu support for features like bed surface selection and pause next layer.
#[include klipper-macros/optional/lcd_menus.cfg]
# Optimized bed leveling
[include klipper-macros/optional/bed_mesh.cfg]
# The sections below here are required for the macros to work. If your config
# already has some of these sections you should merge the duplicates into one
# (or if they are identical just remove one of them).
[idle_timeout]
gcode:
_KM_IDLE_TIMEOUT # This line must be in your idle_timeout section.
[pause_resume]
[respond]
[save_variables]
filename: ~/printer_data/config/variables.cfg # UPDATE THIS FOR YOUR PATH!!!
[virtual_sdcard]
path: ~/printer_data/gcodes # UPDATE THIS FOR YOUR PATH!!!
on_error_gcode: CANCEL_PRINT
[display_status]
[exclude_object]
[gcode_macro update_git]
gcode:
RUN_SHELL_COMMAND CMD=update_git_script
[gcode_shell_command update_git_script]
command: bash -c "bash $HOME/klipper-backup/script.sh"
timeout: 90.0
verbose: True

Zero G Mercury One.1 Klipper Config

GitHub Backup

[include shell_command.cfg]
[include mainsail.cfg]
# host MCU service is preinstalled and ready to use with:
[mcu CB1]
serial: /tmp/klipper_host_mcu
# This file contains common pin mappings for the BIGTREETECH Manta M8P
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" "8 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PD12/PD13)".
# https://github.com/Klipper3d/klipper/blob/master/config/generic-bigtreetech-manta-m8p-v1.1.cfg
# See docs/Config_Reference.md for a description of parameters.
[mcu]
#@serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_3C001B000B504B4633373520-if00
canbus_uuid=5b426f4e5253
[mcu HermitCrab]
#serial: /dev/serial/by-id/usb-Klipper_stm32f072xb_28002C000757434331363920-if00
canbus_uuid=00ee6e545867
[printer]
kinematics: corexy
max_velocity: 300
max_accel: 4000 #Max 4000
max_z_velocity: 15 #Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 350
square_corner_velocity: 5.0
[stepper_x] # B M1
step_pin: PE2
dir_pin: !PB4
enable_pin: !PC11
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: ^PF3
position_endstop: 357
position_max: 377
homing_speed: 50
homing_retract_dist: 10
[tmc5160 stepper_x]
cs_pin: PC10
#spi_bus: spi1
interpolate: False
run_current: .7
#diag1_pin: ^!PF3
sense_resistor: 0.110
#driver_SGTHRS: 125
driver_SGT: 0
stealthchop_threshold: 0
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
[stepper_y] # A M2
step_pin: PF12
dir_pin: !PF11
enable_pin: !PB3
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: ^PF4
position_endstop: 365
position_max: 370
homing_speed: 50
homing_retract_dist: 10
[tmc5160 stepper_y]
cs_pin: PF13
#spi_bus: spi1
interpolate: False
run_current: .7
#hold_current: 1.0
#diag1_pin: ^!PF4
sense_resistor: 0.110
#driver_SGTHRS: 125
driver_SGT: 2
stealthchop_threshold: 0
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6
[stepper_z] # M3 Left
step_pin: PD7
dir_pin: !PD6
enable_pin: !PF10
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
endstop_pin: probe:z_virtual_endstop
position_max: 350
position_min: -50
homing_speed: 8.0
second_homing_speed: 3
[tmc2209 stepper_z]
uart_pin: PF9
##diag_pin: PF5
run_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0
[stepper_z1] # M4 Center
step_pin: PD3
dir_pin: !PD2
enable_pin: !PD5
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
[tmc2209 stepper_z1]
uart_pin: PD4
##diag_pin: PC0
run_current: 0.7
sense_resistor: 0.110
interpolate: False
stealthchop_threshold: 0
[stepper_z2] # M6 Right
step_pin: PA10
dir_pin: !PA14
enable_pin: !PA15
microsteps: 16
rotation_distance: 2
full_steps_per_rotation: 200 #set to 200 for 1.8 degree stepper
[tmc2209 stepper_z2]
uart_pin: PF8
run_current: 0.7
sense_resistor: 0.110
interpolate: False
stealthchop_threshold: 0
[extruder]
step_pin: HermitCrab: PA6
dir_pin: !HermitCrab: PA7
enable_pin: !HermitCrab: PA5
microsteps: 16
rotation_distance: 24.235
gear_ratio: 7:1
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: HermitCrab: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: HermitCrab: PA1
#control: pid
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 250
max_extrude_cross_section: 4
pressure_advance: 0.05
[tmc2209 extruder]
uart_pin: HermitCrab: PB0
run_current: 0.650
sense_resistor: 0.110
interpolate: false
stealthchop_threshold: 0
[fan]
pin: HermitCrab: PA4
[heater_fan hotend_fan]
pin: HermitCrab: PA3
heater: extruder
heater_temp: 50.0
#####################################################################
# Bed Heater
#####################################################################
[heater_bed]
## SSR Pin - BED_OUT
heater_pin: PB5
sensor_type: ATC Semitec 104GT-2
sensor_pin: PA0
## Adjust Max Power so your heater doesn't warp your bed
max_power: 0.7
min_temp: 0
max_temp: 120
#control: pid
#pid_kp: 58.437
#pid_ki: 2.347
#pid_kd: 363.769
[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=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
#####################################################################
# Probe
#####################################################################
[safe_z_home]
home_xy_position: 188,185
speed: 150
z_hop: 10 # Move up 10mm
z_hop_speed: 5
[bltouch]
sensor_pin: ^HermitCrab:PB2
control_pin: HermitCrab:PB1
x_offset: -31.8
y_offset: -40.5
#z_offset: 4 # Uncomment if starting fresh; Distance should be enough to keep the z-offset positive.
speed: 5.0
pin_move_time: 0.7
lift_speed: 8
pin_up_touch_mode_reports_triggered: True
probe_with_touch_mode: True
samples: 2
samples_result: median
sample_retract_dist: 6.0
samples_tolerance: 0.05
samples_tolerance_retries: 3
[bed_mesh]
speed: 300
mesh_min: 30,30
mesh_max: 345,329
probe_count: 5,5
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2
move_check_distance: 3.0
split_delta_z: .010
fade_start: 1.0
fade_end: 10.0
[screws_tilt_adjust]
screw1: 360,13.5
screw1_name: front_left
screw2: 360,363
screw2_name: front_right
screw3: 185,10
screw3_name: back_middle
# Additional bed leveling screws. At least two screws must be
# defined.
speed: 50
horizontal_move_z: 5
screw_thread: CW-M3
[bed_screws]
screw1: 360,13.5
screw2: 360,363
screw3: 185,10
[z_tilt]
z_positions:
10,13.5
185,350
355,13.5
points:
0,55
155,365
325,55
speed: 200
horizontal_move_z: 15
retries: 10
retry_tolerance: 0.03 #0.0075
#####################################################################
# PInput Shaping
#####################################################################
[adxl345]
cs_pin: HermitCrab: PB12
spi_bus: spi2
axes_map: y,z,-x
[resonance_tester]
accel_chip: adxl345
probe_points:
188,185, 20 # middle of bed as an example
[input_shaper]
shaper_freq_x: 43.0
shaper_type_x: 2hump_ei
shaper_freq_y: 52.6
shaper_type_y: 2hump_ei
#####################################################################
# Macros
#####################################################################
# All customizations are documented in globals.cfg. Just copy a variable from
# there into the section below, and change the value to meet your needs.
[gcode_macro _km_options]
# These are examples of some likely customizations:
# Any sheets in the below list will be available with a configurable offset.
#variable_bed_surfaces: ['smooth_1','texture_1']
# Length (in mm) of filament to load (bowden tubes will be longer).
variable_load_length: 50.0
# Hide the Octoprint LCD menu since I don't use it.
#variable_menu_show_octoprint: False
# Customize the filament menus (up to 10 entries).
#variable_menu_temperature: [
# {'name' : 'PLA', 'extruder' : 200.0, 'bed' : 60.0},
# {'name' : 'PETG', 'extruder' : 230.0, 'bed' : 85.0},
# {'name' : 'ABS', 'extruder' : 245.0, 'bed' : 110.0, 'chamber' : 60}]
# Length of filament (in millimeters) to purge at print start.
variable_start_purge_length: 30 # This value works for most setups.
gcode: # This line is required by Klipper.
# Any code you put here will run at klipper startup, after the initialization
# for these macros. For example, you could uncomment the following line to
# automatically adjust your bed surface offsets to account for any changes made
# to your Z endstop or probe offset.
# ADJUST_SURFACE_OFFSETS
variable_park_x: 10.0
# Y position to park toolhead (set "max" or "min" to infer from stepper config).
variable_park_y: 350.0
# This line includes all the standard macros.
[include klipper-macros/*.cfg]
# Uncomment to include features that require specific hardware support.
# LCD menu support for features like bed surface selection and pause next layer.
#[include klipper-macros/optional/lcd_menus.cfg]
# Optimized bed leveling
[include klipper-macros/optional/bed_mesh.cfg]
# The sections below here are required for the macros to work. If your config
# already has some of these sections you should merge the duplicates into one
# (or if they are identical just remove one of them).
[idle_timeout]
gcode:
_KM_IDLE_TIMEOUT # This line must be in your idle_timeout section.
[pause_resume]
[respond]
[save_variables]
filename: ~/printer_data/config/variables.cfg # UPDATE THIS FOR YOUR PATH!!!
[virtual_sdcard]
path: ~/printer_data/gcodes # UPDATE THIS FOR YOUR PATH!!!
on_error_gcode: CANCEL_PRINT
[display_status]
[exclude_object]
[gcode_macro update_git]
gcode:
RUN_SHELL_COMMAND CMD=update_git_script
[gcode_shell_command update_git_script]
command: bash -c "bash $HOME/klipper-backup/script.sh"
timeout: 90.0
verbose: True