# 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: *** ## X MCU paths [mcu] section ## X Thermistor types [extruder] and [heater_bed] sections - See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types ## X 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 ## Probe pin [probe] section ## Fine tune E steps [extruder] section [include mainsail.cfg] [mcu] ## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify ##-------------------------------------------------------------------- serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_1E0035000D50535556323420-if00 restart_method: command ##-------------------------------------------------------------------- [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:400 #set to 200 for 1.8 degree stepper endstop_pin: PG6 position_min: 0 ##-------------------------------------------------------------------- ## Uncomment below for 250mm build #position_endstop: 250 #position_max: 250 ## Uncomment for 300mm build position_endstop: 300 position_max: 300 ## 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.8 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:400 #set to 200 for 1.8 degree stepper endstop_pin: PG9 position_min: 0 ##-------------------------------------------------------------------- ## Uncomment for 250mm build #position_endstop: 250 #position_max: 250 ## Uncomment for 300mm build position_endstop: 300 position_max: 300 ## 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.8 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: 40 gear_ratio: 80:16 microsteps: 32 #endstop_pin: PG10 endstop_pin: probe:z_virtual_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 ##-------------------------------------------------------------------- ## Uncomment below for 250mm build #position_max: 210 ## Uncomment below for 300mm build position_max: 260 ## Uncomment below for 350mm build #position_max: 310 ##-------------------------------------------------------------------- position_min: -5 homing_speed: 8 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.8 sense_resistor: 0.110 stealthchop_threshold: 999999 ## Z1 Stepper - Rear Left ## Connected to MOTOR_3 [stepper_z1] step_pin: PG4 dir_pin: !PC1 enable_pin: !PA0 rotation_distance: 40 gear_ratio: 80:16 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.8 sense_resistor: 0.110 stealthchop_threshold: 999999 ## Z2 Stepper - Rear Right ## Connected to MOTOR_4 [stepper_z2] step_pin: PF9 dir_pin: PF10 enable_pin: !PG2 rotation_distance: 40 gear_ratio: 80:16 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.8 sense_resistor: 0.110 stealthchop_threshold: 999999 ## Z3 Stepper - Front Right ## Connected to MOTOR_5 [stepper_z3] step_pin: PC13 dir_pin: !PF0 enable_pin: !PF1 rotation_distance: 40 gear_ratio: 80:16 microsteps: 32 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 stepper_z3] uart_pin: PE4 interpolate: false run_current: 0.8 sense_resistor: 0.110 stealthchop_threshold: 999999 ##################################################################### # Extruder ##################################################################### ## Connected to MOTOR_6 ## Heater - HE0 ## Thermistor - T0 [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 = * / 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:10 for Stealthburner/Clockwork 2 ## 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.400 filament_diameter: 1.75 heater_pin: PA2 ## 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: ATC Semitec 104NT-4-R025H42G 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 ## E0 on MOTOR6 ## Make sure to update below for your relevant driver (2208 or 2209) [tmc2209 extruder] uart_pin: PE1 interpolate: false run_current: 0.5 sense_resistor: 0.110 stealthchop_threshold: 0 ##################################################################### # Bed Heater ##################################################################### ## SSR Pin - HE1 ## Thermistor - TB [heater_bed] heater_pin: PA1 ## Validate the following thermistor type to make sure it is correct ## Keenovo branded bed heaters should use Generic 3950 ## LDO branded bed heaters will have the sensor type labelled on the heater ## 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: ATC Semitec 104NT-4-R025H42G 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.7 min_temp: 0 max_temp: 120 #control: pid #pid_kp: 58.437 #pid_ki: 2.347 #pid_kd: 363.769 ##################################################################### # Probe ##################################################################### ## Inductive Probe ## This probe is not used for Z height, only Quad Gantry Leveling [probe] pin: PG15 x_offset: 0 y_offset: 0 #z_offset: 0 speed: 10.0 samples: 5 samples_result: median sample_retract_dist: 3.0 samples_tolerance: 0.01 samples_tolerance_retries: 5 activate_gcode: {% 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 %} ##################################################################### # Fan Control ##################################################################### ## Print Cooling Fan - FAN0 [fan] pin: PA8 kick_start_time: 2 ## 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 ## Hotend Fan - FAN1 [heater_fan hotend_fan] pin: PE5 max_power: 1.0 kick_start_time: 4 heater: extruder heater_temp: 50.0 ## If you are experiencing back flow, you can reduce fan_speed #fan_speed: 1.0 ## Controller fan - FAN2 [controller_fan controller_fan] pin: PD12 kick_start_time: 0.5 heater: heater_bed fan_speed: 0.5 [bed_mesh] speed: 200 horizontal_move_z: 10 mesh_min: 40, 40 mesh_max: 260,260 probe_count: 5,5 fade_start: 0.6 fade_end: 10.0 algorithm: bicubic ## Exhaust fan - FAN3 [heater_fan exhaust_fan] 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 - CNC_FAN5 pin: PD15 pwm:true shutdown_value: 0 value:0 cycle_time: 0.01 [neopixel headlight] ## Stealthburner lighting - RGB_LED pin: PB0 chain_count: 3 color_order: GRBW initial_RED: 0.0 initial_GREEN: 0.0 initial_BLUE: 0.0 initial_WHITE: 0.0 ##################################################################### # Additional Sensors ##################################################################### [temperature_sensor chamber] ## Chamber Temperature - T1 sensor_type: ATC Semitec 104NT-4-R025H42G sensor_pin: PF5 min_temp: 0 max_temp: 100 gcode_id: chamber_th ##################################################################### # Homing and Gantry Adjustment Routines ##################################################################### [idle_timeout] timeout: 7200 [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:150,150 speed:100 z_hop:10 z_hop_speed:10 ## Use QUAD_GANTRY_LEVEL to level a gantry. ## Min & Max gantry corners - measure from nozzle at MIN (0,0) and ## MAX (250, 250), (300,300), or (350,350) depending on your printer size ## to respective belt positions [quad_gantry_level] #-------------------------------------------------------------------- ## Gantry Corners for 250mm Build ## Uncomment for 250mm build #gantry_corners: # -60,-10 # 310, 320 ## Probe points #points: # 50,25 # 50,175 # 200,175 # 200,25 ## Gantry Corners for 300mm Build ## Uncomment for 300mm build gantry_corners: -60,-10 360,370 # Probe points points: 50,25 50,225 250,225 250,25 ## Gantry Corners for 350mm Build ## Uncomment for 350mm build #gantry_corners: # -60,-10 # 410,420 ## Probe points #points: # 50,25 # 50,275 # 300,275 # 300,25 #-------------------------------------------------------------------- speed: 100 horizontal_move_z: 10 retries: 5 retry_tolerance: 0.0075 max_adjust: 10 ######################################## # 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=, 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=, EXP2_9=, EXP2_10=<5V> ##################################################################### # Displays ##################################################################### #[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 #-------------------------------------------------------------------- ##################################################################### # Macros ##################################################################### [gcode_macro G32] gcode: #BED_MESH_CLEAR #_CG28 #QUAD_GANTRY_LEVEL #G28 Z ## *** THINGS TO UNCOMMENT: *** ## Bed mesh (2 lines at 2 locations) ## Z_TILT_ADJUST if your printer is a Trident ## Quad gantry level if your printer is a V2 ## Nevermore - if you have one [gcode_macro PRINT_START] gcode: # This part fetches data from your slicer. Such as bed temp, extruder temp, chamber temp and size of your printer. {% set target_bed = params.BED|int %} {% set target_extruder = params.EXTRUDER|int %} {% set target_chamber = params.CHAMBER|default("40")|int %} {% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %} {% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %} # Homes the printer, sets absolute positioning and updates the Stealthburner leds. STATUS_HOMING # Sets SB-leds to homing-mode G28 # Full home (XYZ) G90 # Absolut position ## Uncomment for bed mesh (1 of 2) BED_MESH_CLEAR # Clears old saved bed mesh (if any) # Checks if the bed temp is higher than 90c - if so then trigger a heatsoak. {% if params.BED|int > 90 %} SET_DISPLAY_TEXT MSG="Bed: {target_bed}c" # Displays info STATUS_HEATING # Sets SB-leds to heating-mode M106 S255 # Turns on the PT-fan ## Uncomment if you have a Nevermore. #SET_PIN PIN=nevermore VALUE=1 # Turns on the nevermore G1 X{x_wait} Y{y_wait} Z15 F9000 # Goes to center of the bed M190 S{target_bed} # Sets the target temp for the bed SET_DISPLAY_TEXT MSG="Heatsoak: {target_chamber}c" # Displays info TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber} # Waits for chamber to reach desired temp # If the bed temp is not over 90c, then it skips the heatsoak and just heats up to set temp with a 5min soak {% else %} SET_DISPLAY_TEXT MSG="Bed: {target_bed}c" # Displays info STATUS_HEATING # Sets SB-leds to heating-mode G1 X{x_wait} Y{y_wait} Z15 F9000 # Goes to center of the bed M190 S{target_bed} # Sets the target temp for the bed SET_DISPLAY_TEXT MSG="Soak for 5min" # Displays info G4 P300000 # Waits 5 min for the bedtemp to stabilize {% endif %} # Heating nozzle to 150 degrees. This helps with getting a correct Z-home SET_DISPLAY_TEXT MSG="Hotend: 150c" # Displays info M109 S150 # Heats the nozzle to 150c ## Uncomment for V2 (Quad gantry level AKA QGL) SET_DISPLAY_TEXT MSG="QGL" # Displays info STATUS_LEVELING # Sets SB-leds to leveling-mode quad_gantry_level # Levels the buildplate via QGL G28 Z # Homes Z again after QGL ## Uncomment for bed mesh (2 of 2) SET_DISPLAY_TEXT MSG="Bed mesh" # Displays info STATUS_MESHING # Sets SB-leds to bed mesh-mode bed_mesh_calibrate # Starts bed mesh # Heats up the nozzle up to target via data from slicer SET_DISPLAY_TEXT MSG="Hotend: {target_extruder}c" # Displays info STATUS_HEATING # Sets SB-leds to heating-mode G1 X{x_wait} Y{y_wait} Z15 F9000 # Goes to center of the bed M107 # Turns off partcooling fan M109 S{target_extruder} # Heats the nozzle to printing temp # Gets ready to print by doing a purge line and updating the SB-leds SET_DISPLAY_TEXT MSG="Printer goes brr" # Displays info STATUS_PRINTING # Sets SB-leds to printing-mode G0 X{x_wait - 50} Y4 F10000 # Moves to starting point G0 Z0.4 # Raises Z to 0.4 G91 # Incremental positioning G1 X100 E20 F1000 # Purge line G90 # Absolut position # Use PRINT_END for the slicer ending script - please customise for your slicer of choice [gcode_macro PRINT_END] 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 RESTORE_GCODE_STATE NAME=STATE_PRINT_END #*# <---------------------- SAVE_CONFIG ----------------------> #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. #*# #*# [heater_bed] #*# control = pid #*# pid_kp = 38.412 #*# pid_ki = 1.237 #*# pid_kd = 298.171 #*# #*# [extruder] #*# control = pid #*# pid_kp = 16.225 #*# pid_ki = 1.215 #*# pid_kd = 54.151 #*# #*# [probe] #*# z_offset = -1.500