これまでのあらすじ:
2016年3月、フェルト生地を手で裁断している際にレーザーカッターがあれば複雑なカットが容易にできるなあと思って、安価になってきたレーザーカッターを購入しようと思ったのがきっかけ。調べていくうちに、合板も切れたほうがいいと思うようになって、CNCルーター(CNCミリング)についても考えるようになった。
Arduinoは以前から使っており、CNCシールドがあると気付いて自作も可能と思うようになった。当初はShapeOkoやX-CARVEを参考にMakerSlide、OpenRail、V-Wheel、2GTタイミングベルトなどで5万円くらいで自作しようと思っていた。AliExpressでも部品が安く買えることが分かって、しばらくは部品探し。探せば探すほど安くて本格的な部品も見つかってくるので、そんなにケチらなくてもいいのではないかと徐々にスペックアップ。最終的には剛性や精度のことも考えてボールスクリューやリニアスライドを使うことになり、予想以上に重厚な3軸CNCマシンをつくることに(約7万円)。
構想から約5週間(制作約3週間)でルーターとレーザーともに使えるようになり、現在はgrbl1.1+Arduino CNCシールドV3.5+bCNCを使用中(Macで)。余っていたBluetoothモジュールをつけてワイヤレス化。bCNCのPendant機能でスマホやタブレット上のブラウザからもワイヤレス操作可能。


CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
利用例や付加機能など:
CNCルーター関係:

*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。

Arduino+Grbl1.1:まとめ(2017年版)

Arduino+Grbl1.1でCNCマシンをつくるなら、まずは以下のものを揃えて実験などしてみるといいと思います。
・Arduino Uno
・CNCシールドV3.51
・ステッピングモータードライバ:A4988かDRV8825(3〜4個)
・ステッピングモーター:NEMA17かNEMA23(3〜4個)
・Grbl1.1(Arduino Unoにアップロードするプログラム)
・bCNCまたはUniversal G-Code Sender(PCからGコード送信するアプリ)
・ステッピングモーター用安定化電源(DC12VまたはDC24V/5A以上)

*パソコンとArduino Unoだけあれば、とりあえず制御通信の確認実験はできます。

全体の構成:


作業的な流れとしては:
(1)CADやInkscapeのような2D描画ソフトで作りたい部品の図面を描く(.dxfや.svgファイル)
(2)JscutなどのGコード生成ソフトで図面を加工パスに変換(Gコード化:.gcodeや.ngcファイル)
(3)bCNCなどのGコード送信ソフトでGコードをCNCマシンへ送信
という感じで、それぞれの段階で異なるソフトが必要になります(CNC関連ソフトについてはこちらへ)。
(1)と(2)が一つのソフトで可能なもの:
Fusion360Inkscape(要プラグイン)、BlenderCamなど。
(2)と(3)が一つのソフトで可能なもの:
Laserweb3
(1)と(2)と(3)が一つのソフトで可能なもの:
Easel(X-CARVE用ソフト:要登録/ログイン)。

Arduino Unoについて:
USBシリアル変換チップにCH340Gが使われている中国製クローンのArduino Unoでは、たまに通信エラーがでるようです。現在のところまだ解決策はないようです。
また16U2 USBシリアル変換チップを使っているGenuine Arduinoボードや中国製クローンでも通信エラーが発生するようです。この場合は対応策があるようです。詳しくはGrbl Wikiの Known Issuesへ。
これは↑340円の中国製Arduino Unoクローンです。赤丸で囲んだところにCH340G(USBシリアル変換チップ)が使われております。Aduino IDEでも最初はシリアルポートが認識されなく、専用のドライバをインストールする必要がありました(中国のこのサイトなどからダウンロード)。

さらに、この中国製クローンの場合は、ATmega328(基板上UNOの文字の下にある黒い正方形のチップ)が表面実装型チップ(SMD)であるため、これが壊れてしまうと取り替えることが難しいので、以下のような差し替え可能なDIP型のATmega328が搭載されているArduino Unoのほうが望ましいと思います。

右下に見える大きめのDIP型ATmega328チップ。見た目はゴツいですが交換可能なので、このタイプがオススメ。もしATmega328チップが壊れても、ここを交換すればいいだけです。ちなみに秋月電子ではDIP型ATmega328は1個250円
中国製クローンは340円程度ですが、純正は3000円くらいします。実験用に中国製クローンを使用するのはいいかもしれませんが、最終的には純正品にしたほうが後々トラブルが少ないと思います。

Grblについて:
Grbl1.1が本格的にリリースされたために、これまで安定版であったGrbl0.9jを使用するよりも、いろいろと改良された最新版Grbl1.1に切り替えた方がいいと思います。Grbl1.1リリースに合わせて、Gコード送信ソフトも対応してきています。
・Grbl1.1の改良点についてはこちらへ
・Grbl1.1のアップデート/インストール方法についてはこちらへ

GrblはArduino Unoに書き込むファームウェア(ライブラリのようなもの)であり、このファームウェアが、PCから送られてくるGコードを理解してステッピングモーターなどを制御しています。例えば、「X10」(X軸に10mm動かす)というGコードを送信してあげれば、X軸が10mm動くような信号をステッピングモーターに与えてくれるという感じです。
どのくらいの精度かというと、1/100mm〜1/1000mmくらいは普通に設定できます。あとはそれにこたえられる躯体や機構の精度が確保できるかどうかということになります。
通常のステッピングモーターなら1回転で200ステップ、ステッピングモータードライバ(A4988など)のマイクロステッピング機能によって、その1/16まで細かく(つまり1回転:3200ステップ)設定可能、送りネジが1回転5mm進む(リード)のであれば、3200/5=640ステップ/mmとなるので、この場合0.0015625mmとなります。送り機構に、2GT(規格)/歯数20個のタイミングプーリーを使っているのであれば、1回転2x20=40mmなので、3200/40=80ステップ/mm、つまり0.0125mmになります。

最初にマシンに合わせた設定さえ行えば、Arduinoによる特別なプログラミングなどは必要ありません。Arduino Unoにファームウェアをアップロードすれば、制御に必要な複雑な計算は全てやってくれるということです。

Gコード/Grbl用$コマンドについて:
Gコードは他のシステム(LinuxCNCなど)ともほぼ共通ですが、Grbl用の$コマンドもあります。$コマンドはマシンの設定用コマンドがほとんどなので、マニュアルを見ながら設定していけば特に問題はないと思います。Gコードに関しては、ソフトによってCAD図面などから自動生成するので実際のところそれほど覚える必要もないと思います。
GコードやGrblの$コマンドについてはこちら


Gコード送信ソフト(G Code Sender)について:
Grblによって複雑な計算はやってくれるので、あとはGコードをPCから送ってあげるだけです。そのようなソフトがGコード送信ソフト(G Code Sender)です。Gコードが分かっていれば、直接手入力で送信ということもありますが、実際の作業ではCADなどで図面を、CAMやGコード生成ソフトでGコード化し、それを送るということになります。
Grbl1.1を使うことを前提にすると、Grbl WikiのUsing Grblのリストに掲載されているGrbl1.1対応のG Code Senderを使うのがオススメです。主には以下のG Code Sender。
bCNC(Pythonベース)
オープンソース系のソフトの中では、かなり便利な方だと思います。オートレベル機能もあり基板制作も可能。またPendant機能を使えばWifi環境の中で、他の端末(スマホなど)からもブラウザを通して遠隔操作可能です。
bCNCはPythonベースなので、WindowsならPython2.7(3.0は対応外)をインストールする必要があります。MacならPythonは既にインストールされているため不要です。ただしMac/Winともに、pipをインストールしたあとに、pipを使ってpyserialをインストールする必要があります。
*それぞれのインストール方法についてはこちらへ
*Raspberry PIにbCNCをインストールする場合はこちらへ

Universal G-Code Sender:UGS(Javaベース)
UGSはJavaベースなので、MacでもWinでもすぐに使えるとは思いますが、インストールされているJavaを最新のバージョンにアップデートしたほうがいいと思います。インストールされているJavaのバージョンによっても、どのバージョンのUGSをインストールするかかわってきます。
・インストールされているJavaのバージョン確認はこちらへ
・バージョンごとのインストールはこのページ中程(ページ右上の緑ボタンClone or downloadではなく)にあるDownloadsのStable buildsからJavaのバージョンに合わせてダウンロード。最新安定版は1.0.9(2.0はまだα版)。

Easel(ブラウザベース)
InventablesのX-CARVE用の統合型アプリ(CAD+CAM+Grbl Controller)で、これ一つで基本的なことはすべてできるので初心者にとっては便利かもしれません。ただ、ログインする必要があるので、事前にInventablesのアカウント登録(無料)が必要です。

Laserweb3(ブラウザベース/レーザー加工用)
レーザー加工用であれば、Laserweb3が便利です。様々なフォーマットファイルも読み込み可能で、Gコード生成ならびにGコード送信がひとつのアプリで可能です。現在α版のLaserweb4もありますが、安定版ならLaserweb3となります。

このほか、ArduinoやGrblで検索するとZapMakerのGrbl Controllerが出てきますが、2014年以降開発が止まっているようで、それほど使い勝手もよくないので、上記にあるようなソフトを使ったほうがいいと思います。
個人的にはbCNCがシンプルかつ多機能/便利なので使っています。PythonやPyserialのインストールが面倒(ターミナルやコマンドプロンプトの使用、環境変数PATH設定、事前にpipのインストールなど)で諦めてしまう人もいますが、順を追ってインストールしていけば大丈夫かと思います。
また、MacやWinを使わずに、Raspberry PiにbCNCをインストールして使うこともできます。

Gコード生成ソフト(G Code Generator)について:
CADやベクター描画ソフトで描いた図面を加工用パスとなるGコードに変換してくれます。例えば、ルーターやミリング加工の場合は、エンドミルの半径分ずらしたオフセット加工のパスを生成してくれたり、分厚い素材に対して何ミリずつ削るか、あるいは外周を時計回り/反時計回りのどっちで削るか(切削抵抗や仕上がりが変わる)などの加工に合わせた設定が可能になります。
これもいろいろありますが、個人的には以下のソフト。
ルーター/ミリング用:
Jscut(ブラウザベース)
Fusion360
BlenderCam
レーザー用:
Laserweb3
Laser Tool Plug-in(Inkscape用プラグイン)
ここで生成したGコード(.gcodeや.ngcファイル)をGコード送信ソフト(G Code Sender)に渡して加工することになります。

CNCシールドについて:
A4988やDRV8825といったCNCシールドに搭載可能なステッピングモータードライバを使うのであれば、複雑な配線や設定変更が簡単になるので便利です。しかも中国製クローンのCNCシールドであれば数百円と安価なので、試しに一つ買ってもいいかもしれません。
Arduino Unoに直接ドライバやリミットスイッチなどを配線するのであればCNCシールドは不要です。またCNCシールドに装着できない大きめのステッピングモータードライバを接続するときも不要となります。

格安中国製CNCシールドについて:
CNCシールドはPROTONEERが開発元ですが、最新版はV3.51でGrbl0.9以上に対応しています。それに比べ、中国製クローンは大抵V3.0なのでGrbl0.8を前提としたピン配列になっています。もしGrbl1.1で中国製CNCシールドV3.0を使うのであれば、Z軸用リミットスイッチ端子とスピンドルON-OFF端子を入れ替えて接続しなければいけません。また各リミットスイッチ用の端子にもノイズフィルター(コンデンサ)をつけたほうがいいかもしれません。
PROTONEER純正の最新版V3.51(2000円前後)であれば、端子はGrbl1.1にも対応しており、リミットスイッチ端子にもノイズフィルターがついているようです。
・CNCシールドV3.51とV3.0の違いについてはこちらへ

A端子設定について:
CNCシールドには4個のステッピングモータードライバを搭載できます。XYZの各軸に対応したドライバ用端子と予備のA端子があります。
基本的にA端子はXYZ軸のどれか一つのコピーとして使われますが、独立した4軸目として使うことも可能です。しかし現在のGrbl1.1では3軸までしか制御できないので、独立した4軸目として使う場合は、Arduino Mega 2560用の4軸ファームウェア、あるいは6軸ファームウェアがあります。
たとえば、ガントリー型(門型)のCNCマシンの場合は、Y軸の両端にステッピングモーター(計2個)を取り付けて駆動することがあります。このような場合、Y軸のコピーとしてA端子にもステッピングモータードライバを搭載して、2つのY軸用ステッピングモーターを同じ動きで制御することになります。
設定についてはこちらへ

ステッピングモータードライバについて:
CNCシールドを使う前提であれば、ステッピングモータードライバはA4988かDRV8825になると思います。
A4988:ヒートシンクありで2A、ヒートシンクなしで1.5A、マイクロステップ最大1/16
DRV8825:ヒートシンクありで2.5A、ヒートシンクなしで2A、マイクロステップ最大1/32
使用するステッピングモーターのスペック(許容電流値など)に合わせて選択するといいと思います。CNCシールドに装着すればすぐに使えるというわけではなく、以下に挙げる設定などが必要になります。
尚、ヒートシンクは熱伝導性両面テープや熱伝導性接着剤で固定する必要があります。ドライバが非常に熱くなることがあるので、熱対策はかなり重要。ヒートシンクは必須、さらにクーリングファンもあったほうがいい。

電流制限設定:
ステッピングモーターやドライバで過電流による故障が発生しないように、A4988やDRV8825では電流制限設定を行う必要があります。
以下を参考にして設定して下さい。設定や計測には電圧計(テスター、デジタルマルチメーターなど)が必要となります。
・Poluluの電流制限設定の動画↑。


マイクロステッピング設定:
通常のステッピングモーターであれば、軸1回転で200ステップの分解能になっており、1ステップずつカクカクと動きます。マイクロステッピング設定をすることで、このステップ数(分解能)を増やして動きを滑らかにし、かつ振動を低減させることが可能です。しかしながら、マイクロステップ数を細かくするほどトルクが下がってしまうようです。
設定方法についてはこちらへ(ページ中程)。

ステッピングモーターについて:
3Dプリンタやレーザー加工機の場合は、それほどトルクも必要ないので、NEMA17クラスのステッピングモーターを使っているものが多いと思います。トルクも40oz-in(トルク換算サイト)ほどあれば充分かもしれません。しかし、CNCルーター/ミリングとして使うのであれば、少なくても60oz-inはあったほうがいいと思います。そうなるとNEMA17クラスよりはNEMA23クラスのステッピングモーターのほうがいいかもしれません。
大まかな比較をすれば以下のような感じです。
NEMA17:外形42mm角、軸径5mm、トルク50oz-in前後、1.5A前後、2000円前後
NEMA23:外形57mm角、軸径6.35mm、トルク100oz-in前後、2〜3A前後、3000円前後
定格電圧は大体2〜3Vくらいですが、たまに12Vのものもありスペックは様々なので、データシートは要確認です。
A4988ドライバは2Aまでなので、モーターも2A以下のものを選ぶということになると思います。仮に2.5Aのモーターを接続しても、A4988の電流制限で2A以下に設定すれば使用可能です。ただし、そのモーターの最大トルクは引き出せなくなるという感じです。

ステッピングモーターについてはこちらへ
RepRapステッピングモーターのページ
Shapeoko Wikiステッピングモーターのページ

電源について:
電源は大きくわけると、以下の3種類あります。
Arduino Uno用の電源:
PCとUSB接続する場合はPCからDC5Vが供給されますが、ワイヤレスにしたりスタンドアロンで動かすには、Arduino Uno用の電源(7〜12V/0.5A)が別途必要となります。

ステッピングモーター用電源:
ステッピングモータードライバにDC12〜36Vの電源を接続します。
通常はDC12V/4A〜6A、あるいはDC24V/8A程度など、使用するモーターによって選ぶといいと思います。NEMA17クラス4個駆動なら100W〜120W、NEMA23クラス4個駆動なら150W〜200W程度。Shapeoko Wikiに電源について説明があります

スピンドル用電源(レーザー用電源):
スピンドルの出力を調整可能にするには、TTL端子付きのドライバが必要になります。ルーターやミリングの場合は、Arduinoの制御回路とは別個の電源やスピードコントローラーを使ってもいいとは思いますが、レーザーの場合はON-OFF制御(あるいは可変出力制御)がGコードと連動する必要があるので、CNCシールドのSpinEn(pwm)端子と接続する必要があります。
ダイオードレーザーなら大抵DC12Vなので、上記のステッピングモーター用の電源と接続可能かもしれませんが、その分アンペア数もゆとりを持っておく必要があると思います。
ルーターやミリングの場合は300〜500W(DC48V/10Aなど)となるので、おそらく別電源にしたほうが無難だと思います。スピンドルと制御系の電源を一つにまとめたほうがコンパクトにはなるとは思いますが、ノイズなどの問題も発生するので、電源だけでなく配線も含めて別系統にしておくほうがいいかもしれません(ただし、スピンドル可変出力制御するなら、スピンドル用ドライバとCNCシールドのGNDは共有しなければいけません)。

関連:
配線や電気関係/通信確認(2017年版)についてはこちらへ

0 件のコメント:

コメントを投稿

人気の投稿