Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # This file contains pin mappings for the LDO Kit using BigTreeTech Octopus V1 as the main controller.
- # 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
- ## Thermistor types [extruder] and [heater_bed] sections
- ## Probe pin [probe] section
- ## Fine tune E steps [extruder] section
- [include mainsail.cfg]
- [include led_progress.cfg]
- [include nozzle_scrub.cfg]
- [mcu]
- ## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify
- ##--------------------------------------------------------------------
- serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_250024001550535556323420-if00
- restart_method: command
- ##--------------------------------------------------------------------
- [temperature_sensor MCU]
- sensor_type: temperature_mcu
- [temperature_sensor PI]
- sensor_type: temperature_host
- [printer]
- kinematics: corexy
- max_velocity: 500
- max_accel: 10000
- 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 MOTOR0
- ## Endstop connected to DIAG0
- [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: 50 #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: 1
- sense_resistor: 0.110
- stealthchop_threshold: 0
- ## A Stepper - Right
- ## Connected to MOTOR1
- ## Endstop connected to DIAG1
- [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: 357
- position_max: 357
- ##--------------------------------------------------------------------
- homing_speed: 50 #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: 1
- sense_resistor: 0.110
- stealthchop_threshold: 0
- #####################################################################
- # Z Stepper Settings
- #####################################################################
- ## Z0 Stepper - Front Left
- ## Connected to MOTOR2_1
- ## 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
- ##--------------------------------------------------------------------
- ## 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 MOTOR3
- [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 MOTOR4
- [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 MOTOR5
- [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 = <previous_rotation_distance> * <actual_extrude_distance> / 100
- ## 22.6789511 is a good starting point
- rotation_distance: 21.8749822835 #22.905740611 #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: 32
- full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
- nozzle_diameter: 0.800
- filament_diameter: 1.75
- heater_pin: PA3
- ## Validate the following thermistor type to make sure it is correct
- ## See https://www.klipper3d.org/Config_Reference.html#common-thermistors for additional options
- sensor_type: ATC Semitec 104NT-4-R025H42G
- sensor_pin: PF4
- min_temp: 0
- max_temp: 290
- max_power: 1.0
- min_extrude_temp: 0 #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.0485
- ## Default is 0.040, leave stock
- #pressure_advance_smooth_time: 0.040
- max_extrude_only_distance: 101
- ## 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
- #####################################################################
- [heater_bed]
- ## SSR Pin - HE1
- ## Thermistor - TB
- heater_pin: PA1
- ## Validate the following thermistor type to make sure it is correct
- ## See https://www.klipper3d.org/Config_Reference.html#common-thermistors for additional options
- 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 - DIAG7
- ## This probe is not used for Z height, only Quad Gantry Leveling
- pin: PG15
- x_offset: 0
- y_offset: 25.0
- z_offset: 0
- speed: 10.0
- samples: 5
- samples_result: median
- sample_retract_dist: 3.0
- samples_tolerance: 0.006
- samples_tolerance_retries: 5
- #####################################################################
- # Fan Control
- #####################################################################
- [fan]
- ## Print Cooling Fan - CNC_FAN0
- 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
- shutdown_speed: 1.0
- off_below: 0.10
- [heater_fan hotend_fan]
- ## Hotend Fan - CNC_FAN1
- 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 controller_fan]
- ## Controller fan - CNC_FAN2
- pin: PD12
- kick_start_time: 0.5
- heater: heater_bed
- shutdown_speed: 1.0
- fan_speed: 0.5
- [fan_generic filter_fan]
- # Filter fan - CNC_FAN3
- pin: PD13
- max_power: 1.0
- shutdown_speed: 1.0
- kick_start_time: 5.0
- #####################################################################
- # LED Control
- #####################################################################
- [output_pin caselight]
- ## Chamber Lighting - CNC_FAN5
- pin: PD15
- pwm:true
- shutdown_value: 0
- value:0
- cycle_time: 0.01
- #####################################################################
- # Additional Sensors
- #####################################################################
- [thermistor CMFB103F3950FANT]
- temperature1: 0.0
- resistance1: 32116.0
- temperature2: 40.0
- resistance2: 5309.0
- temperature3: 80.0
- resistance3: 1228.0
- [temperature_sensor chamber_temp]
- ## Chamber Temperature - T1
- sensor_type: CMFB103F3950FANT
- sensor_pin: PF5
- min_temp: 0
- max_temp: 100
- gcode_id: chamber_th
- [mcu rpi]
- serial: /tmp/klipper_host_mcu
- [adxl345]
- cs_pin: rpi:None
- [resonance_tester]
- accel_chip: adxl345
- probe_points:
- 175, 175, 20 # an example
- [input_shaper]
- shaper_freq_x: 54.0
- shaper_type_x: zv
- shaper_freq_y: 39.0
- shaper_type_y: mzv
- [printer]
- max_accel: 4300 # should not exceed the estimated max_accel for X and Y axes
- [filament_switch_sensor switch_sensor]
- switch_pin: PG13
- pause_on_runout: False
- runout_gcode:
- PAUSE # [pause_resume] is required in printer.cfg
- M117 Filament switch runout
- insert_gcode:
- M117 Filament switch inserted
- [filament_motion_sensor encoder_sensor]
- switch_pin: PG12
- detection_length: 2.88
- extruder: extruder
- pause_on_runout: False
- runout_gcode:
- PAUSE # [pause_resume] is required in printer.cfg
- M117 Filament encoder runout
- insert_gcode:
- M117 Filament encoder inserted
- #####################################################################
- # 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:232.3,354.0
- speed:100
- z_hop:10
- z_hop_speed:10
- [quad_gantry_level]
- ## 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
- #--------------------------------------------------------------------
- ## 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: 400
- horizontal_move_z: 10
- retries: 5
- retry_tolerance: 0.0075
- max_adjust: 10
- [bed_mesh]
- speed: 400
- horizontal_move_z: 5
- mesh_min: 35, 35
- mesh_max: 315, 315
- probe_count: 5, 5
- ########################################
- # 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
- #####################################################################
- [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
- [neopixel sb-neopixel]
- pin: PB0
- chain_count: 3
- initial_RED: 0.0
- initial_GREEN: 0.0
- initial_Blue: 0.0
- initial_WHITE: 1.0
- color_order: GRBW
- [neopixel skirt-neopixel]
- pin: PB6
- chain_count: 8
- initial_RED: 0.0
- initial_GREEN: 0.0
- initial_Blue: 0.0
- color_order: GRB
- ## 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=0 BLUE=0 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
- SET_LED LED=sb-neopixel RED=1 GREEN=0 BLUE=0 WHITE=0 INDEX=1
- SET_LED LED=sb-neopixel RED=1 GREEN=0 BLUE=0 WHITE=0 INDEX=2
- SET_LED LED=sb-neopixel RED=1 GREEN=0 BLUE=0 WHITE=0 INDEX=3
- [delayed_gcode setskirtneopixel]
- initial_duration: 5
- gcode:
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=1
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=2
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=3
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=4
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=5
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=6
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=7
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=8
- [output_pin beeper]
- pin: EXP1_1
- value: 0
- shutdown_value: 0
- pwm: True
- cycle_time: 0.0005 ; Default beeper tone in kHz. 1 / 0.0005 = 2000Hz (2kHz)
- [gcode_macro BEEP]
- gcode:
- # Parameters
- {% set i = params.I|default(1)|int %} ; Iterations (number of times to beep).
- {% set dur = params.DUR|default(100)|int %} ; Duration/wait of each beep in ms. Default 100ms.
- {% set freq = params.FREQ|default(2000)|int %} ; Frequency in Hz. Default 2kHz.
- {% for iteration in range(i|int) %}
- SET_PIN PIN=beeper VALUE=0.8 CYCLE_TIME={ 1.0/freq if freq > 0 else 1 }
- G4 P{dur}
- SET_PIN PIN=beeper VALUE=0
- G4 P{dur}
- {% endfor %}
- #--------------------------------------------------------------------
- #####################################################################
- # Macros
- #####################################################################
- [exclude_object]
- [gcode_macro G32]
- gcode:
- G28
- QUAD_GANTRY_LEVEL
- 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 CG28]
- gcode:
- {% if "xyz" not in printer.toolhead.homed_axes %}
- G28
- {% endif %}
- [gcode_macro PRINT_START]
- # Use PRINT_START for the slicer starting script - please customise for your slicer of choice
- gcode:
- SET_LED LED=sb-neopixel RED=0 GREEN=0 BLUE=0 WHITE=1 INDEX=2
- SET_LED LED=sb-neopixel RED=0 GREEN=0 BLUE=0 WHITE=1 INDEX=3
- SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1
- SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=2
- SET_PIN PIN=caselight VALUE=0.5 ; turn case light off
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=1
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=2
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=3
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=4
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=5
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=6
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=7
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=1 BLUE=1 INDEX=8
- G4 P100;
- G32 ; home all axes
- G1 Z20 F3000 ; move nozzle away from bed
- G1 X20 Y20 F5000 ; move so it doesn't crash into bed on startup
- PRIME_NOZZLE
- NEOPIXEL_DISPLAY LED="skirt-neopixel" TYPE=print_percent MODE=progress
- [delayed_gcode post_print]
- gcode:
- SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 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
- SET_LED LED=sb-neopixel RED=0 GREEN=0 BLUE=0 WHITE=1 INDEX=1
- SET_LED LED=sb-neopixel RED=1 GREEN=0 BLUE=0 WHITE=0 INDEX=2
- SET_LED LED=sb-neopixel RED=1 GREEN=0 BLUE=0 WHITE=0 INDEX=3
- SET_FAN_SPEED FAN=filter_fan SPEED=0
- SET_PIN PIN=caselight VALUE=0 ; turn case light off
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=1
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=2
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=3
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=4
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=5
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=6
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=7
- G4 P100
- SET_LED LED=skirt-neopixel RED=1 GREEN=0 BLUE=0 INDEX=8
- [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-18.0 F800 ; 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
- SET_LED LED=sb-neopixel RED=0 GREEN=1 BLUE=0 WHITE=0 INDEX=2
- SET_LED LED=sb-neopixel RED=0 GREEN=1 BLUE=0 WHITE=0 INDEX=3
- SET_LED LED=btt_mini12864 RED=0 GREEN=1 BLUE=0 INDEX=1
- SET_LED LED=btt_mini12864 RED=0 GREEN=1 BLUE=0 INDEX=2
- SET_FAN_SPEED FAN=filter_fan SPEED=1
- M84;
- UPDATE_DELAYED_GCODE ID=post_print DURATION=600
- [gcode_macro OFF]
- gcode:
- SET_LED LED=sb-neopixel RED=1 GREEN=0 BLUE=0 WHITE=0 INDEX=1
- SET_LED LED=sb-neopixel RED=0 GREEN=0 BLUE=0 WHITE=0 INDEX=2
- SET_LED LED=sb-neopixel RED=0 GREEN=0 BLUE=0 WHITE=0 INDEX=3
- SET_LED LED=btt_mini12864 RED=0 GREEN=0 BLUE=0 INDEX=1
- SET_LED LED=btt_mini12864 RED=0 GREEN=0 BLUE=0 INDEX=2
- SET_LED LED=btt_mini12864 RED=0 GREEN=0 BLUE=0 INDEX=3
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=1
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=2
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=3
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=4
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=5
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=6
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=7
- G4 P500
- SET_LED LED=skirt-neopixel RED=0 GREEN=0 BLUE=0 INDEX=8
- G4 P500
- M84 ; turn steppers off
- TURN_OFF_HEATERS ; turn bed / hotend off
- M107 ; turn print cooling fan off
- #SET_PIN PIN=caselight VALUE=0 ; turn case light off
- [gcode_macro PRIME_NOZZLE]
- gcode:
- # SAVE_GCODE_STATE NAME=STATE_NOZZLE_PRIME
- # G92 E0
- # G1 X0 Y0 F5000;
- # G1 Z0.2 F3000;
- # G1 X300.00 E50 F500.0 ; intro line
- # G4 P10000 ; pause for 10secs to hopefullt finish oozing
- # G1 X0 F5000; Clear intro line
- # RESTORE_GCODE_STATE NAME=STATE_NOZZLE_PRIME
- # G28; rehome ready for print
- CLEAN_NOZZLE
- G1 X20 Y20 F5000 ; move so it doesn't crash into bed on startup
- [gcode_macro SWAP_NOZZLE]
- gcode:
- M104 S0;
- SAVE_GCODE_STATE NAME=STATE_NOZZLE_SWAP
- CG28
- M106;
- G1 X10 Y10 Z100 F3000;
- TEMPERATURE_WAIT SENSOR=extruder MAXIMUM=60;
- M107
- BEEP I=3
- RESTORE_GCODE_STATE NAME=STATE_NOZZLE_SWAP
- [gcode_macro SHUTDOWN]
- gcode:
- #LCDRGB R=0 G=0 B=0 ; Turn off LCD neopixels (see above for this macro)
- OFF ; Shortcut to turn everything off (see above for this macro)
- G4 P500
- M400;
- {action_respond_info('action:poweroff')} ; OctoPrint compatible host shutdown
- {action_call_remote_method("shutdown_machine")} ; Moonraker compatible host shutdown
- [menu __main __control __swapNozzle]
- type: command
- enable: {not printer.idle_timeout.state == "Printing"}
- name: Swap nozzle
- gcode: SWAP_NOZZLE
- [menu __main __control __shutdown]
- type: command
- enable: {not printer.idle_timeout.state == "Printing"}
- name: Shut down
- gcode: SHUTDOWN
- [virtual_sdcard]
- path:~/uploads/
- # [gcode_macro PAUSE]
- # rename_existing: PAUSE_BASE
- # gcode:
- # CLEAR_PAUSE
- # # Parameters
- # {% set z = params.Z|default(10)|int %} ; z hop amount
- # {% if printer['pause_resume'].is_paused|int == 0 %}
- # SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z} ; set z hop variable for reference in resume macro
- # SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target} ; set hotend temp variable for reference in resume macro
- # SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0 ; disable filament sensor
- # SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume
- # BASE_PAUSE ; pause print
- # {% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %} ; check that zhop doesn't exceed z max
- # G91 ; relative positioning
- # G1 Z{z} F900 ; raise Z up by z hop amount
- # {% else %}
- # { action_respond_info("Pause zhop exceeds maximum Z height.") } ; if z max is exceeded, show message and set zhop value for resume to 0
- # SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
- # {% endif %}
- # G90 ; absolute positioning
- # G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} F6000 ; park toolhead at front center
- # SAVE_GCODE_STATE NAME=PAUSEPARK ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error)
- # M104 S0 ; turn off hotend
- # SET_IDLE_TIMEOUT TIMEOUT=43200 ; set timeout to 12 hours
- # {% endif %}
- [gcode_macro RESUME]
- rename_existing: RESUME_BASE
- variable_zhop: 0
- variable_etemp: 0
- gcode:
- # Parameters
- {% set e = params.E|default(2.5)|int %} ; hotend prime amount (in mm)
- {% if printer['pause_resume'].is_paused|int == 1 %}
- SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1 ; enable filament sensor
- #RESETRGB ; reset LCD color
- SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
- {% if etemp > 0 %}
- M109 S{etemp|int} ; wait for hotend to heat back up
- {% endif %}
- RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=100 ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error)
- G91 ; relative positioning
- M83 ; relative extruder positioning
- {% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %}
- G1 Z{zhop * -1} E{e} F900 ; prime nozzle by E, lower Z back down
- {% else %}
- G1 Z{zhop * -1} F900 ; lower Z back down without priming (just in case we are testing the macro with cold hotend)
- {% endif %}
- RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=60 ; restore position
- BASE_RESUME ; resume print
- {% endif %}
- # Home, get position, throw around toolhead, home again.
- # If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured.
- # We only measure to a full step to accomodate for endstop variance.
- # Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10
- [gcode_macro TEST_SPEED]
- gcode:
- # Speed
- {% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
- # Iterations
- {% set iterations = params.ITERATIONS|default(5)|int %}
- # Acceleration
- {% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
- # Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
- {% set bound = params.BOUND|default(20)|int %}
- # Size for small pattern box
- {% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %}
- # Large pattern
- # Max positions, inset by BOUND
- {% set x_min = printer.toolhead.axis_minimum.x + bound %}
- {% set x_max = printer.toolhead.axis_maximum.x - bound %}
- {% set y_min = printer.toolhead.axis_minimum.y + bound %}
- {% set y_max = printer.toolhead.axis_maximum.y - bound %}
- # Small pattern at center
- # Find X/Y center point
- {% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %}
- {% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %}
- # Set small pattern box around center point
- {% set x_center_min = x_center - (smallpatternsize/2) %}
- {% set x_center_max = x_center + (smallpatternsize/2) %}
- {% set y_center_min = y_center - (smallpatternsize/2) %}
- {% set y_center_max = y_center + (smallpatternsize/2) %}
- # Save current gcode state (absolute/relative, etc)
- SAVE_GCODE_STATE NAME=TEST_SPEED
- # Output parameters to g-code terminal
- { action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) }
- # Home and get position for comparison later:
- G28
- # QGL if not already QGLd (only if QGL section exists in config)
- {% if printer.configfile.settings.quad_gantry_level %}
- {% if printer.quad_gantry_level.applied == False %}
- QUAD_GANTRY_LEVEL
- G28 Z
- {% endif %}
- {% endif %}
- G90
- G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
- G4 P1000
- GET_POSITION
- # Go to starting position
- G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}
- # Set new limits
- SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}
- {% for i in range(iterations) %}
- # Large pattern
- # Diagonals
- G0 X{x_min} Y{y_min} F{speed*60}
- G0 X{x_max} Y{y_max} F{speed*60}
- G0 X{x_min} Y{y_min} F{speed*60}
- G0 X{x_max} Y{y_min} F{speed*60}
- G0 X{x_min} Y{y_max} F{speed*60}
- G0 X{x_max} Y{y_min} F{speed*60}
- # Box
- G0 X{x_min} Y{y_min} F{speed*60}
- G0 X{x_min} Y{y_max} F{speed*60}
- G0 X{x_max} Y{y_max} F{speed*60}
- G0 X{x_max} Y{y_min} F{speed*60}
- # Small pattern
- # Small diagonals
- G0 X{x_center_min} Y{y_center_min} F{speed*60}
- G0 X{x_center_max} Y{y_center_max} F{speed*60}
- G0 X{x_center_min} Y{y_center_min} F{speed*60}
- G0 X{x_center_max} Y{y_center_min} F{speed*60}
- G0 X{x_center_min} Y{y_center_max} F{speed*60}
- G0 X{x_center_max} Y{y_center_min} F{speed*60}
- # Small box
- G0 X{x_center_min} Y{y_center_min} F{speed*60}
- G0 X{x_center_min} Y{y_center_max} F{speed*60}
- G0 X{x_center_max} Y{y_center_max} F{speed*60}
- G0 X{x_center_max} Y{y_center_min} F{speed*60}
- {% endfor %}
- # Restore max speed/accel/accel_to_decel to their configured values
- SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
- # Re-home and get position again for comparison:
- G28
- # Go to XY home positions (in case your homing override leaves it elsewhere)
- G90
- G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
- G4 P1000
- GET_POSITION
- # Restore previous gcode state (absolute/relative, etc)
- RESTORE_GCODE_STATE NAME=TEST_SPEED
- # The path of the local directory on the host machine to look for
- # g-code files. This is a read-only directory (sdcard file writes
- # are not supported). One may point this to OctoPrint's upload
- # directory (generally ~/.octoprint/uploads/ ). This parameter must
- # be provided.
- #*# <---------------------- SAVE_CONFIG ---------------------->
- #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
- #*#
- #*# [heater_bed]
- #*# control = pid
- #*# pid_kp = 39.781
- #*# pid_ki = 1.434
- #*# pid_kd = 275.983
- #*#
- #*# [extruder]
- #*# control = pid
- #*# pid_kp = 37.838
- #*# pid_ki = 6.818
- #*# pid_kd = 52.500
- #*#
- #*# [stepper_z]
- #*# position_endstop = 2.525
Advertisement
Add Comment
Please, Sign In to add comment