【程序思维】klipper断料检测 代码 实现方式 filament_switch_sensor 原创

资料来源自:Configuration reference – Klipper documentation

klipper的断料检测主要来自于[filament_switch_sensor]耗材传感器这个类别,下面是官方对这个代码的解释:

[filament_switch_sensor my_sensor]。
#pause_on_runout: True
#   当设置为 "True "时,会在检测到耗尽后立即暂停打印机。
#   请注意, 如果 pause_on_runout 为 False 并且没有定义。
#   runout_gcode的话, 耗尽检测将被禁用。
#   默认为 True。
#runout_gcode:
#   在检测到耗材耗尽后会执行的G代码命令列表。
#   有关G-Code 格式请见 docs/Command_Templates.md。
#   如果 pause_on_runout 被设置为 True,这个G-Code将在
#   暂停后执行。
#   默认情况是不运行任何 G-Code 命令。
#insert_gcode:
#   在检测到耗材插入后会执行的 G-Code 命令列表。
#   关于G代码格式,请参见 docs/Command_Templates.md。
#   默认不运行任何 G-Code 命令,这将禁用耗材插入检测。
#event_delay: 3.0
#   事件之间的最小延迟时间(秒)。
#   在这个时间段内触发的事件将被默许忽略。
#   默认为3秒。
#pause_delay: 0.5
#   暂停命令和执行 runout_gcode 之间的延迟时间, 单位是秒。
#   如果在OctoPrint的情况下,增加这个延迟可能改善暂
#   停的可靠性。如果OctoPrint表现出奇怪的暂停行为,
#   考虑增加这个延迟。
#   默认为0.5秒。
#switch_pin:
#   连接到检测开关的引脚。
#   必须提供此参数。

我的voron配置是这样的:

[filament_switch_sensor Filament_Runout_Sensor]
pause_on_runout: True
runout_gcode: PAUSE
switch_pin: PD2

下面是对每个代码的说明:(其中switch_pin:是必须提供的)

switch_pin:这是必须提供的一个参数,参数是传感器的链接在主板上的接口位置,如果你的断料检测检测传感器连接的开关是常开开关,会涉及到是否是低电平触发开关还是高电平触发开关,需要在对应的接口位置前面加上感叹号’!’。

其对应的逻辑关系,我建议查看网页客户端Fluidd的调整(Tune)中可以看到断料检测传感器(Runout Sensors),可以插入耗材和不插入耗材进行对比是否这里不同来判断开关是常开还是常闭或者是低电平触发还是高电平触发。

如果你插入耗材,这里的勾没有亮起并且右边的滑块组件处于关闭状态,考虑更改这个参数是否加上或者删除掉’!‘。

pause_on_runout: True

这代码可以默认不写,默认的情况这个参数是True。

设置为 True:在检测到耗材用尽时,立即执行 PAUSE 命令,暂停打印。
设置为 False:不会自动暂停打印。如果未指定 runout_gcode 命令,耗材检测功能也会被禁用。

runout_gcode:

在检测到耗材用尽后执行的 G-Code 命令。如果 pause_on_runoutTrue,这些 G-Code 会在 PAUSE 命令完成后执行。默认不运行任何额外的 G-Code。

我这里设置的代码是runout_gcode: PAUSE,相当于打印完成后执行PAUSE的Gcode,可以自行更多的命令。

insert_gcode:

在检测到耗材插入后执行的 G-Code 命令。如果未定义此参数,则关闭耗材插入检测。通常使用这个命令的情况是传感器装在打印机工具头上方,当检测到耗材插入时,立即运行耗材挤入的命令,此挤出机电机运转进行挤入,以达到快速上料的目的,不用送入料后还要另外去按其他的代码。

event_delay:

这里的参数需要填写入秒(s)

设置事件之间的最小时间间隔。在此时间内触发的重复事件会被忽略。可以避免一些奇怪的安装bug。

pause_delay

这里的参数需要填写入秒(s)

在耗材用尽时,PAUSE 命令发出和 runout_gcode 开始执行之间的延迟时间。如果使用 OctoPrint 出现暂停时的异常行为,可以增加此延迟。

除此之外,Klipper还提供了一些对应的命令可供使用,如QUERY_FILAMENT_SENSOR和SET_FILAMENT_SENSOR:

QUERY_FILAMENT_SENSOR SENSOR=

查询指定传感器的当前状态。
输出结果会根据配置的传感器类型显示,例如 “filament detected” 或 “no filament detected”。

SET_FILAMENT_SENSOR SENSOR= ENABLE=[0|1]

开启或关闭指定传感器:
ENABLE=0:禁用传感器。
ENABLE=1:启用传感器。

通过和不同的gcode和macro的配合,相信你可以写出一个非常完美的klipper配置!