grbl1.1+Arduino CNCシールドV3.5+bCNCを使用中。
BluetoothモジュールおよびbCNCのPendant機能でスマホからもワイヤレス操作可能。
その他、電子工作・プログラミング、機械学習などもやっています。
MacとUbuntuを使用。

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



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


ラベル CNCシールド の投稿を表示しています。 すべての投稿を表示
ラベル CNCシールド の投稿を表示しています。 すべての投稿を表示

2016年11月25日金曜日

CNCシールドV3.0とV3.1以上(最新版はV3.51)の違い

Arduinoボードに直接装着できるCNCシールドV3.0とV3.1以上(最新版はV3.51)の違いを書いておきます。CNCシールドがあることで煩わしい配線がすっきりして便利ですが、基本的にはArduinoボードに直接モータードライバやリミットスイッチなどを接続すれば必要ないものでもあります。とは言っても、中国製の格安CNCシールド(クローンのArduino UNOとドライバとのセットなど)があるので、つい買ってしまいます。大体はV3.0だと思うので以下のような違いを理解しておくといいと思います。
開発元であるPROTONEERのサイトに使い方や設定方法などが書いてあるので見てみるといいと思います。


主には:
CNCシールドV3.0(1000円以下):grbl0.8用のピン配列、スピンドルON-OFF制御
CNCシールドV3.1以上(2000円前後):grbl0.9用のピン配列、スピンドル可変制御
という感じです。
最新版V3.51には、リミットスイッチ端子にノイズフィルターもついたようです。
Z軸の高さ調整など行うProbe(下画像:Arduinoボード左下のA5ピン)に関してはこちらへ

grbl0.8とgrbl0.9のピン配列の違い:(追記:最新版grbl1.1の場合はgrbl0.9とピン配列は同じ)
まず、CNCシールドV3.0とV3.1以上の相違点の前に、grbl0.8とgrbl0.9のピン配列の違いを理解しておくといいでしょう。
grbl0.9からは、スピンドルが可変制御(PWM制御)となったので、Arduinoボード上のピン配列が少しだけ変わりました。以下の赤の矩形で囲んだ部分に違いがあります(grblのサイトに違いの説明があります)。

grbl0.8(上画像左)では:
ArduinoボードD12ピン:Spindle Enable(スピンドルON-OFF端子)
ArduinoボードD11ピン:Limit Z-Axis*(Z軸用リミットスイッチ端子)

grbl0.9(上画像右)では:
ArduinoボードD12ピン:Limit Z-Axis*(Z軸用リミットスイッチ端子)
ArduinoボードD11ピン:Variable Spindle PWM(スピンドル可変制御端子)

CNCシールドV3.0はgrbl0.8のピン配列に対応しているため(数年前の仕様)、もしCNCシールドV3.0でgrbl0.9(あるいは1.1)を使用する場合は配線に関して注意が必要です。CNCシールドV3.0でも配線を入れ替えることでgrbl0.9j(あるいは1.1)を使用することができます。
*Arduinoボード上では、上画像に見えるボード右端に縦に並んでいるピン0〜13(D0〜D13ピン)がデジタル入出力ピン(ON-OFF制御用)になります。しかし、3、5、6、9、10、11の6本のピン(ピン番号の頭に−がついているピン:例えば−3のように)だけはPWM出力(256段階可変出力)に設定可能です。そのため、grbl0.9以降ではスピンドル可変制御を導入したことにより、ON-OFF制御にしか設定できなかったD12ピンをPWM制御出力可能なD11と入れ替えたようです。

また、grbl0.8ではシリアル通信の速度となるbaudrateは9600、grbl0.9以上では115200になります。grbl0.8から0.9へアップグレードしたとしても、けっこう内容が変わっているので、そのままgrbl0.8のようには使えないかもしれません。
パソコン上にインストールするG Code Sender(Grblcontroller、Universal-G-Code Sender、bCNCなど )と接続後、
Grbl 0.9j ['$' for help]
コンソール画面にこのように↑でれば、Arduinoにアップロードされているgrblのバージョンが0.9jであることが確認できます。どのバージョンか確認するには、一度接続してみるといいと思います。また、パソコンにArduino IDEがインストールされているなら、シリアルモニタ機能でもコマンド送信することで確認できます(方法についてはこちらのページ中程に書いてあります)。
0.9にバージョンアップした場合は、コマンドや設定も0.8とは違うようなので、再度セッティングし直したほうが良さそうです。例えば、grbl0.8では$17=1がホーミングサイクルON設定に対して、grbl0.9では$22=1がホーミングサイクルON設定となっているので、このへんからして違いがあります。


CNCシールドV3.0とV3.1以上(最新版はV3.51)の違い:
以下は、2016年3月にaitendoで購入したCNCシールドV3.0です(モータードライバA4988を搭載済み、モータードライバについてはこちらへ)。アマゾンなどでも1000円以下で購入可能だと思います(AliExpressなら数百円)。
黄色い枠で囲んだ部分を見てみると、まず右側にSpnEn端子があります。これはgrbl0.8に対応したスピンドルON-OFF制御の端子です(grbl0.9では可変制御に改良)。そして、CNC SHIELDと製品名が書かれています。ここにはバージョンは書かれてなく、そのままCNC SHIELDとしか書いてません。このへんが、V3.0の特徴でしょうか。

それに比べ、以下がその後購入したCNCシールドV3.5です(最新版はV3.51:ブログ右側にAliExpressのリンクがあります)。価格は2000円前後(やや高い)。
V3.0でSpnEnだった端子が、SpnEn(pwm)となっています。そして製品名にもPROTNEER CNC SHIELD V3.5と書かれています。V3.5(あるいはV3.1以上)では、SpnEn(pwm)の端子名が変更になっただけでなく、ピン配列もgrbl0.9に対応しています。grbl0.8対応のV3.0と違って、ピン配列を入れ替えすることなく、grbl0.9をそのまま使えます。それから、右下の方にあるジャンパブロックが、リミットスイッチをオープン状態で5Vにするか0Vにするかを選択可能にします(このあたりの設定や説明は開発元PROTONEERのサイトに書いてあります)。
*V3.5とV3.51の違いは、主にはリミットスイッチ端子にノイズフィルターがついたことでしょうか。


CNCシールドV3.0を使いつつ最新版grbl0.9(grbl1.1も同様)を導入する場合:
安価なCNCシールドV3.0を用いて最新版のgrbl0.9を導入する人も多いと思います。以下のように配線を入れ替えてリミットスイッチやスピンドルと接続することで、特に問題なく使用することができます。
CNCシールドV3.0の右側に並んでいるピンのうち、SpnEnにはZ軸用のリミットスイッチ(Z+とZ-の両方)をパラレルに接続し、かわりにZ+(あるいはZ-)端子には、スピンドルの可変制御用端子(Spindle PWM/ドライバのTTL端子)を接続します。他のX+、X-、Y+、Y-端子には、今まで同様X軸とY軸のリミットスイッチをそれぞれ接続します。リミットスイッチは普段オープンな状態にしておき、スイッチが押されたときにクローズドになるように端子を選んで接続します。リミットスイッチの白端子には普段5Vが通電されています(プルアップ抵抗で5Vになっている)。黒端子はGND(0V)です。白と黒をショートさせると、白端子が0Vになり、リミットスイッチが入ったことを感知する仕組みになっているようです。

CNCシールド上では、各リミットスイッチには+と-(通常、X+:X軸右端、X-:X軸左端、Y+:Y軸奥、Y-:Y軸手前、Z+:Z軸上、Z-:Z軸下)がありますが、回路上ではそれら二つはパラレルに接続されているようです(Arduinoボード上のリミットスイッチ端子はひとつずつしかないので)。
念のため、ここに書いてある内容を鵜呑みにする前に、Arduinoボード(grbl0.9をアップロードしてある)のD11とD12に対応するピンが、CNCシールドV3.0のどのピンとつながっているのか、各自がテスターで確認したほうが安全だと思います。
注意点:
おそらくCNCシールドV3.0(V3.51未満)の場合は、リミットスイッチにノイズが発生するため、コンデンサーをリミットスイッチ用の端子につけたほうがよさそうです。これについてはこちらへ


grbl0.9におけるスピンドル可変制御について:
grbl0.9であれば、スピンドルの可変制御(スピード調節)が可能です。レーザーを使う場合もレーザーの出力調整が可能となります。スピンドルのモータードライバやレーザードライバのTTL端子と接続することになります(ものによってはON-OFF制御しかできないドライバもあるので、grbl0.9を使う場合は可変制御可能なドライバを使用することをおすすめします)。ちなみに、Arduino(CNCシールド)のPWM端子からは0〜5V(通常8bit:256段階、D11をtimer2にすれば16bit:65536段階)の信号が出されます。
*最新版grbl1.1の新機能レーザーモードについてはこちらへ(本家)

grbl0.9においては、
M03(スピンドルを時計回りに回転)
M04(スピンドルを反時計回りに回転)
M05(スピンドル停止)
M30(プログラム終了)

例えば、
M03 S1000
を入力すれば、スピンドルをオンにして出力100%で回転となります。Sは出力値です。
S0で0%、S500で50%、S1000で100%という感じで出力調整可能です。
スピンドルを停止する場合は、
M05 S0
などと入力するといいと思います。
終了する場合は、
M30
がGコードの最後にきます。

grbl0.8まではスピンドルON-OFF制御だったので、grbl0.9を使用するならMコードも覚えておいたほうがいいと思います。


CNCシールドを使うまでの準備や設定などについて:
CNCシールドをArduinoボードに装着したからといってもすぐに使えるわけではありません。以下のような準備が必要です。
・Arduino IDE(Arduinoにプログラムするためのソフト)をPCへインストール(本家サイトの説明
   *クローンのArduinoの場合はシリアル通信用のドライバが別途必要な場合もあります。
   *HexUploaderやXloaderを使う場合はArduino IDEは不要ですが、元々Arduinoを使っているなら、IDEを使ってアップロードしたほうが簡単かも(シリアルモニタで簡単なGコードを送信することも可能なので)。
・Arduino IDEを使ってArduinoボードにgrbl0.9をアップロードする(方法はこちらへ
・Gコード送信ソフトをPCにインストールする(ここ、もしくはここ、あるいはここ
・Gコード送信ソフトを用いてCNCマシンの各種設定をする(ここ
・CNCシールド上のモータードライバの電流制限設定をする(ここ
・CNCシールド(V3.51未満の場合)のリミットスイッチ端子にノイズフィルタ(コンデンサ)をつける(ここ
・電源、モーターやリミットスイッチをつないで試運転する(ここ、あるいはここ
という感じでしょうか。

関連:

2016年5月1日日曜日

CNCマシン:リミットスイッチ/ホーミングのトラブル(無事解決)

追記:
*リミットスイッチの配線については、GrblサイトのWiring Limit Switchesに追記されたので参考にするといいと思います。ノイズフィルターの有無、ノーマルオープン/ノーマルクローズドなど画像付きで詳しく書かれています(英語)。

G-Code-Senderは、以前書いたようにbCNCを使うことにしました。そこでCNCマシン本体にせっかくつけたリミットスイッチを確かめようと実験開始。bCNCで$$を入力し設定を確かめて、リミットスイッチを使う設定$21=0を$21=1にして動かしてみました。しかし、動かすとなぜかすぐにロックされてしまいました。
bCNC画面のTerminalボタンで、コンソール画面にすると、以下のようなメッセージ。

ALARM: Hard limit
[Reset to continue]

再度Control画面に戻り、画面左上にある以下の「Reset」と「Unlock」で解除。
何度やっても、動かした瞬間にリミットスイッチが反応しているようで、まったく先に進みません。CNCマシン本体をいろいろ調べてみました。Shapeoko wikiにもリミットスイッチはノイズを拾いやすいからシールド線を使うといいと書いてあったのを思い出し、たしかにモーターの近くを線が通っているし、シールドなしのケーブルを使っているのでそういうノイズの問題かな?と、またオヤイデ行かないといけないのかなと思いながらもケーブルをたどるように調べてみました。しかし、最終的にはCNCシールドのリミットスイッチをつなぐ端子でおかしなことが起こっているというのが分かりました。
使っているCNCシールドはV3.5なので、grbl0.9のピン配列に対応しています(V3.0の場合はZ limit端子がArduinoボードのD11からD12に入れ替わっているので注意、詳しくはこちらへ)。
上の写真のように、CNCマシン本体からのリミットスイッチ線を外し、かわりに緑色のジャンパワイヤをZ limitのZ+(5V)に接続しつつ、白いジャンパワイヤ(手でもっているだけで何にも接続されていない)をちょっとつけるだけで、そのノイズに反応してリミットスイッチが入ってしまうという現象。試しにテスターで計測しながらやってみると、たしかに5Vが外乱(白ジャンパワイヤ)によって1~3Vくらいまで下がってしまう。それで通常HIGH状態がLOWを瞬間的に検出して反応してしまうみたい。
なんでこんなに敏感すぎるんだ?じゃあ、コンデンサでもかましてみたほうがいいかな?と思って、ちょっと検索してみると、やっぱりこのようなリミットスイッチのノイズ問題はよくあるそうです。その対策としてシールド線を使うとか安物ではなくノイズに強い部品にするとかいろいろあるけど、手っ取り早いのがやはりコンデンサーをつけるというのが、instructablesにのってました
そこでは0.47uFのコンデンサーをArduinoボード上のリミットスイッチ用の端子(grbl0.9の場合、D9、D10、D12)につけるといいと書いてあります。ためしに手持ちのコンデンサーをつけてみることにしました。
こんな感じ↑で、CNCシールドV3.5に電解コンデンサー3個を直づけ(ちょうどArduinoボードD9、D10、D12の真上の端子とGND)。
これで動かしてみました。bCNCでGコードを入力。$21=1にしてHard limitをオンにしておきます。
Control画面の矢印で前後左右上下に動かしてみると、リミットがかからずちゃんと動きます(感動)。なるほど、やはり何らかのノイズがコンデンサーで解消されたというわけです。


ホーミングサイクルにチャレンジ
そのまま$21=1にしてHard limitをオンにして、今度はホーミングサイクルにチャレンジ。
しかし、、、動き始めましたが、途中で止まってしまいました。一歩進んだけど、また壁にぶちあたりました。
何が原因なんだろう?といろいろ調べてみたり、設定を変えてみたりしました。

grbl0.9にはホーミングの設定がいくつかあります(grblサイト参照)。
・$22:Homing cycle bool
  ホーミングサイクルするかどうかの設定(する場合$22=1)
  ホーミングサイクルによって、Z軸、X軸、Y軸、(A軸)という順番でゼロ地点設定
  そのためにはリミットスイッチを最低各軸の+側につける必要あり
  $23によってホーミングの方向を変更可能(通常各軸+側)
・$24:Homing feed mm/min
  ホーミングサイクルで最終的に座標ゼロポイントを決定するときの速度設定
  かなり遅めにして少しずつ進む感じ
  25mm/minくらい
・$25:Homing seek mm/min
  ホーミング開始後、各軸のリミットスイッチを探しだすときの速度設定
  慎重すぎて遅すぎると時間がかりすぎるので、スイッチをなぎたおさないくらいの速度
  600mm/minくらい(最終的には300に下げました)
・$26:Homing debounce ms
  ホーミングサイクルによってリミットスイッチを押す際のチャタリング/デバウンス防止のためのディレイ時間設定
  5〜25ms(最初250msになっていました)
・$27:Homing pull-off mm
  ホーミングサイクル後にリミットスイッチから事故防止のため少しだけ離れておく距離
  3〜5mm

と、こんな感じであります。

まずは、リミットスイッチのノイズがなくなったので、即停止はなくなったのですが、以下のような感じで止まってしまいます。

・Z軸+リミットスイッチを探しに上にあがる。
・Z軸+リミットスイッチを押す
・Z軸一旦少し下がる
・再度ゆっくり上昇(多分$24のHoming feedの速度で)
・また少し下がる(多分$27の5mm分)

ここまではいいのですが、次の行程でつまづきます。
・XとY軸が+方向に向かって同時に動き始める
・それぞれリミットスイッチを押す
・それぞれ少し戻る
そして、ここで止まる

おそらく次はZ軸の動きから察すると、ゆっくりHoming feedでゼロ地点を設定しに動くはずですが、なぜか止まります。またノイズなのかなとも思ったりして、いろいろ検索してみましたが、解決できるようなネタは見つかりません。
リミットスイッチにもコンデンサーつけてみたり、Y軸片側のモーターだけで駆動させてみたり。
なんとなくモーターに負荷がかかっているようにも見えるので(送りネジとガイドレールの平行がとれていなくて窮屈になっているとか)、ドライバが一時的にシャットダウンしているのかと思ってみたりして、それでマイクロステッピングを1/8から1/4に変えてみたりしてみました。


コンデンサー付け替え
いろいろやっているうちに分からなくなってきて、先ほどつけたノイズ対策のコンデンサーを見てみると、0.47uFなのに47uFをつけていることに気がつきました。容量がデカすぎるけど、つけたことによって一応ノイズは消えたわけだし大丈夫だろうと思いましたが、もうちょっと他のコンデンサーがないか探してみると、1uFのコンデンサー一袋が見つかったのでためしに付け替えてみました。
こんどはこんな感じ。コンデンサーも小さくなりました。同じようにArduinoボードD9、D10、D12、GNDの真上の部分です。0.47uFに対して1uFなのでまあまあ近い。
念のためと思ってつけたリミットスイッチのコンデンサーも外してしまいました。この3つで勝負。
それと、上記に書いたgrbl0.9ホーミングの設定値も少し変えてみました。

主には、$24=30、$25=300、$26=25、$27=5、そしてマイクロステッピングは1/4。
さて、ホーミングボタン(Home)を押すと、
まずは、Z軸が動き始めました。そしてX軸、Y軸です。速度をちょっと変えたので、なんとなくいい感じ。それで、問題のXとY軸のHoming feed速度で動く部分(最初600でしたが300に下げたことで負荷が下がったのかも)。おお、ゆっくり動き始めした。このままいけるかな?と息をのんで見守っていると、なんとか最後まで無事ホーミングサイクルが終了しました。エラーなしです。思わずコンソール画面を見てみました。
偶然なのかなんなのか分かりませんが、ようやくホーミング達成(感動)。

追記:

AliExpress.com Product - 3D Printer Parts Limit Switch End stop for CNC 3D Printer RepRap RAMPS 1.4 Board Mechanical Limit Switches Printing Accessories
リミットスイッチ6個セット、324円(送料込み)。
このようなノイズキラー付きのリミットスイッチを使えばトラブルが少なくなるかもしれません。


ホーミングサイクルの流れ
・XYZ軸の+側(右、奥、上)にリミットスイッチ(この場合ホームスイッチと呼ぶのかも)をつける。
 *grbl0.9ではZ+端子とSpinEn端子が入れ替わったので、CNCシールドV3.0を使う場合は、Z+リミットスイッチをSpinEnへつなぐ。Z+とZ-は内部でパラレルにつながっているので、Z-リミットスイッチもSpinEnにつなぐ(詳しくはこちらへ)。
・デフォルト$21=0(リミットスイッチ:オフ)のままでも構わない。
・$22=1にしてホーミングサイクル機能をオンにしておく。
・$24〜$27は上記のような数値にしておく。場合によっては少し遅めにする。
・あとは$Hをコマンド入力して(あるいはHomeボタン)ホーミングサイクルを開始する。
・最初にZ軸がリミットスイッチ方向に動き出しマシン原点を見つける。つぎにXY軸も同じように原点を探し出して終了。これでリミットスイッチがある箇所、右奥上がマシン原点(0,0,0)となる。最終停止位置は、$27で設定した値分だけ戻った位置になり、そこで終了(ホーミングサイクル中に各リミットスイッチを押すけれども、S21=1でHard limitがオンになっていても関係なく動き続ける)。

この画面↑でも分かるように、右側のX-Y平面上で、きちんと右上に矢印と現在位置が重なりました。原因はコンデンサーなのか、設定値なのか分かりませんが、なんとかここまで辿りつけました。
これでようやくゼロ地点設定可能となったので、思うように操作できそうです。
というのが、今日の収穫でした。ここまで来るのにかなり疲れました。
あとで設定値などを変えてみてどこが原因だったのか究明したいと思います。途中試行錯誤していた段階でも、速度を変えると動き始めたりしたので、適度な速度設定などがもしかしたら必要なのかもしれません。当然マシンによっても違うので、調べても最適な値は分からないのかもしれません。

ちなみにホーミングが成功するまでは、以下のように現在値と原点がずれた感じになっていました。
追記:
このずれは、現在地をWPosのリセットをすることで解消できます。G92X0Y0Z0のGコードを入力することで現在地を原点(加工原点)にセットすることができます。あるいは、bCNCならX=0、Y=0、Z=0ボタンで各軸ごとに、現在地を0に設定できます。

このままでも作業できないわけでもないのですが、やはりせっかくリミットスイッチもつけたことだし、ホーミングが機能しないと、なんとなく気持ちが悪い。

ということで、ホーミング直後の状態。右奥が原点です。見た目は前から特に変わっていません。
完成目標は4月中としていたので、ぎりぎり予定通りという感じです(まだ少し作業は残ってますが)。まあ、とりあえず一段落つきました。

作業エリア940x740mmの3軸CNCマシンとしてこの段階で、
Grbl0.9j+bCNC:Mac対応フリーウェア
ボールネジ+リニアレール一式:37000円
ステッピングモーターNEMA23(4個):9000円
アルミ構造フレーム材料+ネジ類:12000円
Arduino Uno:3000円
CNCシールドV3.5+モータドライバDRV8824(4個):3000円
配線材料+ケーブルドラッグチェーン:6000円
合計約70000円くらいかかりました。
予算の半分はボールネジ+リニアレールという感じ。MakerSlide、V-Wheel、タイミングベルトなどにしていれば、50000円くらいで済んだかもしれません。
その他:
レーザーモジュール5.5W(購入済み:17000円)、トリマ300W(手持ち:10000円くらい)、DC24V/7A電源(手持ち:5000円くらい)
という感じです。
使用工具など:
卓上マルノコ、小型ボール盤、ジグソー、ハンダゴテ、ホットボンド、各種タップ、各種ドリルビットくらいです。


追記:
その後、ドライバ(DRV8825)のマイクロステッピング設定を1/4から1/8に戻してホーミングしてみましたが問題ありませんでした。
ついでに、以前サンプルで拾った星形の.ngcファイルを読み込ませて実行してみました。
ホーミングでマシン原点を出してから、作業エリアの中央あたりに移動させて、そこをWPosの原点にしてから実行してみました。まだトリマはつけてないですが、MDFを3回パスで削るファイルのようで、きちんと3周して元の定位置に戻りました。もうそろそろCNCルーターとして使えそうという感じが見えてきましたが、まだレーザーについては後回しになっています。


続き:合板の初カット

2016年4月21日木曜日

CNCマシン:配線計画その2+CNCシールドV3.5到着
























CNCマシン本体に対して、主には以下の配線が必要です。
・XYZ軸のステッピングモーター(4個)
・XYZ軸両端のリミットスイッチ(6個)
・レーザーモジュール+ファン
・LED照明+予備端子

全ては手前右下のCNCシールドを内蔵したコントロールボックスまで線が引かれます。
コントロールボックス上には、主電源スイッチや非常停止ボタンなどいくつかのスイッチ類がつきます。
途中、X軸裏面とY軸右側面にケーブルドラッグチェーンがつきます。
ケーブルはCNCマシン本体をX軸、Y軸、Z軸にそれぞれ分解したときに脱着可能にするためコネクターが用いられます。
以下が配線のダイアグラムです(ちょっと見にくいですが)。































字がつぶれて見にくいですが、このくらいの配線数があるという感じです。かなり大変。
上のほうから、一番遠いZ軸付近のもの、次にX軸関係、そしてY軸関係、最後下の方がコントロールボックス(CNCシールド)で、スイッチ類や電源など。
途中にコネクターもつけるので、その数も多いです。だいたいこれで把握はできたので、まだケーブルドラッグチェーンは届いていないのですが、配線部品を買いにいこうと思います。コネクター類は現物を見て判断しながら選ぼうと思います(相応しいのがなければ、普通の2.54mmピッチのピンヘッダとピンソケットでもよさそうだけど)。

CNCシールドV3.5到着
それから、CNCシールドV3.5が届きました。これでレーザーの可変出力が可能になります。
V3.0からだと、けっこう内容が変わっているようです。ピンの数も増えている感じです。


























このCNCシールドにDRV8825を4つのせる予定です。DRV8825のほうが電流制限値が高いのでその分パワフルなのでは。



























基板右側の真ん中あたりに「SpnEn(pwm)」端子があります。それと基板左上のタクトスイッチの右にある「P-STOP(シルクが重なって読みにくい)」とあるのが、非常停止ボタン用でしょうか?試してみないと分からないですね。基板右下の「Abort(中断/途中終了)」とどう違うのか?タクトスイッチ(Arduinoボードのリセットスイッチ)のすぐとなりにあるので、リセットだとは思うのですが。
それと、ジャンパーブロックもついていました。これでようやく実験できます。

ハードウェア/構造の作業は大体終わったので、徐々に電気系の作業に移っていきます。

次:引き続き配線作業

2016年4月19日火曜日

CNCマシン:CNCシールド+ドライバDRV8825/A4988(まとめ)

数日前にDRV8825もAliExpressから届いており、CNCマシンが完成したらAitendoで購入したA4988と交換する予定です。ついでに、CNCシールドの新しいバージョン3.5も注文しました。いまなら、AliExpressでも$20以下で買えるようです。CNCシールドv3.5(V3.1から)ではgrbl0.9のピン配列に対応しているため、そのままPWM端子を使ってスピンドルやレーザーモジュールの可変出力制御できます。V3.0の場合grbl0.9のピン配列に対応していないため、Z+とZ-がPWMピン、SpnEn端子がZ+(あるいはZ-)。Ebayから購入すれば、最新版V3.5.1みたいですね。
*CNCシールドV3.0とV3.1以上(最新版V3.51)の違いについてはこちらへ

主に制御用の電気系統については以下が必要:
・grbl0.9jファームウェアをアップロードしたArduino Uno(方法はこちらへ
・CNCシールド(CNCシールドV3.0とV3.1以上の違いに注意)
・ステッピングモータードライバ(A4988/DRV8825など)
・ステッピングモーター(各XYZ軸)
・XYZ軸用リミットスイッチ(マイクロスイッチなど)
・スピンドル用TTL端子付きドライバ(あるいはレーザー用ドライバ)
・電源(ステッピングモーター用):DC24V/5A以上
・非常停止ボタンや各種スイッチ類(要配線)
という感じでしょうか。
ステッピングモーターのトルクや許容アンペア数、それに応じたステッピングモータードライバについてはデータシートなど見ながら適切なものを選んだほうがいいと思います。また電源もDC12VよりはDC24Vで充分なアンペア数のあるものを選んだほうがいいと思います。
各項目の詳細は以下に書いてあります。


追記:AliExpressでもV3.51ありました。以下。
AliExpress.com Product - New Development Board CNC Shield V3.51 for Arduino 3D Printer Micro Controllers GRBL v0.9 Compatible Uses Pololu Drivers1958円(送料込み)



どうやらこのCNCシールドV3.5は、クローンがたくさん出回っているV3.0と違って、AliExpressだとここでしか扱ってないようです。PROTONEER純正品らしく値段も格安というわけではないです。もともとそんなに高いものではないですが。

実は、まだCNCシールドV3.0を使ってステッピングモーターの試運転をしてなくて、というのもジャンパーブロックを購入していなくて、マイクロステップやA端子へのクローン設定を確かめることができないでいます。

AliExpressだとジャンパーブロックが格安だけれども、こんなに要らない。100個で105円(送料無料)。ピッチは2.54mmのものを使います。


CNCシールド:A端子設定:
CNCシールドにはXYZ軸用ドライバ端子と予備のAドライバ端子(4番目のドライバ用端子)があり、基板上のピン(電源12-36V端子の上に並んでいるX,Y,Z,D12)にジャンパーブロックを差し込むことで、AをXYZのどれかのクローンに設定することができます。またXYZのクローンではなく、独立した4番目のモーターとして駆動することもできます(Arduino Uno/ATMega328にアップロードするgrbl0.9や1.1は3軸まで、Arduino Mega 2560用であれば専用の4軸ファームウェア6軸ファームウェアがあります)。今回製作しているCNCマシンのようにY軸に2個のステッピングモーターを使っている場合は、Y軸設定をA端子にクローンすれば、二つのモーターが同じ動きになります。設定方法はこちらに書いてあります。

AをY軸のクローンにするなら、上記画像のように、ジャンパーブロック2個をYの欄に横一列に差し込むことになります。AをX軸のクローンにするなら、X欄に横一列に差し込む。独立した4番目のモーターとして制御するなら D12へ。説明は見当たらないですが、Aの回転を反転するには、A.DIRに差し込んだジャンパーブロックを外せばいいのかもしれません。ステッピングモーターの配線を反転させるといいようです。

AliExpress.com Product - Free shipping! New cnc shield v3 engraving machine / 3D Printer / + 4pcs A4988 driver expansion board CNCシールドV3.0(V3.51より古いタイプ)とA4988のセットならかなり安い。456円(送料込み)。V3.0でも配線に注意すれば使えるので、低価格重視ならこれでも充分。



リミットスイッチ:
XYZ軸の両端にリミットスイッチをつけるときは、CNCシールド基板右側にあるEND STOPS:X+,X-,Y+,Y-,Z+,Z-にマイクロスイッチなどを接続(±の記号は通常、X+:右方向のリミット、X-:左方向のリミット、Y+:奥、 Y-:手前、Z+:上、Z-:下)。接続方法はこのページ下部にあります。
リミットスイッチは原則的には通常オープンのほうの端子を使います。
追記:
リミットスイッチ端子はかなりノイズに弱いようなので、コンデンサーをつけるといいみたいです(その内容はこちら)。

CNCシールドV3.0(grbl0.8ではなくgrbl0.9や1.1に使う場合)のリミットスイッチについて:
grbl0.9からは、Z軸用リミットスイッチのピンとSpindle PWMのピンの位置が入れ替わったので、それに対応していないCNCシールドV3.0(grbl0.8用)を使うときは注意が必要です。CNCシールドV3.0の場合、まだSpindle PWM端子(可変制御)ではなく、Spindle Enable端子(ON/OFF制御)になっているはずです。つまり、CNCシールドV3.0でgrbl0.9や1.1を使う場合は、Z軸用リミットスイッチ(+と-の両方)をSpindle Enable端子に接続。そのかわりSpindle Enable(PWM端子として)は、Z+かZ-のどちらかへ接続。CNCシールドV3.0上のZ+とZ-は内部でパラレルにつながれているので、どちらにつないでもいいはずです。
*CNCシールドV3.0とV3.1以上(最新版V3.51)の違いについてはこちらへ

CNCシールド3.10以降であればgrbl0.9や1.1に対応しているので、ピンの配置はそのままのはずです。
CNCシールド上の各リミットスイッチ端子(2本ずつ)は、普段オープンな状態になっており、内部のプルアップ抵抗により一方の端子(内側の端子)がHIGH(5V)の状態になっています。リミットスイッチが押されるともう一本の外側のGND端子と接続されるためにLOW(0V)になり反応したということになるようです。
CNCシールドV3.0.2からは、リミットスイッチが押されたときにLOWになるかHIGHになるかを選択できる端子(END STOP HIGH/LOWの横にならんだ3本ピン)があります。デフォルトでは、3本ピンの左と真ん中にジャンパブロックを差し込む。逆の設定にしたい場合は、真ん中と右に差し込む。


ドライバ(A4988/DRV8825)の設定:
ドライバは、CNCシールドにただ差し込んで終わりというわけではなく、
・ヒートシンクをつける
・マイクロステッピング設定をする
・電流制限設定をする
ということが必要です(以下に説明)。

まずCNCシールドにドライバを差し込むときは、向きに注意しないといけません。
A4988なら、CNCシールド対してこの向き(上画像)。A4988上の可変抵抗器が下にくる感じです(この可変抵抗器もあとで使用するモーターに合わせて設定しなければいけません)。上画像のようにヒートシンクを各ドライバにつけたほうがいいでしょう。ヒートシンクなしだと1Aまで、ヒートシンクやクーリングファンできちんと冷却すれば2Aまで大丈夫らしいです。

また、DRV8825なら以下のような向き。A4988と違って可変抵抗器が上にくるように差し込みます。DRV8825はヒートシンクなしで1.5A、ヒートシンクありで2.5A。



実はドライバの裏側を見れば、どの端子が何なのか分かるのですが、始めて見たときは気づきにくいかもしれません。


マイクロステッピング設定方法:
ドライバを差し込むと見えなくなってしまいますが、ドライバのちょうど真下にジャンパーブロック(ジャンパーピン)を縦に3個差し込む端子MS1、MS2、MS3があります。以下の赤枠で囲んだ部分。
上画像の場合は、Z軸用ドライバの位置に白いジャンパーブロック(ジャンパーピン)が縦に2個差し込まれています。マイクロステップは以下の表を参考にすると1/8になります。X、Y、Aに関しても同様に所定の箇所へ必要数取り付けてください。

ジャンパーブロックの差し込む組み合わせによってマイクロステッピングをFull Step(1/1)、 Half Step(1/2)、1/4、1/8、1/16から選ぶことができます。Low:差し込まない、High:差し込む。
最高1/16までできるのがA4988(以下)。Pololuのサイトの書いてあります

MS1MS2MS3Microstep Resolution
LowLowLowFull step
HighLowLowHalf step
LowHighLowQuarter step
HighHighLowEighth step
HighHighHighSixteenth step
ジャンパーブロックを何も差し込まなければ、初期設定のLow/Low/Lowのフルステップになります。
つまりマイクロステッピングされないまま、1回転200ステップのモーターなら200ステップのまま。
3つさせば、200x16=3200で1回転で3200ステップのきめ細かさになります。細かくすればするほど動きは滑らかになって振動が減りますが、トルクが下がってしまうようです。

また、DRV8825なら1/32まで設定できます(とは言っても、1/32は使わないと思うけど)。
現状では、DRV8825でマイクロステッピング1/8に設定しています。
DRV8825についてのPololuサイト
MODE0MODE1MODE2Microstep Resolution
LowLowLowFull step
HighLowLowHalf step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

電流制限設定:
ステップ数をあげるとより多くの電流が流れるため、モーターにとって過電流になりダメージを与えることがあります。そうならないように電流制限する機能がドライバについています。ドライバ基板上の可変抵抗器で調節可能です(電流というか電圧を調整するのですが)。以下、Pololuのセッティング動画。

まずマイクロステップ設定をフルステップの状態(ジャンパーブロックをなにも差し込まない)で、
モーターの許容電流値が1Aなら、
A4988の場合、
Current Limit=VREF x 2.5
モーターの許容電流が1A=VREF x 2.5なので、 VREF=0.4Vとなります。可変抵抗器を回して、0.4V以下になるように設定すればいいことになります。
その際テスターで電圧を計測します。ドライバ基板の右下のGND端子(以下のステッピングモーターとの配線画像を見るとGNDの位置が分かります)にテスターのマイナスプローブ、そしてテスターのプラスプローブを可変抵抗器の回す部分(もしくは可変抵抗器の3つ脚の真ん中の端子)に接続。ゆっくり可変抵抗器を回しながら、1Aのモーターなら0.4Vくらいになるようにします (下の画像のような2Aのモーターなら0.8V)。A4988の場合は、CNCシールドに差し込みパソコンにUSB接続で電源供給し調整できました。

追記(2017年以降):
PololuのA4988のサイトを見ると、従来の電流制限設定の計算式は
Current Limit=VREF x 2.5
でしたが、2017年以降のPololu製A4988ボードでは、センスレジスタが0.050Ωから0.068Ωへ改良されたために、計算式は

となったようです。
Rcsの部分が、センスレジスタの値(従来の0.050か2017年製の0.068か)であり、
従来の計算式にRcsを代入すれば、
Vref=8×Imax×0.050=Imax×0.4
となるので、結果的には、
Current Limit=VREF x 2.5(従来の計算式)
と同じ値になるというわけです。
新しい計算式は、Pololu製の2017年製のA4988ボードを使った場合適用されるので、中国製のA4988の場合は、おそらく従来の計算式のままで大丈夫だと思います。

DRV8825の場合、
Current Limit=VREF x 2.0
なので、1Aのモーターなら0.5V、2Aのモーターなら1.0Vになるように可変抵抗器を回します。
DRV8825の場合、パソコンとのUSB接続だけではダメで、CNCシールドの12-36Vに電源供給しないとできませんでした。

追記:
RepRapの電流制限のページを見ると、A4988やDRV8825ドライバーのチョッピング機能により上記のように電流制限すれば、例えばInventablesで売っている2.8AのNEMA23モーターも駆動可能。2.8Aの場合、A4988ならVREF=2.5/2.8=0.89V以下に可変抵抗器を設定すれば、最大トルクは得られないけれども大丈夫らしいです。Inventables NEMA23 2.8Aのページの質問(2013/DEC/10)で、GrblShield2.0Aでこのモーターは使えるのか?というのがあり、最大トルクは得られないけれども一応使えると書いてある。
関連:Shapeoko Wikiのドライバのページ


ステッピングモーターとの配線:
モーターによっては線の色が違う場合があるので、データシートなどでチェックして、どの色がどの線なのか確認したほうがいいと思います。また、ステッピングモーターには4線、6線、8線などあります。PololuのFaqにそれぞれの接続の仕方が書いてあります。
以下は、今使っているモーター(2相ユニポーラ6線)です。
定格3.6V/2.0A、3.6V与えると2.0A電流が流れるということなので、ドライバDRV8825で2Aの電流制限をしたということは3.6Vで駆動することになります。
上の図面で、右下に見える配線図にどの線が何色かが書いてあります。
これを見ながらA4988の場合なら、以下の配線になります。
モーターは右側の端子、2B、2A、1A、1Bの4本に接続されています。ということは、先ほどのモーターの図面を参照すると、
2B-BLK(黒)
2A-GRN(緑)
1A-RED(赤)
1B-BLU(青)
という対応になります。CNCシールドの各ドライバの右側に4つのピンが縦についており、そのまま上から、黒、緑、赤、青という配線でこのモーターの場合つなぎます。
モーターのYEL(黄)とWHT(白)は未接続で構いません。

DRV8825の場合は以下。
B2-BLK(黒)
B1-GRN(緑)
A1-RED(赤)
A2-BLU(青)
となります。
A4988とピンの番号が微妙に違うので、間違わないようにしてください(上からの順番は同じ)。
それと、モーターの線の色については、そのモーターのデータシートを探し出して確認したほうがいいと思います。ドライバA4988/DRV8825のピンに関しては、裏返すとシルクで書いてあるので、ドライバの差し込む向きを確認する場合やモーターと接続する場合、どの端子なのか実際に見て確認できます。
CNCシールドのモーター接続のピンは、ドライバのピンをそのまま右へ平行移動した4つのピンになっているはずです。

という感じで準備は整っているのですが、肝心のジャンパーブロックがまだない。CNCマシンの配線作業する段階になったときに、秋葉原に行ってケーブル、コネクター類といっしょに手に入れようと思ってます。


基本的な配線の仕方(CNCシールドV3.5の場合):
*CNCシールドV3.0の場合は、SpnEn端子とZ軸リミットスイッチ端子を入れ替えて接続(詳細はこちらへ
左下の青い端子にステッピングモーター用の電源、そして各軸ステッピングモーター、各軸リミットスイッチ、可変出力可能なTTL端子つきのスピンドル用モータードライバ(あるいはレーザー用ドライバ)を接続。下画像には、ステッピングモータードライバは搭載されていないので、A4988やDRV8825をマウントして下さい。

この画像の場合、Y軸に2個のモーターを使う設定なので、4つのステッピングモータードライバを搭載します。右下のステッピングモータードライバ用の端子(A端子)がY軸用のクローンです。その設定のため、左側に緑色の枠で示したジャンパブロックを2個(Y軸用)を差し込みます(写真上のX軸用の黒いジャンパーブロック2個は差し込まない)。3個しかモーターを使わないのであれば、A端子そして左側のクローン用のジャンパブロックも不要です。
*ステッピングモーターの各線の色はモーターによって違う場合があるので注意して下さい。

各軸ドライバ用端子の間(電解コンデンサの下)には、写真上ではマイクロステップ設定用のジャンパブロックが縦に3個ずつ差し込んでありますが、マイクロステップをいくつに設定するかは、前述してある内容を確認して必要数差し込んで下さい。

リミットスイッチは、XYZ軸に2個ずつあるため12本の線が必要ですが、各軸+と-は回路内で並列つなぎになっているため、配線をまとめてしまえば4本で済みます(黒い端子はGNDなので、6本ある線を1本にまとめ、各軸ごとの赤い線は1本ずつ合計3本にまとめることができます)。もし長い距離を配線しなければいけないときは、途中でまとめてしまったほうがいいかもしれません。

スピンドル用のドライバ(TTL端子)をSpnEn(pwm)に接続することで、Gコードでスピンドルの出力調整が可能になりますが、スピンドルを手動制御するなら接続する必要はありません。

このほか、プローブ機能、非常停止(デジタルブレーカー)など、いくつか端子は余っていますが、最低限これだけをつなげば動かすことはできます。動作確認後、あとからそのような機能を追加配線していってもいいと思います。ステッピングモーターの回転方向やスピード(フィード)は、ソフトで設定可能です。
このCNCシールドの真下にくるArduinoボード自体は、通常パソコンとUSB接続されるために、USB経由でDC5Vが供給されます。もし、ワイヤレスなどスタンドアロンで動かす場合は、Arduinoボードに電力を供給する電源が別途必要になります。


電源について:
ステッピングモーターは前述してあるNEMA23(3.6V/2.0A)を4個使用しており、現在DC24V/7Aのスイッチング電源(AC100V用)に接続しています。
ShapeOko Wikiには電源について書いてあり、NEMA17クラス4個であれば100から120W程度、NEMA23クラス4個であれば150〜200W。
参考までに、ShapeOko3ではNEMA23クラス4個使用に対して、24V/5Aの電源を用いているようです。最近のX-CARVEでは、NEMA23クラス(140oz-in)4個に対して24V/17A。

2016年3月26日土曜日

いろいろあるG-Code Senderについて

Grbl Controller:(使い方はこちらへ
Mac+Arduinoという環境で、Arduino用CNCシールドを探すところから始まったので、まずは:
Protoneer Arduino CNC Shield V3.10
この↑シールド(A4988付き)でステッピングモーターを動かすことができるけれども、それをPC(Mac)から操作するソフトも必要なので、
Zapmaker Grbl Controller 3.6.1(for Mac)
が見つかった。インストールが面倒そうなのですが、このページの以下の投稿から「3.6.1-T4」か「3.6.1」が簡単にインストール出来る。ちなみにWin/Linux版はこちらから
この人↑が「3.6.1-T4」と「3.6.1」のバイナリーをつくってくれたらしいので、青文字の「3.6.1-T4」か「3.6.1」をクリックすればソフトをダウンロードできる。

しかし、調べていくうちにこの手のソフトがたくさんあることが分かってきた。
基本的にはGRBL関係なら以下のサイトに行くといいみたい。
https://github.com/grbl
ここには、
・grbl:(Arduinoにアップロードするファームウェア)
・grbl-builds(コンパイルされていないファームウェア保管場所)
・grbl-sim:(Arduinoなしでシミュレーションできるらしい)
・Universal-G-Code-Sender(JavaベースのクロスプラットホームのGコード操作ソフト)
の4項目がある。

Universal-G-Code-Sender:
Zapmaker Grbl ControllerのかわりにUniversal-G-Code-Senderを使うこともできるようで、もしかしたら、こちらのほうがメジャーなのかもしれない。以下のようなインターフェース。
似たような感じではあるけれど、使ってみてどちらが自分に合うかで決めればいいと思う。

ShapeOko Wikiにあるリスト:
ほかにもこの手のソフトはいろいろな人によって開発されていて、以下の「Shapeoko」のwikiサイトに載っている。
http://www.shapeoko.com/wiki/index.php/Communication_/_Control
この中のリストにも「Zapmaker Grbl Controller」があるけど、「Shapeoko」でも使っていたようだ
現在の「Shapeoko3」では、「Carbide Motion Machine Control Software」を使っているみたい。こんな画面(以下↓)。
ちなみに「Shapeoko3」は、Arduinoシールドに「CNC Shield」ではなく「gShield」を使っている。

この手のソフトは、G-Code-Senderと呼ばれているようだ。そしてArduinoにアップロードされるファームウェアはG-Code-Interpriterと呼ばれているらしい。日本語ではGコード送信プログラムとかGコード解析プログラムとでもいうのでしょうか?

他には、Interactive G-Code-Generatorというのもあり、Javascriptでできる「Javascript G-Code Generator」というのもあるらしい、Webやブラウザ上でするにはいいかもしれない。
たしか、Smart Laser Miniがブラウザ上のインターフェースであるため、ネットを通して遠隔操作もできるようである。と、いまSmart Laser Miniのサイトを見に行ったら、来月(2016年4月)に新しいのでるみたいです(以下)。
レーザーモジュールが3Wにパワーアップしそうな感じです。価格は10万円くらいになってしまうのでしょうか。

ということで再びG-Code-Senderに戻りますが。
「X-CARVE」も「gShield」を使っている。インターフェースはブラウザ(今回はSafariで)で操作可能。以下のような感じ。これも右側に3Dシミュレーション画面のようなものがある。シンプルにまとまっていて素人でも使いやすい感じになっている。
いろんなG-Code-Senderが使えるということが分かったのですが、この際G-Code-Sender自体も自分の使い方に合わせてプログラムしようと思いましたが、今回はそこまではやらないで、既存の使いやすいものを試しながら選んで行こうと思います。

追記:
この記事を書いているときは、まだよく知らなかったので上記のようなソフトを試していました。現在はbCNC(以下のリンク)というG-Code-Senderを使っています。

関連:
CNC関連のソフト(まとめ)
G-Code-Sender(bCNCなど)

GRBLソフトウェアを試してみる

追記:
2017年現在では、このページの内容はやや古いものとなっています(Grbl0.9以前のもの)。
現行のGrbl1.1ならびにそれに対応したG Code Senderを使用する場合は、こちらのページを参考にして下さい。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ハードのほうは、ネットで調べながらなんとなく検討はついてきました。
ソフトのほうは思っていたより簡単でArduinoがあれば何とかなりそう。
とりあえず、目をつけておいた「CNCシールド」を使おうと思っているので秋葉原で売っていないかチェック。

aitendoで中国製CNCシールドが売っていることが分かった。ネットで買ってもよかったけれども、すぐに試してみたいので店頭で購入することに。aitendoと言えば、昔は自作液晶スクリーン屋だったと思うけど、いつのまにか店も引っ越して、Arduino関係をかなり増やしていた。新店舗もすごい量の商品。全部中国製ぽいけど。まあ、安いから実験するにはいいかも。
追記:
以下のCNCシールドはV3.0(grbl0.8対応)です。最新版はCNCシールドV3.51(grbl0.9)になります。V3.0とV3.51の違い、あるいはV3.0でgrbl0.9/1.1を使う場合についてはこちらへ

CNCシールド950円、安い。ついでにドライバも。

ドライバは、ネットでもっと安いのがあるけど、実験ということで3個購入。
ついでに、Arduino UNOも買っておこうと秋月へ。Arduinoも中国製のクローンでもいいかもしれないけれど、一応純正品を。ArduinoはDiemilanove以後買っていないし、そのDiemilanoveも壊れてしまったので、交換用ATMEGA328も1個購入。
AliExpress.com Product - Free shipping! New cnc shield v3 engraving machine / 3D Printer / + 4pcs A4988 driver expansion board これ↑なんかは(AliExpressで)、シールドとドライバ(4個)セットで456円しかしない。安い。

アマゾンでも売っていて、送料込みで670円(以下)。


これでコントローラーは一応揃ってしまったので、Arduino UnoにCNC libraryを入れてみることに。

手順(旧型Grbl v0.8):*v0.8は古いので、v0.9あるいはv1.1の場合はここをスキップ
https://github.com/Protoneer/GRBL-Arduino-Library
にアクセスし、画面下のほうにある「How to install it:」から、
https://github.com/Protoneer/GRBL-Arduino-Library/archive/master.zip
このzipファイルをダウンロード。おそらく自動解凍するので、
「GRBL-Arduino-Library-master」というフォルダが出来上がる。
フォルダ名を「GRBL」に改名し、Arduinoのlibrariesフォルダへ入れる。Macなら、
/Users/username/Documents/Arduino/libraries
の中へ入れるだけ。
あとはArduinoソフトを起動して、
「Arduinoメニューバー>ファイル>スケッチの例>カスタムライブラリのスケッチの例>GRBL>GRBLtoArduino」を読み込む。
以下の画面が出て来て、
あとはArduinoボードをUSB接続しアップロード(ツール>マイコンボードでArduinoボードの種類、ツール>シリアルポートも正しく選択しておくように)。
これでArduino側は終了。Arduinoボードは、ゆくゆくはCNCマシンのステッピングモーターを動かすために、マシン本体へ取り付けられることになる。


Grbl v0.9の場合:(追記:最新版grbl1.1についてはこちら
上記はGrbl v0.8だったけど、v0.9をインストールすることに。
*Grbl v0.8をインストール済みの場合は、Grbl v0.8を消去してからインストール
つまり、「/Users/username/Documents/Arduino/libraries」内の「GRBL」フォルダを捨てる
このページ(grbl本家wiki)を見ると、Arduino IDEを立ち上げてから、インポートする方法が載っている。
・まずこのサイトの画面右側の「Download ZIP」をクリック。
・そうすると「grbl-master.zip」がダウンロードされる。
・「grbl-master.zip」をダブルクリックして解凍する。
・解凍すると「grbl-master」フォルダができあがる。
・Arduino IDEを立ち上げる。
・「Arduinoメニューバー>スケッチ>ライブラリをインクルード>.ZIP形式のライブラリをインクルード...」を選択。
・そうするとファイル選択のウィンドウが出るので、先ほど解凍したフォルダのほう「grbl-master>grbl」を選択。
・インクルードされたら、「Arduinoメニューバー>ファイル>スケッチの例>カスタムライブラリのスケッチの例>grbl>grblUpload」を選択。

現れた画面↑上で、「検証」、「マイコンへ書き込む」でArduinoボードへアップロード。
以上。

Arduino IDEでArduinoボードにアップロードされたgrbl0.9jを確認する:
CNCシールドを装着したArduinoボードをパソコンとUSB接続し、Arduino IDEを立ち上げて、メニューバーの「ツール>マイコンボード」から使用しているArduinoボードのタイプ(Arduino UnoならArduino/Genuino Uno)を選択。続いて「ツール>シリアルポート」からArduinoボードのシリアルポートを選択。
Arduino IDEの画面右上にあるシリアルモニタボタンをクリックする(以下)。


そうすると、シリアル通信用の画面が出てきます(以下)。
この画面↑右下にあるbaudrateをgrbl0.9以上なら115200 bps(grbl0.8なら9600)にしておきます。

最初に接続すると、上画像にのように「Grbl 0.9j ['$' for help]」と出てきます。ここでArduinoにアップロードされたgrblのバージョンが0.9jであることが確認できます。
続いて、コマンド入力欄に$$(設定内容確認コマンド)を入力し(以下)、
そして、右上の「送信」ボタン↑を押すと、

このような↑、現在のArduinoボード内にアップロードされたgrblの各種設定がでてきます。
それぞれの設定内容(grbl0.9)については、grblのサイトに書いてあります。
例えば、ここで各種設定の下から3行目にある$130=500.000に対して、
$130=300
を入力するとX軸の移動範囲を300mmに設定し直すことができます。
再度、$$を入力し設定内容を確認すれば、
このように↑設定内容の下から3行目にある$130の項目は、
$130=300.000
に変更されたことが確認できます。
このような設定は後々使うG Code Sender(GRBL Controller、Universal G-Code Sender、bCNCなど)で行えばいいのですが、一応Arduino IDEのシリアルモニタ機能でも可能なので、動作確認のために試してみるといいでしょう。


GRBL Controller:
つぎに、CNCマシン(Arduinoボード)をMac上で操作する「GRBL Controller3.6.1」ソフトをダウンロード。「GRBL Controller3.6.1-T4」というのもあるみたい。Win用はこちらから
このソフトで何をするかというと、
・CNCマシンの各種パラメータ(移動距離、移動スピードなど)の設定
・左右前後上下ボタン(ジョグボタン)でヘッドを材料の位置へ移動したり(加工原点設定)
・このソフトとは別にあらかじめ用意しておいたGコードファイルを読み込んでCNCマシンへ送信し加工開始
という感じ。Gコードを送信するためのソフト(G Code Sender)であって、このソフトでGコードを生成するわけではない。Gコード生成(G Code Generator)などほかのソフトについてはこちらへ
追記:
その後、Gコードを送信するソフト(G Code Sender)をいくつか試してみましたが、個人的にはGRBL ControllerではなくbCNCというのが便利で使っています。

あとはステッピングモータードライバ(A4988)をのせたCNCシールドをArduinoボードに装着し、MacとUSB接続、GRBL Controller3.6.1を立ち上げる。
GRBL Controller3.6.1の画面はこんな感じ↑。Grbl v0.8ならBaudRateは9600。v0.9なら115200。
CNCシールド(Arduino)とUSB接続後、Port name、Baudrateを選び、Openボタンで開始。
画面右のほうに3つのタブがあり、Advancedタブを押すと、
こんな画面↑が現れて、GRBL Settingsボタンを押すと各種設定ができそう。

そうすると、こんな設定画面↑が現れて、下から3行目にあるX軸の最大移動範囲(x max travel, mm)に400.000を入力(設定)してみる。数値を入れたらリターンを押してから、下のApplyボタンを押す。しかし、、、
> $28=400.000
error: Invalid statement
というエラーが出てしまう。どうやら、他の項目も同じようにエラーがでるようで、このソフト自体にエラーがありそう。$130=400.000のはずなのに、なぜか$28=400.000と認識しているようで、そのためにエラーがでているみたい。対応する項目がずれているのかもしれません。
なので、画面左にあるCommand欄に手動で、以下のように$130=400を入力しリターン。
そうすると、コンソールには
> $130=400
と出て来て、設定されたはず。ちなみに、先ほどのAdvanced>GRBL Settingsを押してみると、
こんな感じで↑、下から3行目には400.000がきちんと設定されています。どうも、このGrbl Settings画面で入力するとエラーが出るようなので、Commandから手入力したほうがよさそうです。このような理由からも、このソフトは使わなくなりました。
以下は、GRBL Controller3.6.1-T4(こちらはエラーでなさそうです)
GRBL Controller3.6.1-T4の画面はこんな感じ↑。なんか3Dの画面がついてる。

まとめ:
・Arduinoボードへアップロードするプログラム/ライブラリ(Grbl v0.8またはv0.9)
・Mac上で操作するアプリのインストール(Grbl Controller 3.6.1-T4がおすすめ)
の二つが必要。
そして、
・Grbl v0.8の場合はGrbl Controller上のBaudRateを9600
・Grbl v0.9の場合はGrbl Controller上のBaudRateを115200
にする必要がある。
*Grbl Controller 3.6.1のほうは、なぜかエラーがでるので、使うならGrbl Controller 3.6.1-T4のほうがよさげ、機能も豊富だし改善されているようです。
おそらく、Arduino経由でCNCマシンを検索すると(特に日本語で)、CNCシールドやGrbl Controllerに行き着くと思うのですが、Grblで調べると(Grbl Wikiなどから)、Universal G-Code SenderやbCNCというソフトに辿り着くと思います。個人的には、どちらかというとUniversal G-Code SenderやbCNCのほうが使いやすいと思います。
追記:
2017年以降であれば、最新版Grbl1.1を使ったほうがいいと思います。おそらくGRBL Controller3.6.1は、数年前のGrbl0.8用という感じなので(使えないというわけでもないのですが)、Grbl1.1に対応した新しいソフトのほうがいいかもしれません。Grbl1.1についてはこちらへ

「Grbl v0.9 + GrblController3.6.1-T4」 の場合
上記のようにGrbl v0.9をアップロードしたArduino UNOをMacにUSB接続し、GrblController3.6.1-T4をMac上で立ち上げてみました。まだステッピングモーターは未接続。
GrblController3.6.1-T4の画面左上の
・「Port name」でArduinoのポートを選択
・「Baud Rate」で115200を選択
・画面左上「Open」ボタンをクリック
そうすると以下のような画面。
Openボタンで開始したら、Grbl Settingsボタンで各種設定ができます(こちらはエラーでません)。なので、こっちのほうがいいかもしれません。

よくみると「Spindle On」だけでなく「Speed spindle」もついています。TTLドライバ付きのレーザーモジュールならレーザー出力調整できそうです。この機能を生かすには「CNC Shield V3.10」にしたほうがよさそう。先日aitendoで買った中国製の「CNC Shield V3.0」だとgrbl0.8対応なので端子がON/OFF制御になっている(追記:grbl0.9ではピン配列が少し変わったので、それにあわせて接続を入れ替えればV3.0でも使えるようです)。まあ、そのへんは後々バージョンアップしようと思います。
とりあえず、ソフトのほうはなんとかなりそうです。ということで、またハードの検討に戻ります。

関連:
CNC関連のソフト(まとめ):GrblController以外にも使いやすいソフトはあります。
CNCシールドV3.0とV3.1以上の違いについて:(最新版はV3.51)

人気の投稿