Skip to content

Commit

Permalink
Working Voron 2.4 350mm Stealthburner
Browse files Browse the repository at this point in the history
  • Loading branch information
daMustermann committed Feb 15, 2022
0 parents commit e3f32cc
Show file tree
Hide file tree
Showing 12 changed files with 4,659 additions and 0 deletions.
5 changes: 5 additions & 0 deletions custom_menu.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[menu __main __filament __clean]
type: command
name: Clean Nozzle
gcode:
clean_nozzle
70 changes: 70 additions & 0 deletions fluidd.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
[virtual_sdcard]
path: ~/gcode_files

[pause_resume]

[display_status]

[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
TURN_OFF_HEATERS
CANCEL_PRINT_BASE

[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 2.0) %}
{% set z_safe = 2.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
PAUSE_BASE
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G1 Z{z_safe} F900
G90
G1 X{x_park} Y{y_park} F6000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}

[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
G91
G1 E{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
RESUME_BASE {get_params}
40 changes: 40 additions & 0 deletions moonraker.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[server]
host: 0.0.0.0
port: 7125
enable_debug_logging: False
config_path: ~/klipper_config
temperature_store_size: 600
gcode_store_size: 1000
log_path: ~/klipper_logs

[authorization]
force_logins: True
cors_domains:
*.local
*.lan
*://app.fluidd.xyz

trusted_clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
FE80::/10
::1/128

# enables partial support of Octoprint API
[octoprint_compat]

# enables moonraker to track and store print history.
[history]

# this enables moonraker's update manager
[update_manager]
enable_auto_refresh: True

# this enabled fluidd updates
[update_manager client fluidd]
type: web
repo: cadriel/fluidd
path: ~/fluidd
222 changes: 222 additions & 0 deletions nozzle_scrub.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
#######################################################################################################################################

# Sample macro config to be used in conjunction with the Decontaminator Purge Bucket & Nozzle Scrubber mod. Created by Hernsl
# (hernsl#8860 on Discord) and edited by Edwardyeeks (edwardyeeks#6042 on Discord). Several ideas that made it as features by
# Deutherius (deutherius#3295 on Discord).

# The goal of this macro is to provide a nozzle scrubbing and purging routine that is easily copied/referenced into your printer.cfg.
# Users can simply change parameters and enable/disable options in the first half. Descriptions are plentiful, making this macro
# look huge but informative and are laid out in sequence to be read first describing the line below; PLEASE READ CAREFULLY.

# This sample config assumes the following: The user has implemented the default decontaminator purge bucket & nozzle scrubber mod
# for the VORON 1/2. It can be tweaked to customised purge bucket geometries and brushes.

# Features in this macro: option of putting the bucket at the rear or front of the bed. Purge routine that can be enabled/disabled.
# By default, bucket is located at rear left of bed and purge routine is enabled. The purge and scrubbing routine is randomized
# in either left or right bucket to ensure as even as possible distribution of filament gunk.

# Default parameters are set for safe speeds and movements. Where necessary, tweak the parameters for the nozzle scrub procedure
# to fit your printer.

# To avoid adding length of lines to your main printer.cfg config file, one can upload a config file separately into klipper and
# include it into the main printer config. Upload nozzle_scrub.cfg to the same directory as printer.cfg. Usually, it is in /home/pi/.
# Users of Fluidd, Mainsail and other klipper front ends would find it under /home/pi/klipper_config/.

# Once uploaded, add the following to your printer.cfg in the Macros section: [include /home/pi/nozzle_scrub.cfg]
# Those running Fluidd, Mainsail and other front ends will need to use the following location instead:
# [include /home/pi/klipper_config/nozzle_scrub.cfg]

#######################################################################################################################################

# Name of the macro is clean_nozzle.

[gcode_macro clean_nozzle]

# If you are putting your purge bucket at the rear left of the bed as per default installation, enable True on your location_bucket_rear
# variable. If you want to put your purge bucket elsewhere (perhaps the front), then set it to False. See diagrams and description
# further below on how to set your XY position.
variable_location_bucket_rear: True

# If you want the purging routine in your bucket enabled, set to True (and vice versa).
variable_enable_purge: True

# These parameters define your filament purging. The retract variable is used to retract right after purging to prevent unnecessary
# oozing. Some filament are particularly oozy and may continue to ooze out of the nozzle for a second or two after retracting. The
# ooze dwell variable makes allowance for this. Update as necessary. If you decided to not enable purge, you can ignore this section.
variable_purge_len: 10 ; Amount of filament, in mm, to purge.
variable_purge_spd: 150 ; Speed, in mm/min, of the purge.
variable_purge_temp_min: 240 ; Minimum nozzle temperature to permit a purge. Otherwise, purge will not occur.
variable_purge_ret: 2 ; Retract length, in mm, after purging to prevent slight oozing. Adjust as necessary.
variable_ooze_dwell: 2 ; Dwell/wait time, in seconds, after purging and retracting.

# Adjust this so that your nozzle scrubs within the brush. Currently defaulted to be a lot higher for safety. Be careful not to go too low!
variable_brush_top: 0

# These parameters define your scrubbing, travel speeds, safe z clearance and how many times you want to wipe. Update as necessary. Wipe
# direction is randomized based off whether the left or right bucket is randomly selected in the purge & scrubbing routine.
variable_clearance_z: 5 ; When traveling, but not cleaning, the clearance along the z-axis between nozzle and brush.
variable_wipe_qty: 3 ; Number of complete (A complete wipe: left, right, left OR right, left, right) wipes.
variable_prep_spd_xy: 3000 ; Travel (not cleaning) speed along x and y-axis in mm/min.
variable_prep_spd_z: 1500 ; Travel (not cleaning) speed along z axis in mm/min.
variable_wipe_spd_xy: 5000 ; Nozzle wipe speed in mm/min.


# These parameters define the size of the brush. Update as necessary. A visual reference is provided below. Note that orientation of
# parameters remain the same whether bucket is at rear or front.
#
# ← brush_width →
# _________________ ↑
# | | ↑ If you chose location_bucket_rear = True, Y position is acquired
# brush_start (x) | | brush_depth from your stepper_y position_max. Adjust your brush physically in
# |_________________| ↓ Y so that the nozzle scrubs within the brush.
# (y) ↓
# brush_front
# __________________________________________________________
# PRINTER FRONT
#
#
## For V1.8, you may need to measure where your brush is on the x axis and input manually into any of the variable_brush_start uncommented.
## For V2.4 250mm build, uncomment this below:
#variable_brush_start: 25

## For V2.4 300mm build, uncomment this below:
#variable_brush_start: 50

## For V2.4 350mm build, uncomment this below:
variable_brush_start: 75

# This value is defaulted from brush location in CAD (rear left). Change if your brush width is different.
variable_brush_width: 52

## These are only used if location_bucket_rear is False. You specify a custom location in y axis for your brush - see diagram above. ##
variable_brush_front: 0
variable_brush_depth: 0


# These parameters define the size of your purge bucket. Update as necessary. If you decided to not enable purge, you can ignore
# this section. A visual reference is provided below. Note that orientation of parameters remain the same whether bucket is at rear
# or front.
#
# bucket_gap
# ← ---- →
# __________________________________________
# | | | |
# | | | |
# bucket_start (x) | |______| |
# | | | |
# | | | |
# |_________________|. . . |_________________|
# ← ------------- → ← ------------- →
# bucket_left_width bucket_right_width
# _______________________________________________________________________________________
# PRINTER FRONT
#
## For V2.4 250mm build, uncomment below
#variable_bucket_left_width: 42

## For V2.4 300mm build, uncomment below
#variable_bucket_left_width: 67

## For V2.4 350mm build, uncomment below
variable_bucket_left_width: 92

# These values are defaulted from bucket geometry in CAD (rear left location). Change only if you're using a custom bucket.
variable_bucket_right_width: 40
variable_bucket_gap: 22

# For V1.8, you may need to measure where your bucket start is and input into bucket_start. Otherwise, a value of 0 is for a default
# installation of purge bucket at rear left.
variable_bucket_start: 0


###############################################################################################################################################
###############################################################################################################################################

### From here on, unless you know what you're doing, it's recommended not to change anything. Feel free to peruse the code and reach out to me
### (edwardyeeks#6042) on Discord if you spot any problems!

###############################################################################################################################################
###############################################################################################################################################

# Placeholder. The variable will later be set to contain, at random, a number representing the left or right bucket.
variable_bucket_pos: 1

gcode:
# First, check if the axes are homed.
{% if "xyz" in printer.toolhead.homed_axes %}

## Save the gcode state in this macro instance.
SAVE_GCODE_STATE NAME=clean_nozzle

## Set to absolute positioning.
G90

## Grab max position of Y-axis from config to use in setting a fixed y position for location_bucket_rear = True.
{% set Ry = printer.configfile.config["stepper_y"]["position_max"]|float %}

## Check if user enabled purge option or not.
{% if enable_purge %}

### Randomly select left or right bin for purge. 0 = left, 1 = right
SET_GCODE_VARIABLE MACRO=clean_nozzle VARIABLE=bucket_pos VALUE={(range(2) | random)}

### Raise Z for travel.
G1 Z{brush_top + clearance_z} F{prep_spd_z}

### Check if user chose to use rear location.
{% if location_bucket_rear %}
G1 Y{Ry} F{prep_spd_xy}
{% else %}
G1 Y{brush_front + (brush_depth / 2)} F{prep_spd_xy}
{% endif %}

### Position for purge. Randomly selects middle of left or right bucket. It references from the middle of the left bucket.
G1 X{bucket_start + (bucket_left_width / (2 - bucket_pos)) + (bucket_pos * bucket_gap) + (bucket_pos * (bucket_right_width / 2))}

### Perform purge if the temp is up to min temp. If not, it will skip and continue executing rest of macro. Small retract after
### purging to minimize any persistent oozing at 5x purge_spd. G4 dwell is in milliseconds, hence * 1000 in formula.
{% if printer.extruder.temperature >= purge_temp_min %}
M83 ; relative mode
G1 E{purge_len} F{purge_spd}
G1 E-{purge_ret} F{purge_spd * 5}
G4 P{ooze_dwell * 1000}
G92 E0 ; reset extruder
{% endif %}

{% endif %}

## Position for wipe. Either left or right of brush based off bucket_pos to avoid unnecessary travel.
G1 Z{brush_top + clearance_z} F{prep_spd_z}
G1 X{brush_start + (brush_width * bucket_pos)} F{prep_spd_xy}

## Check if user chose to use rear location.
{% if location_bucket_rear %}
G1 Y{Ry}
{% else %}
G1 Y{brush_front + (brush_depth / 2)}
{% endif %}

## Move nozzle down into brush.
G1 Z{brush_top} F{prep_spd_z}

## Perform wipe. Wipe direction based off bucket_pos for cool random scrubby routine.
{% for wipes in range(1, (wipe_qty + 1)) %}
G1 X{brush_start + (brush_width * (1 - bucket_pos))} F{wipe_spd_xy}
G1 X{brush_start + (brush_width * bucket_pos)} F{wipe_spd_xy}
{% endfor %}

## Clear from area.
M117 Cleaned!
G1 Z{brush_top + clearance_z} F{prep_spd_z}
G1 X{bucket_left_width / 4} F{prep_spd_xy}

## Restore the gcode state to how it was before the macro.
RESTORE_GCODE_STATE NAME=clean_nozzle

{% else %}

## raise error will stop any macros that clean_nozzle is referenced in from proceeding for safety.
{ action_raise_error("Please home your axes!") }
M117 Please home first!

{% endif %}
Loading

0 comments on commit e3f32cc

Please sign in to comment.