見出し画像

指定したレイヤーでフィラメント交換

以前に書いた記事の焼き直しです。
Cura v5 + Klipper での設定方法として記載します。
自分の忘備録なんですけどね。

元ネタ&参考にした記事はこちらです。

途中で色を変えたい・改 - Cutting mesh -|ぼよん|note

Klipperで色変更のM600を追加する|ちゃたろう|note

1.Curaでいい感じの設定にする

これは必要がなければやらなくていいです。境界面をきれいにしたい場合の設定方法です。

モデルはこちら。「ん」さんです。
あんまり凝視するとゲシュタルト崩壊が起きるのでほどほどに。

(。´・ω・)ん?

次にCuraの準備です。cutting mesh という機能を使うために印刷物とは別のオブジェクトを追加します。
今回はCuraのプラグインのCalibration Shapeのシリンダーを利用します。
Ultimakerのアカウントを登録してMarketplaceでインストールできます。

印刷対象とシリンダーを重ねます。印刷物の平面よりちょっと高いぐらいのところにシリンダーの上面がくるように配置します。

シリンダーを選択して、画面左のメニューでカッティングメッシュを選ぶ。

CuttingMeshがなんなのかというとよく知らんけど、たぶん物体を分割するんです。分割することでそれぞれのが独立したスライスになるんじゃないかなぁ。なんでこれをやるのかというと、下地になる面をきれいに印刷したいから。

通常のスライスの8層目はこうなってます。「ん」がうっすらとみえます。これのせいで下地部分を一様にプリントしてくれなくなります。
Top/BottomのLayerやInfill100%でも解消できなくはないんですが、無駄な印刷はしないほうがよいよね。

こっちがCuttingMeshありの8層目。
この上下で分離してるのでフラットです。スライサー的には分離してるといっても、溶けたフィラメントの積層とは無関係なのでふつーに印刷してくれます。

8層目


9層目

次にPostProcessingでM600を9層目の直前に追加します。

これでgcodeを出力します。
PostProcessingの設定があると右下に赤いマークが出てくる。
設定してることを忘れると、別のものを印刷するときに困るので目立つようにしてるんでしょうね。

gcodeファイルを開いて M600を確認。

すぐ下にLAYER:8って書いてあるけど、これは1層目はLAYER:0なので実際は9層目の直前です。

2.KlipperでM600を設定

Klipperは標準ではM600を認識しません。上のリンクにあるちゃたろうさんの実装例を参考にマクロを登録します。
うちのは kiauh_macros.cfg に記載します。
printer.cfgの先頭に以下を記入しておくと別ファイルも参照してくれます。

[include kiauh_macros.cfg]

初期設定だとprinter.cfgに直接記載することになります。

[gcode_macro M600]
gcode:
    {% set X = params.X|default(50)|float %}
    {% set Y = params.Y|default(0)|float %}
    {% set Z = params.Z|default(10)|float %}
    SAVE_GCODE_STATE NAME=M600_state
    PAUSE
    G91
    G1 E-.8 F2700
    G1 Z{Z}
    G90
    G1 X{X} Y{Y} F3000
    G91
    G1 E-50 F1000
    RESTORE_GCODE_STATE NAME=M600_state

この内容は実はあんまりちゃんと理解してません。ちゃたろうさんの記載を今のバージョンに書き換えてちょっといじったはず。
実はちゃんと動いてないところがあるのよね。
M600を作動させると、なぜかガントリーは右奥に移動します。
その後、左手前に来ます。なぜだろう・・・。
多分、PAUSEの設定がおかしいんじゃなかろうか。
実害ないのでそーっとしておきます。

3.印刷開始!!!

8層目の印刷が終わると、ヘッドが移動して一時停止状態になります。
そそくさと、フィラメントを交換します。
ダイレクトエクストルーダーだと、この作業がすんごく楽です。
エクストルーダーの構造にもよるけど、うちのは手で引っこ抜いて挿すだけ。
ついでに少しぐりぐりと押し込んで前のフィラメントを押し出します。
どっちみち境界面なので前のフィラメントが混ざってても目立ちません。きっちり入れ替える必要はないです。
その後は印刷再開を押せばよいのですが、KlipperScreenはステータス表示がちょっと変でした。一時停止中なのに一時停止ボタンが表示されてた。
ブラウザのほうが正しく「再開」ボタンが表示されてました。
まぁ、色変えをやるときは外出しないしPCも起動したままなので支障はないです。

3文字ほど印刷してみました。カジノのチップみたいだ。
おしん? 昔、NHKの朝ドラがありましたね。
あの主人公(子供時代のほう)はおれと同じ歳なんですよ。
名前がでてこーん。

おしんのしんは辛抱のしん

こんな感じで、単色よりも文字が見やすくなります。
120mm/sなので多少のバリは目をつぶろう。
そしてCuraのArachneEngineの効果を見てほしい。
こんな風に線幅が可変になります。幅の異なる造形で威力を発揮します。
造形に必要な線が結果的に減るんです。

4.不満な点

以前は交換時にBeep音がしたんだけど、Klipperでは音がしません。
これは今後の課題ですなぁ。音ぐらい出さないといつ止まったか気づかないんです。
Klipperの設定をうまくやればBeep音ぐらいは出るはず。
Octprintを使ってる人はスマホに通知が届くらしい。
おれは一度は試したけど、UIがどうも気に入らんしスマホまで使いたくないのでタブレット上のKlipperScreenかPCのブラウザを使っています。
そのうち通知機能ぐらいできるでしょ。というか、もう既に存在してるのかもしれません。

5.最後に

この2色印刷は、前回の記事のロゴ印刷のための布石なのです。
次回は唐草模様を作ります。


追記

KlipperでBEEP音を出す方法がわかりました。
忘備録として書きます。

参考になる情報はこちらです。情報が古いのでフォーマットを変えないといけません。

まず、beepの設定が既にあったらそのセクションに追加
ない場合は・・・困るなぁ。回路図まで読み解かないとpinがわかんない。

[output_pin beeper]
pin: PB0

pwm: True
value: 0
shutdown_value: 0
cycle_time: 0.001
scale: 1000

次に、gcode macroの追加

[gcode_macro M300]
gcode:
    {% set S = params.S|default(200) %}
    {% set P = params.P|default(100) %}

    SET_PIN PIN=beeper VALUE={S}
    G4 P{P}
    SET_PIN PIN=beeper VALUE=0
    G4 P{P}
    SET_PIN PIN=beeper VALUE={S}
    G4 P{P}
    SET_PIN PIN=beeper VALUE=0

この例では、0.1秒間隔で2回のBEEP音を鳴らしています。
最初はプチプチという音しかしなかったのですが、Sの値を1000から減らしたところ、BEEP音が聞こえるようになりました。
P値とはなんなの???周波数やボリュームではないです。数字を減らすと音量が変わりますが、一様ではなく上がったり下がったりします。
Cycle_timeは10ミリ秒以上を設定してくれと書いてあるので、この設定はよくないですね。
ひょっとして周波数も変えれるのかな?頑張れば昔の電話の保留音のように「エリーゼのために」を流すこともできるかも!?

とにかくこれでM300が使えるようになったので、あとはこれを他のマクロ内に追加するだけで音が鳴るようになります。

この記事が気に入ったらサポートをしてみませんか?