Marlin g-code and M-code my reference
いまだDelta K800のオートレベリングと向き合ってる。慣れれば大したことないが使わなければ忘れてしまう細かなG-codeやM-codeの書式を個人的な忘備録としてマイリファレンス的に書こうとおもう。
以下の自動制御はG-code FileをCAMで再生する場合のことを指す。手動制御はCAM内のウインドウから直に入力して動作させる場合。
G1 直線移動(自動制御・手動制御 Move)
書式例 G1 X0 Y0 Z0 F1000 (X,Y,Z座標へ移動 F1000は速度)
忘れてしまっていても書式例さえ見てしまえば使えてしまうくらい解説の必要が無いシンプルな書式
手動ではG28で原点を設定してから手動移動する際に使うことが多い。
どこの設定が効いているのか分からないが(恐らくSAFE Zか?)X , Y , Zの順番で移動する。
移動する前に今の座標を知りたい場合はM114で問う。
G2 G3 円弧移動(自動制御 Controlled Arc Move)
書式例 G2 Xnnn Ynnn Innn Jnnn Ennn Fnnn (時計回り)
G3 Xnnn Ynnn Innn Jnnn Ennn Fnnn (反時計回り)
このG2とG3を手動制御操作で使うことはないと思うので省略する。
使用するようなシュチュエーションが出来れば追記したいと思う。
G4 待機時間(自動制御 dwell)
書式例 G4 P200 (P200は200ミリ秒待つ)
このG4も手動制御操作で使うことはないと思う。
パラメータのPはミリ秒単位、もしSを設定すると秒単位になる。
G6 ダイレクト移動(Direct Stepper Move)
このG6はどのファームウェアも対応していない。
G10 リトラクト(自動制御 Retract)
M207の設定に従ってエクストルーダのフィラメントを引っ込める(移動時に戻す)
これも自動制御なので馴染みがない。
G11 アンリトラクト(自動制御 Unretract)
M208の設定に従ってエクストルーダのフィラメントを戻す。(移動が終わって印刷開始する際)
これも自動制御なので馴染みがない。
G17..19 未設定(Plane Selection (CNC specific))
CNCでは平面指定で使うようだが馴染みがない。
G20 , G21 単位指定(Set Units)
書式例 G20: Set Units to Inches
G21: Set Units to Millimeters
単位指定、G20でインチ指定、G21でミリ指定
G22 , G23 ファームウェアによるリトラクト/プリチャージ(Firmware controlled Retract/Precharge)
これはほとんどのファームウェアで使えない。
G28 原点復帰(Move to Origin)
書式例 G28
G28 X Z(X軸とZ軸は原点まで移動し設定されるY軸の移動はなし)
もっとも手動操作でポピュラーなコードで原点まで移動しHOMEを設定する俗にいうホーミング。
パラメータなしに使うことができる。X軸,Y軸,Z軸の順番でエンドストップセンサーが反応するまでファームウェアで設定した原点の方向へ向かって進む。
デルタプリンタではXYZパラメータは一切無視される。
G29 オートベッドレベリング(Auto Bed Leveling in Marlin)
書式例 G29
ファームウェアで指定した方法で自動ベッドレベリング(ベッドの反りをセンサーで測定)する。
3種類あるレベリング方法のうちバイリニアを使用すると良いだろう。
門型の3DプリンターPrusa i3のFirmwareはバイリニア設定をすると標準でベッドの9ポイントを測定する。
デルタ型3Dプリンターの場合は26ポイントだったと思う。
バイリニアの指定例(Marlin firmware)
//=======================================================================
//============================ Auto Bed Leveling ============================
//=======================================================================
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
----------------------------------------------------------------------------------------------------------------------------------------------------------
G90
G91
G92
書式例 G
本文
----------------------------------------------------------------------------------------------------------------------------------------------------------
M42・M106・M107 ファン制御オン・オフ(Fan Controll)
書式例 M42 P11 S255 (Fan Controll ON)
M42 P11 S0 (Fan Controll OFF)
M106 S100 (Fan Controll ON 速度100)
M107 (Fan Controll OFF)
これもよく手動で操作するファン制御のコード。
エクストルーダの余熱の際、先にこのコードを実行してファンを回しておくとよい。
またプリント途中で中断した際に急にエクストルーダファンが止まるとエクストルーダが溶ける場合が有るので、すぐこのコードを実行するなど使用頻度が高い。(余談だがファンが使えないシュチュエーションではうちわを使ったりする。)
M42が使えるのは下記のRamps1.4 RRD Fan Extender PCBを使用した際である。
あまりにも公式の資料が乏しく使い勝手に欠けるので配線図を作った。
また画像をクリックするとMarlinfwでの使い方を記述したページへジャンプする。
M301 ホットエンドのPID値を書き込み(Set PID parameters for Extruder)
書式例 M301 P19.56 I0.71 D134.26
下記のM303実行後にMega2560へ値を送る。M301実行後、M500でEEPROMへセーブする。(ただしMarlinfwにてEEPROMが有効になっている必要がある)
M303 ホットエンド・ヒートベッドのPIDチューニング(ホットエンドサーミスタの自動調整)
書式例 M303 E0 S200 C8 (For Extruder)
M303 E-1 S60 C8 (For Heated bed)
ホットエンドの温度センサーであるサーミスタの自動調整(フィードバック制御)コマンドである。
かならずホットエンド・ヒートベッドが冷えた状態(常温)でコマンドを開始する。(ただしMarlinfwにてPID Tuningが有効になっている必要がある。特にヒートベッドは標準で無効になっている。)
測定が終了すると下記例のような値が表示される。
bias: 92 d: 92 min: 196.56 max: 203.75
Ku: 32.59 Tu: 54.92
Clasic PID
Kp: 19.56
Ki: 0.71
Kd: 134.26
測定値はP19.56 I0.71 D134.26という事になる。前述のM301で使用する。
M304 ヒートベッドのPID値を書き込み(Set PID parameters for heated bed)
書式例 M304 P1 I2 D3 (for Heated bed)
下記のM303実行後にMega2560へ値を送る。M304実行後、M500でEEPROMへセーブする。(ただしMarlinfwにてEEPROMが有効になっている必要がある)
----------------------------------------------------------------------------------------------------------------------------------------------------------
M500
M501
M502
M503
書式例 G
本文
----------------------------------------------------------------------------------------------------------------------------------------------------------
あいにく時間が来た。
また追記したいと思う。