temptowerを立てよう

f:id:kamosawa:20201201080120j:plain


自分で自分の3Dプリンタのデフォルト値を作る、その具体的な方法を書く記事の第一弾です。

今回はtemptowerと呼ばれるキャリブレーション用モデルについて書きます。

temptowerとは

あるプリンタにおける、あるフィラメントの、主に温度変更に対する特性を試験し、それに合わせた設定を特定するために出力する3Dモデルです。

温度を少しずつ変えて同一のモデルを積み重ねて出力するため、塔のように縦長のオブジェクトが出力されます。

問題

フィラメントは多種多様です。またプリンタも多種多様です。

このフィラメントはこの温度でプリントせよ、と指定してあったとしても、製造者の試験条件と自分のプリンタの条件が違っていると(ie, サーミスタがズレてる、環境の温度や湿度が違うなど)、指定温度でのプリントが適しているとは限りません。

しかし温度を変えて何度もプリントするのは面倒だし、管理が大変です。

解法

温度キャリブレーションタワーを立てましょう。これは温度の影響で変化しやすい条件をテストするようなモデルを縦に重ね、各モデルで自動的に温度を変えてプリントすることで、温度条件ごとのプリント状態の差を見ることができるというものです。(温度変更にはプリント層高ごとのカスタムGコードやマクロを使います。)

使い方としては、フィラメントを買ってきたときに一度立てて観察、テストして記録しておき、デフォルトの温度と使用範囲を定めます。

temptowerは通常のフィラメント製品に書かれているような温度条件よりも広い範囲の温度を見るようになっているので、直線斜線、オーバーハング、細部、ブリッジ、積層強度、糸引き、発泡など、さまざまなパラメータについて、温度変化の影響を見ることができます。

例えば、温度を下げてプリントすると外観が良くなるものの、積層強度が低くなっていることがあります。美観と強度のバランスの良いところを選ぶか、強度または美観に重点を置くかはあなたが選ぶことですが、一度temptowerを立ててテストしておくと、何℃で欲しい物が得られるかの目安になります。

手順

  1. Thingiverseなどでモデルをダウンロードします。
  2. スライサに取り込みます。
  3. 温度変更の仕込みをします。
  4. プリントします。
  5. 観察、テストします。
  6. 記録します。

ダウンロード先

自分の使っているのはgaaZolee氏の"Smart compact temperature calibration tower"です。

他にも検索するといろいろ出てきます。

温度変更方法

250℃から220℃まで5℃刻みに変更していくABS用のタワーを例に解説します。

一番下の台座の厚さを1.4mm、各フロアの厚さを10mmとします(上記のタワーの値です)。

Prusa Slicer (2.2.2)

Prusa SlicerではカスタムGコードを1行書くだけで1cmごとに5℃ずつ変化するGコードが出力できます。

  1. 「プリンター設定」を開きます。
    f:id:kamosawa:20201212220821p:plain
    プリンター設定
  2. 「カスタムGコード」の「レイヤー変更前Gコード」に次のように書き加えます。
M104 S{250 - (5 * int((layer_z -1.4) / 10))}

f:id:kamosawa:20201212221040p:plain
温度変更のための条件Gコード
3. プリントします。

Slic3r (1.3.0)

Prusa Slicerと同じ手順で設定できます。

まったく同じGコードを使った記憶がありますが、Prusa SlicerとSlic3rは条件Gコードの仕様が異なるため、たとえばintがきちんと解釈されないかもしれません。

  1. Printerの右にある歯車アイコンをクリックして"Printer Setting"を開き、左の"Custom G-code"を選択します。
  2. "Before layer change G-code"に次のように書き加えます。
M104 S{235 - (5 * int(((layer_z -2) / 10)))}

f:id:kamosawa:20201213004254p:plain
カスタムGコード
3. プリントします。

Cura (4.7.1)

Curaでは上の2種類と大きく手順が違います。こちらでは個々の温度変更ごとにレイヤー高と温度を入力する必要があります。

  1. "Extensions"→"Post Processing"→"Modify G-Code"を開きます。
    f:id:kamosawa:20201212223704p:plain
    マクロ画面を開く
  2. "Add a script"から"ChangeAtZ"スクリプトを選びます。
    f:id:kamosawa:20201212224009p:plain
    マクロを追加
  3. "Trigger"を"Height"に、"Change Height"に11.4と入力し、"Change Extruder 1 Temp"チェックを入れて出てきた"Extruder 1 Temp"に245を入力します。
    f:id:kamosawa:20201212232212p:plain
    レイヤー高と温度を入力
  4. 2.と3.を繰り返し、21.4mmで240℃、31.4mmで235℃…といった具合に設定していきます。「セーブ」などは無いので、入力したらすぐ次の"Add a script"ボタンを押してください。
    f:id:kamosawa:20201212232832p:plain
    スクリプトを順次追加する
  5. 101.4mmで200℃まで入力します。
    f:id:kamosawa:20201212233821p:plain
    いっぱい入力
  6. Modify G-Codeウィンドウを閉じます。
  7. プリントします。

結果の解釈

Smart compact temperature calibration towerは次のパラメータが観察可能とされています。(以下Smart compact temperature calibration tower by gaaZolee - Thingiverseより)

f:id:kamosawa:20201213004633p:plain
各部の意味
f:id:kamosawa:20201212235618j:plain
オーバーハング

  • overhangs from 60 deg to 25 deg(60度から25度のオーバーハング
  • bridges from 15 mm - 30 mm(15mmから30mmのブリッジ)
  • stringing test (糸引き試験)
  • curvy shapes(曲面試験) これらのパラメータの境界温度を調べて記録しておきます。

また、temptowerは破壊試験によって各温度での積層接着の強さを調べることができます。

タワーの各温度部分を折るように力をかけていくと、弱い積層は簡単に剥がれます。オーバーハングやブリッジがきれいに積層できる温度は、ノズルから出た樹脂がすぐに固まる温度でもあるため、もっとも美しくプリントできている温度部が全部バラバラになったりします。

このようにきれいに積層できる温度範囲と接着が信用できる温度範囲はしばしば矛盾するため、個別に記録します。

最後に、自分のデフォルト温度、強度を重視するときの温度、美観を重視するときの温度を定めて終了です。

おまけ: カスタムGコードの読み解き

Prusa SlicerとSlic3rで使用した

    M104 S{250 - (5 * int((layer_z -1.4) / 10))} 

というコードについて解説します。

まず、それぞれが何を意味しているかは次のとおりです:

  • M104はエクストルーダ温度設定のGコードで、 M104 SXXX でエクストルーダをXXX℃に設定します
  • 250は開始温度
  • 5は温度変更のステップ
  • intは整数化(端数切捨)
  • layer_zはスライサが自動的に次の層の高さ(単位mm)に置き換えるプレースホルダ
  • 1.4は台座の厚さ
  • 10はフロアの厚さ

このコードを解釈すると、各レイヤーでの温度設定コマンドになるわけです。

このコードはレイヤー変更前に適用されます。たとえば次のレイヤーが10.0(mm)であるときは 250 - (5 * int((10 -1.4) / 10)) = 250 - (5 * int(8.6 / 10)) = 250 - ( 5 * 0 ) = 250 となるので、当初の250℃から変更しません。

ところがlayer_zが11.4になるときは250 - (5 * int((11.4 - 1.4) / 10)) = 25 - (5 * int(10/10)) = 250 - (5 * 1) = 245となるため、エクストルーダ温度は5℃低い245℃に設定されます。

layer_zが10mmずつ上がっていくに従い、エクストルーダ温度は5℃ずつ下がっていくわけです。