v2.4: update ercf

This commit is contained in:
Konstantin Koslowski 2021-11-25 22:56:55 +01:00
parent f4a82d9200
commit d287262e72
6 changed files with 180 additions and 221 deletions

BIN
ercf/.hardware.cfg.swp Normal file

Binary file not shown.

View file

@ -1,58 +0,0 @@
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
TURN_OFF_HEATERS
CLEAR_PAUSE
SDCARD_RESET_FILE
{% set x_park = printer.toolhead.axis_minimum.x|float + 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 20.0) %}
{% set z_safe = 20.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0
G91
G1 Z{z_safe} F900
G90
G0 X{x_park} Y{y_park} F6000
BASE_CANCEL_PRINT
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set x_park = printer.toolhead.axis_minimum.x|float + 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 5.0) %}
{% set z_safe = 5.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
G92 E0
G1 E-1.0 F1500.0
G90
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 Z{z_safe} F900
G90
G0 X{x_park} Y{y_park} F6000
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
{% if printer["gcode_macro ERCF_PAUSE"].is_paused|int != 0 %}
M118 You can't resume the print without unlocking the ERCF first.
M118 Run ERCF_UNLOCK and solve any issue before hitting Resume again
{% else %}
RESTORE_GCODE_STATE NAME=PAUSE_state
G90
{% if printer["gcode_macro ERCF_VAR"].clog_detection|int == 1 %}
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1
{% endif %}
BASE_RESUME
{% endif %}

View file

@ -1,73 +0,0 @@
## Enraged Rabbit : Carrot Feeder V1.1 hardware config file
# Values are an example for voron 2.4 with 2 SKR1.4
# Carrot Feeder 5mm D-cut shaft
# Example for an SKR 1.4 Board (E1 on the XY mcu)
[manual_stepper gear_stepper]
step_pin: P1.15
dir_pin: P1.14
enable_pin: !P1.16
rotation_distance: 22.6789511 #Bondtech 5mm Drive Gears
gear_ratio: 80:20
microsteps: 16
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
velocity: 35
accel: 150
#Right now no pin is used for the endstop, but we need to define one for klipper. So just use a random, not used pin
endstop_pin: P0.10
[tmc2209 manual_stepper gear_stepper]
# Adapt accordingly to your setup and desires
# The default values are tested with the BOM NEMA14 motor
# Please adapt those values to the motor you are using
# Example : for NEMA17 motors, you'll usually set the stealthchop_threshold to 0
# and use higher current
uart_pin: P1.1
interpolate: True
run_current: 0.40
hold_current: 0.1
sense_resistor: 0.110
stealthchop_threshold: 500
# Carrot Feeder selector
# Example for an SKR 1.4 Board (Z1 on the XY mcu)
[manual_stepper selector_stepper]
step_pin: P0.22
dir_pin: P2.11
enable_pin: !P0.21
microsteps: 16
rotation_distance: 40
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
velocity: 200
accel: 600
endstop_pin: P1.25
[tmc2209 manual_stepper selector_stepper]
uart_pin: P1.8
run_current: 0.55
interpolate: True
sense_resistor: 0.110
stealthchop_threshold: 5000
# Values are for the MG90S servo
[servo ercf_servo]
pin: P1.26
maximum_servo_angle: 180
minimum_pulse_width: 0.00085
maximum_pulse_width: 0.00215
[duplicate_pin_override]
pins: P1.0
# Put there the pin used by the encoder and the filament_motion_sensor
# It has to be the same pin for those 3
[filament_motion_sensor encoder_sensor]
switch_pin: ^P1.0
pause_on_runout: False
detection_length: 4.0
extruder: extruder
# runout_gcode: ERCF_ENCODER_MOTION_ISSUE
[filament_switch_sensor toolhead_sensor]
pause_on_runout: False
switch_pin: ^P1.27

78
ercf/hardware.cfg Normal file
View file

@ -0,0 +1,78 @@
## Enraged Rabbit : Carrot Feeder config file for ERCF EASY BRD v1.1
# This config sample assume you set the two J6 jumpers on 1-2 and 4-5, i.e. [..].[..]
[mcu ercf]
serial: /dev/serial/by-id/usb-Klipper_samd21g18a_D3EB9B384134555020312E30171117FF-if00
# Carrot Feeder 5mm D-cut shaft
[manual_stepper gear_stepper]
step_pin: ercf:PA4
dir_pin: !ercf:PA10
enable_pin: !ercf:PA2
rotation_distance: 22.6789511 # Bondtech 5mm Drive Gears
gear_ratio: 80:20
microsteps: 16
full_steps_per_rotation: 200
velocity: 35
accel: 100
endstop_pin: ^ercf:PA7
[tmc2209 manual_stepper gear_stepper]
# Adapt accordingly to your setup and desires
# The default values are tested with the BOM NEMA14 motor
uart_pin: ercf:PA8 # shared with selector_stepper
uart_address: 0
interpolate: True
run_current: 0.8
hold_current: 0.1
sense_resistor: 0.110
stealthchop_threshold: 500
[manual_stepper selector_stepper]
step_pin: ercf:PA9
dir_pin: !ercf:PB8
enable_pin: !ercf:PA11
microsteps: 16
rotation_distance: 40
full_steps_per_rotation: 200
velocity: 200
homing_speed: 100
accel: 600
endstop_pin: ^ercf:PB9
[tmc2209 manual_stepper selector_stepper]
uart_pin: ercf:PA8 # shared with gear_stepper
uart_address: 1
run_current: 0.55
hold_current: 0.4
interpolate: True
sense_resistor: 0.110
stealthchop_threshold: 5000
# Values are for the MG90S servo
[servo ercf_servo]
pin: ercf:PA5
maximum_servo_angle: 180
minimum_pulse_width: 0.00085
maximum_pulse_width: 0.00215
[duplicate_pin_override]
pins: ercf:PA6
# Put there the pin used by the encoder and the filament_motion_sensor
# It has to be the same pin for those 3
[filament_motion_sensor encoder_sensor]
switch_pin: ^ercf:PA6
pause_on_runout: False
detection_length: 3.0
extruder: extruder
# runout_gcode: ERCF_ENCODER_MOTION_ISSUE
[filament_switch_sensor toolhead_sensor]
pause_on_runout: False
switch_pin: ^PG13
runout_gcode:
M118 toolhead filament removed
insert_gcode:
M118 toolhead filament inserted

View file

@ -3,14 +3,16 @@
############################### ###############################
[ercf] [ercf]
# Encoder # Encoder
encoder_pin: ^P1.0 # encoder_pin: ^P1.0
encoder_resolution: 1.365188 # in mm encoder_pin: ercf:PA6 # easy brd
# encoder_resolution: 1.365188 # default
encoder_resolution: 1.349528 # from `ercf_calibrate_encoder`
# Speeds and accels # Speeds and accels
# Long moves are faster than the small ones # Long moves are faster than the small ones
# 100mm/s should be "quiet" with the NEMA14 motor or a NEMA17 pancake, but you can go lower if your really want it to be low noise # 100mm/s should be "quiet" with the NEMA14 motor or a NEMA17 pancake, but you can go lower if your really want it to be low noise
# Tested without any issue at 200mm/s, but it's noisy. I'm running mine at 170mm/s for long moves and 50mm/s for short moves. # Tested without any issue at 200mm/s, but it's noisy. I'm running mine at 170mm/s for long moves and 50mm/s for short moves.
long_moves_speed: 100 # mm/s. Default value is 100mm/s. long_moves_speed: 60 # mm/s. Default value is 100mm/s.
long_moves_accel: 400 # mm/s². Default value is 400mm/s² long_moves_accel: 400 # mm/s². Default value is 400mm/s²
short_moves_speed: 25 # mm/s. Default value is 25mm/s. short_moves_speed: 25 # mm/s. Default value is 25mm/s.
short_moves_accel: 400 # mm/s². Default value is 400mm/s² short_moves_accel: 400 # mm/s². Default value is 400mm/s²
@ -27,7 +29,7 @@ short_moves_accel: 400 # mm/s². Default value is 400mm/s²
# Galileo Clockwork with ERCF V1.1 sensor (hall effect) : 27.0 # Galileo Clockwork with ERCF V1.1 sensor (hall effect) : 27.0
# LGX on AfterBurner with ERCF V1.1 sensor (hall effect) : 44.0 # LGX on AfterBurner with ERCF V1.1 sensor (hall effect) : 44.0
# AfterBurner Clockwork with ERCF V1.1 sensor (hall effect) : 36.0 # AfterBurner Clockwork with ERCF V1.1 sensor (hall effect) : 36.0
variable_end_of_bowden_to_sensor: 27.0 variable_end_of_bowden_to_sensor: 40 # xk
# Length from the sensor to the nozzle melt pool. # Length from the sensor to the nozzle melt pool.
# Reduce this value if there are blobs of filament on each load, before the purge on the tower. # Reduce this value if there are blobs of filament on each load, before the purge on the tower.
# Increase this value if there are big gaps on the purge tower (i.e. if it takes time for the filament to get pushed out after a swap) # Increase this value if there are big gaps on the purge tower (i.e. if it takes time for the filament to get pushed out after a swap)
@ -35,15 +37,16 @@ variable_end_of_bowden_to_sensor: 27.0
# Galileo Clockwork with ERCF 1.1 sensor (hall effect) & Dragon Normal Flow : 60.5 # Galileo Clockwork with ERCF 1.1 sensor (hall effect) & Dragon Normal Flow : 60.5
# LGX on AfterBurner with ERCF 1.1 sensor (hall effect) & Dragon Normal Flow : 55.6 # LGX on AfterBurner with ERCF 1.1 sensor (hall effect) & Dragon Normal Flow : 55.6
# AfterBurner Clockwork with ERCF 1.1 sensor (hall effect) & Dragon Normal Flow : 54.0 # AfterBurner Clockwork with ERCF 1.1 sensor (hall effect) & Dragon Normal Flow : 54.0
variable_sensor_to_nozzle: 60.5 variable_sensor_to_nozzle: 54
# #
# ==== Values to tune ==== # ==== Values to tune ====
# #
# Tool position for the selector. This has to be tuned manually. Please scale this array to the number of tools you have # Tool position for the selector. This has to be tuned manually. Please scale this array to the number of tools you have
variable_colorselector = [2.4, 24.0, 44.8, 71.2, 92.0, 113.6, 139.2, 160.8, 181.6] # variable_colorselector = [ 2.4, 23.2, 44.0] # 3 tools
variable_colorselector = [2.4, 23.2, 44.0, 69.6, 91.2, 112.0] # 6 tools
# Base value for the loading length used by the auto-calibration macro # Base value for the loading length used by the auto-calibration macro
# Please use a value SMALLER than the real reverse bowden length (like 50mm less) # Please use a value SMALLER than the real reverse bowden length (like 50mm less)
variable_min_bowden_length: 750.0 variable_min_bowden_length: 850
# Servo angle for the Up position (i.e. tool disengaged). Refer to the manual to know how to properly tune this value # Servo angle for the Up position (i.e. tool disengaged). Refer to the manual to know how to properly tune this value
# Default values: # Default values:
# MG90S servo : 30 # MG90S servo : 30
@ -53,8 +56,8 @@ variable_servo_up_angle: 30
# Default values: # Default values:
# MG90S servo : 140 # MG90S servo : 140
# SAVOX SH0255MG : 30 # SAVOX SH0255MG : 30
variable_servo_down_angle: 140 variable_servo_down_angle: 130
# Options to use or not # Options to use or not
# Beware that the clog detection and endless spool mode are in BETA mode for now # Beware that the clog detection and endless spool mode are in BETA mode for now
# Use at your own risk (beware of the involved macros and the pause(s) and resume ones) # Use at your own risk (beware of the involved macros and the pause(s) and resume ones)
# Put 0 to disable, 1 to enable # Put 0 to disable, 1 to enable
@ -67,14 +70,14 @@ variable_endless_spool_mode: 0
# Things that you shouldn't have to change # Things that you shouldn't have to change
variable_unload_modifier: 9.0 # Modifier to adjust the ERCF park position (where the filament ends when doing an unload) variable_unload_modifier: 9.0 # Modifier to adjust the ERCF park position (where the filament ends when doing an unload)
variable_min_temp_extruder: 180 # Temp used during the auto-calibration macro, to ensure we can move the extruder (but not really extruding) variable_min_temp_extruder: 210 # Temp used during the auto-calibration macro, to ensure we can move the extruder (but not really extruding)
variable_extruder_eject_temp: 240 # Temp used during filament ejection (in the ERCF_HOME macro, if a filament is detected in the toolhead) variable_extruder_eject_temp: 240 # Temp used during filament ejection (in the ERCF_HOME macro, if a filament is detected in the toolhead)
variable_timeout_pause: 72000 # Time out used by the ERCF_PAUSE variable_timeout_pause: 72000 # Time out used by the ERCF_PAUSE
variable_disable_heater: 600 # Delay after which the hotend heater is disabled in the ERCF_PAUSE state variable_disable_heater: 600 # Delay after which the hotend heater is disabled in the ERCF_PAUSE state
gcode: gcode:
[save_variables] [save_variables]
filename: /home/pi/klipper_config/ercf_vars.cfg filename: /home/pi/klipper_config/ercf/vars.cfg
############################### ###############################
# ERCF Calibration macros # ERCF Calibration macros
@ -88,46 +91,46 @@ gcode:
M118 Measuring the selector position for tool {params.TOOL} M118 Measuring the selector position for tool {params.TOOL}
ERCF_GET_SELECTOR_POS REF={move_length|int} ERCF_GET_SELECTOR_POS REF={move_length|int}
ERCF_MOTORS_OFF ERCF_MOTORS_OFF
[gcode_macro ERCF_CALIBRATE] [gcode_macro ERCF_CALIBRATE]
description: Complete calibration of all ERCF Tools description: Complete calibration of all ERCF Tools
gcode: gcode:
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0
M118 Start the complete auto calibration... M118 Start the complete auto calibration...
M118 First home the ERCF M118 First home the ERCF
ERCF_HOME ERCF_HOME
{% for chan in range(printer["gcode_macro ERCF_VAR"].colorselector|length) %} {% for chan in range(printer["gcode_macro ERCF_VAR"].colorselector|length) %}
ERCF_CALIBRATE_SINGLE TOOL={chan|int} ERCF_CALIBRATE_SINGLE TOOL={chan|int}
{% endfor %} {% endfor %}
M118 End of the complete auto calibration! M118 End of the complete auto calibration!
M118 Please reload the firmware for the calibration to be active! M118 Please reload the firmware for the calibration to be active!
[gcode_macro ERCF_CALIBRATE_SINGLE] [gcode_macro ERCF_CALIBRATE_SINGLE]
description: Calibration of a single ERCF Tool description: Calibration of a single ERCF Tool
gcode: gcode:
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0
{% if params.TOOL|int >= 0 and params.TOOL|int < printer["gcode_macro ERCF_VAR"].colorselector|length %} {% if params.TOOL|int >= 0 and params.TOOL|int < printer["gcode_macro ERCF_VAR"].colorselector|length %}
{% if printer["gcode_macro ERCF_HOME"].home == -1 %} {% if printer["gcode_macro ERCF_HOME"].home == -1 %}
M118 First home the ERCF M118 First home the ERCF
ERCF_HOME ERCF_HOME
{% endif %} {% endif %}
ERCF_SELECT_TOOL TOOL={params.TOOL} ERCF_SELECT_TOOL TOOL={params.TOOL}
ERCF_SET_STEPS RATIO=1.0 ERCF_SET_STEPS RATIO=1.0
{% if params.TOOL|int == 0 %} {% if params.TOOL|int == 0 %}
{% if printer['extruder'].temperature < printer["gcode_macro ERCF_VAR"].min_temp_extruder %} {% if printer['extruder'].temperature < printer["gcode_macro ERCF_VAR"].min_temp_extruder %}
M109 S{printer["gcode_macro ERCF_VAR"].min_temp_extruder|int} M109 S{printer["gcode_macro ERCF_VAR"].min_temp_extruder|int}
{% endif %} {% endif %}
M118 Calibrating reference tool {params.TOOL} M118 Calibrating reference tool {params.TOOL}
ERCF_LOAD LENGTH={printer["gcode_macro ERCF_VAR"].min_bowden_length} ERCF_LOAD LENGTH={printer["gcode_macro ERCF_VAR"].min_bowden_length}
ERCF_HOME_EXTRUDER TOTAL_LENGTH=400 STEP_LENGTH=0.5 ERCF_HOME_EXTRUDER TOTAL_LENGTH=400 STEP_LENGTH=0.5
ERCF_CALIB_SAVE_VAR TOOL={params.TOOL} ERCF_CALIB_SAVE_VAR TOOL={params.TOOL}
G91 G91
@ -137,10 +140,10 @@ gcode:
G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} F1500.0 G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} F1500.0
ERCF_CALIB_UNLOAD ERCF_CALIB_UNLOAD
ERCF_BUZZ_GEAR_MOTOR ERCF_BUZZ_GEAR_MOTOR
ERCF_IS_FILAMENT_STUCK_IN_ERCF ERCF_IS_FILAMENT_STUCK_IN_ERCF
ERCF_UNSELECT_TOOL ERCF_UNSELECT_TOOL
{% else %} {% else %}
M118 Calibrating tool {params.TOOL} M118 Calibrating tool {params.TOOL}
@ -151,9 +154,9 @@ gcode:
ERCF_CALIB_UNLOAD LENGTH={printer["gcode_macro ERCF_VAR"].min_bowden_length|float - 100.0 + 27.0} ERCF_CALIB_UNLOAD LENGTH={printer["gcode_macro ERCF_VAR"].min_bowden_length|float - 100.0 + 27.0}
{% endif %} {% endif %}
{% else %} {% else %}
M118 Tool out of range M118 Tool out of range
{% endif %} {% endif %}
[gcode_macro ERCF_CALIB_SAVE_VAR] [gcode_macro ERCF_CALIB_SAVE_VAR]
description: Saving ERCF calibration values description: Saving ERCF calibration values
@ -259,16 +262,20 @@ description: Pause the current print and lock the ERCF operations
variable_is_paused: 0 variable_is_paused: 0
variable_extruder_temp: 0 variable_extruder_temp: 0
gcode: gcode:
SET_GCODE_VARIABLE MACRO=ERCF_PAUSE VARIABLE=extruder_temp VALUE={printer.extruder.target} {% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %}
SET_GCODE_VARIABLE MACRO=ERCF_PAUSE VARIABLE=is_paused VALUE=1 SET_GCODE_VARIABLE MACRO=ERCF_PAUSE VARIABLE=extruder_temp VALUE={printer.extruder.target}
SET_IDLE_TIMEOUT TIMEOUT={printer["gcode_macro ERCF_VAR"].timeout_pause} SET_GCODE_VARIABLE MACRO=ERCF_PAUSE VARIABLE=is_paused VALUE=1
UPDATE_DELAYED_GCODE ID=disable_heater DURATION={printer["gcode_macro ERCF_VAR"].disable_heater} SET_IDLE_TIMEOUT TIMEOUT={printer["gcode_macro ERCF_VAR"].timeout_pause}
M118 An issue with the ERCF has been detected and the ERCF has been PAUSED UPDATE_DELAYED_GCODE ID=disable_heater DURATION={printer["gcode_macro ERCF_VAR"].disable_heater}
M118 When you intervene to fix the issue, first call the "ERCF_UNLOCK" Gcode M118 An issue with the ERCF has been detected and the ERCF has been PAUSED
M118 Refer to the manual before resuming the print M118 When you intervene to fix the issue, first call the "ERCF_UNLOCK" Gcode
SAVE_GCODE_STATE NAME=ERCF_state M118 Refer to the manual before resuming the print
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 SAVE_GCODE_STATE NAME=ERCF_state
PAUSE SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0
PAUSE
{% else %}
M118 already paused
{% endif %}
############################################ ############################################
# Changing tool macros # Changing tool macros
@ -317,7 +324,7 @@ gcode:
[gcode_macro ERCF_CHANGE_TOOL] [gcode_macro ERCF_CHANGE_TOOL]
description: Perform a tool swap description: Perform a tool swap
gcode: gcode:
{% if printer.idle_timeout.state == "Printing" %} {% if printer.idle_timeout.state == "Printing" %}
ERCF_CHANGE_TOOL_SLICER TOOL={params.TOOL|int} ERCF_CHANGE_TOOL_SLICER TOOL={params.TOOL|int}
{% else %} {% else %}
ERCF_CHANGE_TOOL_STANDALONE TOOL={params.TOOL|int} ERCF_CHANGE_TOOL_STANDALONE TOOL={params.TOOL|int}
@ -327,7 +334,7 @@ gcode:
description: Perform a tool swap during a print description: Perform a tool swap during a print
gcode: gcode:
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0
{% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != params.TOOL|int %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != params.TOOL|int %}
# Add a variable 'SwapCounter' in your PRINT_START macro to display this info # Add a variable 'SwapCounter' in your PRINT_START macro to display this info
# {% set newcounter = (printer["gcode_macro PRINT_START"].swapcounter|int + 1) %} # {% set newcounter = (printer["gcode_macro PRINT_START"].swapcounter|int + 1) %}
# SET_GCODE_VARIABLE MACRO=PRINT_START VARIABLE=swapcounter VALUE={newcounter} # SET_GCODE_VARIABLE MACRO=PRINT_START VARIABLE=swapcounter VALUE={newcounter}
@ -337,7 +344,7 @@ gcode:
ERCF_LOAD_TOOL TOOL={params.TOOL|int} ERCF_LOAD_TOOL TOOL={params.TOOL|int}
ERCF_CHANGE_TOOL_SLICER_END ERCF_CHANGE_TOOL_SLICER_END
{% endif %} {% endif %}
[gcode_macro ERCF_CHANGE_TOOL_SLICER_END] [gcode_macro ERCF_CHANGE_TOOL_SLICER_END]
gcode: gcode:
{% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %}
@ -368,7 +375,7 @@ gcode:
ERCF_LOAD_TOOL TOOL={params.TOOL|int} ERCF_LOAD_TOOL TOOL={params.TOOL|int}
{% endif %} {% endif %}
############################################ ############################################
# Unloading/Loading Macros # Unloading/Loading Macros
############################################ ############################################
@ -419,7 +426,7 @@ description: Eject the filament during a print and park it into the ERCF
gcode: gcode:
{% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %}
{% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != -1 %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int != -1 %}
M118 Unload tool {printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ... M118 ERCF_UNLOAD_TOOL Unload tool {printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ...
ERCF_HOME_EXTRUDER ERCF_HOME_EXTRUDER
ERCF_SELECT_TOOL TOOL={printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int} ERCF_SELECT_TOOL TOOL={printer["gcode_macro ERCF_SELECT_TOOL"].color_selected|int}
{% set ercf_params = printer.save_variables.variables %} {% set ercf_params = printer.save_variables.variables %}
@ -427,10 +434,11 @@ gcode:
G91 G91
G92 E0 G92 E0
MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0
MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float + 20.0} SPEED=25 ACCEL=0 SYNC=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} SPEED=25 ACCEL=0 SYNC=0
G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float + 20.0} F1500.0 M118 ERCF_UNLOAD_TOOL G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} F1500.0
G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} F1500.0
{% set ercf_params = printer.save_variables.variables %} {% set ercf_params = printer.save_variables.variables %}
ERCF_UNLOAD LENGTH={ercf_params.ercf_calib_ref|float - printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float + printer["gcode_macro ERCF_VAR"].unload_modifier|float - 20.0} ERCF_UNLOAD LENGTH={ercf_params.ercf_calib_ref|float - printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float + printer["gcode_macro ERCF_VAR"].unload_modifier|float}
ERCF_UNSELECT_TOOL ERCF_UNSELECT_TOOL
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -448,15 +456,15 @@ variable_color_selected: -1
gcode: gcode:
{% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %}
{% if printer["gcode_macro ERCF_HOME"].home != -1 %} {% if printer["gcode_macro ERCF_HOME"].home != -1 %}
M118 Select Tool {params.TOOL} ... M118 ERCF_SELECT_TOOL Select Tool {params.TOOL} ...
ERCF_SERVO_UP ERCF_SERVO_UP
MANUAL_STEPPER STEPPER=selector_stepper MOVE={printer["gcode_macro ERCF_VAR"].colorselector[params.TOOL|int]} MANUAL_STEPPER STEPPER=selector_stepper MOVE={printer["gcode_macro ERCF_VAR"].colorselector[params.TOOL|int]}
SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=tool_selected VALUE={params.TOOL} SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=tool_selected VALUE={params.TOOL}
SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=color_selected VALUE={params.TOOL} SET_GCODE_VARIABLE MACRO=ERCF_SELECT_TOOL VARIABLE=color_selected VALUE={params.TOOL}
ERCF_SERVO_DOWN ERCF_SERVO_DOWN
M118 Tool {params.TOOL} Enabled M118 ERCF_SELECT_TOOL Tool {params.TOOL} Enabled
{% else %} {% else %}
M118 Could not select tool, ERCF is not homed M118 ERCF_SELECT_TOOL Could not select tool, ERCF is not homed
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -473,7 +481,7 @@ gcode:
{% endif %} {% endif %}
ERCF_SET_STEPS RATIO=1.0 ERCF_SET_STEPS RATIO=1.0
{% else %} {% else %}
M118 Could not unselect tool, ERCF is not homed M118 ERCF_UNSELECT_TOOL Could not unselect tool, ERCF is not homed
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -488,23 +496,23 @@ description: Load filament from the toolhead entrance to the nozzle
gcode: gcode:
{% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %}
{% if printer.extruder.temperature > printer["gcode_macro ERCF_VAR"].min_temp_extruder %} {% if printer.extruder.temperature > printer["gcode_macro ERCF_VAR"].min_temp_extruder %}
M118 Loading Filament... M118 ERCF_LOAD_F_I_E Loading Filament...
G91 G91
G92 E0 G92 E0
MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0
MANUAL_STEPPER STEPPER=gear_stepper MOVE={printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float - 7} SPEED=25 ACCEL=0 SYNC=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE={printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float - 7} SPEED=25 ACCEL=0 SYNC=0
G1 E{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float - 7} F1500.0 G1 E{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float - 7} F1500.0
G4 P100 G4 P100
ERCF_HOME_EXTRUDER TOTAL_LENGTH=30.0 STEP_LENGTH=0.5 ERCF_HOME_EXTRUDER TOTAL_LENGTH=30.0 STEP_LENGTH=0.5
ERCF_UNSELECT_TOOL ERCF_UNSELECT_TOOL
G1 E15 F1800 G1 E15 F1800
G1 E{printer["gcode_macro ERCF_VAR"].sensor_to_nozzle - 20} F1800 G1 E{printer["gcode_macro ERCF_VAR"].sensor_to_nozzle - 20} F1800
G1 E5 F600 G1 E5 F600
G92 E0 G92 E0
G90 G90
M118 Load Complete M118 ERCF_LOAD_F_I_E Load Complete
{% else %} {% else %}
M118 Extruder too cold M118 ERCF_LOAD_F_I_E Extruder too cold
ERCF_PAUSE ERCF_PAUSE
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -616,7 +624,7 @@ gcode:
{% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %} {% if printer["gcode_macro ERCF_PAUSE"].is_paused|int == 0 %}
{% if printer.extruder.temperature > printer["gcode_macro ERCF_VAR"].min_temp_extruder %} {% if printer.extruder.temperature > printer["gcode_macro ERCF_VAR"].min_temp_extruder %}
{% if printer["gcode_macro ERCF_SELECT_TOOL"].tool_selected|int == -1 %} {% if printer["gcode_macro ERCF_SELECT_TOOL"].tool_selected|int == -1 %}
M118 Forming filament tip and Unloading Filament... M118 ERCR_U_F_IEWTF Forming filament tip and Unloading Filament...
G91 G91
ERCF_FORM_TIP_STANDALONE ERCF_FORM_TIP_STANDALONE
G1 E-4.00 F1200.0 G1 E-4.00 F1200.0
@ -628,13 +636,13 @@ gcode:
MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0 MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0
MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} SPEED=25 ACCEL=0 SYNC=0 MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} SPEED=25 ACCEL=0 SYNC=0
G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} F1500.0 G1 E-{printer["gcode_macro ERCF_VAR"].end_of_bowden_to_sensor|float} F1500.0
M118 Filament removed M118 ERCF_U_F_FIEWTF Filament removed
{% else %} {% else %}
M118 Tool selected, UNSELECT it M118 Tool selected, UNSELECT it
ERCF_PAUSE ERCF_PAUSE
{% endif %} {% endif %}
{% else %} {% else %}
M118 Extruder too cold M118 ERCF_U_F_FIEWTF Extruder too cold
ERCF_PAUSE ERCF_PAUSE
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -647,9 +655,9 @@ gcode:
[gcode_macro ERCF_IS_FILAMENT_IN_EXTRUDER] [gcode_macro ERCF_IS_FILAMENT_IN_EXTRUDER]
gcode: gcode:
{% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %}
M118 Filament is in extruder M118 ERCF_IS_F_IE Filament is in extruder
{% else %} {% else %}
M118 Filament not in extruder M118 ERCF_IS_F_IE Filament not in extruder
ERCF_PAUSE ERCF_PAUSE
{% endif %} {% endif %}
@ -657,10 +665,10 @@ gcode:
[gcode_macro ERCF_IS_FILAMENT_STUCK_IN_ERCF] [gcode_macro ERCF_IS_FILAMENT_STUCK_IN_ERCF]
gcode: gcode:
{% if printer.ercf.encoder_pos|float != 0 %} {% if printer.ercf.encoder_pos|float != 0 %}
M118 Filament stuck in ERCF M118 ERCF_IS_F_SIE Filament stuck in ERCF
ERCF_PAUSE ERCF_PAUSE
{% else %} {% else %}
M118 Filament not in ERCF M118 ERCF_IS_F_SIE Filament not in ERCF
{% endif %} {% endif %}
############################################ ############################################
@ -671,12 +679,13 @@ gcode:
[gcode_macro ERCF_EJECT_UNKNOW_STATE] [gcode_macro ERCF_EJECT_UNKNOW_STATE]
description: Unload filament from an unknown position description: Unload filament from an unknown position
gcode: gcode:
M118 Eject Filament if loaded ... M118 EJECT_US Eject Filament if loaded ...
{% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %} {% if printer['filament_switch_sensor toolhead_sensor'].filament_detected == True %}
M118 Filament in extruder, trying to eject it .. M118 ERCF_EJECT_US Filament in extruder, trying to eject it ..
{% if printer['extruder'].temperature < 178 %} {% set extruder_eject_temp = printer["gcode_macro ERCF_VAR"].extruder_eject_temp %}
M118 Preheat Nozzle {% if printer['extruder'].temperature < extruder_eject_temp %}
M109 S{printer["gcode_macro ERCF_VAR"].extruder_eject_temp} M118 Preheat Nozzle to {extruder_eject_temp}
M109 S{extruder_eject_temp}
{% endif %} {% endif %}
ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING ERCF_UNLOAD_FILAMENT_IN_EXTRUDER_WITH_TIP_FORMING
ERCF_UNLOAD LENGTH={printer["gcode_macro ERCF_VAR"].min_bowden_length - 50} UNKNOWN=1 ERCF_UNLOAD LENGTH={printer["gcode_macro ERCF_VAR"].min_bowden_length - 50} UNKNOWN=1
@ -693,9 +702,9 @@ description: Unload filament from the reverse bowden
gcode: gcode:
{% if printer.ercf.encoder_pos|float != 0 %} {% if printer.ercf.encoder_pos|float != 0 %}
ERCF_UNLOAD HOMING=1 ERCF_UNLOAD HOMING=1
M118 Filament ejected ! M118 Filament ejected!
{% else %} {% else %}
M118 Filament already ejected ! M118 Filament already ejected!
{% endif %} {% endif %}
ERCF_SERVO_UP ERCF_SERVO_UP
@ -718,8 +727,11 @@ gcode:
{% endif %} {% endif %}
M118 Homing ERCF ... M118 Homing ERCF ...
QUERY_ENDSTOPS QUERY_ENDSTOPS
M118 ERCF_EJECT_UNKNOW_STATE
ERCF_EJECT_UNKNOW_STATE ERCF_EJECT_UNKNOW_STATE
M118 ERCF_HOME_SELECTOR
ERCF_HOME_SELECTOR ERCF_HOME_SELECTOR
M118 ERCF_HOME_ONLY
ERCF_HOME_ONLY ERCF_HOME_ONLY
[gcode_macro ERCF_HOME_SELECTOR] [gcode_macro ERCF_HOME_SELECTOR]
@ -803,7 +815,7 @@ gcode:
{% else %} {% else %}
ERCF_SELECT_TOOL TOOL={load|int} ERCF_SELECT_TOOL TOOL={load|int}
{% endif %} {% endif %}
ERCF_LOAD LENGTH=100 ERCF_LOAD LENGTH=100
G4 P50 G4 P50
ERCF_UNLOAD LENGTH=100 ERCF_UNLOAD LENGTH=100
@ -815,7 +827,7 @@ gcode:
############################################### ###############################################
# Endless spool mode and clog detection # Endless spool mode and clog detection
############################################### ###############################################
[gcode_macro ERCF_ENCODER_MOTION_ISSUE] [gcode_macro ERCF_ENCODER_MOTION_ISSUE]
description: Perform a test when the encoder sense an issue (clog or runout) description: Perform a test when the encoder sense an issue (clog or runout)
gcode: gcode:
@ -828,7 +840,7 @@ gcode:
ERCF_BUZZ_GEAR_MOTOR ERCF_BUZZ_GEAR_MOTOR
ERCF_SERVO_UP ERCF_SERVO_UP
ERCF_CLOG_OR_RUNOUT ERCF_CLOG_OR_RUNOUT
[gcode_macro ERCF_CLOG_OR_RUNOUT] [gcode_macro ERCF_CLOG_OR_RUNOUT]
description: Actions taken if a clog or a runout is detected by the ERCF encoder description: Actions taken if a clog or a runout is detected by the ERCF encoder
gcode: gcode:
@ -891,4 +903,4 @@ gcode:
SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1 SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=1
{% endif %} {% endif %}
{% endif %} {% endif %}

View file

@ -1,15 +1,15 @@
[Variables] [Variables]
ercf_calib_0 = 1.0 ercf_calib_0 = 1.0
ercf_calib_1 = 1.0 ercf_calib_1 = 1.00135110302
ercf_calib_2 = 1.0 ercf_calib_10 = 1.0
ercf_calib_3 = 1.0 ercf_calib_11 = 1.0
ercf_calib_2 = 1.00374477099
ercf_calib_3 = 1.17246806366
ercf_calib_4 = 1.0 ercf_calib_4 = 1.0
ercf_calib_5 = 1.0 ercf_calib_5 = 1.0
ercf_calib_6 = 1.0 ercf_calib_6 = 1.0
ercf_calib_7 = 1.0 ercf_calib_7 = 1.0
ercf_calib_8 = 1.0 ercf_calib_8 = 1.0
ercf_calib_9 = 1.0 ercf_calib_9 = 1.0
ercf_calib_10 = 1.0 ercf_calib_ref = 976.383508
ercf_calib_11 = 1.0
ercf_calib_ref = 500.0