506 lines
33 KiB
INI
506 lines
33 KiB
INI
########################################################################################################################
|
|
# 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
|
|
#
|
|
# 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 -1,-1 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 : -1, -1, 1, 5, 2 ; x,y,z-hop,z_hop_ramp,retract for "toolchange" operations (toolchange,load,unload)
|
|
variable_park_runout : -1, -1, 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 : -1, -1, 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 -1,-1,0 for no movement at that stage (no-op).
|
|
# All movement will be at the established movement plane (z-height)
|
|
variable_pre_unload_position : -1, -1, 0 ; x,y,z-hop position before unloading starts
|
|
variable_post_form_tip_position : -1, -1, 0 ; x,y,z-hop position after form/cut tip on unload
|
|
variable_pre_load_position : -1, -1, 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
|
|
|
|
# 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 to "pin_loc_x" or "pin_loc_y" depending on the 'cutting_axis'
|
|
# to determine the starting position and to create a small safety distance that aids
|
|
# in generating momentum
|
|
variable_pin_park_dist : 5.0 ; Distance in mm
|
|
|
|
# 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_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)
|
|
|
|
|
|
# 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
|
|
|