Basic Information:
Printer Model: Heavily Modded Ender 3
MCU / Printerboard: BTT SKR 1.4 Turbo
Host / SBC Raspberry Pi 4B
klippy.log
Describe your issue:
Hi,
does anyone here have a working configuration for a 2-in-1-out hotend with (BTT Smart) Filament Motion Sensors on both extruder motors? Since I had to switch from two different [extruder]
sections to [extruder]
and [extruder_stepper]
, I haven’t gotten it to play nice with my toolchange macro.
My first approach was to configure the e1_sensor
for extruder1
or extruder_stepper extruder1
. However, this didn’t work:
Internal error during ready callback: Unknown config object ‘extruder1’
Internal error during ready callback: ‘PrinterExtruderStepper’ object has no attribute ‘find_past_position’
I suspect that this is a bug in klipper, respectively something that got overlooked when implementing the PrinterExtruderStepper class? But since I can find no configuration reference, I can’t be sure…
My second approach was to configure both sensors for extruder
and switch manually during the Toolchange:
[filament_motion_sensor e0_sensor]
detection_length: 9
extruder: extruder
[filament_motion_sensor e1_sensor]
detection_length: 9
extruder: extruder
[gcode_macro CHANGE_TOOLHEAD]
G92 E0
SAVE_GCODE_STATE NAME=change_extruder
# Disable Filament sensor
M400
SET_FILAMENT_SENSOR SENSOR=e0_sensor ENABLE=0
SET_FILAMENT_SENSOR SENSOR=e1_sensor ENABLE=0
M83
#
[...] # unloading
#
# Switch active tool
M400
SYNC_EXTRUDER_MOTION EXTRUDER="extruder" MOTION_QUEUE=""
SYNC_EXTRUDER_MOTION EXTRUDER="extruder1" MOTION_QUEUE=""
SYNC_EXTRUDER_MOTION EXTRUDER={ params.TARGET } MOTION_QUEUE="extruder"
SAVE_VARIABLE VARIABLE=currentextruder VALUE='"{ params.TARGET }"'
G92 E0
# Re-Enable Filament sensor
M400
{% if params.TARGET == "extruder" %}
SET_FILAMENT_SENSOR SENSOR=e0_sensor ENABLE=1
{% elif params.TARGET == "extruder1" %}
SET_FILAMENT_SENSOR SENSOR=e1_sensor ENABLE=1
{% else %}
M118 No matching filament sensor found.
{% endif %}
#
[...] # loading
#
RESTORE_GCODE_STATE NAME=change_extruder MOVE=1 MOVE_SPEED=12000
G92 E0
However, no matter what I do (e.g. switching the order of extruder movements in the macro or sending M400
and G92 E0
), this makes the e0_sensor
trigger immediately after switching (back) to extruder
and resuming to print.
I suspect that there’s at least one bug somewhere, but I’m not quite sure where. I would be grateful if someone could tell me how it’s supposed to work, before I make this a bug report and upload my klippy.log. I will then clean up my printer.cfg and try to produce a clean klippy.log. (My current one is an absolute mess at the moment.)
Thank you!