PrusaSlicerのカスタムGcodeでレイヤーごとに温度を変える方法

3Dプリンター

こんにちはふうです。
最近あまりBlogを更新できてなかったんですが、3Dプリンターネタはポツポツありまして。
今回はPrusaSlicerを使ってレイヤー毎の温度制御をif文を使ってやる方法です。

こんなふうに一定のレイヤー毎にノズルの温度を変えて何℃でプリントするのが適切なのか確認をするオブジェクトを使ったことはありますか?

今回PVBをプリントするにあたって初めて使ったんですが、よくある方法としては作成したGコードをテキストエディターで修正する方法です。
データダウンロード
スライサーによりますが、Gコードのどの行に何レイヤー目の設定が書いてあるかを調べて温度変更のGコードを書き込んでいきます。
Gコードを直接編集するのでどんなスライサーでも使えて確実ですよね。面倒ですけど、、、。
なのでもっと簡単?にできる方法を調べてみました。

スポンサーリンク

PrusaSlicerのプリンター設定

やりたいことをまとめると、
下から何mmのところまで印刷したらノズルの温度を5℃あげたい。
これにつきます、単純です。

問題は今何mmの所をプリントしているのか?
それから何℃にしたいのかをどうやって実現するかです。

今何mmかは、プリント設定の積層ピッチによります。
最初のレイヤーの高さが何mmで積層ピッチが何mmか。

では一体それをどこで設定するのか?
プリンター設定】の【カスタムGコード】の【レイヤー変更前のGコード】です。
(レイヤーチェンジ後のGコードでもいいと思いますが)
この項目は【高度】にチェックを入れておかないと出てこないので入れてない方は高度を選択してください。

最初の3行はそのままです。

レイヤー変更前のGコード 例1

;BEFORE_LAYER_CHANGE
G92 E0.0
;[layer_z]

{if layer_z == 8.8}M104 S235
{elsif layer_z == 15.8}M104 S230
{elsif layer_z == 23.8}M104 S225
{elsif layer_z == 30.8}M104 S220
{elsif layer_z == 37.8}M104 S215
{elsif layer_z == 44.8}M104 S210
{elsif layer_z == 51.8}M104 S205
{elsif layer_z == 58.8}M104 S200
{elsif layer_z == 65.8}M104 S195
{elsif layer_z == 72.8}M104 S190
{elsif layer_z == 79.8}M104 S185
{elsif layer_z == 86.8}M104 S180
{endif}

基本的な決まり事としてif文は{}の中に書く、layer_zは何mmかを表している、M104はノズルの温度変更S数字で設定温度;はコメントアウトですね。

if文

ifは【もしも何々だったら】です。
つまり{if layer_z == 8.8}M104 S235は
もしもレイヤーチェンジ前の高さが8.8(mm)だったらノズルの温度を235℃にする。

elseifは【そうではなく何々だったら】で、endifはifの終了です。
つまりレイヤーチェンジ毎にこれらの式が一通り実行されることになります。
【==】は前後が等しいか?なので1や80なんて数字はもちろん8.7や8.9でもなく8.8の時しか発動しません。

レイヤー変更前のGコード 例2

何となく無駄に行数を増やしたくなかったので【==】で15.8と等しかったらとしていますが、【<=】とかでこの数字より低かったらなんて指定もできます。
==にしていると、最小のレイヤーが0.3mmで次から0.2mmだった場合一致しないですからね。
その場合は下記の様な感じになります。
こっちの方がレイヤーの高さを計算しなくていいので簡単ですが、実際にプリントして試してはいませんので要確認です。
さらに言うと8.7とか15.7とかって小数点まで含めていますが、これは窪みの一番下に合わせたかったからです。大雑把でいいなら<=を使って右側の数値を9とか16にしても構いません。

;BEFORE_LAYER_CHANGE
G92 E0.0
;[layer_z]

{if layer_z <= 8.7}M104 S240
{elsif layer_z <= 15.7}M104 S235
{elsif layer_z <= 23.7}M104 S230
{elsif layer_z <= 30.7}M104 S225
{elsif layer_z <= 37.7}M104 S220
{elsif layer_z <= 44.7}M104 S215
{elsif layer_z <= 51.7}M104 S210
{elsif layer_z <= 58.7}M104 S205
{elsif layer_z <= 65.7}M104 S200
{elsif layer_z <= 72.7}M104 S195
{elsif layer_z <= 79.7}M104 S190
{elsif layer_z <= 86.7}M104 S185
{elsif layer_z <= 93.7}M104 S180
{endif}

作ったカスタムGコードはプリンター名の右側保存ボタンで保存できるのでわかりやすい名前をつけて保存しておくと次に使かい回したりするのにも便利です。

2022年3月14日追記

こちらの例2のカスタムGコードで実際に試してみたところ一つ問題を見つけましたので追記します。
元々のノズル温度を200℃で設定していたのですが、2層目プリント時に上記の温度変更(240℃)が入った後にエラーが起きてプリントが止まりました
多分一気に温度が上がったせいで安全装置が働いたっぽいです、ですので上記コードを設定するときはフィラメント設定のノズル温度を240℃でスタートするよう設定しておいた方が無難です。
温度変更後はエラー起きずにプリントできています。

保存するとこんな感じで名前をつけられます。

今回は知らなかったので使っていませんが、糸引きの具合も同時に調べられるデータも下記からダウンロードできます。
Prusa Mini Temptower for PLA, PETG and ABS

PrusaSlicerdでつかえるMacroについてはコチラで詳しく解説されています。

結果

プリントして知りたかったのは適温がどこにあるのか、低いとどうなるか?、高いとどうなるか?ですよね。
今回分かったのは高いと当然溶けすぎて、エッジが潰れやすかったり、オーバーハングが汚い、195℃以下だと割れやすいということです。
あとPrusament PVBは半透明のフィラメントなのでテカリかたも違いますね、220℃以上の方が少しテカットした感じでしたので、今回は220℃辺りが一番綺麗な感じでした。

力を入れなくても簡単に割れました。

ちなみに温度を調べて出したかったのはコチラ
3Dプリンター用ホットエンド周りを作っているのE3Dというメーカーの#heart_E3D というバレンタインコンペでハートをプリントするというものでした。

真ん中の小さいハートがブリッジでつられていてプリントが大変でした。
最終的には色々いじってこんな感じに。半透明なので裏から光を当てれば透けます。

使ったフィラメントは半透明のPrusament PVBですがチェコから直輸入しかないようなので送料が高いです。
湿気やすいので保管に気を遣うフィラメントですが、透け感があったり、アルコールで表面を溶かして積層痕を消したりできるようで、本来は太めのノズルを使って花瓶やランプシェードなどを作ると良いそうです。

タイトルとURLをコピーしました