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

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



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


ラベル オフセット の投稿を表示しています。 すべての投稿を表示
ラベル オフセット の投稿を表示しています。 すべての投稿を表示

2016年5月11日水曜日

CNCマシン:JscutでオフセットカットやポケットカットのG Code生成

grbl wikiのUsing GrblページにのっているGRBLwebというG Code Senderを見てみると、ブラウザ上で作業できるようなのですが、ネットワークに接続されたRaspberry PIをホストとしてCNCマシンの遠隔操作も可能なので便利そうです。CNCマシン用の小型コンピュータを設置するような感じでしょうか。そうすればわざわざMacBookをUSB接続せずに使えるので、5000円前後で可能ならいいかもしれません。でも、それならArduinoじゃなくてRaspberry PIで直接動かした方がよさそう。

Jscut:
同時にGRBLweb用に、JscutというsvgファイルをG Codeに変換してくれるweb上のソフトもあるようです。こちらは、http://jscut.org/jscut.htmlにアクセスすればすぐに使えるので試してみました。

こんな画面(ブラウザ上)です。真ん中上のほうにある「Open SVG」で以前合板でつくったパーツのデータ(Inkscapeで描画したsvgファイル)を開いてみました。右上の水色の部分に手順がでてくるので、図形を選択しながら左右のパラメータ(エンドミルの直径、フィード、材料の厚みなど)を設定します。
設定が終われば、左上の「Operations」内にどんな加工をしたいかを選ぶところがあります。Pocket、Inside、Outside、Engrave、VPocketの5種類あるので、大体の加工ができそうです。
今回の図形では、オフセットで3mm外側のラインで加工したいので、「Outside」を選択。最終的に合計深さ3mm削るなら「3 Deep」を入力。
その右となりにある「Generate」をクリックするとG Codeが生成されます。

図形画面上の「Simulate GCODE」を選択すれば、どんな感じに削るか見ることが出来ます。「Save GCODE」をクリックし、保存名や保存先を指定して.gcodeファイルとして保存できます。そしてbCNCなどで.gcodeファイルを読みこませて加工という手順。

追記:
尚、「Tabs」(タブ:部品が母材から完全に切り離れないようにつなぎ目をつける機能)に関しては、こちらの作業例にかいてあります。

今回生成されたG Codeだと問題なさそうです。これを使えば以前困っていたオフセットカットもすぐにできそうです。

Raspberry Piがあれば、GRBLwebとJscutの両方をブラウザ上でできるし、カメラも設置しておけば切削状況も確認しながら遠隔操作可能となるので、かなり便利そうです。
レーザーカットするときなどは、カメラ越しに見ればいいので安全対策にもいいかもしれません。

あと、WebベースのCNCソフトなら、cheton/cncも気になる。調べれば調べるほど、いろいろでてくる。開発が終わっていそうなものもあれば、いまでも頻繁に更新されているものとか。基本的な操作をするならどれでもよさそう。別に遠隔操作などしなくてもいいけど、オフセットカットパスを自動生成してくれたり、2.5Dだけでなく3D切削/Engravingにも対応しているようなG Code Generatorで便利そうなのが欲しい感じです。


bCNCにおける加工原点の移動方法:
Gコードは生成したけれども、切削作業前に、やっぱり加工原点を変更したいというときがあります(材料が思ったより小さかったり、微妙に形状に合ってなかったなど)。以下は、G Code SenderであるbCNCで加工原点を編集する方法です。

 bCNCのメニューバーのFileタブを選択し、フォルダアイコンをクリックすれば、ファイル選択画面が出て、PC内に保存されているJscutなどで生成したGコードのファイルを読み込むことができます。
今回の図面は部品の下中央を加工原点として、Inkscapeで描きました。左右対称ということもあったので。この原点をbCNC上でずらそうと思います。

 メニューバーのEditorタブに切り替えます。そうすると上の画面のようになります。ここで、Originボタンを押して、加工原点にしたい位置(今回の場合、部品の左上→右上の間違い)をクリックします。

そうすると瞬時に加工原点は部品の右上に移動します。以上です。

Moveボタンで図形移動:
また、他のやり方として、Originボタンの左にあるMoveボタンで部品の図形ごと移動してしまうという方法。
 まずMoveボタンを押します。移動したい図形全体をマウスで囲んで選びます(クリックなら部分的なパスを選ぶことも出来ます)。あとはドラッグして移動します(今回の場合、やや左下へドラッグ)。失敗したらUndo。

 先ほどは部品の右角に加工原点がありましたが、ドラッグしてここまでずれました。

あとは、視点を切り替えてみて(赤丸で囲んだタブで選択:ISO1など)、大丈夫か確認します。
真上や真横から見た視点にも変えられるので、X-Y平面上での移動ならX-Yタブ、上下方向で移動したいならX-Zなどを選んでパスを移動させます。この加工パスの場合、3回で切断するパスなのでそれぞれ同じパスが3層になっています。一つの層だけのパスを選びたい場合は、X-Y平面の視点だと選びにくいので、このようなISO1や横から見たX-Zなどの視点にするとやりやすくなります。
このほか、ある程度のパスの編集もこのEditorタブの画面内で可能です。すべては試してないので分かりませんが、いろいろいじってみるといいと思います。


2016年5月3日火曜日

CNCマシン:初カットにチャレンジ

昨日、カットの実験をやろうと思ってましたが、オフセット(刃の半径分ずらす)のパスのやり方がよくわからず、そのかわりProbeの実験をしていました。この際、Inkscapeのオフセット機能でもいいのですが。
せっかく材料を切るなら、以前つくりかけで中断していたシナ合板のパーツ(CNCマシンとは関係ないパーツ)をつくろうと思って、Inkscapeで図面を描こうとしていたところで時間切れ。以前のパーツはジグソーで切っていたのですが、だんだん面倒になり、そして今回CNCマシンをつくるにあたって、しばらく放置してあったものです。ようやくCNCマシンで切断できる準備が整ったので、以前のシナ合板パーツ制作の続きをしようということです。

Inkscapeでの作業:
・とりあえず、mm単位に設定したInkscapeでパーツの図面描画。大きさは210x100mmくらい。
・Inkscape内のオフセット機能でエンドミルの半径3mm分外側の線を描く(パス)。
・パーツの形と今回使う材料(端材)の形から、中央下を基準点に設定して製図した図形を配置。
・それをExtensionsのgcodetoolsでG-Codeに吐き出す。

CNCマシンの設定(bCNC使用):
・トリマに集塵機取り付け(以前つくった集塵用パーツ)。
・電源は、集塵機、トリマ、CNCマシンモーター用電源、それとパソコンとArduinoをUSB接続。
・材料:シナ合板12mm厚の配置(ビスで直に固定)。
・ホーミングでマシン原点の設定。
・作業エリア中央あたりに配置した材料へ移動しXY軸を微調整して材料に大体あわせる
・仮にWPos(0,0,0)に設定
・Probeを使ってZ軸ゼロ位置設定

準備OK(上画像)。以前つくった集塵パーツ、蛇腹ホースも黒いマジックテープで固定(使えるかどうか?ないよりはいいはず)。

bCNCの画面は以下のような感じ。

今回は12mm厚のシナ合板を3回パス(4mmずつ)で切る設定。材料として使っている端材がV字型しているので、原点を合わせやすいように中央下が図面上でも原点になってます。

カット開始:
準備は整ったので(ここまででもかなり時間かかる)、Startボタンをクリック(その前に集塵機とトリマのスイッチもON)。
思っていたより速く進むので、bCNC上のFeed Overrideを85%まで下げました(追記:この時点ではGrbl0.9、まだオーバーライド機能には未対応だったので意味なし)。それとトリマの回転数は50%くらいに下げていたのを80%くらいまであげました。トリマは下に排気するので、細いグレーの水道管では吸い取りきれません。しかも周囲についている透明塩ビのスカートと台との間にも隙間があります。ただ、空気中に細かい塵が舞うほどではありません。いちおうそれなりに機能はしてます。
3回目のパス。いちおう順調。Feedやトリマの回転速度もちょうどよさそう。焦げたりしていません。切りくずは周囲にたまっていますが、宙に舞うような細かい塵はあいかわらず吸い取ってくれてます。


カット終了:
カット直後の材料の状態(削りカスは集塵機で吸い取り済み)。バリや底面に薄皮が残っています。薄皮が少し残っているくらいがちょうどよさそうです。部品が動かないし、台を削らないので(今回、作業台は無傷でした)。
さて、台から材料を外して、どのくらいきれいか見てみます。
カッターで薄皮を切ってサンドペーパーでバリをとると、かなりきれい。寸法もあっています。
合格という感じです。

エッジもかなりシャープにでています(もっとひどいかと予想していました)。4枚刃のエンドミルですが、けっこう木材でも大丈夫なんですね。

上が今回CNCマシンで切った部品、下が数ヶ月前にジグソーで切った部品。見た目はあまりかわらないかも。CNCマシンだと凹みが丸くなってしまうのは仕方ないけど、あとからヤスリかノミなどで調整すればいい。

感想:
以前ジグソーで切ったほうも(上画像の下の部品)、丁寧に切ったのできれいなほうだと思うのですが(エッジにバリなどでないように一旦カッターで切り込みを入れている)、やはりそれだけ面倒。しかし時間的にはあまりかわらないかも。CNCマシンだと準備やら設定にもけっこう時間かかるので(慣れれば早いのかもしれないけれど)、ジグソーとクランプを駆使して切ったほうが圧倒的に早いはず。騒音や塵の量も少なくてすむし。
でも、何個も切るとなると体力が尽きたり飽きが来て、そういうときにはCNCマシンのほうがいい。使い分けかもしれないけれど、やはりCNCマシンだと疲れないというのが一番の利点かな。音がうるさいのが問題。そもそもトリマも集塵機もうるさい。

最後にCNCマシンで切ったパーツの凹み部分の丸みをヤスリで削ってはめ込むとこんな感じ。CNCマシンカットと手仕事との合体。やはりCNCマシンだとトラブルさえなければ、精確に形を切ってくれるからいいかもしれない。
ということで、今回のCNCマシン初カットは無事終了。使えるということが分かって一安心。
トリマのノイズもあるのかと思ってましたが、特に影響ありませんでした。
つぎはレーザーの実験をしなけれないけません。

2016年5月2日月曜日

CNCマシン:スピンドル(トリマ)ケーブル+オフセットカット

前回ホーミングも出来るようになったので、そろそろ試し切りをしてみたいと思ってます。レーザーはまだ後回しになっていますが、ルーター(トリマ)はすぐにでも使えそうです。マウントもつけてあるし、外付けスピードコントローラーもあります。ただそのままトリマを付けるとケーブルが垂れてしまうので少し工夫を加えてみました。

Φ1mmくらいのピアノ線が余っていたので、それをトリマ本体の電源コードの根元から50cmほど結束バンドで固定してみました。ある程度電源コードが自立するような感じで、引っ張られればしなやかに曲がる感じです。

ピアノ線の下端はC字型に折り曲げてケーブルにはめ込む感じです。あとは必要に応じて結束バンドで締めるだけ。トリマのノイズも拾うようなので、他のケーブルといっしょに沿わせないほうがいいらしく、CNCマシン本体とは別に(電源も別のところから)することにしました。どうせ取り外したりするし、GコードのほうではON/OFFや速度調節もしないので。

ケーブル先端のほうはダブルクリップでX軸に固定しているだけです。この先にスピードコントローラがついて、それから AC100Vにつながります。現在トリマには径6mmハイス4枚刃スクエアエンドのエンドミルがついています。このままアルミもいけるかもしれませんが、とりあえずこのエンドミルでどのくらいきれいに合板が切れるか試してみたいと思ってます。

オフセットカットのパスの作成方法がわからない
追記:結果的にオフセットパスを作成するには、Jscutというソフトで行うか、Inkscapeのオフカット(このページ下のほう)で新たにパスを作成するほうがよさそうです。

トリマのほうは準備できたのですが、同時に刃のオフセット(径6mmの刃なので半径3mm分外側を動くパス)を含んだ切断用パスをどうするのか?というのを調べていました。
以前InkscapeのExtensionであるgcodetoolsをちょっといじってみたのですが、オフセットの設定がよく分からない。すぐに出来るとのかと思っていたら、gcodetoolsのForumには以下の用に書いてありました(かなり古い投稿だけど)、

29/ноя(nov)/2011
Tool's diameter was used not for offseting, but for filling the area to make pocketing. Offset itself is a really hard procedure, and it does not work properly on every path. 

There are 3 options now how can you do the offset:
  1. Use inkspape's offsets:
    1. configure the steps in Properties dialog (Ctrl+Shift+P) and use Ctrl+( or Ctrl+), could be buggish, more or less depending on the Inkscape's version.
    2. use dynamic offset and set exact value in XML editor (select object, Ctrl+Shift+X, change offset diameter to needed value in px), could have buggs, not to handy.
    3. assign stroke width equal to 2 x needed offset radius, then Ctrl+Alt+C to Convert Stroke to path, Ctrl+Shift+K to break path appart, and finally delete inside path, not to handy again.
  2. Use one of G41 or G42 Gcodes to compensate tool's radius, it's a good solution, giving very clean path, but some times it can give an error if the tool can not reach every path piece. For smaller radiuses this error can appear rarely.
  3. Use Gcodetools offset function - it has more bugs that Inkscape's offset so not reccomended

PS in the dev version there's a function for plasma cutters that can add entering/exiting paths and special corner processing to make cut cleaner, but I do not know if it is actually needed in laser cutting. I'm only building my first laser cutting machine.

これによると、
・Inkscapeのオフセット描画を使う(バージョンによるけどバグがあるしやり方が不便)
・G-codeのG41かG42のツール半径補正機能を使う(かなりいいけど、小径の部分でエラーでる)
・gcodetoolsのオフセット機能を使う(Inkscapeのオフセットよりバグ多い)
とある。

というか、gcodetoolsの最新バージョンは1.7となっているけど(この英語フォーラムの一番上の投稿にある)、

これ↑は古いのかな?Shapeoko wikiのInkscapeチュートリアルもたぶんこれを使っているのだろうけど、このバージョンにはオフセット機能がついていないような?
調べてみると、devバージョン(開発中)もあるみたい。WindowsとLinux版しかないけど、MacはLinux版で大丈夫なはず。


gcodetool-dev版のインストール(dev版よりstable版のほうがいいかも)
まず「Download ZIP」から「gcodetools-master.zip」をダウンロード。
解凍すると、「gcodetools-master」フォルダが出来て、

中にはこんな感じ↑のたくさんのファイルが入ってる。
READMEを見ると、これ全部をInkscapeのextensionsに入れてInkscapeリスタート。
それと「python create_inx.py」を実行しろと。
Macなら、まずアプリケーション内の「Inkscape.app」を右クリックして「パッケージの内容を表示」で、
Incscape.app/Resources/share/inkscape/extensions内に、「gcodetools-master」フォルダの中身全部を入れる。
そのあとターミナルを開いて、
cd /Applications/Inkscape.app/Contents/Resources/share/inkscape/extensions
をいれてリターン。
そして、
python create_inx.py
を入力してリターン。
そうすると、

こんな感じの「Done」がずらずらでてくればOKなはず。そうすると先ほどのApplications/Inkscape.app/Contents/Resources/share/inkscape/extensions内には、


こんな感じの「.inx」ファイルが出来ているはず。
あとはInkscapeを立ち上げると、


メニューバーのExtensionsには「Gcodetools-dev」というのが出来ているはず(なぜか2個あるけど下の方)。
Extensions>Gcodetools-dev>Path preparations-devを選択すると(確か最新stable版1.7にはこの項目はなかったはず)、

この画面が出て来て、「Prepare path for plasma or laser cutter」タブでオフセット設定できそうなんだけど、使い方がまだよくわからない。


Inkscapeのオフセット描画方法
仕方ないので、Inkscapeのオフセット描画を試してみることに。

まず、Edit>Preferences...>Behavior>Stepsを選ぶとこんな↑画面がでます。このなかのInset/Outset by:に3.0000mmを入力(径6mm、半径3mmの刃なので)。設定したら閉じる。
つぎに、


適当に描いた図形(パス)を選択して、Path>Outsetを選ぶと、

こんな↑感じで、一回り大きい(設定した3mm分)図形ができあがります(ちなみにわかりやすくするために、同じ図形を2個重ねて、Outsetした図形のほうは緑色の線にしてあります)。
角も丸くなっているし、これ(緑色の線のほうだけ)をgcodetoolでG Codeに変換すれば充分かも。

gcodetoolsでG Codeファイルの出力方法(stable版も同じ手順)

まず(上画像)、File>Document Propertyで単位がmmになっているかチェック。
そして、

Extensions>gcodetools-dev>Orientation points-dev(上画像)に行き、
・2-point modeを選択
・Z surface:0(材料表面の位置を0に)
・Z depth:-12mm(カットする材料の厚み、下へ行くのでマイナス)
そしてApply。


つぎに、Extensions>gcodetools-dev>Tools librariy-dev(上画像)で、
・cylinderを選ぶ(刃の形状)
そして、Applyを押す。すると、以下の緑の四角がキャンバス上にでてくる。

ここで↑、テキスト編集アイコンを使って、
・diameter 6(ツールの直径6mm)
・depth step 3(何mmずつ削るか:今回は12mm厚を3mmずつなので4回で切断)

つぎに、Extensions>gcodetools-dev>Path to Gcode-dev(以下)に行き、

・出力するファイル名と出力先ディレクトリを入れる。
・Unit:mm
・Post-processor:Round all values to 4 digits
そして、ここでApplyを押さずに、Path to Gcodeタブに移動してからApplyを押す。
これで、いちおうG-Code化されたファイルが出力されるはず。

bCNCで読み込んでカット作業
あとはbCNCなどのG-Code-Senderを起動して、出力された.ngcファイルを読み込む。

いちおう3mm分外側にオフセットしたパスがでてきて、Control画面でStartを押すと作業開始。
先ほどInkscape内のgcodetoolsで設定したDepth stepの3mmずつ計4周かけて切削するはずです。

切削中の画面。小さい赤丸がトリマ部分。よくみると線が少しガタガタしているようにも見えます。
今回は実際に合板を削っていないので、どんな仕上がりになるのかわかりません。明日にでも、実際に切ってみたいと思います。とりあえず今回はオフセットカットの手順確認ということで。

G CodeのG41とG42のCutter Compensationも気になる。grblでは、G40にCutter Radius Compensationがあります。この辺も調べてみます。
CNCマシンは大体出来たとはいえ、まだまだ実際に使えるようになるまではノウハウも含めまだまだ覚えることがありそう。

追記:
オフカットのパスを生成するならInkscapeでもいいのですが、JscutというブラウザベースのGコード生成ソフトがあるので、そのほうが楽かもしれません。Jscutについてはこちらへ。

人気の投稿