これまでのあらすじ:
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〜の投稿に書いてあります。

2016年5月15日日曜日

CNC関連のソフト(まとめ)

CNCマシン制作の構想段階当初から、Macで使えるオープンソースのCNC関連のソフトをいろいろ探しています。数年前の流行が一段落したせいか、一見よさそうだけど開発が止まっているもの、便利そうだけどバグがあったりとなかなか見極めが難しそう。Macなので数はかなり限定されるのですが、いままで見て来たソフトのリスト。
Mac利用者からの見ての使いやすさで★〜★★★つけてます。初心者向けという感じで、必ずしも高機能がいいというわけではなく。すぐに使えるかどうかという基準で。それと今後の開発も期待できるかどうか。Linux系はMacでも使えることがあるけど、インストールが面倒だったり、Mac特有のバグがあったりするのであまり触っていません。Raspberry Piにインストールして使えば便利そう。

主には以下の5種類。
・2Dドローイングソフト:
  svg、dxfなどのフォーマットで出力できるもの
  Inkscape★★★
    イラストレータの代用(イラストレータのショートカットキーに変えることができる)。
    Extension(Plug-in)との組み合わせで充分使える。
    スナップ機能も細かく設定できるのでCADのように製図できる。
    Forumも充実しているし、2Dやレーザー加工はこれがメインで大体大丈夫だと思う。
    オフカット(Outset/Inset)機能でルーター加工パスもつくれる(使用例)。

・3Dモデリングソフト:
  stlなどの3Dフォーマットで出力できるもの
  Fusion360★★★
    3Dモデリング操作しやすい。
    無料版が最低1年間は使える。その後また更新?
    Gコードも生成可能。
    クラウドベースなので共同作業がやりやすい。
  Blender★★☆
    操作方法が独特で慣れるまで大変だけど、基本的に何でも作れる。
    Add-on(プラグイン)も豊富にある(シリアル通信なども可能)。
    BlendercamでGコード生成可能。
  ・SketchUp:★★★
    操作が直感的で扱いやすい。
    プラグイン「Export DXF or STL」をインストールすると便利。
    プラグイン「SketchUcam」をインストールすればGコード生成も可能。

・CAM/G Code Generator:
  図面データ(2Dデータ:svg、dxfなど、3Dデータ:stlなど)をGコードに変換してくれる
  Fusion360★★★(使用例
    3DモデリングしながらGコードも生成できる。3Dプリンターにもいいかも。
    商用ソフトでもあるので、かなり本格的(設定などが細かい)。
    レーザー加工用の機能がないのがちょっと残念。3D加工向きかも。
  Blendercam★★★(使用例
    Blenderと組み合わせて使えば便利。
    様々な3Dデータを読み込むことができるので、Gコード生成用としても使える。
    3D切削加工はほぼ可能。
  gcodetools(Inkscape Extension):★★☆(使用例
    やや開発が停滞しているようだけど、基本的なGコードは生成可能。
    最初は使い方に違和感を感じるけど慣れれば簡単。
  Laser Tool Plug-in(Inkscape Extension):★★★(使用例
    レーザー加工するならこのInkscapeとこのプラグインで簡単に設定できる。
    操作/設定がシンプルで使いやすい。
  ・Laserweb3/Laserweb4:★★★(使用例
    ブラウザ上のレーザー用アプリ。Laserweb4は単体アプリ化。
    Gコード生成とGコード送信もこれ一つで出来るので便利。
  Jscut★★★(使用例
    Webベースなのでブラウザ上で作業が可能。
    シンプルで使いやすい。オフカットなどのパスも生成可能。
    他のWebベースのGコードセンダーと組み合わせて使うと遠隔操作可能なので便利。
  ・PyCAM:★☆☆
    便利そうだけどインストールが面倒、Macにはバグもあったり、しばらくは改善されなさそう。
  ・SketchUcam:★★★
    SketchUpのプラグイン。
    SketchUpと合わせて使うと便利。

・G Code Sender/Controller:
  Gコードを読み込んでCNCマシンへ送信したり手動入力制御したりするPC上のアプリ
  Universal-G-Code-Sender★★☆
    シンプルなので最初は使いやすいかも。
    grblとの相性がいいのかも。
    JavaベースなのでMacも充分使える。
    開発中の新バージョンに期待したいけどいつになるのか?
  GrblController★☆☆
    数年前までは使っている人もいたみたい。開発が止まっていそうで、今後あまり期待できない。
    基本的なことはできるけど、他に比べるとやはりいまいち。
  bCNC★★★(bCNCを使ってみたときの記事はこちらへ
    操作も比較的シンプル。
    dxf読み込み可能、基本的なCAM機能もある。
    Autolevel機能もあるので基板制作にも向いている。
    Pendant機能でWeb上からスマホなどで遠隔操作可能。
  LaserWeb/LaserWeb2/LaserWeb3/LaserWeb4★★★
    ブラウザ上の操作はシンプル。svg、dxf対応。Jscutと組み合わせると便利。
    Webベースなので遠隔操作可能(最近はWebベースが主流かも)。
    ブラウザ上でstlファイルを読み込むことができる。
    まだまだ開発が継続されているので今後も期待ができる。
  cheton/cnc★★☆
    これもWebベースでつかいやすそう。
    Webカメラでの監視、320x240 LCDディスプレイ対応の操作画面もある。
    Raspberry Piを用いて操作などすると便利そう。
    今でも頻繁に開発が進んでいそう。
  ・GRBLWeb:★★☆
    こちらもWebベースでRaspberry Piにインストールしてホストとして使うのかも。   
  ・Easel:★★☆
    X-CARVEやShapeoko(1or2)用のWebベース、CAD+CAM+GrblControllerソフト。
    X-CARVEやShapeoko(1or2)用だけれども使うことはできる。
    ただ、Machine選択でX-CARVE/Shapeoko(1or2)/Carveyしかないから戸惑うが、ウィンドウ下のAdvanced>> に進み、Advanced SettingsでMachine Inspectorを使えば大丈夫。
    細かい設定はないけれどもオールインワンなのですぐに使うにはいいかも。
    ステップバイステップで設定が誘導されるので初心者にはわかりやすい。   
  ・Mach3:☆☆☆
    MacなのでMach3とは無縁。

・G Code Interpreter:
  CNCマシンのマイコン(Arduinoなど)上のファームウェア、Gコードからモーター制御してくれる
  ・Grbl0.9j:★★★(最新版Grbl1.1はこちら
    Macなら基本これでいいと思う。
    Arduino+CNCシールド+ドライバのクローンなら合計で1500円以下で済む。
    完全にGコードが網羅されていないかもしれないけど充分つかえる。
    *Arduino Uno用は3軸までだが、ArduinoMega2560に4軸用ファームウェアをアップロードすれば4軸制御も可能(ただしやや古い:2014年製)。
    あるいは、6軸Android用GrblControllerに合わせてArduinoMega2560専用6軸ファームウェアもある。
    

  ・LinuxCNC★★☆
    GrblもLinuxCNCに準じているようなので、すべてLinuxを使えばかなり便利そう。
    ただ、Linuxもやり始めると手間暇かかってしまう。
    少なくてもRaspberry PIを使ってできるかもしれない。
  ・TinyG★★☆
   Grblより強力そうだけど、それだけ値段も高いのでお手頃ではない。$165ドル。
   ファームウェアはAVR Studio(Win用)でアップデート。Mac用AVR Studioもあることはある。
  
  
まとめ:
基本的にはG Code InterpreterはGrblを使用。
2D加工するなら、Inkscape+Extension(gcodetoolやLaser Tool Plug-in)でGコードファイルを生成する。あるいは、InkscapeのsvgファイルをJscutで読み込んでGコードファイルとして出力。
特に2Dのレーザー加工の場合は、Inkscape+Laser Tool Plug-inで充分だと思う。
Gコードファイルを読み込んで実行するソフトは、Universal-G-Code-Senderがシンプルでわかりやすいかも。現在は、bCNCが便利なので(慣れたので)使っていますが。
3Dの場合は、モデリングは何のソフトでも構わないと思う。Sketchupなど使いやすいと思うソフトで。その3DデータをFusion360かBlendercamでGコードを生成する感じになると思う。

この際、Linuxにしてもいいのかもしれないけれど、手間暇かかるのでそこまではしないつもり。Macの環境でもそこそこつくりたい物はつくれそうだし、とりあえずあるものを利用するだけでも充分だと思う。

ただ今後はRaspberry Pi3を使い、wifi経由でWebベースのLaserWeb2、cheton/cnc、Jscutを使うのがよさそう。遠隔操作やカメラ監視なども可能になるし、ワイヤレスでどこででも作業が出来るというのがいい。スマホやタブレットで操作もできるようになるので。
個人的には、LaserWeb2に期待したい感じ。現在はstlを読み込めるけど、スケール変換などがまだできない。今後のロードマップを見ると、3Dにも力入れようとしているし、まだまだ発展しそう。以下のような画面。

追記:
普段は、G Code SenderとしてbCNCをつかっていますが、bCNCにはPendantという機能(ネットワークを使ってWeb上で操作する)があり、先ほどつかってみたらタブレット(ブラウザ上から)でリモートコントロールできました。

これ↑が、Pendant機能をつかったタブレットのブラウザ上の画面です。
いままで通りに、CNCマシン(Arduinoボード)とMacBookをUSB接続し、bCNCを立ち上げてPendant開始ボタンを押すと機能がONになります(以下)。

ホストとなるMacBook上でもブラウザが自動的に立ち上がって操作画面が出てきます。アドレスに「http://localhost:8080」とでているはずなので、ローカルネットワーク内の他のコンピュータやスマホなどからもアクセスできるはずです。
持っているタブレットでは「localhost:8080」ではアクセスできなかったので、数字でプライベートIPアドレス「192.168.3.3:8080」(MacBookのプライベートIPアドレスとポート)を入れてみたら表示できました。
つまり、MacBookはCNCマシン本体脇に、そしてタブレットやスマホを持ちながらZ軸に近寄って調整などが可能というわけです。ポートマッピングも使えば、外出先からも操作可能だと思います。
bCNCは、いろいろな機能があってかなり便利そうです。

関連:
G Code Sender(bCNCなど)

19 件のコメント:

  1. 初めまして。
    以前このサイトか別の所なのか、bCNCで日本語化させているのを見た気がしてて、馴れないパソコンにどうにかインストールしたのですが、肝心の日本語化なんて見当たらなかったのですが・・・
    やっぱり夢でしょうか!?bCNCは日本語にはなりませんか?

    返信削除
    返信
    1. bCNCのWikiページに他の言語にもできるようなことが書いてありますね。
      https://github.com/vlachoudis/bCNC/wiki/Language
      bCNCのソフトを立ち上げて、上部Toolsボタンを押すと、右上のほうに言語選択タブがあります。いまのところ英語、ドイツ語、スペイン語、フランス語、イタリア語が選択できるようになっています。
      日本語化したものは見たことないですが、ここに書いてあるやり方で可能かもしれません。
      https://github.com/vlachoudis/bCNC/wiki/How%20to%20contribute%20a%20translation

      削除
  2. ご教授ありがとうございます!
    実際に使ってみたのですが、1日悩んでまだ出来ていません。
    他にこのソフトの使い方を説明している所も有り、頑張っています。
    先にお礼だけ言いに来ました。今日はありがとうございました。

    返信削除
    返信
    1. どのあたりが上手くいってないのでしょうか?
      分かる範囲ならアドバイスできるかもしれません。
      bCNC以外の他のソフトも試してみるといいと思います。他のソフトでも上手くいかないのなら、ソフトの問題というよりも、回路や基板のほうの問題かもしれません。
      このブログで制作したCNCマシンも最初は動きませんでした。いろいろチェックしてみると、CNCシールド上のリミットスイッチ端子のノイズのために、ソフトが自動的に運転停止させていたようです。端子にコンデンサーをつけて、ノイズ対策したらようやく動くようになりました。そのときの内容は以下に書いてあります。
      http://cnc-selfbuild.blogspot.jp/2016/05/cnc.html

      削除
    2. ありがとうございます。翻訳ソフトはやっと理解できました。
      自分で翻訳するんですね。オートで翻訳されると思っていました。
      私はbCNCのほかにGRBLcontlloreを使っています。
      小型のCNCなのですが、開始地点の決め方がわかりません。
      理想としては、Gコードを送ったときにCNCの原点を見つけて、加工開始地点まで移動して切削してほしいのです。
      そのためにリミットスイッチも必要なのじゃないかと思っているのですが無反応のようです。基盤はAuduinoに互換したものにCNCシールドをつけたものです。

      削除
    3. とりあえず、リミットスイッチなしでも動かすことはできます。前に書いたようにリミットスイッチのノイズのせいでオートロックかかってしまうこともあるので、まずはリミットスイッチなしで動くかどうか確認したほうがいいかもしれません。

      CNCマシンと接続し($Xでまずロック解除してから)、ソフト上(bCNCなど)ではそこがマシン原点(MPos)0,0,0になっているかと思います。
      もしホーミングサイクル($H)を行えば、設定した右奥上がマシン原点になりますが、ホーミングサイクルを行わなくても、そのままその位置を原点として動かすことはできます。なので、リミットスイッチがない状態でも動かすことは可能です。この場合、以下の3つを一旦解除しておくといいと思います。
      $20=0 (ソフト上でのリミット設定)
      $21=0 (リミットスイッチによるリミット設定)
      $22=0 (ホーミングサイクル設定)
      こうすれば、一旦リミットスイッチによるオートロックからは邪魔されなくなるはずです。

      もうひとつの座標としてWPos(作業座標)があります。CNCマシンと接続したときに、WPosが0,0,0になっていない場合は、加工する材料の位置に合わせて、以下のようにWPos0,0,0にしておくといいと思います。
      bCNCなら、WPosとMPosの座標が表示されている下のほうにX=0、Y=0、Z=0のボタンがあります。それを押せば、現在地が作業原点WPos0,0,0に設定されます。

      ためしに、
      X10
      をコマンド入力してX軸が10mmの位置(WPos座標上のXが10mmの位置)に移動するでしょうか?

      位置に関しては、絶対座標(G90)と相対座標(G91)があります。
      デフォルトではおそらく絶対座標(G90)になっていると思うので、正確には
      G90 X10
      と入力することで、X座標10mmの位置に移動するということになります。
      G90 X0 Y0
      を入力すれば、WPos0,0(作業原点)に戻ることになります。
      bCNCでは、ジョグボタン(十字ボタン)の真ん中を押せば、WPos0,0,0(作業原点)に戻るはずです。
      逆に、相対座標(G91)を使うと、
      G91 X10
      と入力すれば、現在地からX軸に10mm移動する(10mm増加させる)ことになります。

      削除
    4. 了解しました。今日中にテストだけは終わらせます。
      (絶対、翻訳項目の多さで先にCNCで遊びたいわけではない…)

      削除
    5. grblの最初の設定については、以下に書いてあります。
      http://cnc-selfbuild.blogspot.jp/2016/04/cnc_29.html
      ここでは、Universal-G-Code-Senderを使っています。JavaベースなのでWin/Macどちらでも動くはずです。シンプルなので使いやすいと思います。bCNCのようにPythonなどをインストールする必要もないので、すぐに試すことができます。
      設定に関しては、$$を入力すればgrbl内の設定が出てきます。たしかデフォルトでも(特に設定しなくても)とりあえずX10など入力して動作確認することができるはずです。
      ここで、なんらかのエラーがでるようであれば、再度Arduinoにgrblをアップロードし直すなどして一度デフォルト値でやってみるといいと思います。
      GRBLcontrollerは開発もかなり前にストップしているようだし、Universal-G-Code-Senderのほうがシンプルで問題も起きにくいと思います。Universal-G-Code-Senderで動作確認できたあとに、もっと便利なbCNCなどほかのソフトで試してみてはどうでしょうか。

      削除
    6. universal-G-Code-Senderのインストールができないでつまずいてしまいました。
      Windowsでインストールしたいのですが、startやUniversalGcodeSender.が出ません。
      もしかしたらインストーラーに問題が有るのでしょうか・・・

      削除
    7. https://github.com/winder/Universal-G-Code-Sender
      このページの緑のボタン(clone or downloads)ではなく、もう少し下のほうにあるDownloadsの欄のStable buildsにある1.0.9、1.0.8、1.0.7、1.0.6のどれかをクリックしてダウンロードしてください。PC内のJavaのバージョンによって、1.0.9〜1.0.6のうちどれかを選ぶようになっています。
      Javaのバージョンを知るには、以下に書いてあります。
      https://www.java.com/ja/download/help/version_manual.xml

      JavaのバージョンにあわせてダウンロードしたUniversalGcodeSenderのzipファイルを解凍すればフォルダが出来上がります。そのフォルダ内にUniversalGcodeSender.jarファイルがあるはずです。それをクリックすれば開くと思います。
      Wikiページは英語ですが、きちんと読めば特に問題なく使えると思います。

      削除
    8. すみませんできました。JABAが勝手に入ってて、勝手に最新になるものだと思っていました。ありがとうございます。これからは気をつけます。

      削除
  3. 今やっと絶対座標、相対座標の所までできる様になりました。
    難しくてこんなに時間がかかってしまいました。
    あまりに時間がかかったので嘘っぽいですね。本当にできる様になれるかな・・・

    返信削除
    返信
    1. Gコード(G90 X10など)を手入力して動いたということでしょうか?

      削除
    2. できました。ただ入力するだけなのですが、それだと中々つながらなかったようです。手入力が苦手です。(ほかで聞いたことですが、GRBLコントローラーの設定も手入力だと知りました。それぞれのソフトに対して平行してなれてきています。)

      削除
    3. 手入力は面倒ですが、設定やGコードをひとつひとつ理解していくにはいい勉強になると思います。たまに、Gコードを部分的に修正する必要がある場合もあるので、やはりGコードや設定内容が読めるようになっておいたほうがいいと思います。動かすまでも大変ですが、動くようになってからもエラー発生や微妙な設定変更などもあるので、対処できるようになっておいたほうがいいと思います。
      最終的には、InkscapeなどでGコードを作成して、そのファイルを読み込ませれば、自動的に作業原点からヘッドが移動して、加工し終わったらまた原点に自動的に戻ってきます。
      http://cnc-selfbuild.blogspot.jp/2016/04/cnc_29.html
      あとは、このページに書いてあるような設定をしてみるといいと思います。
      XYZ軸の動く向きの設定、step/mmの設定などです。
      とりあえず、リミットスイッチ無しで動作確認してみてください。
      上記ページに書いてあるように、円などの図形を描かせてみて、ちゃんと寸法通りに描けているかチェックしてみるといいと思います。
      特に問題なければ、あとはInkscape+gcodetoolsなどの使い方を覚えて、Gコードのファイルを作成し、それをbCNCやUniversalGcodeSenderなどに読み込ませれば自動で動くはずです。
      この時点でも、リミットスイッチなしで大丈夫です。前に書いたように、リミットスイッチのノイズのせいで動かないこともあるので、何が原因で動かないか分からなくならないように、リミットスイッチはとりあえず保留でいいと思います。動くようになってから、リミットスイッチをとりつけたほうがいいと思います。

      削除
    4. 現在GRBLcontrollerにもどって進めています。
      mirror nerrorさまのおっしゃる通りリミットスイッチ使用設定で稼働させた所
      (error:Alarm lock)の表示が出て動きませんでした。おそらくノイズだと思います。
      事前に紹介されていた抵抗をとテスト用にCNCシールド3.0を買い足していたのでこれに半田付けさせて見ようと思います。

      NCデータをFusion360で作成し、無事動きは出来たのですが、実際に物を削っていないので正しく出来ているか確かめられないのと機会が小さいので範囲外に出て閉まっています。時々端まで行ってステップモーターから異音が出てしまいました。(ステップモーターって壊れますか?)

      削除
    5. リミットスイッチ端子のノイズについては、以下に書いてます。
      http://cnc-selfbuild.blogspot.jp/2016/05/cnc.html
      コンデンサーをつければおそらく解消されると思います。

      加工範囲外にでるようでしたら、とりあえずリミットスイッチをつける前に、$20=1にしてソフトリミットをオンにしてみるといいと思います。その場合、$130、$131、$132に作業エリアの範囲を設定しておく必要があります。

      作業エリアはどのくらいでしょうか?数センチくらいの余白をとっておいたほうがいいと思います。それ以上進めないのにモーターが駆動していると、過電流が発生してモーターが焼き切れたりすることもあるかもしれません。ドライバのほうで保護回路が働いたり、電流制限していればすぐには壊れないかもしれませんが、当然ドライバにもモーターにもよくないはずです。
      ドライバには保護回路はついているでしょうか?あるいは、電流制限の設定は済んでいるでしょうか?A4988やDRV8825の設定なら以下に書いてあります。
      http://cnc-selfbuild.blogspot.jp/2016/04/cnccncdrv8825a4988.html

      モーター内部は、磁力で駆動させているため歯車などが破損したりすることはないと思いますが、送り機構には歯車や送りネジがあるので、その部分が歪んだり壊れたりすると、バックラッシュなど発生してしまうかもしれません。

      実際に材料を削るときにもヘッドの進行速度が思ったよりも速すぎて、エンドミルが折れたり、モーターや構造そのものに負荷をかけたりと、いろいろトラブルはつきものです。運転中に異音や異臭が発生したら、いつでもメインスイッチをオフにできるようにスタンバイしておいたほうがいいと思います。

      削除
    6. ノイズの話でもお世話になりますm(_ _)m
      このブログの記事はほとんど目を通しながら、あまり関係無さそうと思った所をちょいちょい飛ばしていました。電流制限の設定という聞き慣れない新しい壁のような存在に気付きました。
      またジックリ読んでみます。僕が組み立て済みを買わなかったのもシステムを理解し、今後に役立てる為と簡単に覚悟したから諦めるわけにはいかないのです。

      CNCで一番高いのはステッピングモーターなのは確かなのでもし保護するならドライバーよりモーターを選びたいですね。モーター負荷だけは気をつけます。
      メインスイッチの事なのですが、過去に3Dプリンターを作った時は電源コードにスイッチ足して何か有れば切っていました。ですが、早い段階でドライバーがおかしくなり今は動いていません。3Dプリンターのドライバーが高いからです。のちのちarduinoで復活させようと思ってるのですが、緊急停止はどのように止めるのが好ましいのでしょうか。

      (可動領域は130x90x30です。加工領域は120x70x30です。)

      削除
    7. 以下のページに、非常停止ボタンやSparkfunで売っているPowerSwitch Tail Ⅱという非常停止用のブレーカーがあります。
      http://cnc-selfbuild.blogspot.jp/2016/05/cnc_8.html
      このページに書いてあるように、ACブレーカーとデジタルブレーカーという二種類あります。
      以下のShapeOko Wikiに非常停止についてのっているので読んでみるといいと思います。
      http://www.shapeoko.com/wiki/index.php/Emergency_Stop
      ちなみに、CNCについてはShapeOko Wikiを見るとだいたいのことが書いてあります。かなり参考になりました。何か問題等ある場合、ここで情報を探すといいかもしれません。

      その後、Bluetoothで無線化したついでに非常停止の回路も改良しました。それについては以下です。
      http://cnc-selfbuild.blogspot.jp/2016/05/cncbluetooth_17.html

      削除

人気の投稿