GRBLについて調べてみた

最終更新日:2017/7/24

Arduinoの利用目的としてCNCとして使用するケースが可成り普及していることが判りました。
3Dプリンタであったり、レーザ彫刻機だったりします。10万円程度で十分実用的なハードウエアが購入できます。そしてソフトウエアも基本フリーで入手できるようです。
こんなことが実現出来るのもArduinoが商用フリーで情報公開しており互換機が容易に構築できるため、目的に合ったハードウエアの構築に対する敷居が低くなったためかと思っています。

ArduinoをCNC目的で使用するときにGRBLのライブラリを使用し、CNCシールドを介してアクチュエータに接続しているケースが多いことを確認しました。

4軸のモーションコントローラをArduinoで実現出来ないか検討していた自分としては、GBRLの調査は欠かせません。調べてみることにしました。


GBRLとは】

GRBLとは という説明を記述するのが難しいです。
移動したり、物を作ったり、物事を動かしたりするマシンの動きを制御するための、オープンソースの高性能なフリーソフトウェアのことで、業界標準を目指しているということで良いのかと思われます。

汎用モーションコントロールとしてRAMPSというのも有名であり業界標準を目指していると思われます。

 
GRBL
RAMPS
概要 G-Codeパーサーであり、CNCミリングコントローラでもあるプロジェクト 3Dプリンタを開発することを目的として立ち上がったプロジェクトRepRapの産物の一つステッピングモータドライバ基板。
プロジェクトの開始 2005年3月
ターゲット CNC 3Dプリンタ
入力データ G-CODE G-CODE
軸数 基本3軸 基本4軸か?
ターゲットCPU Atmega328 Atmega2560
バージョン履歴 GRBL1.1
GRBL0.9
GRBL0.8
GRBL0.7
・・・
RAMPS 1.4
RAMPS 1.3
RAMPS 1.2
RAMPS 1.1c
・・・
主な特徴 パラメータはファームウエアに対して通信し、EEPROMに書き込む
※ソースコードは非公開?
必要なパラメータはソースコード内でレタッチしてコンパイルし、ターゲットCPUにダウンロードして使う。

Linux工作室 https://penguin.tantin.jp/hard/CNC.html に説明文がありました。

Grblは『ArduinoまたはAVRのAtmega328pで動くCNCコントローラ』 と定義しています。
Mega(AVR2560)用のソースがあることも判りました。ただ、pinアサインは要注意です。

RAMPSは『3Dプリンタ用。あるいは4軸CNC』と定義しています。

GBRL環境整備】

とりあえずターゲットをArduinoUNOとし、端子に出力される信号をLabToolでモニタして動作確認出来ればよしと考えます。
CNCシールドやモータまで用意していないためです。
ただ、小型の2相ステッピングモータおよびドライバは持っているので、これに接続して検証することを検討します。

gbrlのソフトウエアとして『GCV-3.6.1-T4-win32exe』選びました。出来るだけ単純なものが良かったのですが、動作確認をする上で紹介記事の多いものが良かったというのが理由です。

ドライバが必要です。Build済みのドライバがArduinoIDEに用意されていましたのでそれを使います。

ドライバがちゃんとArduinoにインストールされていないとGCV-3.6.1-T4のOpenボタンを押しても反応がありません。

実際に使ってみて】

どのように確認するか検討しました。モータを接続して確認したかったのですが、DRV8835基板に2相ステッピングモータを接続した場合、信号入力としてDir/Pulseという扱いが出来ないことが判明し、とりあえずLabToolに接続してPulse信号の確認をすることにしました。
(UNO)Pin2(StepPulseX-Axis) -> D1(LabTool)
(UNO)Pin3(StepPulseY-Axis) -> D2(LabTool)
(UNO)Pin4(StepPulseZ-Axis) -> D3(LabTool)
(UNO)Pin5(DirectionX-Axis) -> D4(LabTool)
(UNO)Pin6(DirectionY-Axis) -> D5(LabTool)
(UNO)Pin7(DirectionZ-Axis) -> D6(LabTool)

実際のパルス出力を見てびっくりしました。Duty比50%のクロックだと思っていたのですが、パルス幅10μsec程度のパルス幅固定信号でした。
※$0(ステップパルス)で設定された値のようです。10usecがデフォルトです。3usecまで短く出来るそうですが、パルス応答が最大30kspsとなっているため、短くする意味合いはなさそうです。
ドライバ側でハーフピッチ対応であっても使えません。また、パルス幅がここまで細かいと脱調しやすいようにも思います。

やはりモータを接続して確認したいところです。DRV8834を入手するまで中断です。

関連書籍紹介】

インプレスで『ミニフライス盤CNC化実践マニュアル ものづくりをステップアップ』なる本がリリースされています。

この本にG-Codeという章があります

余談】

4軸のモーションコントローラを構築したいと思っています。3軸(XYZ)+そのうち1軸のコピーで計4軸です。
ストロークは最大でも±50mmゆっくりとした動きをなめらかにさせたいと思っています。
ドライバ・アクチュエータはオリエンタルモータの5相ステッピングモータを検討しており、Dir/Pulseで制御出来ればあるがたいと思っています。
※3軸(XYZ)+1軸の場合、UNO用のCNCシールド3.5.1で実現出来ます。

Arduinoで安価に実現出来るのであれば、うまく構築したいと思っています。


CNCシールドを使用する場合、ドライバモジュールの電流調整が必要です。基本的な手順を記録に残します。


GRBLはバージョン1.1がリリースされています。pinアサインは基本0.9と同じです。スピンドル用のパラメータ$30,31,32が追加されていたり細かな修正がされています。
また、バージョンが1を超えていると云うことから正式リリースという意味合いも有るのかと思います。『安定した動作だ』という書込も見受けられます。
ただ、G-CodeSenderソフトできちんと対応を謳っているものは見受けられません。未だに0.8までの対応のソフトが多いです。0.8と0.9では内容が余りに違いすぎ、対応するpinアサインも変更されているため注意が必要です。


GRBLのコードはMEGA用のものもあるとのことです。UNOでは3軸+スピンドルまでですが、4軸以上対応可能とのことです。pinが空いていますから

調べたところ、UNOのpinアサインのまま使うことは出来ないという事が判りました。理由はUNOとMEGAでそれぞれ使用しているCPU・Atmega 328/Atmega 2560でポートアサインが異なり、ボード上では同じアサイン名になっているにもかかわらず、ソースからは設定できないpinに相当してしまうようです。
※ソース上のpinアサイン名とボード上のpinアサイン名の読み替えを行っているため。
※GRBLではpin単位では無くポート単位で制御します。そうしないとオーバヘッドが大きすぎるからだと思われます。

MEGAを使用する場合は、UNO用のCNCシールドをそのまま使うのは困難です。提供されているMEGA用HEXコードが割り付けているpinアサインは以下のようになっています。

UNOシールドでは接続されていないpinに信号が割り付いていることが判るかと思います。信号仕様自体は維持されますのでブレッドボードにモータドライバボードを挿して必要信号のワイヤリングすれば使えます。

UNOではなくMEGAを使用しなくてはいけない理由が無い限りMEGAを使う事は無いかと思います。
※実行メモリ2KBと云う制限がUNO使用の最大の難点かもしれません。
※PIN数は3軸までならUNOで足りています。

  • UNOではアナログ入力が塞がってしまいましたので、信号入力を増やしてコードを書き足すような場合はMEGAにする必要性もあります。実行メモリにも余裕が出ますし。
  • ShapeOkoではG-Code InterpretersとしてMEGAを推奨しているとのことです。4軸の独立制御が必要なユニットではドライバシールドにより多くの信号線を扱えるMEGAは有用です。


【GRBL on STM32F103】

最近 STM32F103C8T6 を購入し調査・勉強しています。その過程でGRBLのコードをSTM32F103に移植しているという記事を見つけました。とても気になりました。その記事の出典を辿って調査することにしました。
別のページに移します。


【GRBL on M5Stack】

M5StackにもGRBLモジュールが存在することが判りました。調査したいと思います。
別のページに移します。


戯言(nonsense)に戻る


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。

商標・登録商標

Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。