【pythonで動くG-codeビルダー】G-coordinatorユーザーのための3Dプリンターで前処理・後処理をG-codeで考察する
※ 当ページには【広告/PR】を含む場合があります。
2023/10/20
3Dプリンターで使うG-codeの書式
コメント行を付ける
;はコメント行だよ
ベッドの目標温度設定〜M140とM190
M140 S50
S<数値>
M190 S50
S<数値>
エクストルーダー部のノズル温度の設定・取得〜M104/M105/M109
M104 S200
M109 S200
M105
動作の諸元設定〜M200番台
mm/s^2
M201 X500.00 Y500.00 Z100.00 E5000.00
M203 X500.00 Y500.00 Z10.00 E50.00
M204 P500.00 R1000.00 T500.00
M205 X8.00 Y8.00 Z0.40 E5.00
M220 S100
M221 S100
冷却ファンの設定〜M106とM107
M106
M107
座標系の設定〜G90とG91
G90 ; X/Y/Z/E軸は絶対座標系と設定
G91 ; X/Y/Z/E軸は相対座標系と設定
G91
M82
G90
M83
原点出し〜G28
G28
エクストルーダーの累積フィード量のリセット〜G92
G92 E0
プリント動作〜G0とG1
G0 F6000 X129.148 Y75.559 Z0.28
[mm]
[mm/min]
G1 X10.1 Y200.0 Z0.28 F1500.0 E15
[mm]
Eq. (押出量の算出式)
G1 Z2.0 F3000
;👇と同じ
G0 Z2.0 F3000
待機時間の設定〜G4
G4 P5000 ; 5000ms(5秒)停止
; もしくは
G4 S5 ; 5s(5秒)停止
長さ単位の設定〜G20とG21
G20 ; [inch]に長さ単位を統一
G21 ; [mm]に長さ単位を統一
ステッピングモータのホールドの有効・無効〜M18/M84
;👇すべての軸のモータを即時Disableする
M18
;M18 X Y Z E としても同じ
;👇Z/E軸を即時Disableする(⇔X/YはEnableのまま)
M18 Z E
;👇X/Y軸を60s(1分間)だけDisable
M18 S60 X Y
G-coordinatorで前処理・後処理を設定する
G-coordinatorの出力するgcodeについて
default-cylinder.py
M140 S50
M190 S50
M104 S200
M109 S200
M106 S0
M83
G0 F5000 X115.00000 Y105.00000 Z0.00000
G1 F1000.0 X114.97987 Y105.63424 Z0.00200 E0.01884
G1 F1000.0 X114.91955 Y106.26592 Z0.00400 E0.01884
G1 F1000.0 X114.81929 Y106.89251 Z0.00600 E0.01884
;...以下G1で同じようなコマンドが続く
前処理部分
M140 S50 ; ベッド温度を昇温する
M190 S50 ; ベッドが目標温度に達するまで待機
M104 S200 ; ノズル温度を昇温する
M109 S200 ; ノズルが目標温度に達するまで待機
M106 S0 ; 冷却ファンを動作ON
M83 ; エクストルーダーの座標が相対座標に変更
; 👇プリンター製品の諸元(スライサー内部のデータでおまかせ)
M201 X500 Y500 Z100 E5000
M203 X500 Y500 Z10 E60
M204 S500 T1000
M205 X8.00 Y8.00 Z0.40 E5.00
M205 S0 T0
G90 ; 👈 X/Y/Z/E軸をすべて絶対座標で扱う
M83 ; 👈 E軸は相対座標で扱うように書き換え
M104 S150 ; 👈 ホームに戻る際のフィラメントのタレを防ぐための一時昇温
M140 S60 ; 👈 ベッドの温度を昇温開始(☆)
G4 S30 ; 👈 ノズルが温まるまで30秒待つ
G28 ; 👈 ホームに移動
; 👇準備運動
G1 Z50 F240 ; 👈 ノズルを一旦低速でZ軸で50mmまで持ち上げる
G1 X2.0 Y10 F3000 ; 👈 フィラメントの試し書きの初期位置(X,Y)=(2mm,10mm)に移動する
M104 S205 ; 👈 ノズルを本番温度まで昇温開始(☆)
M190 S60 ; 👈 ベッド温度が本番温度になるまで待つ(☆)
M109 S205 ; 👈 ノズル温度が本番温度になるまで待つ(☆)
G1 Z0.28 F240 ; 👈 ノズルをZ軸で0.28mm(フィラメント1層分)の位置に下ろす
G92 E0 ; 👈 エクストルーダーの引出量をリセット
G1 X2.0 Y140 E10 F1500 ; 👈 試し書き1回目 --> 終了位置(X,Y)=(2mm,140mm)までの直線
G1 X2.3 Y140 F5000 ; 👈 試し書きの初期位置(X,Y)=(2.3mm,140mm)に移動
G92 E0 ; 👈 エクストルーダーの引出量をリセット
G1 X2.3 Y10 E10 F1200 ; 👈 試し書き2回目 --> 終了位置(X,Y)=(2.3mm,10mm)までの直線
G92 E0 ; 👈 エクストルーダーの引出量をリセット
; 👇プリント前の設定再確認
G21 ; 👈 長さ単位を[mm]で統一
G90 ; 👈 X/Y/Z/E軸をすべて絶対座標で扱う
M83 ; 👈 E軸は相対座標で扱うように書き換え
M107 ; 👈 冷却ファンをOFF
G92 E0 ; 👈 エクストルーダーの引出量をリセット(念押し)
☆印
☆
[Machine settings] > [Start Gcode Editor]
[Save]
後処理部分
; 👇後処理を開始
M107 ; 👈 冷却ファンをOFF
; 👇終了動作
G1 Z2.6 F600 ; 👈 プリント生成物の最終高さからZ軸に1mm程度ノズルを上げる(☆)
G1 X5 Y193.8 F9000 ; 👈 プリント生成物がよく見えるように邪魔にならない位置(X,Y)=(5mm,193.8mm)に移動(☆)
G1 Z70.6 F600 ; 👈 さらにZ軸に70mm程度ノズルを上げる(☆)
G1 Z150 F600 ; 👈 さらにZ軸に150mmの位置までノズルを上げる(☆)
M140 S0 ; 👈 ベッド温度のヒーターをOFF
M104 S0 ; 👈 ノズル温度のヒーターをOFF
M107 ; 👈 冷却ファンをOFF
M84 X Y E ; X/Y/E軸のモータ制御をOFF(Z軸は動かないようにホールド)
☆
1. 造形終了後に少しだけZ軸を引き上げてノズルを持ち上げる
2. 造形物を取り出すのに邪魔にならないような水平位置にノズルを退避
3. さらに垂直方向(Z軸)へノズルを退避
4. ベッドヒーター・ノズルヒーター・冷却ファンを止める
5. Z軸以外のステッピングモータのホールドを無効化
[Machine settings] > [End Gcode Editor]
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー