Autocommit from 2025-05-17 18:33:54
Klipper version: v0.13.0-114-g841a9ca2 Moonraker version: v0.9.3-74-g1c12414 Mainsail version: v2.14.0
This commit is contained in:
123
mmu/base/bigtreetech-mmb-ercf.cfg.bkp
Normal file
123
mmu/base/bigtreetech-mmb-ercf.cfg.bkp
Normal file
@@ -0,0 +1,123 @@
|
||||
[mcu ercf]
|
||||
canbus_uuid=a76ed81c1ca6
|
||||
|
||||
# FILAMENT DRIVE GEAR STEPPER ---------------------------------------------------------------------------------------------
|
||||
# Adapt accordingly to your setup and desires
|
||||
# The default values are tested with the BOM NEMA14 motor
|
||||
# Please adapt these values to the motor you are using
|
||||
# Example : for NEMA17 motors, you'll usually set the stealthchop_threshold to 0
|
||||
# and use higher current
|
||||
[tmc2209 manual_extruder_stepper gear_stepper]
|
||||
uart_pin: ercf:PA10
|
||||
# uart_address: 0
|
||||
interpolate: True
|
||||
run_current: 0.9 # NEMA14 motor
|
||||
hold_current: 0.4 # Can be small
|
||||
sense_resistor: 0.110
|
||||
stealthchop_threshold: 0 # 999999 to enable stealthChop
|
||||
driver_IHOLDDELAY: 8
|
||||
driver_TPOWERDOWN: 20
|
||||
driver_TBL: 2
|
||||
driver_TOFF: 3
|
||||
driver_HEND: 1
|
||||
driver_HSTRT: 3
|
||||
driver_PWM_AUTOGRAD: True
|
||||
driver_PWM_AUTOSCALE: True
|
||||
driver_PWM_LIM: 12
|
||||
driver_PWM_REG: 8
|
||||
driver_PWM_FREQ: 1
|
||||
driver_PWM_GRAD: 14
|
||||
driver_PWM_OFS: 36
|
||||
driver_SGTHRS: 0
|
||||
|
||||
[manual_extruder_stepper gear_stepper]
|
||||
step_pin: ercf:PB15
|
||||
dir_pin: ercf:PB14
|
||||
enable_pin: !ercf:PA8 # V1.0
|
||||
# enable_pin: !ercf:PB8 # V1.1
|
||||
rotation_distance: 22.7316868 # Bondtech 5mm Drive Gears. Must be manually verified and tuned.
|
||||
gear_ratio: 50:17
|
||||
microsteps: 8 # Recommend 8 or 16. Try both to avoid Klipper 'Timer too close' error (also try adjusting num_moves)
|
||||
full_steps_per_rotation: 200 # 200 for 1.8 degree, 400 for 0.9 degree
|
||||
velocity: 50
|
||||
accel: 400
|
||||
#
|
||||
# Uncomment if you want to use sensorless SELECTOR with the ERCF EASY BRD (yes, this is on the gear stepper!)
|
||||
# This should be the pin of the physical selector endstop and is used to determine the difference between the true
|
||||
# endstop and a blockage preventing selector movement. Don't forget to set 'sensorless_selector: 0' in ercf_parameters.cfg
|
||||
endstop_pin: ^ercf:PD9 # Comment if using physical endstop switch (default)
|
||||
|
||||
|
||||
# SELECTOR STEPPER --------------------------------------------------------------------------------------------------------
|
||||
[tmc2209 manual_stepper selector_stepper]
|
||||
uart_pin: ercf:PC7
|
||||
# uart_address: 1
|
||||
run_current: 0.8 # NEMA17 motor
|
||||
hold_current: 0.3 # Can be small if not using sensorless selector
|
||||
interpolate: True
|
||||
sense_resistor: 0.0750
|
||||
stealthchop_threshold: 0 # 999999 to enable stealthChop
|
||||
driver_IHOLDDELAY: 8
|
||||
driver_TPOWERDOWN: 20
|
||||
driver_TBL: 2
|
||||
driver_TOFF: 3
|
||||
driver_HEND: 1
|
||||
driver_HSTRT: 3
|
||||
driver_PWM_AUTOGRAD: True
|
||||
driver_PWM_AUTOSCALE: True
|
||||
driver_PWM_LIM: 12
|
||||
driver_PWM_REG: 8
|
||||
driver_PWM_FREQ: 1
|
||||
driver_PWM_GRAD: 14
|
||||
driver_PWM_OFS: 36
|
||||
driver_SGTHRS: 0
|
||||
# Uncomment the lines below if you want to use sensorless selector homing
|
||||
# (and configure ercf_parameters.cfg correctly)
|
||||
# or comment out if using physical endstop switch (default)
|
||||
#diag_pin: ^{selector_diag_pin} # Set to MCU pin connected to TMC DIAG pin
|
||||
#driver_SGTHRS: 75 # 255 is most sensitive value, 0 is least sensitive
|
||||
|
||||
[manual_stepper selector_stepper]
|
||||
step_pin: ercf:PD2
|
||||
dir_pin: ercf:PB13
|
||||
enable_pin: !ercf:PD1
|
||||
rotation_distance: 40
|
||||
microsteps: 16 # Don't need high fidelity
|
||||
full_steps_per_rotation: 200 # 200 for 1.8 degree, 400 for 0.9 degree
|
||||
velocity: 200
|
||||
accel: 600
|
||||
#
|
||||
# Select the endstop switch physical (for normal selector) or virtual (sensorless selector homing)
|
||||
#endstop_pin: tmc2209_selector_stepper:virtual_endstop # Uncomment for sensorless selector homing
|
||||
endstop_pin: ^ercf:PA3
|
||||
|
||||
# SELECTOR SERVO -----------------------------------------------------------------------------------------------------------
|
||||
[ercf_servo ercf_servo]
|
||||
pin: ercf:PA0
|
||||
maximum_servo_angle: 180
|
||||
minimum_pulse_width: 0.00085
|
||||
maximum_pulse_width: 0.00215
|
||||
|
||||
|
||||
## ENCODER -----------------------------------------------------------------------------------------------------------------
|
||||
## The encoder_resolution is determined by running the ERCF_CALIBRATE_ENCODER. Be sure to read the manual
|
||||
[ercf_encoder ercf_encoder]
|
||||
encoder_pin: ^ercf:PA4
|
||||
encoder_resolution: 1.344990 # Set AFTER 'rotation_distance' is tuned for gear stepper (see manual)
|
||||
extruder: extruder # The extruder to track with for runout/clog detection
|
||||
|
||||
# These are advanced but settings for Automatic clog detection mode. Make sure you understand or ask questions on Discord
|
||||
desired_headroom: 8.0 # The runout headroom that ERCF will attempt to maintain (closest ERCF comes to triggering runout)
|
||||
average_samples: 4 # The "damping" effect of last measurement. Higher value means clog_length will be reduced more slowly
|
||||
|
||||
|
||||
## TOOLHEAD SENSOR ---------------------------------------------------------------------------------------------------------
|
||||
# Uncomment this section to enable toolhead sensor support
|
||||
#
|
||||
# ERCF Toolhead sensor START
|
||||
#[filament_switch_sensor toolhead_sensor]
|
||||
#pause_on_runout: False # Must be False
|
||||
#switch_pin: ^EBBCan:PB9
|
||||
# ERCF Toolhead sensor END
|
||||
|
||||
|
||||
118
mmu/base/mmu.cfg
Normal file
118
mmu/base/mmu.cfg
Normal file
@@ -0,0 +1,118 @@
|
||||
########################################################################################################################
|
||||
# Happy Hare MMU Software
|
||||
#
|
||||
# EDIT THIS FILE BASED ON YOUR SETUP
|
||||
#
|
||||
# Copyright (C) 2022-2025 moggieuk#6538 (discord)
|
||||
# moggieuk@hotmail.com
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
#
|
||||
# Goal: Happy Hare MMU hardware pin config
|
||||
#
|
||||
# (\_/)
|
||||
# ( *,*)
|
||||
# (")_(") Happy Hare Ready
|
||||
#
|
||||
#
|
||||
# This contains aliases for pins for MCU type MMB11
|
||||
#
|
||||
[mcu mmu]
|
||||
canbus_uuid=a76ed81c1ca6
|
||||
|
||||
|
||||
# PIN ALIASES FOR MMU MCU BOARD ----------------------------------------------------------------------------------------
|
||||
# ██████╗ ██╗███╗ ██╗ █████╗ ██╗ ██╗ █████╗ ███████╗
|
||||
# ██╔══██╗██║████╗ ██║ ██╔══██╗██║ ██║██╔══██╗██╔════╝
|
||||
# ██████╔╝██║██╔██╗ ██║ ███████║██║ ██║███████║███████╗
|
||||
# ██╔═══╝ ██║██║╚██╗██║ ██╔══██║██║ ██║██╔══██║╚════██║
|
||||
# ██║ ██║██║ ╚████║ ██║ ██║███████╗██║██║ ██║███████║
|
||||
# ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝╚═╝╚═╝ ╚═╝╚══════╝
|
||||
# Section to create alias for pins used by MMU for easier integration into Klippain and RatOS. The names match those
|
||||
# referenced in the mmu_hardware.cfg file. If you get into difficulty you can also comment out this aliases definition
|
||||
# completely and configure the pin names directly into mmu_hardware.cfg. However, use of aliases is encouraged.
|
||||
|
||||
# Note: that aliases are not created for TOOLHEAD_SENSOR, EXTRUDER_SENSOR or SYNC_FEEDBACK_SENSORS because those are
|
||||
# most likely on the printer's main mcu. These should be set directly in mmu_hardware.cfg
|
||||
#
|
||||
[board_pins mmu]
|
||||
mcu: mmu # Assumes using an external / extra mcu dedicated to MMU
|
||||
aliases:
|
||||
MMU_GEAR_UART=PA10,
|
||||
MMU_GEAR_STEP=PB15,
|
||||
MMU_GEAR_DIR=PB14,
|
||||
MMU_GEAR_ENABLE=PB8,
|
||||
MMU_GEAR_DIAG=PA3,
|
||||
|
||||
MMU_GEAR_UART_1=,
|
||||
MMU_GEAR_STEP_1=,
|
||||
MMU_GEAR_DIR_1=,
|
||||
MMU_GEAR_ENABLE_1=,
|
||||
MMU_GEAR_DIAG_1=,
|
||||
|
||||
MMU_GEAR_UART_2=,
|
||||
MMU_GEAR_STEP_2=,
|
||||
MMU_GEAR_DIR_2=,
|
||||
MMU_GEAR_ENABLE_2=,
|
||||
MMU_GEAR_DIAG_2=,
|
||||
|
||||
MMU_GEAR_UART_3=,
|
||||
MMU_GEAR_STEP_3=,
|
||||
MMU_GEAR_DIR_3=,
|
||||
MMU_GEAR_ENABLE_3=,
|
||||
MMU_GEAR_DIAG_3=,
|
||||
|
||||
MMU_SEL_UART=PC7,
|
||||
MMU_SEL_STEP=PD2,
|
||||
MMU_SEL_DIR=PB13,
|
||||
MMU_SEL_ENABLE=PD1,
|
||||
MMU_SEL_DIAG=PA4,
|
||||
MMU_SEL_ENDSTOP=PB2,
|
||||
MMU_SEL_SERVO=PA0,
|
||||
|
||||
MMU_ENCODER=PA1,
|
||||
MMU_GATE_SENSOR=,
|
||||
MMU_NEOPIXEL=PA2,
|
||||
|
||||
MMU_PRE_GATE_0=PB9,
|
||||
MMU_PRE_GATE_1=PA8,
|
||||
MMU_PRE_GATE_2=PC15,
|
||||
MMU_PRE_GATE_3=PC13,
|
||||
MMU_PRE_GATE_4=PC14,
|
||||
MMU_PRE_GATE_5=PB12,
|
||||
MMU_PRE_GATE_6=PB11,
|
||||
MMU_PRE_GATE_7=PB10,
|
||||
MMU_PRE_GATE_8=,
|
||||
MMU_PRE_GATE_9=,
|
||||
MMU_PRE_GATE_10=,
|
||||
MMU_PRE_GATE_11=,
|
||||
|
||||
MMU_POST_GEAR_0=,
|
||||
MMU_POST_GEAR_1=,
|
||||
MMU_POST_GEAR_2=,
|
||||
MMU_POST_GEAR_3=,
|
||||
MMU_POST_GEAR_4=,
|
||||
MMU_POST_GEAR_5=,
|
||||
MMU_POST_GEAR_6=,
|
||||
MMU_POST_GEAR_7=,
|
||||
MMU_POST_GEAR_8=,
|
||||
MMU_POST_GEAR_9=,
|
||||
MMU_POST_GEAR_10=,
|
||||
MMU_POST_GEAR_11=,
|
||||
|
||||
MMU_ESPOOLER_RWD_0={espooler_rwd_0_pin},
|
||||
MMU_ESPOOLER_FWD_0={espooler_fwd_0_pin},
|
||||
MMU_ESPOOLER_EN_0={espooler_en_0_pin},
|
||||
MMU_ESPOOLER_TRIG_0=,
|
||||
MMU_ESPOOLER_RWD_1={espooler_rwd_1_pin},
|
||||
MMU_ESPOOLER_FWD_1={espooler_fwd_1_pin},
|
||||
MMU_ESPOOLER_EN_1={espooler_en_1_pin},
|
||||
MMU_ESPOOLER_TRIG_1=,
|
||||
MMU_ESPOOLER_RWD_2={espooler_rwd_2_pin},
|
||||
MMU_ESPOOLER_FWD_2={espooler_rwd_2_pin},
|
||||
MMU_ESPOOLER_EN_2={espooler_en_2_pin},
|
||||
MMU_ESPOOLER_TRIG_2=,
|
||||
MMU_ESPOOLER_RWD_3={espooler_rwd_3_pin},
|
||||
MMU_ESPOOLER_FWD_3={espooler_fwd_3_pin},
|
||||
MMU_ESPOOLER_EN_3={espooler_en_3_pin},
|
||||
MMU_ESPOOLER_TRIG_3=,
|
||||
|
||||
1
mmu/base/mmu_cut_tip.cfg
Symbolic link
1
mmu/base/mmu_cut_tip.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_cut_tip.cfg
|
||||
1
mmu/base/mmu_form_tip.cfg
Symbolic link
1
mmu/base/mmu_form_tip.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_form_tip.cfg
|
||||
399
mmu/base/mmu_hardware.cfg
Normal file
399
mmu/base/mmu_hardware.cfg
Normal file
@@ -0,0 +1,399 @@
|
||||
########################################################################################################################
|
||||
# Happy Hare MMU Software
|
||||
#
|
||||
# EDIT THIS FILE BASED ON YOUR SETUP
|
||||
#
|
||||
# Copyright (C) 2022-2025 moggieuk#6538 (discord)
|
||||
# moggieuk@hotmail.com
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
#
|
||||
# Goal: Happy Hare MMU hardware config file with config for MMB11 MCU board
|
||||
#
|
||||
# (\_/)
|
||||
# ( *,*)
|
||||
# (")_(") Happy Hare Ready
|
||||
#
|
||||
#
|
||||
# Notes about setup of common external MCUs can be found here:
|
||||
# https://github.com/moggieuk/Happy-Hare/blob/main/doc/mcu_notes.md
|
||||
#
|
||||
# Note about "touch" endstops: Happy Hare provides extremely flexible homing options using both single steppers or
|
||||
# synced steppers. The "touch" option leverages stallguard and thus requires the appropriate 'diag_pin' and stallguard
|
||||
# parameters set on the TMC driver section. If you have the diag_pin exposed, it is harmless to define this because
|
||||
# they will only be used when explicitly needed and configured.
|
||||
#
|
||||
# Touch option for each stepper provides these benefits / possibilities (experimental):
|
||||
# - on extruder stepper allows for the automatic detection of the nozzle!
|
||||
# - on selector stepper allows for the automatic detection of filament stuck in the gate and subsequent recovery
|
||||
# - on gear stepper allows for the automatic detection of the extruder entrance
|
||||
#
|
||||
# In summary, "touch" homing with your MMU is an advanced option that requires patience and careful tuning. Everything
|
||||
# works with regular endstops and there are workaround options for certain homing points (like extruder entry) in
|
||||
# the absence of any endstop. I'm really interested in creative setups. Ping me on Discord (moggieuk#6538)
|
||||
#
|
||||
# See 'mmu.cfg' for serial definition and pins aliases
|
||||
#
|
||||
# HOMING CAPABLE EXTRUDER (VERY ADVANCED) -----------------------------------------------------------------------------
|
||||
# With Happy Hare installed even the extruder can be homed. You will find the usual 'endstop' parameters can be added
|
||||
# to your '[extruder]' section. Useless you have some clever load cell attached to your nozzle it only really makes
|
||||
# sense to configure stallguard style "touch" homing. To do this add lines similar to this to your existing
|
||||
# '[extruder]' definition in printer.cfg.
|
||||
#
|
||||
# [extruder]
|
||||
# endstop_pin: tmc2209_extruder:virtual_endstop
|
||||
#
|
||||
# Also be sure to add the appropriate stallguard config to the TMC section, e.g.
|
||||
#
|
||||
# [tmc2209 extruder]
|
||||
# diag_pin: E_DIAG # Set to MCU pin connected to TMC DIAG pin for extruder
|
||||
# driver_SGTHRS: 100 # 255 is most sensitive value, 0 is least sensitive
|
||||
#
|
||||
# Happy Hare will take care of the rest and add a 'mmu_ext_touch' endstop automatically
|
||||
#
|
||||
|
||||
|
||||
# MMU MACHINE / TYPE ---------------------------------------------------------------------------------------------------
|
||||
# ███╗ ███╗███╗ ███╗██╗ ██╗ ███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗███████╗
|
||||
# ████╗ ████║████╗ ████║██║ ██║ ████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔════╝
|
||||
# ██╔████╔██║██╔████╔██║██║ ██║ ██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║█████╗
|
||||
# ██║╚██╔╝██║██║╚██╔╝██║██║ ██║ ██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══╝
|
||||
# ██║ ╚═╝ ██║██║ ╚═╝ ██║╚██████╔╝ ██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║███████╗
|
||||
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝
|
||||
[mmu_machine]
|
||||
|
||||
# Number of selectable gate on (each) MMU. Generally this is a single number, but with multi-mmu (type-B) setups
|
||||
# it can be a comma separated list of the number of gates per unit.
|
||||
# E.g. 'num_gates: 4,4,2' for a 2xBox Turtle and 1xNight Owl multiplexed setup
|
||||
#
|
||||
num_gates: 8
|
||||
|
||||
# MMU Vendor & Version is used to automatically configure some parameters and validate configuration
|
||||
# If custom set to "Other" and uncomment the additional parameters below
|
||||
#
|
||||
# ERCF 1.1 add "s" suffix for Springy, "b" for Binky, "t" for Triple-Decky
|
||||
# e.g. "1.1sb" for v1.1 with Springy mod and Binky encoder
|
||||
# ERCF 2.0 community edition ERCFv2
|
||||
# ERCF 2.5
|
||||
# Tradrack 1.0 add "e" if encoder is fitted (assumed to be Binky)
|
||||
# AngryBeaver 1.0
|
||||
# BoxTurtle 1.0
|
||||
# NightOwl 1.0
|
||||
# 3MS 1.0
|
||||
# 3D Chameleon 1.0
|
||||
# Pico 1.0
|
||||
# Prusa 3.0 NOT YET SUPPORTED - COMING SOON
|
||||
# Other Generic setup that may require further customization of 'cad' parameters. See doc in mmu_parameters.cfg
|
||||
#
|
||||
mmu_vendor: ERCF # MMU family
|
||||
mmu_version: 2.0 #2.5 # MMU hardware version number (add mod suffix documented above)
|
||||
|
||||
# The following attributes are set internally from vendor/version above. Only uncomment to customize the vendor
|
||||
# default or for custom ("Other") designs
|
||||
#
|
||||
#selector_type: LinearSelector # E.g. LinearSelector (type-A), VirtualSelector (type-B), MacroSelector, RotarySelector, ...
|
||||
#variable_bowden_lengths: 0 # 1 = If MMU design has different bowden lengths per gate, 0 = bowden length is the same
|
||||
#variable_rotation_distances: 1 # 1 = If MMU design has dissimilar drive/BMG gears, thus rotation distance, 0 = One drive gear (e.g. Tradrack)
|
||||
#require_bowden_move: 1 # 1 = If MMU design has bowden move that is included in load/unload, 0 = zero length bowden (skip bowden move)
|
||||
#filament_always_gripped: 0 # 1 = Filament is always trapped by MMU (most type-B designs), 0 = MMU can release filament
|
||||
#has_bypass: 0 # 1 = Bypass gate available, 0 = No filament bypass possible
|
||||
|
||||
# Uncomment to change the display name in UI's. Defaults to the vendor name
|
||||
#display_name: My Precious
|
||||
|
||||
homing_extruder: 1 # CAUTION: Normally this should be 1. 0 will disable the homing extruder capability
|
||||
|
||||
|
||||
# FILAMENT DRIVE GEAR STEPPER(S) --------------------------------------------------------------------------------------
|
||||
# ██████╗ ███████╗ █████╗ ██████╗
|
||||
# ██╔════╝ ██╔════╝██╔══██╗██╔══██╗
|
||||
# ██║ ███╗█████╗ ███████║██████╔╝
|
||||
# ██║ ██║██╔══╝ ██╔══██║██╔══██╗
|
||||
# ╚██████╔╝███████╗██║ ██║██║ ██║
|
||||
# ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
# Note that 'toolhead' & 'mmu_gear' endstops will automatically be added if a toolhead sensor or gate sensor is defined
|
||||
#
|
||||
# The default values are tested with the ERCF BOM NEMA14 motor. Please adapt these values to the motor you are using
|
||||
# Example : for NEMA17 motors, you'll usually use higher current
|
||||
#
|
||||
[tmc2209 stepper_mmu_gear]
|
||||
uart_pin: mmu:MMU_GEAR_UART
|
||||
run_current: 1.0 #
|
||||
hold_current: 0.4 # Recommend to be small if not using "touch" or move (TMC stallguard)
|
||||
interpolate: True
|
||||
sense_resistor: 0.110 # Usually 0.11, 0.15 for BTT TMC2226
|
||||
stealthchop_threshold: 0 # Spreadcycle has more torque and better at speed
|
||||
#
|
||||
# Uncomment two lines below if you have TMC and want the ability to use filament "touch" homing with gear stepper
|
||||
#diag_pin: ^mmu:MMU_GEAR_DIAG # Set to MCU pin connected to TMC DIAG pin for gear stepper
|
||||
#driver_SGTHRS: 60 # 255 is most sensitive value, 0 is least sensitive
|
||||
|
||||
[stepper_mmu_gear]
|
||||
step_pin: mmu:MMU_GEAR_STEP
|
||||
dir_pin: !mmu:MMU_GEAR_DIR
|
||||
enable_pin: !mmu:MMU_GEAR_ENABLE
|
||||
rotation_distance: 22.7316868 # Bondtech 5mm Drive Gears. Overridden by 'mmu_gear_rotation_distance' in mmu_vars.cfg
|
||||
gear_ratio: 80:20 # E.g. ERCF 80:20, Tradrack 50:17
|
||||
microsteps: 16 # Recommend 16. Increase only if you "step compress" issues when syncing
|
||||
full_steps_per_rotation: 200 # 200 for 1.8 degree, 400 for 0.9 degree
|
||||
#
|
||||
# Uncomment the two lines below to enable filament "touch" homing option with gear motor
|
||||
#extra_endstop_pins: tmc2209_stepper_mmu_gear:virtual_endstop
|
||||
#extra_endstop_names: mmu_gear_touch
|
||||
|
||||
|
||||
|
||||
# SELECTOR STEPPER ----------------------------------------------------------------------------------------------------
|
||||
# ███████╗███████╗██╗ ███████╗ ██████╗████████╗ ██████╗ ██████╗
|
||||
# ██╔════╝██╔════╝██║ ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗
|
||||
# ███████╗█████╗ ██║ █████╗ ██║ ██║ ██║ ██║██████╔╝
|
||||
# ╚════██║██╔══╝ ██║ ██╔══╝ ██║ ██║ ██║ ██║██╔══██╗
|
||||
# ███████║███████╗███████╗███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║
|
||||
# ╚══════╝╚══════╝╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
|
||||
# Consult doc if you want to setup selector for "touch" homing instead or physical endstop
|
||||
#
|
||||
[tmc2209 stepper_mmu_selector]
|
||||
uart_pin: mmu:MMU_SEL_UART
|
||||
run_current: 0.4 # ERCF BOM NEMA17 motor
|
||||
hold_current: 0.2 # Can be small if not using "touch" movement (TMC stallguard)
|
||||
interpolate: True
|
||||
sense_resistor: 0.110
|
||||
stealthchop_threshold: 100 # Stallguard "touch" movement (slower speeds) best done with stealthchop
|
||||
#
|
||||
# Uncomment two lines below if you have TMC and want to use selector "touch" movement
|
||||
#diag_pin: ^mmu:MMU_SEL_DIAG # Set to MCU pin connected to TMC DIAG pin for selector stepper
|
||||
#driver_SGTHRS: 75 # 255 is most sensitive value, 0 is least sensitive
|
||||
|
||||
[stepper_mmu_selector]
|
||||
step_pin: mmu:MMU_SEL_STEP
|
||||
dir_pin: !mmu:MMU_SEL_DIR
|
||||
enable_pin: !mmu:MMU_SEL_ENABLE
|
||||
rotation_distance: 40
|
||||
microsteps: 16 # Don't need high fidelity
|
||||
full_steps_per_rotation: 200 # 200 for 1.8 degree, 400 for 0.9 degree
|
||||
endstop_pin: ^mmu:MMU_SEL_ENDSTOP # Selector microswitch
|
||||
endstop_name: mmu_sel_home
|
||||
# Uncomment this line only if default endstop above is using stallguard
|
||||
#homing_retract_dist: 0
|
||||
#
|
||||
# Uncomment two lines below to give option of selector "touch" movement
|
||||
#extra_endstop_pins: tmc2209_stepper_mmu_selector:virtual_endstop
|
||||
#extra_endstop_names: mmu_sel_touch
|
||||
|
||||
|
||||
# SERVOS ---------------------------------------------------------------------------------------------------------------
|
||||
# ███████╗███████╗██████╗ ██╗ ██╗ ██████╗ ███████╗
|
||||
# ██╔════╝██╔════╝██╔══██╗██║ ██║██╔═══██╗██╔════╝
|
||||
# ███████╗█████╗ ██████╔╝██║ ██║██║ ██║███████╗
|
||||
# ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║ ██║╚════██║
|
||||
# ███████║███████╗██║ ██║ ╚████╔╝ ╚██████╔╝███████║
|
||||
# ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
|
||||
# Basic servo PWM setup. If these values are changed then the angles defined for different positions will also change
|
||||
#
|
||||
# SELECTOR SERVO -------------------------------------------------------------------------------------------------------
|
||||
#
|
||||
[mmu_servo selector_servo]
|
||||
pin: mmu:MMU_SEL_SERVO
|
||||
maximum_servo_angle: 180
|
||||
minimum_pulse_width: 0.00085
|
||||
maximum_pulse_width: 0.00215
|
||||
#
|
||||
# OPTIONAL GANTRY SERVO FOR TOOLHEAD FILAMENT CUTTER ------------------------------------------------------------------
|
||||
#
|
||||
# (uncomment this section if you have a gantry servo for toolhead cutter pin)
|
||||
#[mmu_servo mmu_gantry_servo]
|
||||
#pin:
|
||||
#maximum_servo_angle:180
|
||||
#minimum_pulse_width: 0.00075
|
||||
#maximum_pulse_width: 0.00225
|
||||
#initial_angle: 180
|
||||
|
||||
|
||||
# FILAMENT SENSORS -----------------------------------------------------------------------------------------------------
|
||||
# ███████╗███████╗███╗ ██╗███████╗ ██████╗ ██████╗ ███████╗
|
||||
# ██╔════╝██╔════╝████╗ ██║██╔════╝██╔═══██╗██╔══██╗██╔════╝
|
||||
# ███████╗█████╗ ██╔██╗ ██║███████╗██║ ██║██████╔╝███████╗
|
||||
# ╚════██║██╔══╝ ██║╚██╗██║╚════██║██║ ██║██╔══██╗╚════██║
|
||||
# ███████║███████╗██║ ╚████║███████║╚██████╔╝██║ ██║███████║
|
||||
# ╚══════╝╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
|
||||
# Define the pins for optional sensors in the filament path. All but the pre-gate sensors will be automatically setup as
|
||||
# both endstops (for homing) and sensors for visibility purposes.
|
||||
#
|
||||
# 'pre_gate_switch_pin_X' .. 'mmu_pre_gate_X' sensor detects filament at entry to MMU. X=gate number (0..N)
|
||||
# 'gate_switch_pin' .. 'mmu_gate' shared sensor detects filament past the gate of the MMU
|
||||
# or
|
||||
# 'post_gear_switch_pin_X' .. 'mmu_gear_X' post gear sensor for each filament
|
||||
# 'extruder_switch_pin' .. 'extruder' sensor detects filament just before the extruder entry
|
||||
# 'toolhead_switch_pin' .. 'toolhead' sensor detects filament after extruder entry
|
||||
#
|
||||
# Sync motor feedback will typically have a tension switch (most important for syncing) or both tension and compression.
|
||||
# Note that compression switch is useful for use as a endstop to detect hitting the extruder entrance
|
||||
# 'sync_feedback_tension_pin' .. pin for switch activated when filament is under tension
|
||||
# 'sync_feedback_compression_pin' .. pin for switch activated when filament is under compression
|
||||
#
|
||||
# Configuration is flexible: Simply define pins for any sensor you want to enable, if pin is not set (or the alias is empty)
|
||||
# it will be ignored. You can also just comment out what you are not using.
|
||||
#
|
||||
[mmu_sensors]
|
||||
pre_gate_switch_pin_0: ^mmu:MMU_PRE_GATE_0
|
||||
pre_gate_switch_pin_1: ^mmu:MMU_PRE_GATE_1
|
||||
pre_gate_switch_pin_2: ^mmu:MMU_PRE_GATE_2
|
||||
pre_gate_switch_pin_3: ^mmu:MMU_PRE_GATE_3
|
||||
pre_gate_switch_pin_4: ^mmu:MMU_PRE_GATE_4
|
||||
pre_gate_switch_pin_5: ^mmu:MMU_PRE_GATE_5
|
||||
pre_gate_switch_pin_6: ^mmu:MMU_PRE_GATE_6
|
||||
pre_gate_switch_pin_7: ^mmu:MMU_PRE_GATE_7
|
||||
pre_gate_switch_pin_8: ^mmu:MMU_PRE_GATE_8
|
||||
pre_gate_switch_pin_9: ^mmu:MMU_PRE_GATE_9
|
||||
pre_gate_switch_pin_10: ^mmu:MMU_PRE_GATE_10
|
||||
pre_gate_switch_pin_11: ^mmu:MMU_PRE_GATE_11
|
||||
|
||||
post_gear_switch_pin_0: ^mmu:MMU_POST_GEAR_0
|
||||
post_gear_switch_pin_1: ^mmu:MMU_POST_GEAR_1
|
||||
post_gear_switch_pin_2: ^mmu:MMU_POST_GEAR_2
|
||||
post_gear_switch_pin_3: ^mmu:MMU_POST_GEAR_3
|
||||
post_gear_switch_pin_4: ^mmu:MMU_POST_GEAR_4
|
||||
post_gear_switch_pin_5: ^mmu:MMU_POST_GEAR_5
|
||||
post_gear_switch_pin_6: ^mmu:MMU_POST_GEAR_6
|
||||
post_gear_switch_pin_7: ^mmu:MMU_POST_GEAR_7
|
||||
post_gear_switch_pin_8: ^mmu:MMU_POST_GEAR_8
|
||||
post_gear_switch_pin_9: ^mmu:MMU_POST_GEAR_9
|
||||
post_gear_switch_pin_10: ^mmu:MMU_POST_GEAR_10
|
||||
post_gear_switch_pin_11: ^mmu:MMU_POST_GEAR_11
|
||||
|
||||
# These sensors can be replicated in a multi-mmu, type-B setup (see num_gates comment).
|
||||
# If so, then use a comma separated list of per-unit pins instead of single pin
|
||||
gate_switch_pin: ^mmu:MMU_GATE_SENSOR
|
||||
sync_feedback_tension_pin:
|
||||
sync_feedback_compression_pin:
|
||||
|
||||
# These sensors are on the toolhead and often controlled by the main printer mcu
|
||||
extruder_switch_pin:
|
||||
toolhead_switch_pin:
|
||||
|
||||
|
||||
# ENCODER -------------------------------------------------------------------------------------------------------------
|
||||
# ███████╗███╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
|
||||
# ██╔════╝████╗ ██║██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗
|
||||
# █████╗ ██╔██╗ ██║██║ ██║ ██║██║ ██║█████╗ ██████╔╝
|
||||
# ██╔══╝ ██║╚██╗██║██║ ██║ ██║██║ ██║██╔══╝ ██╔══██╗
|
||||
# ███████╗██║ ╚████║╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║
|
||||
# ╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝
|
||||
# Encoder measures distance, monitors for runout and clogging and constantly calculates % flow rate
|
||||
# Note that the encoder_resolution set here is purely a default to get started. It will be correcly set after calibration
|
||||
# with the value stored in mmu_vars.cfg
|
||||
#
|
||||
# The encoder resolution will be calibrated but it needs a default approximation
|
||||
# If BMG gear based:
|
||||
# resolution = bmg_circumfrance / (2 * teeth)
|
||||
# 24 / (2 * 17) = 0.7059 for TRCT5000 based sensor
|
||||
# 24 / (2 * 12) = 1.0 for Binky with 12 tooth disc
|
||||
#
|
||||
[mmu_encoder mmu_encoder]
|
||||
encoder_pin: ^mmu:MMU_ENCODER
|
||||
encoder_resolution: 1.0 # This is just a starter value. Overriden by calibrated 'mmu_encoder_resolution' in mmm_vars.cfg
|
||||
desired_headroom: 5.0 # The clog/runout headroom that MMU attempts to maintain (closest point to triggering runout)
|
||||
average_samples: 4 # The "damping" effect of last measurement (higher value means slower automatic clog_length reduction)
|
||||
flowrate_samples: 20 # How many "movements" of the extruder to measure average flowrate over
|
||||
|
||||
|
||||
# ESPOOLER (OPTIONAL) -------------------------------------------------------------------------------------------------
|
||||
# ███████╗███████╗██████╗ ██████╗ ██████╗ ██╗ ███████╗██████╗
|
||||
# ██╔════╝██╔════╝██╔══██╗██╔═══██╗██╔═══██╗██║ ██╔════╝██╔══██╗
|
||||
# █████╗ ███████╗██████╔╝██║ ██║██║ ██║██║ █████╗ ██████╔╝
|
||||
# ██╔══╝ ╚════██║██╔═══╝ ██║ ██║██║ ██║██║ ██╔══╝ ██╔══██╗
|
||||
# ███████╗███████║██║ ╚██████╔╝╚██████╔╝███████╗███████╗██║ ██║
|
||||
# ╚══════╝╚══════╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝
|
||||
#
|
||||
# An espooler controls DC motors (typically N20) that are able to rewind a filament spool and optionally provide
|
||||
# forward assist to overcome spooler rotation friction. This should define pins for each of the gates on your mmu
|
||||
# starting with '_0'.
|
||||
# An empty pin can be deleted, commented or simply left blank. If you mcu has a separate "enable" pin
|
||||
#
|
||||
#[mmu_espooler mmu_espooler]
|
||||
#pwm: 1 # 1=PWM control (typical), 0=digital on/off control
|
||||
#hardware_pwm: 0 # See klipper doc
|
||||
#cycle_time: 0.100 # See klipper doc
|
||||
#scale: 1 # Scales the PWM output range
|
||||
#value: 0 # See klipper doc
|
||||
#shutdown_value: 0 # See klipper doc
|
||||
|
||||
#respool_motor_pin_0: mmu:MMU_ESPOOLER_RWD_0 # PWM (or digital) pin for rewind/respool movement
|
||||
#assist_motor_pin_0: mmu:MMU_ESPOOLER_FWD_0 # PWM (or digital) pin for forward motor movement
|
||||
#enable_motor_pin_0: mmu:MMU_ESPOOLER_EN_0 # Digital output for Afc mcu
|
||||
#assist_trigger_pin_0: mmu:MMU_ESPOOLER_TRIG_0 # Trigger pin for sensing need to assist during print
|
||||
|
||||
#respool_motor_pin_1: mmu:MMU_ESPOOLER_RWD_1
|
||||
#assist_motor_pin_1: mmu:MMU_ESPOOLER_FWD_1
|
||||
#enable_motor_pin_1: mmu:MMU_ESPOOLER_EN_1
|
||||
#assist_trigger_pin_1: mmu:MMU_ESPOOLER_TRIG_1
|
||||
|
||||
#respool_motor_pin_2: mmu:MMU_ESPOOLER_RWD_2
|
||||
#assist_motor_pin_2: mmu:MMU_ESPOOLER_FWD_2
|
||||
#enable_motor_pin_2: mmu:MMU_ESPOOLER_EN_2
|
||||
#assist_trigger_pin_2: mmu:MMU_ESPOOLER_TRIG_2
|
||||
|
||||
#respool_motor_pin_3: mmu:MMU_ESPOOLER_RWD_3
|
||||
#assist_motor_pin_3: mmu:MMU_ESPOOLER_FWD_3
|
||||
#enable_motor_pin_3: mmu:MMU_ESPOOLER_EN_3
|
||||
#assist_trigger_pin_3: mmu:MMU_ESPOOLER_TRIG_3
|
||||
|
||||
|
||||
# MMU OPTIONAL NEOPIXEL LED SUPPORT ------------------------------------------------------------------------------------
|
||||
# ██╗ ███████╗██████╗ ███████╗
|
||||
# ██║ ██╔════╝██╔══██╗██╔════╝
|
||||
# ██║ █████╗ ██║ ██║███████╗
|
||||
# ██║ ██╔══╝ ██║ ██║╚════██║
|
||||
# ███████╗███████╗██████╔╝███████║
|
||||
# ╚══════╝╚══════╝╚═════╝ ╚══════╝
|
||||
# Define the led connection, type and length
|
||||
#
|
||||
# (comment out this section if you don't have leds or have them defined elsewhere)
|
||||
[neopixel mmu_leds]
|
||||
pin: mmu:MMU_NEOPIXEL
|
||||
chain_count: 18 # Need number gates x1 or x2 + status leds
|
||||
color_order: GRBW # Set based on your particular neopixel specification (can be comma separated list)
|
||||
|
||||
# MMU LED EFFECT SEGMENTS ----------------------------------------------------------------------------------------------
|
||||
# Define neopixel LEDs for your MMU. The chain_count must be large enough for your desired ranges:
|
||||
# exit .. this set of LEDs, one for every gate, usually would be mounted at the exit point of the gate
|
||||
# entry .. this set of LEDs, one for every gate, could be mounted at the entry point of filament into the MMU/buffer
|
||||
# status .. these LED. represents the status of the MMU (and selected filament). More than one status LED is possible
|
||||
# logo .. these LEDs don't change during operation and are designed for driving a logo. More than one logo LED is possible
|
||||
#
|
||||
# Note that all sets are optional. You can opt to just have the 'exit' set for example. The advantage to having
|
||||
# both entry and exit LEDs is, for example, so that 'entry' can display gate status while 'exit' displays the color
|
||||
#
|
||||
# The animation effects requires the installation of Julian Schill's awesome LED effect module otherwise the LEDs
|
||||
# will be static:
|
||||
# https://github.com/julianschill/klipper-led_effect
|
||||
#
|
||||
# LED's are indexed in the chain from 1..N. Thus to set up LED's on 'exit' and a single 'status' LED on a 4 gate MMU:
|
||||
#
|
||||
# exit_leds: neopixel:mmu_leds (1,2,3,4)
|
||||
# status_leds: neopixel:mmu_leds (5)
|
||||
#
|
||||
# In this example no 'entry' set is configured. Note that constructs like "mmu_leds (1-3,4)" are also valid
|
||||
#
|
||||
# The range is completely flexible and can be comprised of different led strips, individual LEDs, or combinations of
|
||||
# both on different pins. In addition, the ordering is flexible based on your wiring, thus (1-4) and (4-1) both represent
|
||||
# the same LED range but mapped to increasing or decreasing gates respectively. E.g if you have two Box Turtle MMUs, one
|
||||
# with a chain of LEDs wired in reverse order and another with individual LEDs, to define 8 exit LEDs:
|
||||
#
|
||||
# exit_leds: neopixel:bt_1 (4-1)
|
||||
# neopixel:bt_2a
|
||||
# neopixel:bt_2b
|
||||
# neopixel:bt_2c
|
||||
# neopixel:bt_2d
|
||||
#
|
||||
# Note the use of separate lines for each part of the definition,
|
||||
#
|
||||
# ADVANCED: Happy Hare provides a convenience wrapper [mmu_led_effect] that not only creates an effect on each of the
|
||||
# [mmu_leds] specified segments as a whole but also each individual LED for atomic control. See mmu_leds.cfg for examples
|
||||
#
|
||||
# (comment out this whole section if you don't have/want leds; uncomment/edit LEDs fitted on your MMU)
|
||||
[mmu_leds]
|
||||
exit_leds: neopixel:mmu_leds (1-8)
|
||||
#entry_leds: neopixel:mmu_leds (9-16)
|
||||
#status_leds: neopixel:mmu_leds (17)
|
||||
#logo_leds: neopixel:mmu_leds (18)
|
||||
frame_rate: 24
|
||||
1
mmu/base/mmu_leds.cfg
Symbolic link
1
mmu/base/mmu_leds.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_leds.cfg
|
||||
536
mmu/base/mmu_macro_vars.cfg
Normal file
536
mmu/base/mmu_macro_vars.cfg
Normal file
@@ -0,0 +1,536 @@
|
||||
########################################################################################################################
|
||||
# Happy Hare MMU Software
|
||||
#
|
||||
# EDIT THIS FILE BASED ON YOUR SETUP
|
||||
#
|
||||
# Copyright (C) 2022-2025 moggieuk#6538 (discord)
|
||||
# moggieuk@hotmail.com
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
#
|
||||
# Goal: Happy Hare supporting MACRO configuration
|
||||
#
|
||||
# (\_/)
|
||||
# ( *,*)
|
||||
# (")_(") Happy Hare Ready
|
||||
#
|
||||
#
|
||||
# Supporting set of macros supplied with Happy Hare can be customized by editing the macro "variables" declared here.
|
||||
#
|
||||
# This configuration will automatically retained and upgraded between releases (a backup of previous config files will
|
||||
# always be made for your reference). If you want to customize macros beyond what is possible through these variables
|
||||
# it is highly recommended you copy the macro to a new name and change the callback macro name in 'mmu_parameters.cfg'
|
||||
# That way the default macros can still be upgraded but your customization will be left intact
|
||||
#
|
||||
|
||||
|
||||
# PERSISTED STATE ---------------------------------------------------------
|
||||
# Happy Hare stores configuration and state in the klipper variables file.
|
||||
# Since klipper can only be a single 'save_variables' file, if you already
|
||||
# have one you will need to merge the two and point this appropriately.
|
||||
#
|
||||
[save_variables]
|
||||
filename: ~/printer_data/config/mmu/mmu_vars.cfg
|
||||
|
||||
|
||||
# NECESSARY KLIPPER OVERRIDES ---------------------------------------------
|
||||
# ██╗ ██╗██╗ ██╗██████╗ ██████╗ ███████╗██████╗
|
||||
# ██║ ██╔╝██║ ██║██╔══██╗██╔══██╗██╔════╝██╔══██╗
|
||||
# █████╔╝ ██║ ██║██████╔╝██████╔╝█████╗ ██████╔╝
|
||||
# ██╔═██╗ ██║ ██║██╔═══╝ ██╔═══╝ ██╔══╝ ██╔══██╗
|
||||
# ██║ ██╗███████╗██║██║ ██║ ███████╗██║ ██║
|
||||
# ╚═╝ ╚═╝╚══════╝╚═╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
|
||||
#
|
||||
# These supplemental settings essentially disable klipper's built in
|
||||
# extrusion limits and is necessary when using an MMU
|
||||
[extruder]
|
||||
max_extrude_only_distance: 200
|
||||
max_extrude_cross_section: 50
|
||||
|
||||
# For dialog prompts and progress in Mainsail. Requires Mainsail version >= v2.9.0
|
||||
[respond]
|
||||
|
||||
# Other Happy Hare prerequisites. Harmless if already defined elsewhere in user config
|
||||
[display_status]
|
||||
[pause_resume]
|
||||
[virtual_sdcard]
|
||||
path: ~/printer_data/gcodes
|
||||
#on_error_gcode: CANCEL_PRINT
|
||||
|
||||
|
||||
# PRINT START/END ---------------------------------------------------------
|
||||
# ██████╗ ██████╗ ██╗███╗ ██╗████████╗ ███████╗████████╗ █████╗ ██████╗ ████████╗
|
||||
# ██╔══██╗██╔══██╗██║████╗ ██║╚══██╔══╝ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗╚══██╔══╝
|
||||
# ██████╔╝██████╔╝██║██╔██╗ ██║ ██║ ███████╗ ██║ ███████║██████╔╝ ██║
|
||||
# ██╔═══╝ ██╔══██╗██║██║╚██╗██║ ██║ ╚════██║ ██║ ██╔══██║██╔══██╗ ██║
|
||||
# ██║ ██║ ██║██║██║ ╚████║ ██║ ███████║ ██║ ██║ ██║██║ ██║ ██║
|
||||
# ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝
|
||||
# (base/mmu_software.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_SOFTWARE_VARS]
|
||||
description: Happy Hare optional configuration for print start/end checks
|
||||
gcode: # Leave empty
|
||||
|
||||
# These variables control the behavior of the MMU_START_SETUP and MMU_START_LOAD_INITIAL_TOOL macros
|
||||
variable_user_pre_initialize_extension : '' ; Executed at start of MMU_START_SETUP. Commonly G28 to home
|
||||
variable_home_mmu : False ; True/False, Whether to home mmu before print starts
|
||||
variable_check_gates : True ; True/False, Whether to check filament is loaded in all gates used
|
||||
variable_load_initial_tool : True ; True/False, Whether to automatically load initial tool
|
||||
#
|
||||
# Automapping strategy to apply slicer tool map to find matching MMU gate (will adjust tool-to-gate map). Options are:
|
||||
# 'none' - don't automap (i.e. don't update tool-to-gate map)
|
||||
# 'filament_name' - exactly match on case insensitive filament name
|
||||
# 'material' - exactly match on material
|
||||
# 'color' - exactly match on color (with same material)
|
||||
# 'closest_color' - match to closest available filament color (with same material)
|
||||
# 'spool_id' - exactly match on spool_id [FUTURE]
|
||||
variable_automap_strategy : "none" ; none|filament_name|material|color|closest_color|spool_id
|
||||
|
||||
# These variables control the behavior of the MMU_END macro
|
||||
variable_user_print_end_extension : '' ; Executed at start of MMU_END. Good place to move off print
|
||||
variable_unload_tool : True ; True/False, Whether to unload the tool at the end of the print
|
||||
variable_reset_ttg : False ; True/False, Whether reset TTG map at end of print
|
||||
variable_dump_stats : True ; True/False, Whether to display print stats at end of print
|
||||
|
||||
|
||||
# STATE MACHINE CHANGES ---------------------------------------------------
|
||||
# ███████╗████████╗ █████╗ ████████╗███████╗ ██████╗██╗ ██╗ █████╗ ███╗ ██╗ ██████╗ ███████╗
|
||||
# ██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██╔════╝ ██╔════╝██║ ██║██╔══██╗████╗ ██║██╔════╝ ██╔════╝
|
||||
# ███████╗ ██║ ███████║ ██║ █████╗ ██║ ███████║███████║██╔██╗ ██║██║ ███╗█████╗
|
||||
# ╚════██║ ██║ ██╔══██║ ██║ ██╔══╝ ██║ ██╔══██║██╔══██║██║╚██╗██║██║ ██║██╔══╝
|
||||
# ███████║ ██║ ██║ ██║ ██║ ███████╗ ╚██████╗██║ ██║██║ ██║██║ ╚████║╚██████╔╝███████╗
|
||||
# ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
|
||||
# (base/mmu_state.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_STATE_VARS]
|
||||
description: Happy Hare configuration for state change hooks
|
||||
gcode: # Leave empty
|
||||
|
||||
# You can extend functionality to all Happy Hare state change or event
|
||||
# macros by adding a command (or call to your gcode macro).
|
||||
# E.g for additional LED logic or consumption counters
|
||||
variable_user_action_changed_extension : '' ; Executed after default logic with duplicate params
|
||||
variable_user_print_state_changed_extension : '' ; Executed after default logic with duplicate params
|
||||
variable_user_mmu_event_extension : '' ; Executed after default logic with duplicate params
|
||||
|
||||
# Maintenance warning limits (consumption counters)
|
||||
variable_servo_down_limit : 5000 ; Set to -1 for no limit / disable warning
|
||||
variable_cutter_blade_limit : 3000 ; Set to -1 for no limit / disable warning
|
||||
|
||||
|
||||
# LED CONTROL -------------------------------------------------------------
|
||||
# ██╗ ███████╗██████╗ ███████╗
|
||||
# ██║ ██╔════╝██╔══██╗██╔════╝
|
||||
# ██║ █████╗ ██║ ██║███████╗
|
||||
# ██║ ██╔══╝ ██║ ██║╚════██║
|
||||
# ███████╗███████╗██████╔╝███████║
|
||||
# ╚══════╝╚══════╝╚═════╝ ╚══════╝
|
||||
# Only configure if you have LEDs installed. The led_effects option is
|
||||
# automatically ignored if led-effects klipper module is not installed
|
||||
# (base/mmu_led.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_LED_VARS]
|
||||
description: Happy Hare led macro configuration variables
|
||||
gcode: # Leave empty
|
||||
|
||||
# Default effects for LED segments when not providing action status
|
||||
# 'off' - LED's off
|
||||
# 'on' - LED's white
|
||||
# 'gate_status' - indicate gate availability / status (printer.mmu.gate_status)
|
||||
# 'filament_color' - display filament color defined in gate map (printer.mmu.gate_color_rgb)
|
||||
# 'slicer_color' - display slicer defined set color for each gate (printer.mmu.slicer_color_rgb)
|
||||
# 'r,g,b' - display static r,g,b color e.g. "0,0,0.3" for dim blue
|
||||
# '_effect_' - display the named led effect
|
||||
#
|
||||
variable_led_enable : True ; True = LEDs are enabled at startup (MMU_LED can control), False = Disabled
|
||||
variable_led_animation : True ; True = Use led-animation-effects, False = Static LEDs
|
||||
variable_default_exit_effect : "gate_status" ; off|gate_status|filament_color|slicer_color|r,g,b|_effect_
|
||||
variable_default_entry_effect : "filament_color" ; off|gate_status|filament_color|slicer_color|r,g,b|_effect_
|
||||
variable_default_status_effect : "filament_color" ; on|off|gate_status|filament_color|slicer_color|r,g,b|_effect_
|
||||
variable_default_logo_effect : "0,0,.3" ; off |r,g,b|_effect_
|
||||
variable_white_light : (1, 1, 1) ; RGB color for static white light
|
||||
variable_black_light : (.01, 0, .02) ; RGB color used to represent "black" (filament)
|
||||
variable_empty_light : (0, 0, 0) ; RGB color used to represent empty gate
|
||||
|
||||
|
||||
# SEQUENCE MACRO - PARKING MOVEMENT AND TOOLCHANGE CONTROL ----------------
|
||||
# ███╗ ███╗ ██████╗ ██╗ ██╗███████╗███╗ ███╗███████╗███╗ ██╗████████╗
|
||||
# ████╗ ████║██╔═══██╗██║ ██║██╔════╝████╗ ████║██╔════╝████╗ ██║╚══██╔══╝
|
||||
# ██╔████╔██║██║ ██║██║ ██║█████╗ ██╔████╔██║█████╗ ██╔██╗ ██║ ██║
|
||||
# ██║╚██╔╝██║██║ ██║╚██╗ ██╔╝██╔══╝ ██║╚██╔╝██║██╔══╝ ██║╚██╗██║ ██║
|
||||
# ██║ ╚═╝ ██║╚██████╔╝ ╚████╔╝ ███████╗██║ ╚═╝ ██║███████╗██║ ╚████║ ██║
|
||||
# ╚═╝ ╚═╝ ╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝
|
||||
# Configure carefully if you 'enable_park: True'
|
||||
# (base/mmu_sequence.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_SEQUENCE_VARS]
|
||||
description: Happy Hare sequence macro configuration variables
|
||||
gcode: # Leave empty
|
||||
|
||||
# Parking and movement controls:
|
||||
# Happy Hare defines 7 operations that may require parking. You can specify
|
||||
# whether to park for each of those operations both during a print and
|
||||
# standalone (not printing) with Happy Hare or when HH is disabled:
|
||||
#
|
||||
# enable_park_printing
|
||||
# This is a list of the operations that should result in toolhead parking
|
||||
# while in a print. There are really two main starting points from which
|
||||
# you can customize. If using the slicer to form tips (and toolchange is
|
||||
# over the wipetower) you don't want to park on "toolchange" but you would
|
||||
# want to on "runout" which is a forced toolchange unknown by the slicer.
|
||||
# Typically you would also want to park at least on pause, cancel and
|
||||
# complete if not done elsewhere
|
||||
#
|
||||
# enabled_park_standalone
|
||||
# List of the operations that should result in toolhead parking when not
|
||||
# printing, for example, just manipulating the MMU manually or via
|
||||
# Klipperscreen. Really it is up to you to choose based on personal
|
||||
# workflow preferences but this defaults to just 'pause,cancel'
|
||||
# (i.e. disabled for toolchange)
|
||||
#
|
||||
# enabled_park_disabled
|
||||
# List of the operations that should result in toolhead parking when MMU is
|
||||
# disabled (MMU ENABLE=0) and using Happy Hare client macros. Note that only
|
||||
# pause and cancel can occur in this mode and would typically be enabled
|
||||
#
|
||||
# The operations are as follows:
|
||||
# toolchange - normal toolchange initiated with Tx or MMU_CHANGE_TOOL command
|
||||
# runout - when a forced toolchange occurs as a result of runout
|
||||
# load - individual MMU_LOAD operation
|
||||
# unload - individual MMU_UNLOAD/MMU_EJECT operation
|
||||
# complete - when print is complete (Happy Hare enabled)
|
||||
# pause - a regular klipper PAUSE
|
||||
# cancel - a regular klipper CANCEL_PRINT
|
||||
#
|
||||
# It is possible to call the parking macro manually in this form should you wish
|
||||
# to include in your macros.
|
||||
#
|
||||
# _MMU_PARK FORCE_PARK=1 X=10 Y=10 Z_HOP=5
|
||||
#
|
||||
# restore_xy_pos
|
||||
# Controls where the toolhead (x,y) is returned to after an operation that
|
||||
# invokes a parking move:
|
||||
# last - return to original position before park (frequently the default)
|
||||
# next - return to next print position if possible else last logic will be applied.
|
||||
# In print this reduces dwell time at the last position reducing blobbing
|
||||
# and unnecessary movement. Only applied to "toolchange" operation
|
||||
# none - the toolhead is left wherever it ends up after change. In a print the
|
||||
# next gcode command will restore toolhead x,y position
|
||||
#
|
||||
# Notes:
|
||||
# - The starting z-height will always be restored, thus the different between 'next'
|
||||
# and 'none' is the z-height at which the (x,y) move occurs and the location of
|
||||
# of any un-retract
|
||||
# - The default parking logic is a straight line move to the 'park_*' position.
|
||||
# To implement fancy movement and control you can specify your own
|
||||
# 'user_park_move_macro' to use instead of default straight line move
|
||||
# - x,y parking coordinates can be negative if your printer can handle it
|
||||
#
|
||||
# Retraction can be used to optimize stringing and blobs that can occur when
|
||||
# changing tools and are active only during a print.
|
||||
# IMPORTANT: For toolchanging the config order would be:
|
||||
# 1. In mmu_parameters.cfg configure extruder dimensions like
|
||||
# 'toolhead_extruder_to_nozzle',etc. These are based on geometry.
|
||||
# 2. In mmu_parameters.cfg tweak 'toolhead_ooze_reduction' only if necessary
|
||||
# so that filament _just_ appears at the nozzle on load
|
||||
# 3. Only then, adjust retraction to control stringing and blobs when
|
||||
# changing tool in a print
|
||||
variable_enable_park_printing : 'toolchange,runout,load,unload,complete,pause,cancel' ; Empty '' to disable parking
|
||||
variable_enable_park_standalone : 'toolchange,load,unload,pause,cancel' ; Empty '' to disable parking
|
||||
variable_enable_park_disabled : 'pause,cancel' ; Empty '' to disable parking
|
||||
|
||||
variable_min_toolchange_z : 1.0 ; The absolute minimum safety floor (z-height) for ALL parking moves
|
||||
|
||||
# These specify the parking location, z_hop and retraction for all enabled operation
|
||||
# types. Each must be 5 values:
|
||||
# x_coord, y_coord, z_hop(delta), z_hop_ramp, retraction length
|
||||
# Use -999,-999 for no x,y move (you can just have z_hop). Use 0 for no z_hop
|
||||
# The z_hop ramp is the horizontal distance in mm to travel during the lift. The
|
||||
# direction is automatic and only applied if lifting the first time from print.
|
||||
# This move is useful to help break the filament "string"
|
||||
variable_park_toolchange : -999, -999, 1, 5, 2 ; x,y,z-hop,z_hop_ramp,retract for "toolchange" operations (toolchange,load,unload)
|
||||
variable_park_runout : -999, -999, 1, 5, 2 ; x,y,z-hop,z_hop_ramp,retract
|
||||
variable_park_pause : 50, 50, 5, 0, 2 ; x,y,z-hop,z_hop_ramp,retract (park position when mmu error occurs)
|
||||
variable_park_cancel : -999, -999, 10, 0, 5 ; x,y,z-hop,z_hop_ramp,retract
|
||||
variable_park_complete : 50, 50, 10, 0, 5 ; x,y,z-hop,z_hop_ramp,retract
|
||||
|
||||
# For toolchange operations, this allows to you to specify additional parking moves
|
||||
# at various stages of the toolchange. Each must have 3 values:
|
||||
# x_coord, y_coord, z_hop(delta)
|
||||
# Use -999,-999,0 for no movement at that stage (no-op).
|
||||
# All movement will be at the established movement plane (z-height)
|
||||
variable_pre_unload_position : -999, -999, 0 ; x,y,z-hop position before unloading starts
|
||||
variable_post_form_tip_position : -999, -999, 0 ; x,y,z-hop position after form/cut tip on unload
|
||||
variable_pre_load_position : -999, -999, 0 ; x,y,z-hop position before loading starts
|
||||
|
||||
variable_restore_xy_pos : "last" ; last|next|none - What x,y position the toolhead should travel to after a "toolchange"
|
||||
|
||||
variable_park_travel_speed : 200 ; Speed for any travel movement XY(Z) in mm/s
|
||||
variable_park_lift_speed : 15 ; Z-only travel speed in mm/s
|
||||
variable_retract_speed : 30 ; Speed of the retract move in mm/s
|
||||
variable_unretract_speed : 30 ; Speed of the unretract move in mm/s
|
||||
|
||||
# ADVANCED: Normally x,y moves default to 'G1 X Y' to park position. This allows
|
||||
# you to create exotic movements. Macro will be provided the following parameters:
|
||||
# YOUR_MOVE_MACRO X=<x_coord> Y=<y_coord> F=<speed>
|
||||
# when restoring the from parked postion the same macro is called but passed a RESTORE=1 parameter, along with co-ordinates to restore to
|
||||
# YOUR_MOVE_MACRO RESTORE=1 X=<x_coord> Y=<y_coord> F=<speed>
|
||||
variable_user_park_move_macro : '' ; Executed instead of default 'G1 X Y move' to park position
|
||||
|
||||
variable_auto_home : True ; True = automatically home if necessary, False = disable
|
||||
variable_timelapse : False ; True = take frame snapshot after load, False = disable
|
||||
|
||||
# Instead of completely defining your your own macros you can can extend functionality
|
||||
# of default sequence macros by adding a command (or call to your gcode macro)
|
||||
variable_user_mmu_error_extension : '' ; Executed after default logic when mmu error condition occurs
|
||||
variable_user_pre_unload_extension : '' ; Executed after default logic
|
||||
variable_user_post_form_tip_extension : '' ; Executed after default logic
|
||||
variable_user_post_unload_extension : '' ; Executed after default logic
|
||||
variable_user_pre_load_extension : '' ; Executed after default logic
|
||||
variable_user_post_load_extension : '' ; Executed after default logic but before restoring toolhead position
|
||||
|
||||
|
||||
# CUT_TIP -----------------------------------------------------------------
|
||||
# ██████╗██╗ ██╗████████╗ ████████╗██╗██████╗
|
||||
# ██╔════╝██║ ██║╚══██╔══╝ ╚══██╔══╝██║██╔══██╗
|
||||
# ██║ ██║ ██║ ██║ ██║ ██║██████╔╝
|
||||
# ██║ ██║ ██║ ██║ ██║ ██║██╔═══╝
|
||||
# ╚██████╗╚██████╔╝ ██║ ██║ ██║██║
|
||||
# ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝
|
||||
# Don't need to configure if using tip forming
|
||||
# (base/mmu_cut_tip.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_CUT_TIP_VARS]
|
||||
description: Happy Hare toolhead tip cutting macro configuration variables
|
||||
gcode: # Leave empty
|
||||
|
||||
# Whether the toolhead tip cutting macro will return toolhead to initial position
|
||||
# after the cut is complete. If using parking logic it is better to disable this
|
||||
variable_restore_position : False ; True = return to initial position, False = don't return
|
||||
|
||||
# Distance from the internal nozzle tip to the cutting blade. This dimension
|
||||
# is based on your toolhead and should not be used for tuning
|
||||
# Note: If you have a toolhead sensor this variable can be automatically determined!
|
||||
# Read https://github.com/moggieuk/Happy-Hare/wiki/Blobing-and-Stringing
|
||||
variable_blade_pos : 37.5 ; TUNE ME: Distance in mm from internal nozzle tip
|
||||
|
||||
# Distance to retract prior to making the cut, measured from the internal nozzle
|
||||
# tip. This reduces wasted filament (left behind in extruder) but might cause a
|
||||
# clog if set too large. This must be less than 'blade_pos'
|
||||
# Note: the residual filament left in nozzle ('toolhead_ooze_reduction') is
|
||||
# subtracted from this value so make sure toolhead is calibrated
|
||||
variable_retract_length : 32.5 ; TUNE ME: 5mm less than 'blade_pos' is a good starting point
|
||||
|
||||
# Whether to perform a simple tip forming move after the initial retraction
|
||||
# Enabling this adds gives some additional cooling time of molten filament and
|
||||
# may help avoid potential clogging on some hotends
|
||||
variable_simple_tip_forming : True ; True = Perform simple tip forming, False = skip
|
||||
|
||||
# Change to X and Y stepper current during the cut operation. Technically any stepper
|
||||
# current can be modified by adding the stepper name to the list. Be careful not to
|
||||
# overload your steppers but generally up to 150% is safe
|
||||
variable_cut_axis_steppers : 'stepper_x, stepper_y' ; Comma separated list of stepper names to increase current for cutting
|
||||
variable_cut_stepper_current : 100 ; % of stepper current to use for cutting motion (100 to disable)
|
||||
|
||||
# This should be the position of the toolhead where the cutter arm just
|
||||
# lightly touches the depressor pin
|
||||
variable_cutting_axis : "x" ; "x" or "y". Determines cut direction (axis) during cut motion, used for park distance
|
||||
variable_pin_loc_xy : 14, 250 ; x,y coordinates of depressor pin
|
||||
|
||||
# This distance is added (or subtracted if negative) to "pin_loc_x" or "pin_loc_y" depending on the 'cutting_axis'
|
||||
# This is used to determine the starting position and to create a small safety distance that aids in generating momentum.
|
||||
# For example, Filametrix cuts along X axis towards Xmin requiring a positive value, whereas A4T-A4C cuts on Y axis towards
|
||||
# Ymax requring a negative number
|
||||
variable_pin_park_dist : 5.0 ; Distance in mm (+ve or -ve) from 'variable_pin_loc_xy'
|
||||
|
||||
# Position of the toolhead when the cutter is fully compressed. Should leave a small headroom from the
|
||||
# extremes of your printer edges (e.g. it should be a bit larger than 0, or whatever Xmin is) to avoid
|
||||
# banging the toolhead or gantry. Typically x position will match x in pin_loc_xy if cutting in y direction
|
||||
# or y position will match y in pin_loc_xy if cutting in x direction, but diagonal cuts are possible
|
||||
variable_pin_loc_compressed_xy : 0.5, 250 ; x,y coordinates of fully depressed location
|
||||
|
||||
# Retract length and speed after the cut so that the cutter blade doesn't
|
||||
# get stuck on return to origin position
|
||||
variable_rip_length : 1.0 ; Distance in mm to retract to aid lever decompression (>= 0)
|
||||
variable_rip_speed : 3 ; Speed mm/s
|
||||
|
||||
# Pushback of the remaining tip from the cold end into the hotend. This does
|
||||
# not have to push back all the way, just sufficient to ensure filament fragment
|
||||
# stays in hot end and the "nail head" of the cut is pushed back past the
|
||||
# PTFE/metal junction so it cannot cause clogging problems on future loads.
|
||||
# Cannot be larger than 'retract_length' - `toolhead_ooze_reduction`
|
||||
variable_pushback_length : 15.0 ; TUNE ME: PTFE tube length + 3mm is good starting point
|
||||
variable_pushback_dwell_time : 0 ; Time in ms to dwell after the pushback
|
||||
|
||||
# Speed related settings for tip cutting
|
||||
# Note that if the cut speed is too fast, the steppers can lose steps.
|
||||
# Therefore, for a cut:
|
||||
# - We first make a fast move to accumulate some momentum and get the cut
|
||||
# blade to the initial contact with the filament
|
||||
# - We then make a slow move for the actual cut to happen
|
||||
variable_travel_speed : 150 ; Speed mm/s
|
||||
variable_cut_fast_move_speed : 32 ; Speed mm/s
|
||||
variable_cut_slow_move_speed : 8 ; Speed mm/s
|
||||
variable_evacuate_speed : 150 ; Speed mm/s
|
||||
variable_cut_dwell_time : 50 ; Time in ms to dwell at the cut point
|
||||
variable_cut_fast_move_fraction : 1.0 ; Fraction of the move that uses fast move
|
||||
variable_extruder_move_speed : 25 ; Speed mm/s for all extruder movement
|
||||
|
||||
# Safety margin for fast vs slow travel. When traveling to the pin location
|
||||
# we make a safer but longer move if we are closer to the pin than this
|
||||
# specified margin. Usually setting these to the size of the toolhead
|
||||
# (plus a small margin) should be good enough
|
||||
variable_safe_margin_xy : 30, 30 ; Approx toolhead width +5mm, height +5mm)
|
||||
|
||||
# If gantry servo option is installed, enable the servo and set up and down
|
||||
# angle positions
|
||||
variable_gantry_servo_enabled : False ; True = enabled, False = disabled
|
||||
variable_gantry_servo_down_angle: 55 ; Angle for when pin is deployed
|
||||
variable_gantry_servo_up_angle : 180 ; Angle for when pin is retracted
|
||||
|
||||
|
||||
# FORM_TIP ----------------------------------------------------------------
|
||||
# ███████╗ ██████╗ ██████╗ ███╗ ███╗ ████████╗██╗██████╗
|
||||
# ██╔════╝██╔═══██╗██╔══██╗████╗ ████║ ╚══██╔══╝██║██╔══██╗
|
||||
# █████╗ ██║ ██║██████╔╝██╔████╔██║ ██║ ██║██████╔╝
|
||||
# ██╔══╝ ██║ ██║██╔══██╗██║╚██╔╝██║ ██║ ██║██╔═══╝
|
||||
# ██║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║ ██║ ██║██║
|
||||
# ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝
|
||||
# Don't need to configure if using tip cutting
|
||||
# (base/mmu_form_tip.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_FORM_TIP_VARS]
|
||||
description: Happy Hare tip forming macro configuration variables
|
||||
gcode: # Leave empty
|
||||
|
||||
# Step 1 - Ramming
|
||||
# Ramming is the initial squeeze of filament prior to cooling moves and is
|
||||
# described in terms of total volume and progression of squeeze intensity
|
||||
# printing/standalone. This can be separately controlled when printing or
|
||||
# standalone
|
||||
variable_ramming_volume : 0 ; Volume in mm^3, 0 = disabled (optionally let slicer do it)
|
||||
variable_ramming_volume_standalone : 0 ; Volume in mm^3, 0 = disabled
|
||||
|
||||
# Optionally set for temperature change (reduction). The wait will occur
|
||||
# before nozzle separation if 'use_fast_skinnydip: False' else after cooling
|
||||
# moves. Temperature will be restored after tip creation is complete
|
||||
variable_toolchange_temp : 0 ; 0 = don't change temp, else temp to set
|
||||
variable_toolchange_fan_assist : False ; Whether to use part cooling fan for quicker temp change
|
||||
variable_toolchange_fan_name : '' ; Define the part fan name if not default [fan] e.g "fan_generic fan0"
|
||||
variable_toolchange_fan_speed : 50 ; Fan speed % if using fan_assist enabled
|
||||
|
||||
# Step 2 - Nozzle Separation
|
||||
# The filament is then quickly separated from the meltzone by a fast movement
|
||||
# before then slowing to travel the remaining distance to cooling tube. The
|
||||
# initial fast movement should be as fast as extruder can comfortably perform.
|
||||
# A good starting point# for slower move is unloading_speed_start/cooling_moves.
|
||||
# Too fast a slower movement can lead to excessively long tips or hairs
|
||||
variable_unloading_speed_start : 80 ; Speed in mm/s for initial fast movement
|
||||
variable_unloading_speed : 18 ; Speed in mm/s for slow move to cooling zone
|
||||
|
||||
# Step 3 - Cooling Moves
|
||||
# The cooling move allows the filament to harden while constantly moving back
|
||||
# and forth in the cooling tube portion of the extruder to prevent a bulbous
|
||||
# tip forming. The cooling tube position is measured from the internal nozzle
|
||||
# to just past the top of the heater block (often it is beneficial to add a
|
||||
# couple of mm to ensure the tip is in the cooling section. The cooling tube
|
||||
# length is then the distance from here to top of heatsink (this is the length
|
||||
# length of the cooling moves). The final cooling move is a fast movement to
|
||||
# break the string formed.
|
||||
variable_cooling_tube_position : 35 ; Start of cooling tube. DragonST:35, DragonHF:30, Mosquito:30, Revo:35, RapidoHF:27
|
||||
variable_cooling_tube_length : 10 ; Movement length. DragonST:15, DragonHF:10, Mosquito:20, Revo:10, RapidoHF:10
|
||||
variable_initial_cooling_speed : 10 ; Initial slow movement (mm/s) to solidify tip and cool string if formed
|
||||
variable_final_cooling_speed : 50 ; Fast movement (mm/s) Too fast: tip deformation on eject, Too Slow: long string/no separation
|
||||
variable_cooling_moves : 4 ; Number of back and forth cooling moves to make (2-4 is a good start)
|
||||
|
||||
# Step 4 - Skinnydip
|
||||
# Skinnydip is an advanced final move that may have benefit with some
|
||||
# material like PLA to burn off persistent very fine hairs. To work the
|
||||
# depth of insertion is critical (start with it disabled and tune last)
|
||||
# For reference the internal nozzle would be at a distance of
|
||||
# cooling_tube_position + cooling_tube_length, the top of the heater
|
||||
# block would be cooling_tube_length away.
|
||||
variable_use_skinnydip : False ; True = enable skinnydip, False = skinnydip move disabled
|
||||
variable_skinnydip_distance : 30 ; Distance to reinsert filament into hotend starting from end of cooling tube
|
||||
variable_dip_insertion_speed : 30 ; Medium/Slow insertion speed mm/s - Just long enough to melt the fine hairs, too slow will pull up molten filament
|
||||
variable_dip_extraction_speed : 70 ; Speed mm/s - Around 2x Insertion speed to prevents forming new hairs
|
||||
variable_melt_zone_pause : 0 ; Pause if melt zone in ms. Default 0
|
||||
variable_cooling_zone_pause : 0 ; Pause if cooling zone after dip in ms. Default 0
|
||||
variable_use_fast_skinnydip : False ; False = Skip the toolhead temp change wait during skinnydip move
|
||||
|
||||
# Step 5 - Parking
|
||||
# Park filament ready to eject
|
||||
variable_parking_distance : 0 ; Position mm to park the filament at end of tip forming, 0 = leave where filament ends up after tip forming
|
||||
variable_extruder_eject_speed : 25 ; Speed mm/s used for parking_distance (and final_eject when testing)
|
||||
|
||||
|
||||
# PURGE -------------------------------------------------------------------
|
||||
# ██████╗ ██╗ ██╗██████╗ ██████╗ ███████╗
|
||||
# ██╔══██╗██║ ██║██╔══██╗██╔════╝ ██╔════╝
|
||||
# ██████╔╝██║ ██║██████╔╝██║ ███╗█████╗
|
||||
# ██╔═══╝ ██║ ██║██╔══██╗██║ ██║██╔══╝
|
||||
# ██║ ╚██████╔╝██║ ██║╚██████╔╝███████╗
|
||||
# ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
|
||||
#
|
||||
# Optional reference (bucket) purge. Blobifier if far better but this can be
|
||||
# used as a basis for custom purge
|
||||
# (base/mmu_purge.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_PURGE_VARS]
|
||||
description: Happy Hare reference purging macro configuration variables
|
||||
gcode: # Leave empty
|
||||
|
||||
# Set speed as fast as you can without the extruder skipping steps. Note that
|
||||
# you can increase the extruder current for purging in mmu_parameters.cfg
|
||||
variable_extruder_purge_speed : 2 ; Speed in mm/s for purging
|
||||
|
||||
|
||||
# CLIENT MACROS -----------------------------------------------------------
|
||||
# ██████╗ █████╗ ██╗ ██╗███████╗███████╗ ██████╗ ███████╗███████╗██╗ ██╗███╗ ███╗███████╗
|
||||
# ██╔══██╗██╔══██╗██║ ██║██╔════╝██╔════╝ ██╔══██╗██╔════╝██╔════╝██║ ██║████╗ ████║██╔════╝
|
||||
# ██████╔╝███████║██║ ██║███████╗█████╗ ██████╔╝█████╗ ███████╗██║ ██║██╔████╔██║█████╗
|
||||
# ██╔═══╝ ██╔══██║██║ ██║╚════██║██╔══╝ ██╔══██╗██╔══╝ ╚════██║██║ ██║██║╚██╔╝██║██╔══╝
|
||||
# ██║ ██║ ██║╚██████╔╝███████║███████╗ ██║ ██║███████╗███████║╚██████╔╝██║ ╚═╝ ██║███████╗
|
||||
# ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚══════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
|
||||
# If using the recommended PAUSE/RESUME/CANCEL_PRINT macros shipped with
|
||||
# Happy Hare these variables allow for customization and basic extension
|
||||
# Note that most parameters are pulled from the "movement" (sequence)
|
||||
# macro above and thus these are supplemental a
|
||||
# (optional/client_macros.cfg)
|
||||
#
|
||||
[gcode_macro _MMU_CLIENT_VARS]
|
||||
description: Happy Hare client macro configuration variables
|
||||
gcode: # Leave empty
|
||||
|
||||
variable_reset_ttg_on_cancel : False ; True/False, Whether reset TTG map if print is canceled
|
||||
variable_unload_tool_on_cancel : False ; True/False, Whether to unload the tool on cancel
|
||||
|
||||
# You can extend functionality by adding a command (or call to your gcode macro)
|
||||
variable_user_pause_extension : '' ; Executed after the klipper base pause
|
||||
variable_user_resume_extension : '' ; Executed before the klipper base resume
|
||||
variable_user_cancel_extension : '' ; Executed before the klipper base cancel_print
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Tool change macros
|
||||
# This is automatically created on installation but you can increase or
|
||||
# reduce this list to match your number of tools in operation
|
||||
# Note: it is annoying to have to do this but interfaces like Mainsail rely
|
||||
# on real macro definitions for tools to be visible in the UI
|
||||
#
|
||||
[gcode_macro T0]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=0
|
||||
[gcode_macro T1]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=1
|
||||
[gcode_macro T2]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=2
|
||||
[gcode_macro T3]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=3
|
||||
[gcode_macro T4]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=4
|
||||
[gcode_macro T5]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=5
|
||||
[gcode_macro T6]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=6
|
||||
[gcode_macro T7]
|
||||
gcode: MMU_CHANGE_TOOL TOOL=7
|
||||
|
||||
685
mmu/base/mmu_parameters.cfg
Normal file
685
mmu/base/mmu_parameters.cfg
Normal file
@@ -0,0 +1,685 @@
|
||||
########################################################################################################################
|
||||
# Happy Hare MMU Software
|
||||
#
|
||||
# EDIT THIS FILE BASED ON YOUR SETUP
|
||||
#
|
||||
# Copyright (C) 2022-2025 moggieuk#6538 (discord)
|
||||
# moggieuk@hotmail.com
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
#
|
||||
# Goal: Main configuration parameters for the klipper module
|
||||
#
|
||||
# (\_/)
|
||||
# ( *,*)
|
||||
# (")_(") Happy Hare Ready
|
||||
#
|
||||
# Notes:
|
||||
# Macro configuration is specified separately in 'mmu_macro_vars.cfg'.
|
||||
# Full details in https://github.com/moggieuk/Happy-Hare/tree/main/doc/configuration.md
|
||||
#
|
||||
[mmu]
|
||||
happy_hare_version: 3.2 # Don't mess, used for upgrade detection
|
||||
|
||||
# MMU Hardware Limits --------------------------------------------------------------------------------------------------
|
||||
# ██╗ ██╗███╗ ███╗██╗████████╗███████╗
|
||||
# ██║ ██║████╗ ████║██║╚══██╔══╝██╔════╝
|
||||
# ██║ ██║██╔████╔██║██║ ██║ ███████╗
|
||||
# ██║ ██║██║╚██╔╝██║██║ ██║ ╚════██║
|
||||
# ███████╗██║██║ ╚═╝ ██║██║ ██║ ███████║
|
||||
# ╚══════╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝
|
||||
#
|
||||
# Define the physical limits of your MMU. These settings will be respected regardless of individual speed settings.
|
||||
#
|
||||
gear_max_velocity: 300 # Never to be exceeded gear velocity regardless of specific parameters
|
||||
gear_max_accel: 1500 # Never to be exceeded gear acceleration regardless of specific parameters
|
||||
selector_max_velocity: 250 # Never to be exceeded selector velocity regardless of specific parameters
|
||||
selector_max_accel: 1200 # Never to be exceeded selector acceleration regardless of specific parameters
|
||||
|
||||
|
||||
# Servo configuration -------------------------------------------------------------------------------------------------
|
||||
# ███████╗███████╗██████╗ ██╗ ██╗ ██████╗
|
||||
# ██╔════╝██╔════╝██╔══██╗██║ ██║██╔═══██╗
|
||||
# ███████╗█████╗ ██████╔╝██║ ██║██║ ██║
|
||||
# ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║ ██║
|
||||
# ███████║███████╗██║ ██║ ╚████╔╝ ╚██████╔╝
|
||||
# ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═════╝
|
||||
#
|
||||
# Angle of the servo in three named positions
|
||||
# up = tool is selected and filament is allowed to freely move through gate
|
||||
# down = to grip filament
|
||||
# move = ready the servo for selector move (optional - defaults to up)
|
||||
# V2.4.0 on: These positions are only for initial config they are replaced with calibrated servo positions in `mmu_vars.cfg`
|
||||
#
|
||||
# Note that leaving the servo active when down can stress the electronics and is not recommended with EASY-BRD or ERB board
|
||||
# unless the 5v power supply has been improved and it is not necessary with standard ERCF builds
|
||||
# Make sure your hardware is suitable for the job!
|
||||
#
|
||||
servo_up_angle: 30 # ERCF: MG90S: 30 ; SAVOX SH0255MG: 140 ; Tradrack: 145
|
||||
servo_down_angle: 140 # ERCF: MG90S: 140 ; SAVOX SH0255MG: 30 ; Tradrack: 1
|
||||
servo_move_angle: 30 # Optional angle used when selector is moved (defaults to up position)
|
||||
servo_duration: 0.4 # Duration of PWM burst sent to servo (default non-active mode, automatically turns off)
|
||||
servo_dwell: 0.5 # Minimum time given to servo to complete movement prior to next move
|
||||
servo_always_active: 0 # CAUTION - WILL DAMAGE COMMON SERVOS, PLEASE USE AT YOUR OWN RISK: 1=Force servo to always stay active, 0=Release after movement
|
||||
servo_active_down: 0 # CAUTION - WILL DAMAGE COMMON SERVOS, PLEASE USE AT YOUR OWN RISK: 1=Force servo to stay active when down only, 0=Release after movement
|
||||
servo_buzz_gear_on_down: 1 # Whether to "buzz" the gear stepper on down to aid engagement
|
||||
|
||||
|
||||
# Logging --------------------------------------------------------------------------------------------------------------
|
||||
# ██╗ ██████╗ ██████╗ ██████╗ ██╗███╗ ██╗ ██████╗
|
||||
# ██║ ██╔═══██╗██╔════╝ ██╔════╝ ██║████╗ ██║██╔════╝
|
||||
# ██║ ██║ ██║██║ ███╗██║ ███╗██║██╔██╗ ██║██║ ███╗
|
||||
# ██║ ██║ ██║██║ ██║██║ ██║██║██║╚██╗██║██║ ██║
|
||||
# ███████╗╚██████╔╝╚██████╔╝╚██████╔╝██║██║ ╚████║╚██████╔╝
|
||||
# ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||
#
|
||||
# log_level & logfile_level can be set to one of (0 = essential, 1 = info, 2 = debug, 3 = trace, 4 = stepper moves)
|
||||
# Generally you can keep console logging to a minimal whilst still sending debug output to the mmu.log file
|
||||
# Increasing the console log level is only really useful during initial setup to save having to constantly open the log file
|
||||
# Note: that it is not recommended to keep logging at level greater that 2 (debug) if not debugging an issue because
|
||||
# of the additional overhead
|
||||
#
|
||||
log_level: 1
|
||||
log_file_level: 2 # Can also be set to -1 to disable log file completely
|
||||
log_statistics: 1 # 1 to log statistics on every toolchange (default), 0 to disable (but still recorded)
|
||||
log_visual: 1 # 1 log visual representation of filament, 0 = disable
|
||||
log_startup_status: 1 # Whether to log tool to gate status on startup, 1 = summary (default), 0 = disable
|
||||
log_m117_messages: 1 # Whether send toolchange message via M117 to screen
|
||||
|
||||
|
||||
# Movement speeds ------------------------------------------------------------------------------------------------------
|
||||
# ███████╗██████╗ ███████╗███████╗██████╗ ███████╗
|
||||
# ██╔════╝██╔══██╗██╔════╝██╔════╝██╔══██╗██╔════╝
|
||||
# ███████╗██████╔╝█████╗ █████╗ ██║ ██║███████╗
|
||||
# ╚════██║██╔═══╝ ██╔══╝ ██╔══╝ ██║ ██║╚════██║
|
||||
# ███████║██║ ███████╗███████╗██████╔╝███████║
|
||||
# ╚══════╝╚═╝ ╚══════╝╚══════╝╚═════╝ ╚══════╝
|
||||
#
|
||||
# Long moves are faster than the small ones and used for the bulk of the bowden movement. You can set two fast load speeds
|
||||
# depending on whether pulling from the spool or filament buffer (if fitted and not the first time load). This can be helpful
|
||||
# in allowing faster loading from buffer and slower when pulling from the spool because of the additional friction (prevents
|
||||
# loosing steps). Unloading speed can be tuning if you have a rewinder system that imposes additional limits.
|
||||
# NOTE: Encoder cannot keep up much above 450mm/s so make sure 'bowden_apply_correction' is off at very high speeds!
|
||||
#
|
||||
gear_from_spool_speed: 80 # mm/s Speed when loading from the spool (for the first time if has_filament_buffer: 1)
|
||||
gear_from_spool_accel: 100 # Acceleration when loading from spool
|
||||
gear_from_buffer_speed: 150 # mm/s Speed when loading filament from buffer. Conservative is 100mm/s, Max around 400mm/s
|
||||
gear_from_buffer_accel: 400 # Normal acceleration when loading filament
|
||||
gear_unload_speed: 80 # mm/s Use (lower) speed when unloading filament (defaults to "from spool" speed)
|
||||
gear_unload_accel: 100 # Acceleration when unloading filament (defaults to "from spool" accel)
|
||||
#
|
||||
gear_short_move_speed: 80 # mm/s Speed when making short moves (like incremental retracts with encoder)
|
||||
gear_short_move_accel: 600 # Usually the same as gear_from_buffer_accel (for short movements)
|
||||
gear_short_move_threshold: 70 # Move distance that controls application of 'short_move' speed/accel
|
||||
gear_homing_speed: 50 # mm/s Speed of gear stepper only homing moves (e.g. homing to gate or extruder)
|
||||
|
||||
# Speeds of extruder movement. The 'sync' speeds will be used when gear and extruder steppers are moving in sync
|
||||
#
|
||||
extruder_load_speed: 16 # mm/s speed of load move inside extruder from homing position to meltzone
|
||||
extruder_unload_speed: 16 # mm/s speed of unload moves inside of extruder (very initial move from meltzone is 50% of this)
|
||||
extruder_sync_load_speed: 18 # mm/s speed of synchronized extruder load moves
|
||||
extruder_sync_unload_speed: 18 # mm/s speed of synchronized extruder unload moves
|
||||
extruder_homing_speed: 18 # mm/s speed of extruder only homing moves (e.g. to toolhead sensor)
|
||||
|
||||
# Selector movement speeds. (Acceleration is defined by physical MMU limits set above and passed to selector stepper driver)
|
||||
#
|
||||
selector_move_speed: 200 # mm/s speed of selector movement (not touch)
|
||||
selector_homing_speed: 60 # mm/s speed of initial selector homing move (not touch)
|
||||
selector_touch_speed: 80 # mm/s speed of all touch selector moves (if stallguard configured)
|
||||
|
||||
# Selector touch (stallguard) operation. If stallguard is configured, then this can be used to switch on touch movement which
|
||||
# can detect blocked filament path and try to recover automatically but it is more difficult to set up
|
||||
#
|
||||
selector_touch_enable: 0 # If selector touch operation configured this can be used to disable it 1=enabled, 0=disabled
|
||||
|
||||
# When Happy Hare calls out to a macro for user customization and for parking moves these settings are applied and the previous
|
||||
# values automatically restored afterwards. This allows for deterministic movement speed regardless of the starting state.
|
||||
#
|
||||
macro_toolhead_max_accel: 0 # Default printer toolhead acceleration applied when macros are run. 0 = use printer max
|
||||
macro_toolhead_min_cruise_ratio: 0.5 # Default printer cruise ratio applied when macros are run
|
||||
|
||||
|
||||
# Gate loading/unloading -----------------------------------------------------------------------------------------------
|
||||
# ██████╗ █████╗ ████████╗███████╗ ██╗ ██████╗ █████╗ ██████╗
|
||||
# ██╔════╝ ██╔══██╗╚══██╔══╝██╔════╝ ██║ ██╔═══██╗██╔══██╗██╔══██╗
|
||||
# ██║ ███╗███████║ ██║ █████╗ ██║ ██║ ██║███████║██║ ██║
|
||||
# ██║ ██║██╔══██║ ██║ ██╔══╝ ██║ ██║ ██║██╔══██║██║ ██║
|
||||
# ╚██████╔╝██║ ██║ ██║ ███████╗ ███████╗╚██████╔╝██║ ██║██████╔╝
|
||||
# ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝
|
||||
#
|
||||
# These settings control the loading and unloading filament at the gate which is the parking position inside the MMU.
|
||||
# Typically this would be switch sensor but you can also use an encoder. Even with encoder the endstop can be a switch
|
||||
# and the encoder used for move verifcation (see advanced 'gate_endstop_to_encoder' option). Note that the `encoder`
|
||||
# method, due to the nature of its operation will overshoot a little. This is not a problem in practice because the
|
||||
# overshoot will simply be compensated for in the subsequent move. A +ve parking distance moves towards the MMU, -ve
|
||||
# moves back through the endstop towards the toolhead. If the MMU has multiple bowden tubes then it is possible to home
|
||||
# at the extruder sensor and avoid long bowden moves!
|
||||
#
|
||||
# Possible gate_homing_endstop names:
|
||||
# encoder - Detect filament position using movement of the encoder
|
||||
# mmu_gate - Use gate endstop
|
||||
# mmu_gear - Use individual per-gate endstop (type-B MMU's)
|
||||
# extruder - Use extruder entry sensor (Only for some type-B designs, see [mmu_machine] require_bowden_move setting)
|
||||
#
|
||||
gate_homing_endstop: encoder # Name of gate endstop, "encoder" forces use of encoder for parking
|
||||
gate_homing_max: 70 # Maximum move distance to home to the gate (or actual move distance for encoder parking)
|
||||
gate_preload_homing_max: 70 # Maximum homing distance to the mmu_gear endstop (if MMU is fitted with one)
|
||||
gate_unload_buffer: 50 # Amount to reduce the fast unload so that filament doesn't overshoot when parking
|
||||
gate_load_retries: 2 # Number of times MMU will attempt to grab the filament on initial load (type-A designs)
|
||||
gate_parking_distance: 10 # Parking position in the gate (distance back from homing point, -ve value means move forward)
|
||||
gate_endstop_to_encoder: 10 # Distance between gate endstop and encoder (IF both fitted. +ve if encoder after endstop)
|
||||
gate_autoload: 1 # If pre-gate sensor fitted this controls the automatic loading of the gate
|
||||
gate_final_eject_distance: 0 # Distance to eject filament on MMU_EJECT (Ignored by MMU_UNLOAD)
|
||||
|
||||
|
||||
# Bowden tube loading/unloading ----------------------------------------------------------------------------------------
|
||||
# ██████╗ ██████╗ ██╗ ██╗██████╗ ███████╗███╗ ██╗ ██╗ ██████╗ █████╗ ██████╗
|
||||
# ██╔══██╗██╔═══██╗██║ ██║██╔══██╗██╔════╝████╗ ██║ ██║ ██╔═══██╗██╔══██╗██╔══██╗
|
||||
# ██████╔╝██║ ██║██║ █╗ ██║██║ ██║█████╗ ██╔██╗ ██║ ██║ ██║ ██║███████║██║ ██║
|
||||
# ██╔══██╗██║ ██║██║███╗██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ██║ ██║██╔══██║██║ ██║
|
||||
# ██████╔╝╚██████╔╝╚███╔███╔╝██████╔╝███████╗██║ ╚████║ ███████╗╚██████╔╝██║ ██║██████╔╝
|
||||
# ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝
|
||||
#
|
||||
# In addition to different bowden loading speeds for buffer and non-buffered filament it is possible to detect missed
|
||||
# steps caused by "jerking" on a heavy spool. If bowden correction is enabled the driver with "believe" the encoder
|
||||
# reading and make correction moves to bring the filament to within the 'bowden_allowable_load_delta' of the end of
|
||||
# bowden position (this does require a reliable encoder and is not recommended for very high speed loading >350mm/s)
|
||||
#
|
||||
bowden_apply_correction: 0 # 1 to enable, 0 disabled. Requires Encoder
|
||||
bowden_allowable_load_delta: 20.0 # How close in mm the correction moves will attempt to get to target. Requires Encoder
|
||||
|
||||
# This test verifies the filament is free of extruder before the fast bowden movement to reduce possibility of grinding filament
|
||||
bowden_pre_unload_test: 1 # 1 to check for bowden movement before full pull (slower), 0 don't check (faster). Requires Encoder
|
||||
|
||||
# ADVANCED: If pre-unload test is enabled, this controls the detection of successful bowden pre-unload test and represents
|
||||
# the fraction of allowable mismatch between actual movement and that seen by encoder. Setting to 50% tolerance usually
|
||||
# works well. Increasing will make test more tolerant. Value of 100% essentially disables error detection
|
||||
bowden_pre_unload_error_tolerance: 50
|
||||
|
||||
|
||||
# Extruder homing -----------------------------------------------------------------------------------------------------
|
||||
# ███████╗██╗ ██╗████████╗ ██╗ ██╗ ██████╗ ███╗ ███╗██╗███╗ ██╗ ██████╗
|
||||
# ██╔════╝╚██╗██╔╝╚══██╔══╝ ██║ ██║██╔═══██╗████╗ ████║██║████╗ ██║██╔════╝
|
||||
# █████╗ ╚███╔╝ ██║ ███████║██║ ██║██╔████╔██║██║██╔██╗ ██║██║ ███╗
|
||||
# ██╔══╝ ██╔██╗ ██║ ██╔══██║██║ ██║██║╚██╔╝██║██║██║╚██╗██║██║ ██║
|
||||
# ███████╗██╔╝ ██╗ ██║██╗ ██║ ██║╚██████╔╝██║ ╚═╝ ██║██║██║ ╚████║╚██████╔╝
|
||||
# ╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||
#
|
||||
# Happy Hare needs a reference "homing point" close to the extruder from which to accurately complete the loading of
|
||||
# the toolhead. This homing operation takes place after the fast bowden load and it is anticipated that that load
|
||||
# operation will leave the filament just shy of the homing point. If using a toolhead sensor this initial extruder
|
||||
# homing is unnecessary (but can be forced) because the homing will occur inside the extruder for the optimum in accuracy.
|
||||
# You still should set this homing method because it is also used for the determination and calibration of bowden length.
|
||||
#
|
||||
# In addition to an entry sensor "extruder" it is possible for Happy Hare to "feel" for the extruder gear entry
|
||||
# by colliding with it. This can be done with encoder based collision detection, the compression of the sync-feedback
|
||||
# (aka buffer) sensor or using "touch" (stallguard) on the gear stepper. Note that encoder collision detection is not
|
||||
# completely deterministic and you will have to find the sweetspot for your setup by adjusting the TMC current reduction.
|
||||
# Note that reduced current during collision detection can also prevent unecessary filament griding.
|
||||
#
|
||||
# Possible extruder_homing_endtop names:
|
||||
# collision - Detect the collision with the extruder gear by monitoring encoder movement (Requires encoder)
|
||||
# Fast bowden load will move to the extruder gears
|
||||
# mmu_gear_touch - Use touch detection when the gear stepper hits the extruder (Requires stallguard)
|
||||
# Fast bowden load will move to extruder_homing_buffer distance before extruder gear, then home
|
||||
# extruder - If you have a "filament entry" endstop configured (Requires 'extruder' endstop)
|
||||
# Fast bowden load will move to extruder_homing_buffer distance before sensor, then home
|
||||
# filament_compression - If you have a "sync-feedback" sensor with compression switch configured
|
||||
# Fast bowden load will move to extruder_homing_buffer distance before extruder gear, then home
|
||||
# none - Don't attempt to home. Only possibiliy if lacking all sensor options
|
||||
# Fast bowden load will move to the extruder gears. Option is fine if using toolhead sensor
|
||||
# Note: The homing_endstop will be ignored ("none") if a toolhead sensor is available unless "extruder_force_homing: 1"
|
||||
#
|
||||
extruder_homing_max: 80 # Maximum distance to advance in order to attempt to home the extruder
|
||||
extruder_homing_endstop: collision # Filament homing method/endstop name (fallback if toolhead sensor not available)
|
||||
extruder_homing_buffer: 25 # Amount to reduce the fast bowden load so filament doesn't overshoot the extruder homing point
|
||||
extruder_collision_homing_current: 30 # % gear_stepper current (10%-100%) to use when homing to extruder homing (100 to disable)
|
||||
|
||||
# If you have a toolhead sensor it will always be used as a homing point making the homing outside of the extruder
|
||||
# potentially unnecessary. However you can still force this initial homing step by setting this option in which case
|
||||
# the filament will home to the extruder and then home to the toolhead sensor in two steps
|
||||
#
|
||||
extruder_force_homing: 0
|
||||
|
||||
|
||||
# Toolhead loading and unloading --------------------------------------------------------------------------------------
|
||||
# ████████╗ ██████╗ ██████╗ ██╗ ██╗ ██╗███████╗ █████╗ ██████╗ ██╗ ██████╗ █████╗ ██████╗
|
||||
# ╚══██╔══╝██╔═══██╗██╔═══██╗██║ ██║ ██║██╔════╝██╔══██╗██╔══██╗ ██║ ██╔═══██╗██╔══██╗██╔══██╗
|
||||
# ██║ ██║ ██║██║ ██║██║ ███████║█████╗ ███████║██║ ██║ ██║ ██║ ██║███████║██║ ██║
|
||||
# ██║ ██║ ██║██║ ██║██║ ██╔══██║██╔══╝ ██╔══██║██║ ██║ ██║ ██║ ██║██╔══██║██║ ██║
|
||||
# ██║ ╚██████╔╝╚██████╔╝███████╗██║ ██║███████╗██║ ██║██████╔╝ ███████╗╚██████╔╝██║ ██║██████╔╝
|
||||
# ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝
|
||||
#
|
||||
# It is possible to define highly customized loading and unloading sequences, however, unless you have a specialized
|
||||
# setup it is probably easier to opt for the built-in toolhead loading and unloading sequence which already offers a
|
||||
# high degree of customization. If you need even more control then edit the _MMU_LOAD_SEQUENCE and _MMU_UNLOAD_SEQUENCE
|
||||
# macros in mmu_sequence.cfg - but be careful!
|
||||
#
|
||||
# An MMU must have a known point at the end of the bowden from which it can precisely load the extruder. Generally this
|
||||
# will either be the extruder entrance (which is controlled with settings above) or by homing to toolhead sensor. If
|
||||
# you have toolhead sensor it is past the extruder gear and the driver needs to know the max distance (from end of
|
||||
# bowden move) to attempt homing
|
||||
#
|
||||
toolhead_homing_max: 40 # Maximum distance to advance in order to attempt to home to defined homing endstop
|
||||
|
||||
# IMPORTANT: These next three settings are based on the physical dimensions of your toolhead
|
||||
# Once a homing position is determined, Happy Hare needs to know the final move distance to the nozzle. There is only
|
||||
# one correct value for your setup - use 'toolhead_ooze_reduction' (which corresponds to the residual filament left in
|
||||
# your nozzle) to control excessive oozing on load. See doc for table of proposed values for common configurations.
|
||||
#
|
||||
# NOTE: If you have a toolhead sensor you can automate the calculation of these parameters! Read about the
|
||||
# `MMU_CALIBRATE_TOOLHEAD` command (https://github.com/moggieuk/Happy-Hare/wiki/Blobbing-and-Stringing#---calibrating-toolhead)
|
||||
#
|
||||
toolhead_extruder_to_nozzle: 72 # Distance from extruder gears (entrance) to nozzle
|
||||
toolhead_sensor_to_nozzle: 62 # Distance from toolhead sensor to nozzle (ignored if not fitted)
|
||||
toolhead_entry_to_extruder: 8 # Distance from extruder "entry" sensor to extruder gears (ignored if not fitted)
|
||||
|
||||
# This setting represents how much residual filament is left behind in the nozzle when filament is removed, it is thus
|
||||
# used to reduce the extruder loading length and prevent excessive blobbing but also in the calculation of purge volume.
|
||||
# Note that this value can also be measured with the `MMU_CALIBRATE_TOOLHEAD` procedure
|
||||
#
|
||||
toolhead_residual_filament: 0 # Reduction in extruder loading length because of residual filament left behind
|
||||
|
||||
# TUNING: Finally, this is the last resort tuning value to fix blobbing. It is expected that this value is NEAR ZERO as
|
||||
# it represents a further reduction in extruder load length to fix blobbing. If using a wipetower and you experience blobs
|
||||
# on it, increase this value (reduce the quantity of filament loaded). If you experience gaps, decrease this value. If gaps
|
||||
# and already at 0 then perhaps the 'toolhead_extruder_to_nozzle' or 'toolhead_residual_filament' settings are incorrect.
|
||||
# Similarly a value >+5mm also suggests the four settings above are not correct. Also see 'retract' setting in
|
||||
# 'mmu_macro_vars.cfg' for final in-print ooze tuning.
|
||||
#
|
||||
toolhead_ooze_reduction: 0 # Reduction in extruder loading length to prevent ooze (represents filament remaining)
|
||||
|
||||
# Distance added to the extruder unload movement to ensure filament is free of extruder. This adds some degree of tolerance
|
||||
# to slightly incorrect configuration or extruder slippage. However don't use as an excuse for incorrect toolhead settings
|
||||
#
|
||||
toolhead_unload_safety_margin: 10 # Extra movement safety margin (default: 10mm)
|
||||
|
||||
# If not synchronizing gear and extruder and you experience a "false" clog detection immediately after the tool change
|
||||
# it might be because of a long bowden and/or large internal diameter that causes slack in the filament. This optional
|
||||
# move will tighten the filament after a load by % of current clog detection length. Gear stepper will run at 50% current
|
||||
#
|
||||
toolhead_post_load_tighten: 60 # % of clog detection length, 0 to disable. Ignored if 'sync_to_extruder: 1'
|
||||
|
||||
# ADVANCED: Controls the detection of successful extruder load/unload movement and represents the fraction of allowable
|
||||
# mismatch between actual movement and that seen by encoder. Setting to 100% tolerance effectively turns off checking.
|
||||
# Some designs of extruder have a short move distance that may not be picked up by encoder and cause false errors. This
|
||||
# allows masking of those errors. However the error often indicates that your extruder load speed is too high or the
|
||||
# friction is too high on the filament and in that case masking the error is not a good idea. Try reducing friction
|
||||
# and lowering speed first!
|
||||
#
|
||||
toolhead_move_error_tolerance: 60
|
||||
|
||||
|
||||
# Tip forming ---------------------------------------------------------------------------------------------------------
|
||||
# ████████╗██╗██████╗ ███████╗ ██████╗ ██████╗ ███╗ ███╗██╗███╗ ██╗ ██████╗
|
||||
# ╚══██╔══╝██║██╔══██╗ ██╔════╝██╔═══██╗██╔══██╗████╗ ████║██║████╗ ██║██╔════╝
|
||||
# ██║ ██║██████╔╝ █████╗ ██║ ██║██████╔╝██╔████╔██║██║██╔██╗ ██║██║ ███╗
|
||||
# ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██╔══██╗██║╚██╔╝██║██║██║╚██╗██║██║ ██║
|
||||
# ██║ ██║██║ ██║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║██║██║ ╚████║╚██████╔╝
|
||||
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||
#
|
||||
# Tip forming responsibility can be split between slicer (in-print) and standalone macro (not in-print) or forced to always
|
||||
# be done by Happy Hare's standalone macro. Since you always need the option to form tips without the slicer so it is
|
||||
# generally easier to completely turn off the slicer, force "standalone" tip forming and tune only in Happy Hare.
|
||||
#
|
||||
# When Happy Hare is asked to form a tip it will run the referenced macro. Two are reference examples are provided but
|
||||
# you can implement your own:
|
||||
# _MMU_FORM_TIP .. default tip forming similar to popular slicers like Superslicer and Prusaslicer
|
||||
# _MMU_CUT_TIP .. for Filametrix (originally ERCFv2) or similar style toolhead filament cutting system
|
||||
#
|
||||
# NOTE: For MMU located cutting like the optional EREC cutter you should set still this to _MMU_FORM_TIP to build a decent
|
||||
# tip prior to extraction and cutting after the unload.
|
||||
#
|
||||
# Often it is useful to increase the extruder current for the rapid movement to ensure high torque and no skipped steps
|
||||
#
|
||||
# If opting for slicer tip forming you MUST configure where the slicer leaves the filament in the extruder since
|
||||
# there is no way to determine this. This can be ignored if all tip forming is performed by Happy Hare
|
||||
#
|
||||
force_form_tip_standalone: 1 # 0 = Slicer in print else standalone, 1 = Always standalone tip forming (TURN SLICER OFF!)
|
||||
form_tip_macro: _MMU_FORM_TIP # Name of macro to call to perform the tip forming (or cutting) operation
|
||||
extruder_form_tip_current: 100 # % of extruder current (100%-150%) to use when forming tip (100 to disable)
|
||||
slicer_tip_park_pos: 0 # This specifies the position of filament in extruder after slicer completes tip forming
|
||||
|
||||
|
||||
# Purging -------------------------------------------------------------------------------------------------------------
|
||||
# ██████╗ ██╗ ██╗██████╗ ██████╗ ██╗███╗ ██╗ ██████╗
|
||||
# ██╔══██╗██║ ██║██╔══██╗██╔════╝ ██║████╗ ██║██╔════╝
|
||||
# ██████╔╝██║ ██║██████╔╝██║ ███╗██║██╔██╗ ██║██║ ███╗
|
||||
# ██╔═══╝ ██║ ██║██╔══██╗██║ ██║██║██║╚██╗██║██║ ██║
|
||||
# ██║ ╚██████╔╝██║ ██║╚██████╔╝██║██║ ╚████║╚██████╔╝
|
||||
# ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||
#
|
||||
# After a toolchange it is necessary to purge the old filament. Similar to tip forming this can be done by the slicer and/or
|
||||
# by Happy Hare using an extension like Blobifer. If a purge_macro is defined it will be called when not printing or whenever
|
||||
# the slicer isn't going to purge (like initial tool load). You can force it to always be called in a print by setting
|
||||
# force_purge_standalone, but remember to turn off the slicer wipetower
|
||||
#
|
||||
# The default is for no (empty) macro so purging will not be done out of a print and thus wipetower. Two options are shipped with
|
||||
# Happy Hare but you can also build your own custom one:
|
||||
# _MMU_PURGE .. default purging that just dumps the desired amount of filament (setup correct parking before enabling this!)
|
||||
# BLOBIFER .. for excellent Blobifer addon (https://github.com/Dendrowen/Blobifier)
|
||||
#
|
||||
# Often it is useful to increase the extruder current for the often rapid puring movement to ensure high torque and no skipped steps
|
||||
#
|
||||
force_purge_standalone: 0 # 0 = Slicer wipetower in print else standalone, 1 = Always standalone purging (TURN WIPETOWER OFF!)
|
||||
purge_macro: '' # Name of macro to call to perform the standalone purging operation. E.g. BLOBIFIER, _MMU_PURGE
|
||||
extruder_purge_current: 100 # % of extruder current (100%-150%) to use when purging (100 to disable)
|
||||
|
||||
|
||||
# Synchronized gear/extruder movement ----------------------------------------------------------------------------------
|
||||
# ███╗ ███╗ ██████╗ ████████╗ ██████╗ ██████╗ ███████╗██╗ ██╗███╗ ██╗ ██████╗
|
||||
# ████╗ ████║██╔═══██╗╚══██╔══╝██╔═══██╗██╔══██╗ ██╔════╝╚██╗ ██╔╝████╗ ██║██╔════╝
|
||||
# ██╔████╔██║██║ ██║ ██║ ██║ ██║██████╔╝ ███████╗ ╚████╔╝ ██╔██╗ ██║██║
|
||||
# ██║╚██╔╝██║██║ ██║ ██║ ██║ ██║██╔══██╗ ╚════██║ ╚██╔╝ ██║╚██╗██║██║
|
||||
# ██║ ╚═╝ ██║╚██████╔╝ ██║ ╚██████╔╝██║ ██║ ███████║ ██║ ██║ ╚████║╚██████╗
|
||||
# ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═════╝
|
||||
#
|
||||
# This controls whether the extruder and gear steppers are synchronized during printing operations
|
||||
# If you normally run with maxed out gear stepper current consider reducing it with 'sync_gear_current'
|
||||
# If equipped with TMC drivers the current of the gear and extruder motors can be controlled to optimize performance.
|
||||
# This can be useful to control gear stepper temperature when printing with synchronized motor
|
||||
#
|
||||
sync_to_extruder: 0 # Gear motor is synchronized to extruder during print
|
||||
sync_gear_current: 70 # % of gear_stepper current (10%-100%) to use when syncing with extruder during print
|
||||
sync_form_tip: 0 # Synchronize during standalone tip formation (initial part of unload)
|
||||
sync_purge: 0 # Synchronize during standalone purging (last part of load)
|
||||
|
||||
# Optionally it is possible to leverage feedback for a "compression/expansion" sensor in the bowden path from MMU to
|
||||
# extruder to ensure that the two motors are kept in sync as viewed by the filament (the signal feedback state can be
|
||||
# binary supplied by one or two switches: -1 (expanded) and 1 (compressed) of proportional value between -1.0 and 1.0
|
||||
# Requires [mmu_sensors] setting
|
||||
#
|
||||
sync_feedback_enable: 0 # 0 = Turn off (even with fitted sensor), 1 = Turn on
|
||||
sync_multiplier_high: 1.05 # Maximum factor to apply to gear stepper 'rotation_distance'
|
||||
sync_multiplier_low: 0.95 # Minimum factor to apply
|
||||
|
||||
|
||||
# ESpooler control -----------------------------------------------------------------------------------------------------
|
||||
# ███████╗███████╗██████╗ ██████╗ ██████╗ ██╗ ███████╗██████╗
|
||||
# ██╔════╝██╔════╝██╔══██╗██╔═══██╗██╔═══██╗██║ ██╔════╝██╔══██╗
|
||||
# █████╗ ███████╗██████╔╝██║ ██║██║ ██║██║ █████╗ ██████╔╝
|
||||
# ██╔══╝ ╚════██║██╔═══╝ ██║ ██║██║ ██║██║ ██╔══╝ ██╔══██╗
|
||||
# ███████╗███████║██║ ╚██████╔╝╚██████╔╝███████╗███████╗██║ ██║
|
||||
# ╚══════╝╚══════╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝
|
||||
#
|
||||
# If your MMU has a dc motor (often N20) controlled respooler/assist then how it operates can be controlled with these
|
||||
# settings. Typically the espooler will be controlled with PWM signal. This will be at the maximum at speeds equal or
|
||||
# above 'espooler.max_stepper_speed'. The PWM signal will scale downwards towards 0 for slower speeds. The falloff being
|
||||
# controlled by the 'espooler_speed_exponent' setting according to this formula and allows for non-linear characteristics
|
||||
# the DC motor (0.5 is a good starting value).
|
||||
#
|
||||
# espooler_pwm = (stepper_speed / espooler_max_stepper_speed) ^ {espooler_speed_exponent}
|
||||
#
|
||||
# Regardless of h/w configuration you can enable/disable actions with the 'espooler_operations' list. E.g. remove 'play' to
|
||||
# turn off operation while printing. Options are:
|
||||
#
|
||||
# rewind - when filament is being unloaded under MMU control (aka respool)
|
||||
# assist - when filament is being loaded under MMU control (% of "rewind" speed but with minimum of "print" power)
|
||||
# print - while printing. Generally set 'espooler_printing_power' to a low percentage just to allow motor to be turned
|
||||
# freely or set to 0 to enable/allow "burst" assist movements
|
||||
#
|
||||
# If using a digitally controlled espooler motor (not PWM) then you should turn off the "print" mode and set
|
||||
# 'espooler_min_stepper_speed' to prevent "over movement"
|
||||
#
|
||||
espooler_min_distance: 30 # Individual stepper movements less than this distance will not active espooler
|
||||
espooler_max_stepper_speed: 300 # Gear stepper speed at which espooler will be at maximum power
|
||||
espooler_min_stepper_speed: 0 # Gear stepper speed at which espooler will become inactive (useful for non PWM control)
|
||||
espooler_speed_exponent: 0.5 # Controls non-linear espooler power relative to stepper speed (see notes)
|
||||
espooler_assist_reduced_speed: 50 # Control the % of the rewind speed that is applied to assisting load (want rewind to be faster)
|
||||
espooler_printing_power: 0 # If >0, fixes the % of PWM power while printing. 0=allows burst movement
|
||||
espooler_operations: rewind, assist, print # List of operational modes (allows disabling even if h/w is configured)
|
||||
#
|
||||
# The following burst configuration is used only if 'print' operation is enabled and 'espooler_printing_power: 0'
|
||||
#
|
||||
espooler_assist_extruder_move_length: 100 # Distance (mm) extruder needs to move between each assist burst
|
||||
espooler_assist_burst_power: 100 # The % power of the burst move
|
||||
espooler_assist_burst_duration: 0.4 # The duration of the burst move is seconds
|
||||
espooler_assist_burst_trigger: 0 # If trigger assist switch is fitted 0=disable, 1=enable
|
||||
espooler_assist_burst_trigger_max: 3 # If trigger assist switch is fitted this limits the max number of back-to-back advances
|
||||
|
||||
|
||||
# Filament Management Options ----------------------------------------------------------------------------------------
|
||||
# ███████╗██╗██╗ ███╗ ███╗ ██████╗ ███╗ ███╗████████╗
|
||||
# ██╔════╝██║██║ ████╗ ████║██╔════╝ ████╗ ████║╚══██╔══╝
|
||||
# █████╗ ██║██║ ██╔████╔██║██║ ███╗██╔████╔██║ ██║
|
||||
# ██╔══╝ ██║██║ ██║╚██╔╝██║██║ ██║██║╚██╔╝██║ ██║
|
||||
# ██║ ██║███████╗██╗ ██║ ╚═╝ ██║╚██████╔╝██║ ╚═╝ ██║ ██║
|
||||
# ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
|
||||
#
|
||||
# - Clog detection is available when encoder is fitted and it can detect when filament is not moving and pause the print
|
||||
# - EndlessSpool feature allows detection of runout on one spool and the automatic mapping of tool to an alternative
|
||||
# gate (spool). Set to '1', this feature requires clog detection or gate sensor or pre-gate sensors. EndlessSpool
|
||||
# functionality can optionally be extended to attempt to load an empty gate with 'endless_spool_on_load'. On some MMU
|
||||
# designs (with linear selector) it can also be configured to eject filament remains to a designated gate rather than
|
||||
# defaulting to current gate. A custom gate will disable pre-gate runout detection for EndlessSpool because filament
|
||||
# end must completely pass through the gate for selector to move
|
||||
#
|
||||
enable_clog_detection: 2 # 0 = disable, 1 = static length clog detection, 2 = automatic length clog detection
|
||||
enable_endless_spool: 1 # 0 = disable, 1 = enable endless spool
|
||||
endless_spool_on_load: 0 # 0 = don't apply endless spool on load, 1 = run endless spool if gate is empty
|
||||
endless_spool_eject_gate: -1 # Which gate to eject the filament remains. -1 = current gate
|
||||
#endless_spool_groups: # Default EndlessSpool groups (see later in file)
|
||||
#
|
||||
# Spoolman support requires you to correctly enable spoolman with moonraker first. If enabled, the gate SpoolId will
|
||||
# be used to load filament details and color from the spoolman database and Happy Hare will activate/deactivate
|
||||
# spools as they are used. The enabled variation allows for either the local map or the spoolman map to be the
|
||||
# source of truth as well as just fetching filament attributes. See this table for explanation:
|
||||
#
|
||||
# | Activate/ | Fetch filament attributes | Filament gate | Filament gate |
|
||||
# spoolman_support | Deactivate | attributes from spoolman | assignment shown | assignment pulled |
|
||||
# | spool? | based on spool_id? | in spoolman db? | from spoolman db? |
|
||||
# -----------------+------------+---------------------------+------------------+-------------------+
|
||||
# off | no | no | no | no |
|
||||
# readonly | yes | yes | no | no |
|
||||
# push | yes | yes | yes | no |
|
||||
# pull | yes | yes | yes | yes |
|
||||
#
|
||||
spoolman_support: off # off = disabled, readonly = enabled, push = local gate map, pull = remote gate map
|
||||
pending_spool_id_timeout: 20 # Seconds after which this pending spool_id (set with rfid) is voided
|
||||
#
|
||||
# Mainsail/Fluid UI can visualize the color of filaments next to the extruder/tool chooser. The color is dynamic and
|
||||
# can be customized to your choice:
|
||||
#
|
||||
# slicer - Color from slicer tool map (what the slicer expects)
|
||||
# allgates - Color from all the tools in the gate map after running through the TTG map
|
||||
# gatemap - As per gatemap but hide empty tools
|
||||
# off - Turns off support
|
||||
#
|
||||
# Note: Happy Hare will also add the 'spool_id' variable to the Tx macro if spoolman is enabled
|
||||
#
|
||||
t_macro_color: slicer # 'slicer' = default | 'allgates' = mmu | 'gatemap' = mmu without empty gates | 'off'
|
||||
|
||||
|
||||
# Print Statistics ---------------------------------------------------------------------------------------------------
|
||||
# ███████╗████████╗ █████╗ ████████╗███████╗
|
||||
# ██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██╔════╝
|
||||
# ███████╗ ██║ ███████║ ██║ ███████╗
|
||||
# ╚════██║ ██║ ██╔══██║ ██║ ╚════██║
|
||||
# ███████║ ██║ ██║ ██║ ██║ ███████║
|
||||
# ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝
|
||||
#
|
||||
# These parameters determine how print statistic data is shown in the console. This table can show a lot of data,
|
||||
# probably more than you'd want to see. Below you can enable/disable options to your needs.
|
||||
#
|
||||
# +-----------+---------------------+----------------------+----------+
|
||||
# | 114(46) | unloading | loading | complete |
|
||||
# | swaps | pre | - | post | pre | - | post | swap |
|
||||
# +-----------+------+-------+------+------+-------+-------+----------+
|
||||
# | all time | 0:07 | 47:19 | 0:00 | 0:01 | 37:11 | 33:39 | 2:00:38 |
|
||||
# | - avg | 0:00 | 0:24 | 0:00 | 0:00 | 0:19 | 0:17 | 1:03 |
|
||||
# | this job | 0:00 | 10:27 | 0:00 | 0:00 | 8:29 | 8:30 | 28:02 |
|
||||
# | - avg | 0:00 | 0:13 | 0:00 | 0:00 | 0:11 | 0:11 | 0:36 |
|
||||
# | last | 0:00 | 0:12 | 0:00 | 0:00 | 0:10 | 0:14 | 0:39 |
|
||||
# +-----------+------+-------+------+------+-------+-------+----------+
|
||||
# Note: Only formats correctly on Python3
|
||||
#
|
||||
# Comma separated list of desired columns
|
||||
# Options: pre_unload, form_tip, unload, post_unload, pre_load, load, purge, post_load, total
|
||||
console_stat_columns: unload, load, post_load, total
|
||||
|
||||
# Comma separated list of rows. The order determines the order in which they're shown.
|
||||
# Options: total, total_average, job, job_average, last
|
||||
console_stat_rows: total, total_average, job, job_average, last
|
||||
|
||||
# How you'd want to see the state of the gates and how they're performing
|
||||
# string - poor, good, perfect, etc..
|
||||
# percentage - rate of success
|
||||
# emoticon - fun sad to happy faces (python3 only)
|
||||
console_gate_stat: emoticon
|
||||
|
||||
# Always display the full statistics table
|
||||
console_always_output_full: 1 # 1 = Show full table, 0 = Only show totals out of print
|
||||
|
||||
|
||||
# Miscellaneous, but you should review -------------------------------------------------------------------------------
|
||||
# ███╗ ███╗██╗███████╗ ██████╗
|
||||
# ████╗ ████║██║██╔════╝██╔════╝
|
||||
# ██╔████╔██║██║███████╗██║
|
||||
# ██║╚██╔╝██║██║╚════██║██║
|
||||
# ██║ ╚═╝ ██║██║███████║╚██████╗
|
||||
# ╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝
|
||||
#
|
||||
# Important you verify these work for you setup/workflow. Temperature and timeouts
|
||||
#
|
||||
timeout_pause: 72000 # Idle time out (printer shuts down) in seconds used when in MMU pause state
|
||||
disable_heater: 600 # Delay in seconds after which the hotend heater is disabled in the MMU_PAUSE state
|
||||
default_extruder_temp: 200 # Default temperature for performing swaps and forming tips when not in print (overridden by gate map)
|
||||
extruder_temp_variance: 2 # When waiting for extruder temperature this is the +/- permissible variance in degrees (>= 1)
|
||||
#
|
||||
# These are auto calibration/tuning settings. Once the gear rotation_distance and encoder are calibrated, enabling these options
|
||||
# will lessen the initial calibration and will automatically tune bowden length and individual gate rotation_distance differences.
|
||||
# Note: What can be tuned is based on "variable_rotation_distance" and "variable_bowden_lengths" settings in mmu_hardware.cfg
|
||||
# E.g. with fixed bowden and multiple BMG gears and encoder like the ERCF, the bowden length is tuned on gate#0 and
|
||||
# rotation_distance (MMU_CALIBRATE_GATE) is tuned for other gates.
|
||||
#
|
||||
autotune_bowden_length: 0 # Automated bowden length calibration/tuning. 1=automatic, 0=manual/off
|
||||
autotune_rotation_distance: 0 # Automated gate calibration/tuning (requires encoder). 1=automatic, 0=manual/off
|
||||
#
|
||||
# Other workflow options
|
||||
#
|
||||
startup_home_if_unloaded: 0 # 1 = force mmu homing on startup if unloaded, 0 = do nothing
|
||||
startup_reset_ttg_map: 0 # 1 = reset TTG map on startup, 0 = do nothing
|
||||
show_error_dialog: 1 # 1 = show pop-up dialog in addition to console message, 0 = show error in console
|
||||
preload_attempts: 5 # How many "grabbing" attempts are made to pick up the filament with preload feature
|
||||
strict_filament_recovery: 0 # If enabled with MMU with toolhead sensor, this will cause filament position recovery to
|
||||
# perform extra moves to look for filament trapped in the space after extruder but before sensor
|
||||
filament_recovery_on_pause: 1 # 1 = Run a quick check to determine current filament position on pause/error, 0 = disable
|
||||
retry_tool_change_on_error: 0 # Whether to automatically retry a failed tool change. If enabled Happy Hare will perform
|
||||
# the equivalent of 'MMU_RECOVER' + 'Tx' commands which usually is all that is necessary
|
||||
# to recover. Note that enabling this can mask problems with your MMU
|
||||
bypass_autoload: 1 # If extruder sensor fitted this controls the automatic loading of extruder for bypass operation
|
||||
has_filament_buffer: 1 # Whether the MMU has a filament buffer. Set to 0 if using Filamentalist or DC eSpooler, etc
|
||||
#
|
||||
# Advanced options. Don't mess unless you fully understand. Read documentation.
|
||||
#
|
||||
encoder_move_validation: 1 # ADVANCED: 1 = Normally Encoder validates move distances are within given tolerance
|
||||
# 0 = Validation is disabled (eliminates slight pause between moves but less safe)
|
||||
print_start_detection: 1 # ADVANCED: Enabled for Happy Hare to automatically detect start and end of print and call
|
||||
# ADVANCED: MMU_PRINT_START and MMU_PRINT_END automatically. Harmless to leave enabled but can disable
|
||||
# if you think it is causing problems and known START/END is covered in your macros
|
||||
extruder: extruder # ADVANCED: Name of the toolhead extruder that MMU is using
|
||||
gcode_load_sequence: 0 # VERY ADVANCED: Gcode loading sequence 1=enabled, 0=internal logic (default)
|
||||
gcode_unload_sequence: 0 # VERY ADVANCED: Gcode unloading sequence, 1=enabled, 0=internal logic (default)
|
||||
|
||||
|
||||
# ADVANCED: Klipper tuning -------------------------------------------------------------------------------------------
|
||||
# ██╗ ██╗██╗ ██╗██████╗ ██████╗ ███████╗██████╗
|
||||
# ██║ ██╔╝██║ ██║██╔══██╗██╔══██╗██╔════╝██╔══██╗
|
||||
# █████╔╝ ██║ ██║██████╔╝██████╔╝█████╗ ██████╔╝
|
||||
# ██╔═██╗ ██║ ██║██╔═══╝ ██╔═══╝ ██╔══╝ ██╔══██╗
|
||||
# ██║ ██╗███████╗██║██║ ██║ ███████╗██║ ██║
|
||||
# ╚═╝ ╚═╝╚══════╝╚═╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
|
||||
#
|
||||
# Timer too close is a catch all error, however it has been found to occur on some systems during homing and probing
|
||||
# operations especially so with CANbus connected MCUs. Happy Hare uses many homing moves for reliable extruder loading
|
||||
# and unloading and enabling this option affords klipper more tolerance and avoids this dreaded error
|
||||
#
|
||||
update_trsync: 0 # 1 = Increase TRSYNC_TIMEOUT, 0 = Leave the klipper default
|
||||
#
|
||||
# Some CANbus boards are prone to this but it have been seen on regular USB boards where a comms timeout will kill
|
||||
# the print. Since it seems to occur only on homing moves they can be safely retried to workaround. This has been
|
||||
# working well in practice
|
||||
canbus_comms_retries: 3 # Number of retries. Recommend the default of 3.
|
||||
#
|
||||
# Older neopixels have very finicky timing and can generate lots of "Unable to obtain 'neopixel_result' response"
|
||||
# errors in klippy.log. An often cited workaround is to increase BIT_MAX_TIME in neopixel.py. This option does that
|
||||
# automatically for you to save dirtying klipper
|
||||
update_bit_max_time: 1 # 1 = Increase BIT_MAX_TIME, 0 = Leave the klipper default
|
||||
|
||||
|
||||
# ADVANCED: MMU macro overrides --- ONLY SET IF YOU'RE COMFORTABLE WITH KLIPPER MACROS -------------------------------
|
||||
# ███╗ ███╗ █████╗ ██████╗██████╗ ██████╗ ███████╗
|
||||
# ████╗ ████║██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔════╝
|
||||
# ██╔████╔██║███████║██║ ██████╔╝██║ ██║███████╗
|
||||
# ██║╚██╔╝██║██╔══██║██║ ██╔══██╗██║ ██║╚════██║
|
||||
# ██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║╚██████╔╝███████║
|
||||
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
|
||||
#
|
||||
# 'pause_macro' defines what macro to call on MMU error (must put printer in paused state)
|
||||
# Other macros are detailed in 'mmu_sequence.cfg'
|
||||
# Also see form_tip_macro in Tip Forming section and purge_macro in Purging section
|
||||
#
|
||||
pause_macro: PAUSE # What macro to call to pause the print
|
||||
action_changed_macro: _MMU_ACTION_CHANGED # Called when action (printer.mmu.action) changes
|
||||
print_state_changed_macro: _MMU_PRINT_STATE_CHANGED # Called when print state (printer.mmu.print_state) changes
|
||||
mmu_event_macro: _MMU_EVENT # Called on useful MMU events
|
||||
pre_unload_macro: _MMU_PRE_UNLOAD # Called before starting the unload
|
||||
post_form_tip_macro: _MMU_POST_FORM_TIP # Called immediately after tip forming
|
||||
post_unload_macro: _MMU_POST_UNLOAD # Called after unload completes
|
||||
pre_load_macro: _MMU_PRE_LOAD # Called before starting the load
|
||||
post_load_macro: _MMU_POST_LOAD # Called after the load is complete
|
||||
unload_sequence_macro: _MMU_UNLOAD_SEQUENCE # VERY ADVANCED: Optionally called based on 'gcode_unload_sequence'
|
||||
load_sequence_macro: _MMU_LOAD_SEQUENCE # VERY ADVANCED: Optionally called based on 'gcode_load_sequence'
|
||||
|
||||
|
||||
# ADVANCED: See documentation for use of these -----------------------------------------------------------------------
|
||||
# ██████╗ ███████╗███████╗███████╗████████╗ ██████╗ ███████╗███████╗███████╗
|
||||
# ██╔══██╗██╔════╝██╔════╝██╔════╝╚══██╔══╝ ██╔══██╗██╔════╝██╔════╝██╔════╝
|
||||
# ██████╔╝█████╗ ███████╗█████╗ ██║ ██║ ██║█████╗ █████╗ ███████╗
|
||||
# ██╔══██╗██╔══╝ ╚════██║██╔══╝ ██║ ██║ ██║██╔══╝ ██╔══╝ ╚════██║
|
||||
# ██║ ██║███████╗███████║███████╗ ██║ ██████╔╝███████╗██║ ███████║
|
||||
# ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚══════╝
|
||||
#
|
||||
# These are the values that the various "RESET" commands will reset too rather than the built-in defaults. The lenght
|
||||
# of the lists must match the number of gates on your MMU
|
||||
#
|
||||
# e.g. MMU_GATE_MAP RESET=1 - will use all the 'gate_XXX' values
|
||||
# MMU_TTG_MAP RESET=1 - will use the 'tool_to_gate_map'
|
||||
# MMU_ENDLESS_SPOOL_GROUPS RESET=1 - will use the 'endless_spool_groups'
|
||||
#
|
||||
# Gate: #0 #1 #2 #3 #4 #5 #6 #7 #8
|
||||
#gate_status: 1, 0, 1, 2, 2, -1, -1, 0, 1
|
||||
#gate_filament_name: one, two, three, four, five, six, seven, eight, nine
|
||||
#gate_material: PLA, ABS, ABS, ABS+, PLA, PLA, PETG, TPU, ABS
|
||||
#gate_color: red, black, yellow, green, blue, indigo, ffffff, grey, black
|
||||
#gate_temperature: 210, 240, 235, 245, 210, 200, 215, 240, 240
|
||||
#gate_spool_id: 3, 2, 1, 4, 5, 6, 7, -1, 9
|
||||
#gate_speed_override: 100, 100, 100, 100, 100, 100, 100, 50, 100
|
||||
#endless_spool_groups: 0, 1, 2, 1, 0, 0, 3, 4, 1
|
||||
#
|
||||
# Tool: T0 T1 T2 T3 T4 T5 T6 T7 T8
|
||||
#tool_to_gate_map: 0, 1, 2, 3, 4, 5, 6, 7, 8
|
||||
|
||||
|
||||
# ADVANCED/CUSTOM MMU: See documentation for use of these ------------------------------------------------------------
|
||||
# ██████╗██╗ ██╗███████╗████████╗ ██████╗ ███╗ ███╗ ███╗ ███╗███╗ ███╗██╗ ██╗
|
||||
# ██╔════╝██║ ██║██╔════╝╚══██╔══╝██╔═══██╗████╗ ████║ ████╗ ████║████╗ ████║██║ ██║
|
||||
# ██║ ██║ ██║███████╗ ██║ ██║ ██║██╔████╔██║ ██╔████╔██║██╔████╔██║██║ ██║
|
||||
# ██║ ██║ ██║╚════██║ ██║ ██║ ██║██║╚██╔╝██║ ██║╚██╔╝██║██║╚██╔╝██║██║ ██║
|
||||
# ╚██████╗╚██████╔╝███████║ ██║ ╚██████╔╝██║ ╚═╝ ██║ ██║ ╚═╝ ██║██║ ╚═╝ ██║╚██████╔╝
|
||||
# ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
|
||||
#
|
||||
# Normally all these settings are set based on your choice of 'mmu_vendor' and 'mmu_version' in mmu_hardware.cfg, but they
|
||||
# can be overridden. If you have selected a vendor of "Other" and your MMU has a selector you must set these CAD based
|
||||
# dimensions else you will get arbitrary defaults. You may also need to set additional attributes in '[mmu_machine]'
|
||||
# section of mmu_hardware.cfg.
|
||||
#
|
||||
#cad_gate0_pos: 4.2 # Approximate distance from endstop to first gate. Used for rough calibration only
|
||||
#cad_gate_width: 21.0 # Width of each gate
|
||||
#cad_bypass_offset: 0 # Distance from limit of travel back to the bypass (e.g. ERCF v2.0)
|
||||
#cad_last_gate_offset: 2.0 # Distance from limit of travel back to last gate
|
||||
#cad_selector_tolerance: 10.0 # How much extra selector movement to allow for calibration
|
||||
#cad_gate_directions = [1, 1, 0, 0] # Directions of gear depending on gate (3DChameleon)
|
||||
#cad_release_gates = [2, 3, 0, 1] # Gate to move to when releasing filament (3DChameleon)
|
||||
|
||||
# SUPPLEMENTAL USER CONFIG retained after upgrade --------------------------------------------------------------------
|
||||
#
|
||||
1
mmu/base/mmu_purge.cfg
Symbolic link
1
mmu/base/mmu_purge.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_purge.cfg
|
||||
1
mmu/base/mmu_sequence.cfg
Symbolic link
1
mmu/base/mmu_sequence.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_sequence.cfg
|
||||
1
mmu/base/mmu_software.cfg
Symbolic link
1
mmu/base/mmu_software.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_software.cfg
|
||||
1
mmu/base/mmu_state.cfg
Symbolic link
1
mmu/base/mmu_state.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/biqu/Happy-Hare/config/base/mmu_state.cfg
|
||||
Reference in New Issue
Block a user