Octopus の場合 STOP 用のターミナル (Stop_0~Stop_7) ならどこでも良いっぽい? 一応 PG12 か PG13 が指定らしい。ので Stop_4 = PG12 に繋ぐことに。
BigtreeTech Smart Filament Sensor を使うことにしてみた。この記事の解説が割と詳しい。
BTT SFS の端子は PH (2.0mm) 4PIN。付属ケーブルは XH 3PIN (BTT Octopus とかにはそのままつけられる配線)
XH3PIN な Stop_4 のターミナルを右スカートに延長して外から接続するようにした。フィラメントセンサはなんとなく壊れやすそうなので、あまり中に組みこみたくない。あとで気が変わって単純なスイッチにしたりもできるように。
スマートフィラメントセンサーってなんなのか?
マイクロスイッチとかで単純にフィラメントの有無を検出する方法もあり、こちらのほうがよりシンプルである。ただフィラメントの有無の検知だけなので「フィラメント切れ」は検知できるがより「フィラメントの停止」は検知できない。
スマートフィラメントセンサーはフィラメントの動きを検知する。このため「フィラメントの停止」も検知できる。例えば
- フィラメントの絡まり
- エクストルーダの不良(モーターのオーバーヒートやギアのゴミなど)
これらは単純なフィラメント切れよりも重大なトラブルなので、はやめに検知して止められるのはありがたい。
設定
BTT Smart Filament Sensor は Klipper 的には filament_motion_sensor になる。以下のように設定する。
[filament_motion_sensor filament_sensor] detection_length: 7.0 extruder: extruder switch_pin: PG12 event_delay: 3.0 pause_delay: 0.5 pause_on_runout: False runout_gcode: {action_respond_info("RUNOUT: Filament runout")} {% if printer.idle_timeout.state == "Printing" %} PAUSE {% endif %} insert_gcode: {action_respond_info("RUNOUT: Filament inserted")}
filament_motion_sensor はフィラメントが動いている場合、該当のピンをon/offするという伝えかたをする。ソフトウェア的には以下のように処理している。
- extrude しているのに、想定される信号がこなかった場合 runout
- 具体的には detection_length [mm] 分 extrude しても信号がない場合
- runout している状態で信号がくれば inserted
filament_switch_sensor と違って、フィラメントが実際にセンサー部分にあるかどうかは判断しないので注意がいる。つまり extrude して runout 状態にならなければ実際にフィラメントを入れても insert_gcode は実行されないし、フィラメントを抜いても extrude されなければ runout_gcode は実行されない。