Voron 2.4 Canbus Build: Difference between revisions
No edit summary |
|||
| Line 41: | Line 41: | ||
#* Over USB from PI via DFU | #* Over USB from PI via DFU | ||
#* From memory card (recommended) | #* From memory card (recommended) | ||
# Install printer.cfg from | # Install default printer.cfg from BTT | ||
<syntaxhighlight lang=ini> | |||
[include mainsail.cfg] | |||
[include ebb.cfg] | |||
[mcu] | |||
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_1E0035000751313031393839-if00 | |||
[printer] | |||
kinematics: corexy | |||
max_velocity: 300 | |||
max_accel: 4000 #Max 4000 | |||
max_z_velocity: 30 #Max 15 for 12V TMC Drivers, can increase for 24V | |||
max_z_accel: 350 | |||
square_corner_velocity: 8.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 300mm build | |||
position_endstop: 300 | |||
position_max: 300 | |||
##-------------------------------------------------------------------- | |||
homing_speed: 60 #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:200 #set to 400 for 0.9 degree stepper | |||
endstop_pin: PG9 | |||
position_min: 0 | |||
position_endstop: 300 | |||
position_max: 300 | |||
##-------------------------------------------------------------------- | |||
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 | |||
## 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: 260 | |||
##-------------------------------------------------------------------- | |||
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: 0 | |||
## Z1 Stepper - Rear Left | |||
## Connected to MOTOR_3 | |||
[stepper_z1] | |||
step_pin: PG4 | |||
dir_pin: PC1 | |||
## Octopus 1.0 & 1.1. Octopus PRO 1.0 | |||
#enable_pin: !PA0 | |||
## Octopus PRO 1.1 | |||
#enable_pin: !PA2 | |||
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: 0 | |||
## 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: 0 | |||
## 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: 0 | |||
##################################################################### | |||
# 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 = <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: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 | |||
# 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 | |||
# ## Octopus 1.0 & 1.1. Octopus PRO 1.0 | |||
# heater_pin: PA2 | |||
# ## Octopus PRO 1.1 | |||
# #heater_pin: PA0 | |||
# ## 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: | |||
# sensor_type: ATC Semitec 104GT-2 | |||
# sensor_pin: PF4 | |||
# min_temp: 10 | |||
# max_temp: 270 | |||
# max_power: 1.0 | |||
# min_extrude_temp: 160 | |||
# 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] | |||
## Uncomment the following line if using the default SSR wiring from the docs site | |||
heater_pin: PA3 | |||
## Other wiring guides may use BED_OUT to control the SSR. Uncomment the following line for those cases | |||
#heater_pin: PA1 | |||
## 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 it doesn't exceed the SSR rating. The Omron G3NA-210B-DC5 SSR is rated at 4 amps without a heatsink. | |||
## The formula is "4 / (Wattage_of_bed_heater / Mains_voltage) = max_power" | |||
## If max_power is greater than 1.0, use 1.0 | |||
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 | |||
##################################################################### | |||
## Inductive Probe | |||
## This probe is not used for Z height, only Quad Gantry Leveling | |||
[probe] | |||
#-------------------------------------------------------------------- | |||
## 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: 25.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 | |||
##################################################################### | |||
# ## Print Cooling Fan - FAN0 | |||
# [fan] | |||
# pin: PA8 | |||
# 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 | |||
# ## Hotend Fan - FAN1 | |||
# [heater_fan hotend_fan] | |||
# pin: PE5 | |||
# 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 - FAN2 | |||
[controller_fan controller_fan] | |||
pin: PD12 | |||
kick_start_time: 0.5 | |||
heater: heater_bed | |||
## 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 | |||
##################################################################### | |||
## Chamber Lighting - HE2 Connector (Optional) | |||
#[output_pin caselight] | |||
##Octopus 1.0 & 1.1, Octopus PRO 1.0 | |||
#pin: PB10 | |||
##Octopus PRO 1.1 | |||
#pin: PB0 | |||
#pwm:true | |||
#shutdown_value: 0 | |||
#value:1 | |||
#cycle_time: 0.01 | |||
##################################################################### | |||
# 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:-10,-10 | |||
speed:100 | |||
z_hop: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: | |||
-60,-10 | |||
360,370 | |||
points: | |||
50,25 | |||
50,275 | |||
250,275 | |||
250,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=<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 | |||
#-------------------------------------------------------------------- | |||
## RepRapDiscount 128x64 Full Graphic Smart Controller | |||
#[display] | |||
#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 | |||
#-------------------------------------------------------------------- | |||
## mini12864 LCD Display | |||
#[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 | |||
## To control Neopixel RGB in mini12864 display | |||
#[neopixel btt_mini12864] | |||
#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 _PARK] | |||
gcode: | |||
{% set th = printer.toolhead %} | |||
G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30 | |||
[gcode_macro G32] | |||
gcode: | |||
SAVE_GCODE_STATE NAME=STATE_G32 | |||
G90 | |||
G28 | |||
QUAD_GANTRY_LEVEL | |||
G28 | |||
PARK | |||
RESTORE_GCODE_STATE NAME=STATE_G32 | |||
[gcode_macro _PRINT_START] | |||
# Use PRINT_START for the slicer starting script - please customise for your slicer of choice | |||
gcode: | |||
G32 ; home all axes | |||
G90 ; absolute positioning | |||
G1 Z20 F3000 ; move nozzle away from bed | |||
[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 | |||
# 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 | |||
</syntaxhighlight> | |||
== Install Klipper to EBB == | == Install Klipper to EBB == | ||
Latest revision as of 05:07, 6 January 2026
Hardware
- BigTreeTech Octopus 1.0
- BigTreeTech BTT Pi v 1.2.1 (Klipper)
- BigTreeTech SB2209 CAN/USB for Voron Stealthburner
- Voron Tap R8 Probe Kit
- BigTreeTech BTT Pi 2
OS Install
Download and install the base Klipper kernel
- See [1] for the BTT Pi 1 image
- Find the pi on the network and login to pi as root/root
Install Klipper, Moonraker and Mainsail
Install KIAUH (cannot install as root)
sudo apt-get update && sudo apt-get install git -y
cd ~ && git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh
Follow prompts to install various components
Install Klipper to Octopus
See https://docs.vorondesign.com/build/software/octopus_klipper.html
cd ~/klipper
make menuconfig
# Enable extra low-level configuration options
# Micro-controller Architecture (STMicroelectronics STM32) --->
# Processor model (STM32F446) --->
# Bootloader offset (32KiB bootloader) --->
# Clock Reference (12 MHz crystal) --->
make
- Install firmeware to Octopus from file created at out/klipper.bin:
- Over USB from PI via DFU
- From memory card (recommended)
- Install default printer.cfg from BTT
[include mainsail.cfg]
[include ebb.cfg]
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_1E0035000751313031393839-if00
[printer]
kinematics: corexy
max_velocity: 300
max_accel: 4000 #Max 4000
max_z_velocity: 30 #Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 350
square_corner_velocity: 8.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 300mm build
position_endstop: 300
position_max: 300
##--------------------------------------------------------------------
homing_speed: 60 #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:200 #set to 400 for 0.9 degree stepper
endstop_pin: PG9
position_min: 0
position_endstop: 300
position_max: 300
##--------------------------------------------------------------------
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
## 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: 260
##--------------------------------------------------------------------
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: 0
## Z1 Stepper - Rear Left
## Connected to MOTOR_3
[stepper_z1]
step_pin: PG4
dir_pin: PC1
## Octopus 1.0 & 1.1. Octopus PRO 1.0
#enable_pin: !PA0
## Octopus PRO 1.1
#enable_pin: !PA2
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: 0
## 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: 0
## 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: 0
#####################################################################
# 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 = <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: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
# 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
# ## Octopus 1.0 & 1.1. Octopus PRO 1.0
# heater_pin: PA2
# ## Octopus PRO 1.1
# #heater_pin: PA0
# ## 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:
# sensor_type: ATC Semitec 104GT-2
# sensor_pin: PF4
# min_temp: 10
# max_temp: 270
# max_power: 1.0
# min_extrude_temp: 160
# 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]
## Uncomment the following line if using the default SSR wiring from the docs site
heater_pin: PA3
## Other wiring guides may use BED_OUT to control the SSR. Uncomment the following line for those cases
#heater_pin: PA1
## 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 it doesn't exceed the SSR rating. The Omron G3NA-210B-DC5 SSR is rated at 4 amps without a heatsink.
## The formula is "4 / (Wattage_of_bed_heater / Mains_voltage) = max_power"
## If max_power is greater than 1.0, use 1.0
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
#####################################################################
## Inductive Probe
## This probe is not used for Z height, only Quad Gantry Leveling
[probe]
#--------------------------------------------------------------------
## 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: 25.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
#####################################################################
# ## Print Cooling Fan - FAN0
# [fan]
# pin: PA8
# 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
# ## Hotend Fan - FAN1
# [heater_fan hotend_fan]
# pin: PE5
# 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 - FAN2
[controller_fan controller_fan]
pin: PD12
kick_start_time: 0.5
heater: heater_bed
## 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
#####################################################################
## Chamber Lighting - HE2 Connector (Optional)
#[output_pin caselight]
##Octopus 1.0 & 1.1, Octopus PRO 1.0
#pin: PB10
##Octopus PRO 1.1
#pin: PB0
#pwm:true
#shutdown_value: 0
#value:1
#cycle_time: 0.01
#####################################################################
# 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:-10,-10
speed:100
z_hop: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:
-60,-10
360,370
points:
50,25
50,275
250,275
250,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=<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
#--------------------------------------------------------------------
## RepRapDiscount 128x64 Full Graphic Smart Controller
#[display]
#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
#--------------------------------------------------------------------
## mini12864 LCD Display
#[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
## To control Neopixel RGB in mini12864 display
#[neopixel btt_mini12864]
#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 _PARK]
gcode:
{% set th = printer.toolhead %}
G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y//2} Z30
[gcode_macro G32]
gcode:
SAVE_GCODE_STATE NAME=STATE_G32
G90
G28
QUAD_GANTRY_LEVEL
G28
PARK
RESTORE_GCODE_STATE NAME=STATE_G32
[gcode_macro _PRINT_START]
# Use PRINT_START for the slicer starting script - please customise for your slicer of choice
gcode:
G32 ; home all axes
G90 ; absolute positioning
G1 Z20 F3000 ; move nozzle away from bed
[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
# 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
Install Klipper to EBB
NOTE: It's important to flip the switch on the EBB card from PT -> NTC for your extruder thermistor.
cd ~/klipper
make menuconfig
# Enable extra low-level configuration options
# Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
# Processor model (rp2040) --->
# Bootloader offset (No bootloader) --->
# Flash chip (W25Q080 with CLKDIV 2) --->
# Communication Interface (USBSERIAL) --->
# USB ids --->
#[*] Optimize stepper code for 'step on both edges'
#() GPIO pins to set at micro-controller startup
make
Put Canbus processor in DFU mode by pressing and holding BOOT and then the RST button breifly:
Verify we're in DFU mode by looking for this in the lsusb command:
Bus 002 Device 003: ID 2e8a:0003 Raspberry Pi RP2 BootNote the device ID (2e8a:0003) and type in console from the klipper directory:
make flash FLASH_DEVICE=2e8a:0003
Flashing out/klipper.uf2 to 2e8a:0003
sudo lib/rp2040_flash/rp2040_flash out/klipper.uf2
[sudo] password for bpopp:
Loaded UF2 image with 162 pages
Found rp2040 device on USB bus 2 address 3
Flashing...
Resetting interface
Locking
Exiting XIP mode
Erasing
Flashing
Rebooting device
Verify that the device now shows up under /dev/serial/by-id:
ls /dev/serial/by-id
usb-Klipper_rp2040_50443403101D961C-if00
usb-Klipper_stm32f446xx_1E0035000751313031393839-if00Create a config file for the EBB in Mainsail:
# This file contains common pin mappings for the BIGTREETECH EBBCan
# Canbus board. To use this config, the firmware should be compiled for the
# STM32F072 with "8 MHz crystal" and "USB (on PA11/PA12)" or "CAN bus (on PB8/PB9)".
# The "EBB Can" micro-controller will be used to control the components on the nozzle.
# See docs/Config_Reference.md for a description of parameters.
[mcu EBBCan]
serial: /dev/serial/by-id/usb-Klipper_rp2040_50443403101D961C-if00
[temperature_sensor EBB_NTC]
sensor_type: Generic 3950
sensor_pin: EBBCan:gpio27
[adxl345]
cs_pin: EBBCan:gpio1
spi_software_sclk_pin: EBBCan:gpio2
spi_software_mosi_pin: EBBCan:gpio0
spi_software_miso_pin: EBBCan:gpio3
axes_map: z,-y,x
[resonance_tester]
probe_points: 100, 100, 20
accel_chip: adxl345
[extruder]
step_pin: EBBCan:gpio18
dir_pin: !EBBCan:gpio19
enable_pin: !EBBCan:gpio17
gear_ratio: 50:10 #BMG Gear Ratio
microsteps: 16
rotation_distance: 22.5078095278
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: EBBCan:gpio7
sensor_type: NTC 100K MGB18-104F39050L32
pullup_resistor: 2200 # 2.2K
sensor_pin: EBBCan:gpio26
control: pid
pid_Kp: 19.939
pid_Ki: 0.636
pid_Kd: 156.259
min_temp: -50
max_temp: 250
min_extrude_temp: 150
# pressure_advance: 0.055
# pressure_advance_smooth_time: 0.040
[tmc2209 extruder]
uart_pin: EBBCan:gpio20
run_current: 0.65
stealthchop_threshold: 999999
# sense_resistor: 0.110
[fan]
pin: EBBCan:gpio4
max_power: 0.5
[heater_fan hotend_fan]
pin: EBBCan:gpio14
heater: extruder
heater_temp: 50.0
[neopixel hotend_rgb]
pin: EBBCan:gpio16
# [bltouch]
# sensor_pin: ^EBBCan:gpio21
# control_pin: EBBCan:gpio22