3Dプリンタは全てG-codeで動いている

タイトル
3Dプリンタの基本G-codeを簡単に解説します。

最近は良くできたスライサソフトに覆い隠されてG-codeを知らなくても使えます。これは便利で良い事ですが初心者から中級者への壁になっています。G-codeを知ればもっと便利に3Dプリンタを使えるようになります。3DプリンタはG-codeで動いています。

G-codeの例

G-codeはテキストの命令です。”G”か"M"で始まります。例えばホットエンドの移動はG0あるいはG1コマンドです。例えば
G1 X100 Y100 Z0.2
というコマンドはホットエンドの現在位置からX軸100ミリy軸100ミリZ軸0.2ミリの座標へ直線で移動する命令です。
G1 F6000
は移動速度を6000ミリメートル/分にします。単位が毎分なのに注意します。多くのスライサでは毎秒で扱います。毎秒の値を60倍した値にします。
G1 E10
はエクストルーダーを10ミリ押し出します。
直線移動は基本的に絶対座標です。相対座標にもできます。
G90コマンドは以後の座標を絶対座標として扱います。
G91コマンドは以後の座標を相対座標として扱います。
M82コマンドは以後のエクストルーダー座標を絶対座標として扱います。
M83コマンドは以後のエクストルーダー座標を相対座標として扱います。
エクストルーダーは別に設定できます。多くの場合、エクストルーダーは相対座標の方が便利です。

G-codeを3Dプリンタへ送る方法

最近はSDカードスロットを搭載した3Dプリンタが多いです。スライサーで作ったファイルをSDメモリーカードへコピーして3Dプリンタへ持っていきファイルを指定してプリントするのが普通です。このファイルはテキストで中身はG-codeが書かれています。
3DプリンタにはUSB端子があるでしょう。USBケーブルでパソコンと繋ぐとシリアル通信が可能となります。シリアル通信は昔々パソコン通信と言われていたネット環境の時代に普通に使われていた通信方法です。今のスマートフォンやWiFiも基本的にはシリアル通信と同じような仕組みで動いています。

USB-シリアルドライバ

USBでパソコンと3DプリンタをつないだらデバイスドライバーでUSB-シリアルドライバをインストールします。最近のWindowsならWindows Updateで入るでしょう。もしも入らなければ3Dプリンタの説明書をよく読みドライバを入れます。

スライサーのターミナル

スライサにはシリアル通信で3Dプリンタをコントロールする機能が備わっています。3Dプリンタを自動で認識して通信を確立してくれるでしょう。接続できないとか使い方がわからないとか面倒な事を避けるため過剰なユーザーインターフェースでシリアル通信が隠されてしまいます。スライサでも通信できると言う知識だけ持っていましょう。

通信ターミナル Tera Term

今回は通信ターミナルプログラムのTera Termを使います。シリアル通信をそのまま表示できます。
シリアル通信はパソコンと3Dプリンタとで通信条件を揃えなくてはなりません。通常はパソコン側が3Dプリンタの条件に合わせます。
まずは通信速度を合わせます。Tera TermでSpeedを250000に設定しましょう。250000は3Dプリンタで一般的に使われている通信速度です。機種によっては異なります。3Dプリンタの説明書に書いてあるはずなので調べて合わせます。
通信速度を合わせ通信を接続できればG-codeの送信と結果の応答を受け取れます。しかしターミナル画面の表示が見にくく何が起きてるかわからないでしょう。人が見やすいように結果を表示できるよう設定します。
改行コードをLFにします。これはターミナルソフトにより異なるかもしれません。
ローカルエコーを有効にします。人が打ったコマンドはターミナル画面に表示されません。表示されませんが3Dプリンタへは送られています。これでは不便なので打った文字を即座にターミナル画面に表示するのがローカルエコーです。これは3Dプリンタによっては必要ありません。送られてきた文字をそのまま送り返してくれる機種もあります。

ここらへんの設定はビデオを御覧ください。

OctoPrint

3Dプリンタ管理ソフトウエアのOctoPrintはG-codeで3Dプリンタを操作します。USBで3DプリンタとOctoPrintが動くコンピュータをつないでシリアル通信で3Dプリンタを管理します。
OctoPrintでは自動でG-codeを送って3Dプリンタを便利に使えるようにしています。例えばホットエンドやベッドの温度をグラフ表示できるのは定期的に温度を送信するG-codeコマンドを送っているからです。
モデルをプリントするG-codeもリアルタイムのシリアル通信で送っています。特定のタイミングで追加のG-codeを入れ込んだり、ある動作のG-codeを省いたりできます。たとえばプリントする時にフィラメントを吐出せずヘッドの移動範囲だけ確認したいという時はフィラメントを押し出すパラメータを自動で削り送信します。するとスライスしたファイルを修正しなくともエクストルーダーは動かなくなります。

G-codeのGって何?

G-codeは3Dプリンタの全ての動作を指示できます。シリアル通信をしなくとも3Dプリンタの中身はG-codeで動いています。Marlinファームウエアの命令の一覧を見てみましょう。
Gcode | Marlin Firmware
命令がたくさんあります。
G-codeのGってなんでしょうか?Gで始まるからでしょうか?Mで始まるコマンドもあります。Mで始まるコマンドはM-codeと呼ばれますがひっくるめてG-codeと呼びます。
GはGeometry ジオメトリー
MはMachine マシーン
を表します。
ジオメトリーって何?ジオメトリーは幾何学の事です。図形やその性質、図形がある空間の性質などを扱います。つまり、G-codeは座標に関する命令です。もっと噛み砕くと加工ヘッドの座標を決めるモーターの回転に関わる命令です。
M-codeはジオメトリ以外の機械の状態に関する命令です。SDメモリーの読み書き、設定の保存と呼び出し、照明のオンオフ、レーザー加工機ならレーザーのオンオフです。
GとMの境界はそれほど明確ではありません。エクストルーダー押し出しはGコマンドですが絶対座標指定はMコマンドです。どう違うのでしょうか?

G-codeは3Dプリンタが違っても概ね互換性があります。使う命令が限られているという理由もあります。ホットエンドとベッドの温度を設定してホームポジションを取ったら直線移動でモデルをプリントします。数種類の命令でだいたい動いています。
M-codeは3Dプリンタ自体に関わるのでメーカー毎に違ったりします。

変わった命令としては音を出す命令M300があります。プリントが終わった時に音を鳴らしたりできます。
音が出るとなると音楽を演奏したくなる人が出てきます。MIDIファイルをG-codeへ変換するサイトを作って公開してくれている人たちもいます。

ビデオ

コメント

最近のコメント

Threaded Recent Comments will be here.