3Dプリンタ業界ではRAMPSという汎用基板を使った制御系が使われているものが多いが、CNCやレーザーカッター業界ではgrblという制御系が普及しているようだ。
目的としてはどちらもG-codeを使ってヘッド部分をX-Y-Z軸を使って自由に動かすためのもの。当初の目的は違えど、いつの間にか同じような機能を持っているドラム式洗濯乾燥機と縦型洗濯乾燥機のような感じ?
実際には3Dプリンタだとフィラメントの制御が必要だったり、CNCであればエンドミルの回転数制御、レーザー加工機であればレーザーの出力などそれぞれの機能で異なる部分もあるが大枠としては同じような構成なので、ちょっとづつ変更すればそのまま流用できそうな感じ。
今までRAMPSには触れることがあったが、grblには触れたことがなかった。これを機会にどういうものなのか理解してみる。
1. どういうものか
RAMPSもgrblも基本的には通信や制御、回路構成の緩い規格化なので派閥によっては全く違う設計思想のものもあるし、どう見たってほとんど同じような構成のものもある。詳細はそれぞれのWikiが詳しい。
このようにオープンな規格に従う形でいろんな人たちが基板やSoftwareを作ってみんなで育てていくというのが、どの業界でも最近のトレンドだ。利害関係で泣いている人もいるだろうが、俯瞰してみれば非常に開発効率もいい。
最近だとドローンやカメラジンバルなんてもそうだろう。汎用部品を好きなように組み合わせるだけでオリジナルが作れるというのは工作好きにとってはたまらない感じ。
で、grblはそんな中では昔からある規格。テーブル上で各軸を自在に制御するために生まれたオープンソースプラットフォームだ。
grblも時代によっていろんな方式があるようだが、ここでは古い方法はバッサリと切り捨てて今現在の主流について書くことにする。
ちなみにRAMPSのファームウェアを使ってCNC制御することもできるし、レーザー加工することもできるので今となっては好みなのかもしれない。今回はCNC系を触るための予行演習としてgrblを触ってみることにしたのだが、それはなぜかというとCNCフライスを扱う人たちが皆grblを使っているから。
正直精度についてはどの機器にも求めるのは同じなので、違いといえば本体の剛性や構造程度の違いのようにも思える。が、なんだか違う言語で書かれているページをわざわざ自分の知っている言語に翻訳しながら読むような状態になっているので、この際grblについてしゃべれるようになってしまおうという感じだ。辞書を作るつもりはないので、わかりやすいと思ったページには容赦なくリンクを張っていくことにする。
2. grblのプラットフォーム
① PCに内蔵したパラレルポートを経由してモータードライバを直接制御する
– 過去に主流だった方式だが、プリンターポート消滅に伴い今あえて選ぶ必要はなさそう。技術的には枯れているので確実に動きそうではあるがとにかくノートPCだと困る。ただ、PCだけで動作させることができる。
② PC-(シリアル通信,USB)-マイコン-(GPIO)-モータードライバのRAMPSと同じ方式
– Arduino等の汎用マイコンを通信I/F兼制御回路としてモーターをドライブする方式。ここ最近ではこれが安上がりで一番メジャーな方法。Arduinoシリーズのいづれかにモータードライバシールド、もしくはモータードライバ回路を接続することで構成する。便利なUSB接続が使えるのがメリット。動作時はマイコン基盤と合わせてPCからの制御が必要
③ 組み込み向け小型PCでGPIOから直接制御する
– 流行りのRaspberryPiやBBBのような格安組み込み向けPCを使う方法。構成は①に近く単独動作が可能。ただ、GPIOの制御が簡略化されているため精度や安定性に難ありな様子。どちらにしろ設計段階ではPCが必要なので価格に見合ったメリットが見いだせるかがカギ。
3. grblの動作
grblを使う環境は大きく分けて以下のような構成からなる
① CAD/ CAM
– デザイン、設計段階以降からそれを機械で自動化する部分全体を指す。3DプリンタでいえばスライサやG-Code Sender、マイコンのファームウェアなど。CNCでも同様、G-Codeの生成からコントローラーまでを含む。
② G-code sender / Previewer
– CADからもらったG-codeを解釈し、実際の動作を画面上で確認する機能、また、実際の正誤を行う際にG-codeを順番に送り出す機能を持つ。出力にはおもにシリアル通信を使うが、G-Codeをファイルとして書き出し、直接メディアで移動することでスタンドアローンで動作する機器もある。
③ G-Code Interpriter
– Senderからシリアル通信などの通信で受け取ったG-codeを制御信号そのものに変換するもの。モータードライバなどの制御回路で構成される基板に搭載されるファームウェア。ArduinoやCNC Shieldに相当する部分。
パラレルポートを使用する方法ではsenderとインタープリタがPC内に共存した状態ということになる。RaspberryPi等の組み込み用PCについては、GPIOとして使うこともできるがUSBポートを使用してあくまでもsenderとしてArduinoに出力することも可能だ。
4. grblに使用するsender
senderについては以下のURLが詳しい。
シンプルなものや多機能なもの。ブラウザ経由で操作できるものなどいろんなバリエーションがある。とりあえず動かしてみないとわからないのでbCNCを使ってみることに。
5. grblのインタープリタ
PCからステッピングモーターなどへ制御信号を送るために使用するインターフェースとしてはかつてのパラレルポート以外にマイコンや組み込み用PCを使う方法がある。
現時点(2016)で使えそうなのは
① PCのパラレルポート
Windows7辺りから動かないのも多いようなのでよく確認したほうがよさそう。USB-パラレル変換ケーブルを使うとタイミング制御があいまいになるのでよくないらしい。すでにパラレルポート搭載のCNCを持っている人向けの対処法として、シリアル通信で受け取ったG-Codeをパラレル出力するという変換基板を作っている人がいる。これなら間に挟むだけで使える。確かに理にかなってて便利そう。
Grbl CNC USB to TB6560 Interface using Arduino
② Arduino (もしくはatmelのマイコン)
別にArduinoである必要はなく、Atmega328Pなどで自作基板をつくっても大丈夫。バイナリ直焼きでもOK。
③ BeagleBone Black
作例はここに。どのサイトも尻切れトンボ感があるので動かしてみると問題もあるのかもしれない。他に比べて割高なのがちょっと。
BeagleBoneにLinuxcnc導入してみた – multipleろぼっと
BeagleBoneBlackでLinuxCNCを動かしてみた – ついてる工房
④ RaspberryPi
こっちもあまり作例はない。ただ、Raspberry Piならオールインワンで液晶もつなげるのですっきり感はありそう。とはいってもCNC HATにArduinoが載っているだけなので構成としてはPC+Arduino。機会があったら試してみたい。
Raspberry Pi CNC Board / Hat – Protoneer.co.nz
こんな感じ。パラレルポートやBBBの場合はモータドライバを含んだ回路をつなぐが、汎用的で安価のものはあまりなさそう。ArduinoやRaspberryPiについてはCNCに特化したシールドが売られているのでそれを使うのが早道。Raspberry Pi版はちょっと高価なのと、ネット上の利用例が少ないのが玉に瑕。例えばArduinoならこれ。
コメント