# 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 Trident 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 https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types
## Leadscrew Rotation Distance [stepper_z], [stepper_z1], [stepper_z2]
## Z Endstop Switch location [safe_z_home] section
## Z Endstop Switch offset for Z0 [stepper_z] section
## PID tune [extruder] and [heater_bed] sections
## Probe pin [probe] section
## Fine tune E steps [extruder] section
[include mainsail.cfg]
[mcu]
canbus_uuid: b75b32c748aa
[mcu SB2040]
canbus_uuid: 62a4d3b8dd71
## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify
##--------------------------------------------------------------------
#serial: /dev/serial/by-id/{REPLACE WITH YOUR SERIAL}
#restart_method: command
[temperature_sensor FLY-SB2040]
sensor_type: temperature_mcu
sensor_mcu: sb2040
[temperature_sensor Warehouse]
sensor_type = ATC Semitec 104GT-2
sensor_pin = sb2040:gpio26
min_temp: -50
max_temp: 350
##--------------------------------------------------------------------
[printer]
kinematics: corexy
max_velocity: 300
max_accel: 3000 #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
#####################################################################
# X/Y Stepper Settings
#####################################################################
## B Stepper - Left
## Connected to MOTOR_0
## Endstop connected to DIAG_0
[stepper_x]
step_pin: PF13
dir_pin: !PF12
enable_pin: !PF14
rotation_distance: 40
microsteps: 32
full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper
endstop_pin: PG6
position_min: 0
##--------------------------------------------------------------------
## Uncomment for 350mm build
position_endstop: 350
position_max: 350
##--------------------------------------------------------------------
homing_speed: 25 #Max 100
homing_retract_dist: 5
homing_positive_dir: true
## Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_x]
uart_pin: PC4
interpolate: False
run_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0
## A Stepper - Right
## Connected to MOTOR_1
## Endstop connected to DIAG_1
[stepper_y]
step_pin: PG0
dir_pin: !PG1
enable_pin: !PF15
rotation_distance: 40
microsteps: 32
full_steps_per_rotation:200 #set to 400 for 0.9 degree stepper
endstop_pin: PG9
position_min: 0
##--------------------------------------------------------------------
## Uncomment for 350mm build
position_endstop: 350
position_max: 350
##--------------------------------------------------------------------
homing_speed: 25 #Max 100
homing_retract_dist: 5
homing_positive_dir: true
## Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_y]
uart_pin: PD11
interpolate: False
run_current: 0.7
sense_resistor: 0.110
stealthchop_threshold: 0
#####################################################################
# Z Stepper Settings
#####################################################################
## Z0 Stepper - Front Left
## Connected to MOTOR_2
## Endstop connected to DIAG_2
[stepper_z]
step_pin: PF11
dir_pin: PG3
enable_pin: !PG5
# Rotation Distance for TR8x8 = 8, TR8x4 = 4, TR8x2 = 2
# rotation_distance: 8
microsteps: 32
endstop_pin: probe:z_virtual_endstop
##endstop for tap - HV Endstop
## 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
#
## All builds use same Max Z
position_max: 250
position_min: -2.5
homing_speed: 8.0 # Leadscrews are slower than 2.4, 10 is a recommended max.
second_homing_speed: 3
homing_retract_dist: 3
## Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z]
uart_pin: PC6
interpolate: False
run_current: 0.6
sense_resistor: 0.110
stealthchop_threshold: 0
## Z1 Stepper - Rear Center
## Connected to MOTOR_3
[stepper_z1]
step_pin: PG4
dir_pin: PC1
enable_pin: !PA0
# Rotation Distance for TR8x8 = 8, TR8x4 = 4, TR8x2 = 2
# rotation_distance: 8
microsteps: 32
## Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z1]
uart_pin: PC7
interpolate: False
run_current: 0.6
sense_resistor: 0.110
stealthchop_threshold: 0
## Z2 Stepper - Front Right
## Connected to MOTOR_4
[stepper_z2]
step_pin: PF9
dir_pin: PF10
enable_pin: !PG2
# Rotation Distance for TR8x8 = 8, TR8x4 = 4, TR8x2 = 2
# rotation_distance: 8
microsteps: 32
## Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z2]
uart_pin: PF2
interpolate: False
run_current: 0.6
sense_resistor: 0.110
stealthchop_threshold: 0
#####################################################################
# Extruder
#####################################################################
# Connected to MOTOR_6
# Heater - HE0
# Thermistor - T0
[extruder]
step_pin: sb2040:gpio9
dir_pin: sb2040:gpio10
enable_pin: !sb2040:gpio7
## 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:10 #BMG Gear Ratio
microsteps: 32
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
nozzle_diameter: 0.600
filament_diameter: 1.75
heater_pin: sb2040:gpio6
## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types.
## Use "Generic 3950" for NTC 100k 3950 thermistors
sensor_type: PT1000
pullup_resistor: 1000
sensor_pin: sb2040:gpio27
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
## E0 on MOTOR6
## Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 extruder]
uart_pin: sb2040:gpio8
interpolate: false
run_current: 0.600
sense_resistor: 0.110
stealthchop_threshold: 999999
#####################################################################
# Bed Heater
#####################################################################
[heater_bed]
## SSR Pin - HE1
## Thermistor - TB
heater_pin: PA3
## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types.
## Use "Generic 3950" for Keenovo heaters
sensor_type: Generic 3950
sensor_pin: PF3
## Adjust Max Power so your heater doesn't warp your bed. Rule of thumb is 0.4 watts / cm^2 .
max_power: 0.6
min_temp: 0
max_temp: 120
control: pid
pid_kp: 58.437
pid_ki: 2.347
pid_kd: 363.769
#####################################################################
# Probe
#####################################################################
[probe]
## Inductive Probe
## This probe is not used for Z height, only Quad Gantry Leveling
# Select the probe port by type:
## For the PROBE port. Will not work with Diode. May need pull-up resistor from signal to 24V.
#pin: ~!PB7
## For the DIAG_7 port. NEEDS BAT85 DIODE! Change to !PG15 if probe is NO.
#pin: PG15
## For Octopus Pro Probe port; NPN and PNP proximity switch types can be set by jumper
#pin: ~!PC5
#--------------------------------------------------------------------
x_offset: 0
y_offset: 0.0
z_offset: 0
speed: 10.0
samples: 3
samples_result: median
sample_retract_dist: 3.0
samples_tolerance: 0.006
samples_tolerance_retries: 3
#####################################################################
# Fan Control
#####################################################################
[fan]
## Print Cooling Fan - FAN0
pin: sb2040:gpio14
kick_start_time: 0.5
## Depending on your fan, you may need to increase this value
## if your fan will not start. Can change cycle_time (increase)
## if your fan is not able to slow down effectively
off_below: 0.10
[heater_fan hotend_fan]
## Hotend Fan - FAN1
pin: sb2040:gpio14
max_power: 1.0
kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
## If you are experiencing back flow, you can reduce fan_speed
#fan_speed: 1.0
[controller_fan controller_fan]
## Controller fan - FAN2
pin: PD12
kick_start_time: 0.5
heater: heater_bed
#[heater_fan exhaust_fan]
## Exhaust fan - FAN3
#pin: PD13
#max_power: 1.0
#shutdown_speed: 0.0
#kick_start_time: 5.0
#heater: heater_bed
#heater_temp: 60
#fan_speed: 1.0
#####################################################################
# LED Control
#####################################################################
#[output_pin caselight]
# Chamber Lighting - HE2 Connector (Optional)
#pin: PB10
#pwm:true
#shutdown_value: 0
#value:1
#cycle_time: 0.01
[neopixel my_neopixel]
pin: sb2040:gpio12
chain_count: 12
color_order: GRB
initial_RED: 0.0
initial_GREEN: 0.0
initial_BLUE: 0.0
#####################################################################
# Homing and Gantry Adjustment Routines
#####################################################################
[idle_timeout]
timeout: 1800
[safe_z_home]
## XY Location of the Z Endstop Switch
## Update -10,-10 to the XY coordinates of your endstop pin
## (such as 157,305) after going through Z Endstop Pin
## Location Definition step.
home_xy_position:0,0
speed:100
z_hop:10
[z_tilt]
## Use Z_TILT_ADJUST to level the bed .
## z_positions: Location of toolhead
##--------------------------------------------------------------------
## Uncomment below for 250mm build
#z_positions:
# -50, 18
# 125, 298
# 300, 18
#points:
# 30, 5
# 125, 195
# 220, 5
## Uncomment below for 300mm build
#z_positions:
# -50, 18
# 150, 348
# 350, 18
#points:
# 30, 5
# 150, 245
# 270, 5
## Uncomment below for 350mm build
z_positions:
-50, 18
175, 398
400, 18
points:
30, 5
175, 295
320, 5
##--------------------------------------------------------------------
speed: 200
horizontal_move_z: 10
retries: 5
retry_tolerance: 0.0075
########################################
# EXP1 / EXP2 (display) pins
########################################
[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=<5V>
#####################################################################
# Displays
#####################################################################
## Uncomment the display that you have
#--------------------------------------------------------------------
#[display]
## RepRapDiscount 128x64 Full Graphic Smart Controller
#lcd_type: st7920
#cs_pin: EXP1_4
#sclk_pin: EXP1_5
#sid_pin: EXP1_3
#menu_timeout: 40
#encoder_pins: ^EXP2_5, ^EXP2_3
#click_pin: ^!EXP1_2
#[output_pin beeper]
#pin: EXP1_1
#--------------------------------------------------------------------
#[display]
## mini12864 LCD Display
#lcd_type: uc1701
#cs_pin: EXP1_3
#a0_pin: EXP1_4
#rst_pin: EXP1_5
#encoder_pins: ^EXP2_5, ^EXP2_3
#click_pin: ^!EXP1_2
#contrast: 63
#spi_software_miso_pin: EXP2_1
#spi_software_mosi_pin: EXP2_6
#spi_software_sclk_pin: EXP2_2
#[neopixel btt_mini12864]
## To control Neopixel RGB in mini12864 display
#pin: EXP1_6
#chain_count: 3
#initial_RED: 0.1
#initial_GREEN: 0.5
#initial_BLUE: 0.0
#color_order: RGB
## Set RGB values on boot up for each Neopixel.
## Index 1 = display, Index 2 and 3 = Knob
#[delayed_gcode setdisplayneopixel]
#initial_duration: 1
#gcode:
# SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0
# SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
# SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3
#--------------------------------------------------------------------
[adxl345]
cs_pin: sb2040:gpio1
spi_software_sclk_pin: sb2040:gpio0
spi_software_mosi_pin: sb2040:gpio3
spi_software_miso_pin: sb2040:gpio2
#####################################################################
# Macros
#####################################################################
[gcode_macro PRINT_START]
# Use PRINT_START for the slicer starting script - PLEASE CUSTOMISE THE SCRIPT
gcode:
M117 Homing... ; display message
G28
Z_TILT_ADJUST
G28
## Uncomment for for your size printer:
#--------------------------------------------------------------------
## Uncomment for 250mm build
#G0 X125 Y125 Z30 F3600
## Uncomment for 300 build
#G0 X150 Y150 Z30 F3600
## Uncomment for 350mm build
G0 X175 Y175 Z30 F3600
#--------------------------------------------------------------------
[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-2.0 F3600 ; 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
RESTORE_GCODE_STATE NAME=STATE_PRINT_END