Skip to content

Instantly share code, notes, and snippets.

@thebino
Last active February 20, 2025 09:24
Show Gist options
  • Save thebino/d8a9ae357110efbf7e5609cd7f6d1456 to your computer and use it in GitHub Desktop.
Save thebino/d8a9ae357110efbf7e5609cd7f6d1456 to your computer and use it in GitHub Desktop.
Voron V2-7745 printer configs
[gcode_macro LOAD_FILAMENT]
variable_load_distance: 101
gcode:
{% set speed = params.SPEED|default(300) %}
SAVE_GCODE_STATE NAME=load_state
G91 # get the absolute coordinate to save
G92 E0 # set position to E0
G1 E{load_distance} F300 # fast-load
RESTORE_GCODE_STATE NAME=load_state
[gcode_macro UNLOAD_FILAMENT]
variable_unload_distance: 50
variable_purge_distance: 25
gcode:
{% set speed = params.SPEED|default(1000) %}
SAVE_GCODE_STATE NAME=unload_state
G91
G92 E0
G1 E{purge_distance} F{speed} # purge
G1 E-50 F1500 # fast-unload
RESTORE_GCODE_STATE NAME=unload_state
[gcode_macro PRINT_END]
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
gcode:
# safe anti-stringing move coords
{% set th = printer.toolhead %}
{% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %}
{% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %}
{% set z_safe = [th.position.z + 2, th.axis_maximum.z]|min %}
SAVE_GCODE_STATE NAME=STATE_PRINT_END
M400 ; wait for buffer to clear
G92 E0 ; zero the extruder
G1 E-5.0 F1800 ; retract filament
TURN_OFF_HEATERS
G90 ; absolute positioning
G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing
G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 ; park nozzle at rear
M107 ; turn off fan
BED_MESH_CLEAR
## Turn on Bed Fan
SET_FAN_SPEED FAN=BedFans SPEED=0
# The purpose of the SAVE_GCODE_STATE/RESTORE_GCODE_STATE
# command pair is to restore the printer's coordinate system
# and speed settings since the commands above change them.
# However, to prevent any accidental, unintentional toolhead
# moves when restoring the state, explicitly set MOVE=0.
RESTORE_GCODE_STATE NAME=STATE_PRINT_END MOVE=0
# src: https://github.com/jontek2/A-better-print_start-macro
#####################################################################
# A better print_start macro for v2/trident
#####################################################################
[gcode_macro PRINT_START]
gcode:
# This part fetches data from your slicer. Such as bed, extruder, and chamber temps and size of your printer.
{% set target_bed = params.BED|int %}
{% set target_extruder = params.EXTRUDER|int %}
#{% set target_chamber = params.CHAMBER|default("45")|int %}
{% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
{% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}
# Home the printer, set absolute positioning and update the Stealthburner LEDs.
#STATUS_HOMING # Set LEDs to homing-mode
G28 # Full home (XYZ)
G90 # Absolute position
## Uncomment for bed mesh (1 of 2 for bed mesh)
BED_MESH_CLEAR # Clear old saved bed mesh (if any)
## Turn on Bed Fan
SET_FAN_SPEED FAN=BedFans SPEED=1
# Check if the bed temp is higher than 90c - if so then trigger a heatsoak.
{% if params.BED|int > 90 %}
SET_DISPLAY_TEXT MSG="Heating Bed to {target_bed} °C" # Display info on display
#STATUS_HEATING # Set LEDs to heating-mode
M106 S255 # Turn on the PT-fan
G1 X{x_wait} Y{y_wait} Z15 F9000 # Go to center of the bed
M190 S{target_bed} # Set the target temp for the bed
#SET_DISPLAY_TEXT MSG="Heatsoak: {target_chamber}c" # Display info on display
#TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber} # Waits for chamber temp
# If the bed temp is not over 90c, then skip the heatsoak and just heat up to set temp with a 5 min soak
{% else %}
SET_DISPLAY_TEXT MSG="Heating Bed to {target_bed} °C" # Display info on display
#STATUS_HEATING # Set LEDs to heating-mode
G1 X{x_wait} Y{y_wait} Z15 F9000 # Go to center of the bed
M190 S{target_bed} # Set the target temp for the bed
SET_DISPLAY_TEXT MSG="Soak for 5 min" # Display info on display
G4 P300000 # Wait 5 min for the bedtemp to stabilize
{% endif %}
# Heat hotend to 150c. This helps with getting a correct Z-home.
SET_DISPLAY_TEXT MSG="Heating Hotend to 150 °C for Leveling" # Display info on display
M109 S150 # Heat hotend to 150c
## Uncomment for V2.4 (Quad gantry level AKA QGL)
SET_DISPLAY_TEXT MSG="Leveling in Progress" # Display info on display
#STATUS_LEVELING # Set LEDs to leveling-mode
QUAD_GANTRY_LEVEL # Level the printer via QGL
G28 Z # Home Z again after QGL
## Uncomment for bed mesh (2 of 2 for bed mesh)
SET_DISPLAY_TEXT MSG="Bed mesh" # Display info on display
STATUS_MESHING # Set LEDs to bed mesh-mode
BED_MESH_CALIBRATE ADAPTIVE=1 # Start the bed mesh (add ADAPTIVE=1) for adaptive bed mesh
# Heat up the hotend up to target via data from slicer
SET_DISPLAY_TEXT MSG="Heating Hotend to {target_extruder} °C" # Display info on display
#STATUS_HEATING # Set LEDs to heating-mode
G1 X{x_wait} Y{y_wait} Z15 F9000 # Go to center of the bed
M107 # Turn off partcooling fan
M109 S{target_extruder} # Heat the hotend to set temp
# Get ready to print by doing a primeline and updating the LEDs
SET_DISPLAY_TEXT MSG="Printer goes brr" # Display info on display
#STATUS_PRINTING # Set LEDs to printing-mode
G0 X{x_wait - 50} Y4 F10000 # Go to starting point
G0 Z0.4 # Raise Z to 0.4
G91 # Incremental positioning
G1 X100 E20 F1000 # Primeline
G90 # Absolute position
# Klipper configuration
#
# https://www.klipper3d.org/Config_Reference.html
#
#
[include mainsail.cfg]
[include macro_filament.cfg]
[include macro_print_end.cfg]
[include macro_print_start.cfg]
[include macro_speed_test.cfg]
[include macro_thefilter.cfg]
[mcu]
#serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_240045001551333031373837-if00 # Obtain by "ls /dev/serial/by-id/*" then unplug to verify
canbus_uuid: b4a81d00232e
#restart_method: command
[mcu EBBCan]
#serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
canbus_uuid: f2cb5b1e081f
[printer]
kinematics: corexy
max_velocity: 300
max_accel: 4500
minimum_cruise_ratio: 0.5
square_corner_velocity: 5.0
# https://www.klipper3d.org/Config_Reference.html#corexy-kinematics
max_z_velocity: 20
max_z_accel: 350
[stepper_x]
step_pin: PF13
dir_pin: !PF12
enable_pin: !PF14
rotation_distance: 40
microsteps: 32
full_steps_per_rotation: 200
#gear_ratio:
#step_pulse_duration:
endstop_pin: !PG6
position_min: 0
position_endstop: 300
position_max: 300
homing_speed: 100
homing_retract_dist: 5.0
#homing_retract_speed:
#second_homing_speed:
#homing_positive_dir:
[stepper_y]
step_pin: PG0
dir_pin: !PG1
enable_pin: !PF15
rotation_distance: 40
microsteps: 32
full_steps_per_rotation: 200
#gear_ratio:
#step_pulse_duration:
endstop_pin: !PG9
position_min: 0
position_endstop: 300
position_max: 300
homing_speed: 100
homing_retract_dist: 5
#homing_retract_speed:
#second_homing_speed:
#homing_positive_dir:
[stepper_z]
step_pin: PF11
dir_pin: !PG3
enable_pin: !PG5
rotation_distance: 40
microsteps: 32
# full_steps_per_rotation: 200
gear_ratio: 80:16
#step_pulse_duration:
endstop_pin: probe:z_virtual_endstop
position_min: -5
# position_endstop: -0.5
position_max: 260
homing_speed: 5
homing_retract_dist: 3
#homing_retract_speed:
second_homing_speed: 3
[extruder]
step_pin: EBBCan: PD0
dir_pin: !EBBCan: PD1
enable_pin: !EBBCan: PD2
microsteps: 16
## rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100
## 22.6789511 is a good starting point
rotation_distance: 19.1183553693
full_steps_per_rotation: 200
gear_ratio: 50:8
nozzle_diameter: 0.400
filament_diameter: 1.750
#max_extrude_cross_section:
#instantaneous_corner_velocity: 1.000
max_extrude_only_distance: 101.0
#max_extrude_only_velocity:
#max_extrude_only_accel:
pressure_advance: 0.025
pressure_advance_smooth_time: 0.03
heater_pin: EBBCan: PB13
# max_power: 1.0
sensor_type: ATC Semitec 104NT-4-R025H42G # DropEffect neXtG Hotend, Red
sensor_pin: EBBCan: PA3
#pullup_resistor: 4700
#smooth_time: 1.0
control = pid
pid_kp = 31.563
pid_ki = 3.288
pid_kd = 75.755
#max_delta: 2.0
#pwm_cycle_time: 0.100
min_extrude_temp: 170
min_temp: 0
max_temp: 320
[heater_bed]
heater_pin: PA1
max_power: 1.0
sensor_type: ATC Semitec 104GT-2
sensor_pin: PF3
control = pid
pid_kp = 63.646
pid_ki = 1.351
pid_kd = 749.429
min_temp: 0
max_temp: 120
[bed_mesh]
speed: 300
horizontal_move_z: 15
#mesh_origin:
mesh_min: 40, 40
mesh_max: 240, 198
probe_count: 5,5
fade_start: 0.6
fade_end: 10.0
#fade_target:
[quad_gantry_level]
gantry_corners:
-60,-10
310, 320
points:
50,25
50,225
250,225
250,25
speed: 300
horizontal_move_z: 15
max_adjust: 10
retries: 5
retry_tolerance: 0.0075
[safe_z_home]
home_xy_position: 150, 150
speed: 300.0
z_hop: 5
z_hop_speed: 10.0
#move_to_previous: False
[input_shaper]
shaper_freq_x: 66.2
shaper_freq_y: 45.2
shaper_type: mzv
[adxl345]
cs_pin: EBBCan: PB12
#spi_speed: 5000000#spi_bus:
#spi_bus:
spi_software_sclk_pin: EBBCan: PB10
spi_software_mosi_pin: EBBCan: PB11
spi_software_miso_pin: EBBCan: PB2
axes_map: x,y,z
#rate: 3200
[resonance_tester]
probe_points: 150, 150, 20
accel_chip: adxl345
[board_pins]
aliases:
# EXP1 header
EXP1_1=PE8, EXP1_2=PE7,
EXP1_3=PE9, EXP1_4=PE10,
EXP1_5=PE12, EXP1_6=PE13, # Slot in the socket on this side
EXP1_7=PE14, EXP1_8=PE15,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_2=PA5,
EXP2_3=PB1, EXP2_4=PA4,
EXP2_5=PB2, EXP2_6=PA7, # Slot in the socket on this side
EXP2_7=PC15, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=PC5
[probe]
pin: !EBBCan: PB6
x_offset: 0.0
y_offset: 0.0
z_offset = -0.525
speed: 10.0 # Speed (in mm/s) of the Z axis when probing. [default: 5]
samples: 1 # number of times to probe each point [default 1]
sample_retract_dist: 3.0 # distance (in mm) to lift the toolhead between each sample [default: 2.0]
#lift_speed:
samples_result: average
samples_tolerance: 0.100
samples_tolerance_retries: 4
activate_gcode: # restrict extruder temperature to 150°C due to probe testing
{% 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)) }
M109 S{ PROBE_TEMP }
{% 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 %}
[stepper_z1]
step_pin: PG4
dir_pin: PC1
enable_pin: !PA2
rotation_distance: 40
microsteps: 32
gear_ratio: 80:16
[stepper_z2]
step_pin: PF9
dir_pin: !PF10
enable_pin: !PG2
rotation_distance: 40
microsteps: 32
gear_ratio: 80:16
[stepper_z3]
step_pin: PC13
dir_pin: PF0
enable_pin: !PF1
rotation_distance: 40
microsteps: 32
gear_ratio: 80:16
[temperature_sensor MCU]
sensor_type: temperature_mcu
[temperature_sensor PI]
sensor_type: temperature_host
[temperature_sensor EBB36_BLUE]
sensor_type: temperature_mcu
sensor_mcu: EBBCan
min_temp: 0
max_temp: 100
## Print Cooling Fan
[fan]
pin: EBBCan: PA0
## Hotend Fan
[heater_fan hotend_fan]
pin: EBBCan: PA1
# max_power: 1.0
# kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
[fan_generic BedFans]
pin: PA8
#cycle_time: 0.05
kick_start_time: 0.5
## Chamber Lighting - HE2 Connector (Optional)
# [output_pin caselight]
# pin: PB0
# pwm:true
# shutdown_value: 0
# value:1
# cycle_time: 0.01
[tmc2209 stepper_x]
uart_pin: PC4
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
[tmc2209 stepper_y]
uart_pin: PD11
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
[tmc2209 stepper_z]
uart_pin: PC6
interpolate: false
run_current: 1.0
sense_resistor: 0.110
stealthchop_threshold: 2000
hold_current: 0.8
[tmc2209 stepper_z1]
uart_pin: PC7
interpolate: false
run_current: 1.0
sense_resistor: 0.110
hold_current: 0.8
stealthchop_threshold: 2000
[tmc2209 stepper_z2]
uart_pin: PF2
interpolate: false
run_current: 1.0
sense_resistor: 0.110
hold_current: 0.8
stealthchop_threshold: 2000
[tmc2209 stepper_z3]
uart_pin: PE4
interpolate: false
run_current: 1.0
sense_resistor: 0.110
sense_resistor: 0.110
stealthchop_threshold: 2000
hold_current: 0.8
[tmc2209 extruder]
uart_pin: EBBCan: PA15
# interpolate: false
run_current: 0.650
# sense_resistor: 0.110
stealthchop_threshold: 999999
#[display]
#lcd_type: st7920
#display_group:
#menu_timeout: 40
#encoder_pins: ^EXP2_5, ^EXP2_3
#click_pin: ^!EXP1_2
#cs_pin: EXP1_4
#sclk_pin: EXP1_5
#sid_pin: EXP1_3
[gcode_macro G32]
gcode:
SAVE_GCODE_STATE NAME=STATE_G32
G90
G28
QUAD_GANTRY_LEVEL
G28
PARK
RESTORE_GCODE_STATE NAME=STATE_G32
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# -0.012500, -0.020000, -0.012500, 0.017500, 0.005000
#*# -0.017500, 0.017500, 0.010000, 0.005000, 0.027500
#*# 0.030000, 0.035000, 0.000000, 0.010000, 0.032500
#*# -0.007500, -0.015000, 0.012500, -0.020000, -0.022500
#*# -0.012500, -0.030000, 0.002500, -0.022500, -0.050000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 40.0
#*# max_x = 260.0
#*# min_y = 40.0
#*# max_y = 260.0
#*#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment