Flashforge Adventurer3用の、「ランニング運転」と「ビルドプレートレベル確認」のG-Codeデータを手打ちで作ってみた

3Dプリンタ

前回、Adventurer3用のG-Code の内容と、FlashPrint5出力の「.gx」ファイルを編集するソフト
紹介しました。

今回は、実際にG-Code を手打ちしてみたいと、思います。

ランニング運転用G-Code

一般的に機械は、ランニング(暖気)運転を行ったほうが良いとされています。
特に、工作機械の場合には、暖機運転で加工精度が変化しますから必須です。
家庭用3Dプリンタの場合には、その重要性は少ないと思いますが、
メンテナンスなどで、掃除やグリスアップした時など、可動範囲全体で動作させたほうが
いいと思います。
手動操作で移動させる事は可能ですが、G-Codeで自動ランニング運転データを
作成してみたいと思います。

Adventurer3用のG-Code

前回、FlashPrint5が出力した、G-Code を分析してみました。
ヘッダー部分では、ヘッドの選択や温度設定、ファンの可動などの指令が書かれています。
ランニング運転には、ほとんど必要なさそうです。
可動範囲は、150×150×150mmなので、この範囲で動作するような「G1(直線移動)」コード
を羅列すればよさそうです。
ただし、「.g」ファイルの場合には問題ありませんでしたが、「.gx」ファイルの場合には、
「M118」でこのプログラムの動作範囲を指定しないとエラーになりました。

作成方法

1.まず適当なモデル「20mm_Box」などで、FlashPrint5でG-Codeを作成します。
2.「EditorForFlashPrint5」に読み込みと、編集が可能になります。
3.不要なコードを削除し、必要なコードを追加します。
4.「.g」の場合なら、通常のエディタで作成可能ですが、プリンタ本体のタッチパネルの
 ファイルリストにアイコンが表示されません。
 「1.の適当なモデル」をデータのイメージしやすいモデルでダミーのデータを作成すれば、
 アイコンは表示できますが、ちょっと面倒ですね。
5.ランニング運転用のコードは下記のようにしました。

M118 X75.0 Y75.0 Z150.0 T0
G90
G1 Z50.000 F1000
G1 X75.0 Y-75.0 Z150.0 F4800
G1 X-75.0 Y75.0 Z10.0
G1 X-75.0 Y-75.0 Z150.0
G1 X75.0 Y75.0 Z10.0
G1 X75.0 Y-75.0 Z150.0
G1 X-75.0 Y-75.0 Z10.0
G1 X-75.0 Y75.0 Z150.0
G1 X0 Y0 Z50.0
G1 X75.0 Y-75.0 Z150.0
;end gcode
G91
M18

動作風景(倍速です)

ビルドプレートのレベル(水平)確認用G-Code

ビルドプレートに、線をプリントする事で、水平を確認するデータを作成してみます。
今回はランニング運転と違い、プリントさせるので、ヘッド温度や、フィラメント押し出し
などのコードも必要となります。
温度設定などは、「20mm_Box」などのデータを参考にすればいいと思いますが
押し出し量「E」の設定を算出しなければいけません。
FlashPrint5 でサンプルの「20mm_Box」でデータを作成し、分析してみます。
プレ押し出しは「有り」、積層ピッチ「0.2」、モデル一層目の厚み「0.2」の設定で
スライスしてみます。

プレ押し出し

FlashPrintに、プレ押し出しの厚みなどの設定項目は見当たらないので、
詳細はわかりませんがG-Code を見る限りでは、「Z0.2」で動いています。
ただ、プレ押し出し幅や厚みは、通常プリントよりも大きめになりますね。
通常印刷よりも、押し出し量は、多く設定されていると思われます。
G-Codeの「:pre-extrude」の部分を覗いてみます。


M108 T0
G1 X15.00 Y-15.00 F4800
;preExtrude:0.20
M106
G1 Z.200 F420
;structure:pre-extrude
G1 X15.00 Y-15.00 F4800
G1 X15.00 Y15.00 E4.3504 F1200
G1 X-15.00 Y15.00 E8.7009
G1 X-15.00 Y-15.00 E13.0513
G1 X15.00 Y-15.00 E17.4017

このデータから、「E」押し出し量を求めてみます

移動量 押し出し量
Y30.0 …… E4.3504
X30.0 …… E8.7009 – E4.3504 = 4.3505
Y30.0 …… E13.0513 – E8.7009 = 4.3504
X30.0 …… E17.4017 – E13.0513 = 4.3504

全て軸移動量 30mm で、E4.35mmの押し出しになってます。
1mmで換算すると、0.145mm

この結果から、プレ押し出し量は、「1mm」の長さで「0.145mm」押し出しているようです。

インナーシェル

次にインナーシェルの部分になります。高さは、「Z0.2」です。
このデータが、通常プリントの押し出し量になるかと思います



;layer:0.20
G1 E12.4017 F1500
G1 Z.200 F420
G1 X9.40 Y-9.40 F4200
G1 E17.4017 F1500
;structure:shell-inner
G1 X9.40 Y-9.40 F4200
G1 X9.40 Y.60 E17.7642 F600
G1 X9.40 Y9.40 E18.0833
G1 X8.20 Y9.40 E18.1268

同様に、このデータから、「E」押し出し量を求めてみます

Y9.40+0.60=10 … E17.7642-E17.4017=0.3625
Y9.40-0.60=8.80 … E18.0833-E17.7642=0.3191
X9.40-8.20=1.2 … E18.1268-E18.0833=0.0435

10mmで0.3625、8.8mmで0.3191、1.2mmで0.0435
1mmで換算すると、0.036mm になります。

「E」押し出し量の求め方

さて、「E」はどうやって求めるんだろう?
と、検索してみたら、ありました。やっぱりネットの時代はすごいです。
このサイトの計算式で計算すると、「0.2mm」の積層高さで「1mm」プリントする場合
E = 0.033mm になります。
上記FlashPrint5 のデータとほぼ同じです。誤差は若干の調整と考えます。
これで、「0.2mm」の積層高さで「1mm」引っ張る場合「E=0.036」の裏付けが取れました。
この値をもとに、G-Codeを書いて行こうと思います。

ポイント

・温度設定などの、開始停止コードは、サンプルデータを参考にしますが、
 ビルドプレートの温度は、レスポンスを考慮して「30°」にします。
・ヘッドに残っているフィラメントの状態が分からないので、プレ押し出しする事にします。
・確認プリントの積層高さは、「0.2mm」にします。
・次の輪郭への移動時は、フィラメントは「5mm」巻き戻し、「Z0.5mm」で移動させます。
・移動後、戻したフィラメントは、もとへ戻します。
・プレ押し出し直後の最初のみ、気持ち(1mm)巻き戻った状態に設定しています。
・動作輪郭は、最大幅「150mm」ではじめて、内側へ「5mm~10mm」づつオフセットした
 四角形の輪郭にします。
・「E値」は、絶対値での定義では、面倒なので「G92」でリセットしながらとします。
 NC機械では、最近は「G92」の使用は少なくなってきましたが、この場合には便利です。
・最後は、垂れ流し防止で、「2.5mm」巻き戻して終了とします。

こんな感じで、G-Code 書きます。

M118 X75.00 Y75.00 Z0.30 T0
M140 S30 T0
M104 S210 T0
M104 S0 T1
M107
G90
G28
M132 X Y Z A B
G1 Z50.000 F420
G161 X Y F3300
M7 T0
M6 T0
M651 S255
;layer_count: 1
M108 T0
G1 X-10.00 Y-10.00 F4800
;preExtrude:0.20
M106
G1 Z.200 F420
;structure:pre-extrude
G92 E0
G1 X10.00 Y-10.00 E2.9 F600
G92 E0
G1 X10.00 Y10.00 E2.9
G92 E0
G1 X-10.00 Y10.00 E2.9
G92 E0
G1 X-10.00 Y-10.00 E2.9
;—– Move
G92 E0
G1 E-5.0 F1500
G1 Z0.5
G1 X-75.00 Y75.00 F4200
G1 E-1.0 F1500
G1 Z0.2 F420
;—– Width150.0
G1 X-75.00 Y75.00 F4200
G92 E0
G1 X75.00 Y75.00 E5.4 F600
G92 E0
G1 X75.00 Y-75.00 E5.4
G92 E0
G1 X-75.00 Y-75.00 E5.4
G92 E0
G1 X-75.00 Y75.00 E5.4
;—– Move
G92 E0
G1 E-5.0 F1500
G1 Z0.5 F500
G1 X-70.00 Y70.00 F4200
G1 E0 F1500
G1 Z0.2 F420
;—– Width140.0
G1 X-70.00 Y70.00 F4200
G92 E0
G1 X70.00 Y70.00 E5.04 F600
G92 E0
G1 X70.00 Y-70.00 E5.04
G92 E0
G1 X-70.00 Y-70.00 E5.04
G92 E0
G1 X-70.00 Y70.00 E5.04
;—– Move
G92 E0
G1 E-5.0 F1500
G1 Z0.5 F500
G1 X-65.00 Y65.00 F4200
G1 E0 F1500
G1 Z0.2 F420



;—– Move
G92 E0
G1 E-5.0 F1500
G1 Z0.5 F500
G1 X-20.00 Y20.00 F4200
G1 E0 F1500
G1 Z0.2 F420
;—– Width40.0
G1 X-20.00 Y20.00 F4200
G92 E0
G1 X20.00 Y20.00 E1.44 F600
G92 E0
G1 X20.00 Y-20.00 E1.44
G92 E0
G1 X-20.00 Y-20.00 E1.44
G92 E0
G1 X-20.00 Y20.00 E1.44
;—- End
M107
G1 Z0.5 F1500
G92 E0
G1 E-5.0
G1 Z10.0 F500
G1 Z50.0 F4000
G1 X0 Y0
G1 E-2.5 F1500
;end gcode
M104 S0 T0
M140 S0 T0
G162 Z F1800
G28 X Y
M132 X Y A B
M652
G91
M18

動作風景(×4倍速です)

うちのガラスプレートには、張り付きが弱いため、マスキングテープを張ってます。
また、四角輪郭の始まり付近で、剥がれる事もありました。
場合によっては、送り速度の調整や、「スティックのり」などを試してみてください。

まとめ

NC工作機械では、G-Code手打ちで機械を動かす事はよくありますが、3Dプリンタの場合は
ほとんどないと思います。
カスタムマクロのような、変数(#)などが使用できると、少しは使い道があるかもしれませんね
まぁ、手打ちで機械が動くと言うのは、楽しいものです。

今回紹介のG-Code「.gx」ファイル、「Running.gx」と「TableLevelCheck.gx」は
下記からダウンロードできますので興味あれば、使ってみてください。


コメント

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