# This file contains common pin mappings for the BigTreeTech OctoPus V1.
# To use this config, the firmware should be compiled for the STM32F446 with a "32KiB bootloader"
# Enable "extra low-level configuration options" and select the "12MHz crystal" as clock reference

# after running "make", copy the generated "klipper/out/klipper.bin" file to a
# file named "firmware.bin" on an SD card and then restart the OctoPus with that SD card.

# See docs/Config_Reference.md for a description of parameters.

## Voron Design VORON2 250/300/350mm BigTreeTech OctoPus V1 TMC2209 UART config

## *** THINGS TO CHANGE/CHECK: ***
## MCU paths                                    [mcu] section
## Thermistor types                             [extruder] and [heater_bed] sections - See 'sensor types' list at end of file
## Z Endstop Switch location                    [safe_z_home] section
## Homing end position                          [gcode_macro G32] section
## Z Endstop Switch  offset for Z0              [stepper_z] section
## Probe points                                 [quad_gantry_level] section
## Min & Max gantry corner postions             [quad_gantry_level] section
## PID tune                                     [extruder] and [heater_bed] sections
## Fine tune E steps                            [extruder] section

[mcu]
## [X in MOTOR0] - B Motor
## [Y in MOTOR1] - A Motor
## [E in MOTOR6] - Extruder
## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify
##--------------------------------------------------------------------
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_1E0030000E5053424E363620-if00
#restart_method: command
##--------------------------------------------------------------------


[printer]
kinematics: corexy
max_velocity: 300
## regular
max_accel: 3000               # Max 4000
max_accel_to_decel: 1500      # default half of max_accel
## input_shaper
# max_accel: 7000
# max_accel_to_decel: 3500
##
max_z_velocity: 30            # Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 500
square_corner_velocity: 5.0

#####################################################################
# includes
#####################################################################

[include fluidd.cfg]
[include macros.cfg]
[include neopixel.cfg]
[include fans.cfg]
[include input_shaper.cfg]
# [include resonance_test.cfg]
[include z_calibration.cfg]


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

## X Stepper on MOTOR0(B Motor)
[stepper_x]
step_pin: PF13
dir_pin: !PF12
enable_pin: !PF14
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 400  # 1.8 deg stepper: 200, 0.9 deg stepper
endstop_pin: PG6
position_min: 0
position_endstop: 300
position_max: 300
homing_speed: 30              # Max 100
homing_retract_dist: 5
homing_positive_dir: true

[tmc2209 stepper_x]
uart_pin: PC4
interpolate: True
run_current: 0.8
hold_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0

## Y Stepper on MOTOR1 (A Motor)
[stepper_y]
step_pin: PG0
dir_pin: !PG1
enable_pin: !PF15
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 400  # 200: 1.8 deg stepper, 400: 0.9 deg stepper
endstop_pin: PG9
position_min: 15              # Camera
position_endstop: 305
position_max: 305
homing_speed: 30              # Max 100
homing_retract_dist: 5
homing_positive_dir: true

[tmc2209 stepper_y]
uart_pin: PD11
interpolate: True
run_current: 0.8
hold_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0


#####################################################################
# Z Stepper Settings
#####################################################################

## Z0 Stepper - Front Left on MOTOR2_1
[stepper_z]
step_pin: PF11
dir_pin: PG3
enable_pin: !PG5
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16
endstop_pin: PG10
## Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0)
## (+) value = endstop above Z0, (-) value = endstop below
## Increasing position_endstop brings nozzle closer to the bed
## After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config
#position_endstop: -0.5
position_max: 290
position_min: -5
homing_speed: 11.0          # speed: mm/sec, feedrate: mm/min
second_homing_speed: 3
homing_retract_dist: 3

[tmc2209 stepper_z]
uart_pin: PC6
interpolate: true
run_current: 0.8
hold_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

## Z1 Stepper - Rear Left on MOTOR3
[stepper_z1]
step_pin: PG4
dir_pin: !PC1
enable_pin: !PA0
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16

[tmc2209 stepper_z1]
uart_pin: PC7
interpolate: true
run_current: 0.8
hold_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

## Z2 Stepper - Rear Right on MOTOR4
[stepper_z2]
step_pin: PF9
dir_pin: PF10
enable_pin: !PG2
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16

[tmc2209 stepper_z2]
uart_pin: PF2
interpolate: true
run_current: 0.8
hold_current: 0.80
sense_resistor: 0.110
stealthchop_threshold: 0

## Z3 Stepper - Front Right on MOTOR5
[stepper_z3]
step_pin: PC13
dir_pin: !PF0
enable_pin: !PF1
rotation_distance: 40
gear_ratio: 80:16
microsteps: 16

[tmc2209 stepper_z3]
uart_pin: PE4
interpolate: true
run_current: 0.8
hold_current: 0.80
sense_resistor: 0.110
stealthchop_threshold: 0


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

# E0 on MOTOR6
[extruder]
step_pin: PE2
dir_pin: !PE3
enable_pin: !PD4
## Update value below when you perform extruder calibration
## If you ask for 100mm of filament, but in reality it is 98mm:
## rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100
## 22.6789511 is a good starting point
rotation_distance: 22.6789511   #Bondtech 5mm Drive Gears
## Update Gear Ratio depending on your Extruder Type
## Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio)
## Use 80:20 for M4, M3.1
gear_ratio: 50:17             # BMG Gear Ratio
microsteps: 16
full_steps_per_rotation: 200  # 1.8 deg stepper: 200, 0.9 deg stepper
nozzle_diameter: 0.400
filament_diameter: 1.75
heater_pin: PA2
## Validate the following thermistor type to make sure it is correct
sensor_type: ATC Semitec 104GT-2
sensor_pin: PF4
min_temp: 10
max_temp: 270
max_power: 1.0
min_extrude_temp: 170
#control = pid
#pid_kp = 26.213
#pid_ki = 1.304
#pid_kd = 131.721
## Try to keep pressure_advance below 1.0
pressure_advance: 0.05
## Default is 0.040, leave stock
pressure_advance_smooth_time: 0.040
# Maximum length (in mm of raw filament) that a retraction or
# extrude-only move may have, default: 50
max_extrude_only_distance: 100

## E0 on MOTOR6
[tmc2209 extruder]
uart_pin: PE1
interpolate: false
run_current: 0.5
hold_current: 0.4
sense_resistor: 0.110
stealthchop_threshold: 0


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

[heater_bed]
## SSR Pin - BED_OUT
heater_pin: PA1
sensor_type: NTC 100K beta 3950
sensor_pin: PF3
## Adjust Max Power so your heater doesn't warp your bed
max_power: 0.8          # 0.4W per cm2, 360W for 300 build
min_temp: 0
max_temp: 120
#control: pid
#pid_kp: 58.437
#pid_ki: 2.347
#pid_kd: 363.769


#####################################################################
# Probe
#####################################################################

[probe]
## Microswitch probe
pin: ^PG11
x_offset: 0
y_offset: 25.0
#z_offset: 0
speed: 6
lift_speed: 11
samples: 5
samples_result: median
sample_retract_dist: 3.0
samples_tolerance: 0.01
samples_tolerance_retries: 3


#####################################################################
# Filament Sensor
#####################################################################

[filament_switch_sensor filament_switch]
switch_pin: ^!PG12
pause_on_runout: True
# runout_gcode is executed after pause_on_runout
runout_gcode:
  M117 filament removed
insert_gcode:
  M117 filament inserted
# event_delay: 3.0
# pause_delay: 0.5


#####################################################################
# Enclosure Temp Sensor Section
#####################################################################
[thermistor chamber]
temperature1: 25
resistance1: 10000
beta: 3950


[temperature_sensor chamber]
sensor_type: chamber
sensor_pin: PF5
min_temp: 0
max_temp: 100
gcode_id: C

[temperature_sensor rpi]
sensor_type: temperature_host
min_temp: 0
max_temp: 100

[idle_timeout]
timeout: 1800

## replaced with homing_override in klicky-probe.cfg
# [safe_z_home]
# ## XY Location of the Z Endstop Switch
# home_xy_position: 208, 305
# speed: 100
# z_hop: 10
# z_hop_speed: 25

[bed_mesh]
speed: 500
horizontal_move_z: 15
mesh_min: 40,60
mesh_max: 260,280
fade_start: 0.6
fade_end: 10
probe_count: 5,5
algorithm: bicubic
# relative_reference_index = ((x points * y points) - 1) / 2
relative_reference_index: 12

[quad_gantry_level]
## Use QUAD_GANTRY_LEVEL to level a gantry.
gantry_corners:
  -60,-10
  360,370
points:
  50,40
  50,225
  250,225
  250,40
speed: 100
horizontal_move_z: 15
retries: 5
retry_tolerance: 0.0075
max_adjust: 10

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 37.870
#*# pid_ki = 1.244
#*# pid_kd = 288.283
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 27.483
#*# pid_ki = 1.762
#*# pid_kd = 107.182
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	-0.002500, -0.015000, -0.002500, -0.005000, -0.045000
#*# 	-0.000000, -0.012500, 0.002500, -0.005000, -0.040000
#*# 	-0.002500, 0.002500, 0.000000, 0.012500, -0.032500
#*# 	-0.012500, -0.007500, 0.025000, 0.017500, 0.000000
#*# 	0.057500, 0.072500, 0.042500, 0.075000, 0.027500
#*# tension = 0.2
#*# min_x = 40.0
#*# algo = bicubic
#*# y_count = 5
#*# mesh_y_pps = 2
#*# min_y = 60.0
#*# x_count = 5
#*# max_y = 280.0
#*# mesh_x_pps = 2
#*# max_x = 260.0
#*#
#*# [stepper_z]
#*# position_endstop = 0.817
#*#
#*# [probe]
#*# z_offset = 7.660