# This file contains pin mappings for the stock Sovol SV06.
# 
# Find installation instructions at https://github.com/bassamanator/Sovol-SV06-firmware
# 
# See https://www.klipper3d.org/Config_Reference.html for configuration reference.

[include ./osskc.cfg]

[mcu]
# NOTE Obtain definition by "ls -l /dev/serial/by-path/" or "ls -l /dev/serial/by-id/"
#serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0-port0
#serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0-port0
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
restart_method: command

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 11000
max_z_velocity: 15
max_z_accel: 45
square_corner_velocity: 8.0

#####################################################################
#      X/Y/Z Stepper Settings
#####################################################################

[stepper_x]
step_pin: PC2
dir_pin: !PB9
enable_pin: !PC3
microsteps: 128
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
position_max: 223 # NOTE You can adjust this if you have more room
homing_speed: 40
homing_retract_dist: 0

[tmc2209 stepper_x]
uart_pin: PC1
run_current: 0.900
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 81
diag_pin: PA5

[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 128
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: 0
position_max: 223 # NOTE You can adjust this if you have more room
homing_speed: 40
homing_retract_dist: 0

[tmc2209 stepper_y]
uart_pin: PC0
run_current: 0.900
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 81
diag_pin: PA6

[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 128
rotation_distance: 4
endstop_pin: probe:z_virtual_endstop
position_min: -3
position_max: 258 # NOTE You can adjust this if you have more room
homing_speed: 5

[tmc2209 stepper_z]
uart_pin: PA15
run_current: 0.900
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
diag_pin: PA7

#####################################################################
#   Extruder
#####################################################################

[extruder]
step_pin: PB4
dir_pin: !PB3
enable_pin: !PC3
microsteps: 128
rotation_distance: 4.65 # NOTE Calibrate e-steps https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders, https://github.com/bassamanator/everything-sovol-sv06/blob/main/howto.md#calibrate-esteps
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
min_temp: 0
max_temp: 300
max_extrude_only_distance: 150.0
max_extrude_cross_section: 5 # NOTE Needed for KAMP purge
pressure_advance: 0.031 # 0.0435 # 0.0465 # 0.044

[tmc2209 extruder]
uart_pin: PC14
run_current: 0.550
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3

#####################################################################
#   Bed Heater
#####################################################################

[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
min_temp: 0
max_temp: 110

#####################################################################
#   Probe Related
#####################################################################

[probe]
pin: PB1
x_offset: 27
y_offset: -20
# z_offset: 0
samples: 3
samples_result: median
samples_tolerance: 0.01
samples_tolerance_retries: 5

[safe_z_home]
home_xy_position: 84.50, 135 # NOTE The probe is at the center of the bed.
speed: 100.0
z_hop: 10
z_hop_speed: 15

[bed_mesh]
speed: 175
mesh_min: 27, 6 # probe as close to origin as possible while remaining fully on the bed
mesh_max: 222, 203 # (x.position_max - 1), (y.position_max - abs(y_offset)) ; probe as far as possible from the origin while remaining fully on the bed
probe_count: 5,5
algorithm: bicubic
fade_start: 1
fade_end: 10
fade_target: 0

[axis_twist_compensation]
calibrate_start_x: 27 # probe x coor at furthest left ; abs(x_offset)
calibrate_end_x: 195 # probe x coor at furthest right ; (x.position_max - abs(x_offset) - 1)
calibrate_y: 115

#####################################################################
#   Fans
#####################################################################

[fan]
pin: PA0

#####################################################################
#   Misc
#####################################################################

[display]
lcd_type: st7920
cs_pin: PB12
sclk_pin: PB13
sid_pin: PB15
encoder_pins: ^PB14, ^PB10
click_pin: ^!PB2

[input_shaper]
shaper_freq_x: 50.4 # 55.8 # 55.2 # 53.4 # 56.0 # 56.6 # 55.0 ; recommend accel <7500; 9200
shaper_type_x: mzv
shaper_freq_y: 41.4 # 42.4 # 43.2 # 45.4 # 48.4 ; recommend accel < 5000;5300
shaper_type_y: mzv

[bed_screws]
screw1_name: front left
screw1: 26.5, 31
screw2_name: front right
screw2: 196.75, 31
screw3_name: back right
screw3: 196.75, 201
screw4_name: back left
screw4: 26.5, 201

[screws_tilt_adjust]
screw1_name: center
screw1: 84.50, 135
screw2_name: front left
screw2: 0, 51
screw3_name: front right
screw3: 169.75, 51
screw4_name: back right
screw4: 169.75, 221
screw5_name: back left
screw5: 0, 221
horizontal_move_z: 10
screw_thread: CCW-M4

[output_pin beeper]
pin: PC6
value: 0
shutdown_value: 0
pwm: True
cycle_time: 0.0005 ; Default beeper tone in kHz. 1 / 0.0005 = 2000Hz (2kHz)

[filament_switch_sensor filament_sensor]
switch_pin: !PA4 # "Pulled-high"
pause_on_runout: True
insert_gcode:
    M117 Insert Detected
    { action_respond_info("Insert Detected") }
runout_gcode:
    M117 Runout Detected
    { action_respond_info("Runout Detected") }
    CONDITIONAL_BEEP i=3 dur=300 freq=400

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 29.273
#*# pid_ki = 3.049
#*# pid_kd = 70.256
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 67.629
#*# pid_ki = 1.338
#*# pid_kd = 854.657
#*#
#*# [probe]
#*# z_offset = 1.420
#*#
#*# [axis_twist_compensation]
#*# z_compensations = 0.089427, -0.035573, -0.053854
#*# compensation_start_x = 27.0
#*# compensation_end_x = 195.0
#*#
#*# [bed_mesh default-0]
#*# version = 1
#*# points =
#*# 	0.017700, 0.039838, 0.034162, 0.012223, -0.046875
#*# 	-0.056675, -0.012819, 0.009631, -0.006839, -0.086094
#*# 	-0.116831, -0.054850, -0.040056, -0.055433, -0.120625
#*# 	-0.121362, -0.051100, -0.034588, -0.050745, -0.111094
#*# 	-0.059643, 0.010619, 0.036506, 0.014255, -0.039375
#*# min_x = 27.0
#*# max_x = 222.0
#*# min_y = 6.0
#*# max_y = 203.0
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	0.038482, 0.061556, 0.047131, 0.009098, -0.055469
#*# 	-0.033862, 0.002963, 0.008381, -0.014808, -0.099375
#*# 	-0.095737, -0.047819, -0.040213, -0.062620, -0.132031
#*# 	-0.102768, -0.048131, -0.042088, -0.064808, -0.124688
#*# 	-0.036206, 0.030931, 0.037131, 0.011598, -0.052656
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 27.0
#*# max_x = 222.0
#*# min_y = 6.0
#*# max_y = 203.0
