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

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



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


ラベル Inkscape の投稿を表示しています。 すべての投稿を表示
ラベル Inkscape の投稿を表示しています。 すべての投稿を表示

2016年5月5日木曜日

CNCマシン:レーザー焦点距離計測実験

レーザーのほうの準備が整ったので早速実験開始です。今回はレーザー切断するための、対象との焦点距離を計測します。レーザーは5.5W 450nmのブルーレーザーです(約17000円でAliExpressより入手)。
50mmの線を5mm間隔で20本引き、一本引くことにZ軸を5mmずつあげていくという実験です。Inkscape+Laser Tool Plug-inで5本くらい線を引いて、Gコードとして吐き出したものをTextEditで開いて、Z軸が5mmずつ上がる部分を書き足しました(以下6行目:G X10 Y60 Z10のZ10が5ずつ増えていき、Xも5ずつ増える)。最初の3行以降、9行ずつ一本の線を引く内容になってます。

M05 S0 (レーザー停止、出力0)
G90 (絶対座標設定)
G21 (単位mm設定)

G1 F600 (フィード600mm/min速度設定)
G1  X10 Y60 Z10 (座標X=10,Y=60,Z=10へ移動)
G4 P0 (待ち時間0)
M03 S1000 (スピンドル/レーザーON、出力100%)
G4 P0 (待ち時間0)
G1 F400.000000 (フィード400mm/min速度設定)
G1  X10 Y10 Z10 (座標X=10,Y=10,Z=10へ移動)
G4 P0 (待ち時間0)
M05 S0  (レーザー停止、出力0)

G1 F600
G1  X15 Y60 Z15
G4 P0
M03 S1000
G4 P0
G1 F400.000000
G1  X15 Y10 Z15
G4 P0
M05 S0

・(中略)

G1 F600
G1  X105 Y60 Z105
G4 P0
M03 S1000
G4 P0
G1 F400.000000
G1  X105 Y10 Z105
G4 P0
M05 S0

G1 F600 (フィード600mm/min速度設定)
G1 X0 Y0 (原点へ移動)
M18 (プログラム終了) M30(プログラム終了)

こんな感じのGコードです。合計20本の線。M03 S1000でレーザー出力最大です。
追記:
最後の行にある「M18」は、grblではエラーがでるようです。M30に書き換えたほうがよさそうです。これについてはこちらへ


シナランバーコア合板に照射します。先端のレンズチューブからの距離10mmから100mmまでを計測。
bCNCで見るとこんな感じ。階段のように上がって行く感じです。以下(なんか途中からちょっとずれてるけど大丈夫でしょう。あとで確認すると一段ずれていたようです)。

ということで、読み込ませたGコードをスタート。


実験開始です。レーザー防護ゴーグルをしていたので、どんな感じの写真になっているかはそのときは分かりません。危険な光がでてます。

いちおう順調。危険なので、あまり見てません。単純な線なので面白くはないです。
数分かかって終了です。

ボケボケですが、よくみると50(距離50mm)が、やたらとシャープな線になっています。50を中心として線が太くなって、さらには薄くなっているのが分かります。これはどうみても焦点距離は50mmという感じ。予想は当たりました(このレーザーが届いたときに試しに合板に照射してみたとき定規ではかったら、大体50mm前後がよく燃えてたので)。49mmか51mmか?というほど厳密にやらなくてもよさそうです。やってもいいのですが(その実験内容はこちら)、以下のもうひとつの焦点調節もあります。

実はこの実験をするまえに、レーザーのレンズ部分を多少調整しておきました。
先端のアルミチューブのなかにレンズがはいっています。これを回すと前後に動いて焦点調節できるのですが、前回投稿した内容のように、かなりガタがあり、いちおう内部にはバックラッシュ対策としてスプリングが入っていましたが、それでもなんかゆるゆるな感じです。なのでプラスチック板を間にはさんでぐらつかないようにしました。前回手動で焦点を合わせたときだいたい2mmくらい出っ張る感じだったので、このプラスチックの板の分だけ前に出ているという感じです。

レンズチューブを外すとこんな感じ。いちおうプラスチックの板はレンズチューブのネジ山(M9ピッチ0.5mm)でタッピングしてあるので、レンズチューブを締めることができます。焦点の合わせ方はけっこう適当で、回してみて行き過ぎたら戻るという繰り返しで決めています。照射してみて、見た目できるだけ細い光点になるようにしただけです。
こっちのレーザー本体の焦点もいちおう大体合わせてから、照射する物体との距離を合わせる感じになります。
今回の実験で大体は分かったので、試しにフェルトも切ってみることに。レーザー先端からフェルトまでの距離は50mmにしておきました(実験結果から)。

先ほどの距離実験の合板の上にフェルトをのせて切ったのですが、F300 S1000(5.5W 100%)で切ってしまったので出力が強すぎたようです。下の合板に貫通して普通に切れ目が入っています。

F300をF600くらいにもっと速くするか、レーザーの出力を50%くらいにしてもフェルトなら切れそうです(強すぎると焦げてしまう)。フェルトは木材と違ってあっさりきれてしまいます。とりあえず、これでかなり複雑な模様のフェルト切断も可能になったので(当初の目標)、さっそく使っていきたいと思います。

ということで今回の実験は終了。あとは切断する材料に対するちょうどいい出力値やスピードを見つけて行く感じでしょうか。
それとレーザ用のスイッチを手元につけないといけません。

前々回のトリマを使っての合板の切断と今回のレーザー切断が一応確認できたので一安心です。

関連:
レーザー焦点距離計測実験その2(より詳細な実験)

2016年5月4日水曜日

CNCマシン:レーザーカッターの準備/Inkscape Laser Tool Plug-in

前回、シナ合板をトリマで切断できたので、次はいよいよレーザーです。
レーザーの配線はZ軸裏までは届いているので、あとはドライバをつなげれば使えないこともないのですが、まだレーザーモジュール本体をZ軸に固定するブラケットをつくっていません。適当に現在取り付けてあるルーターマウントに挟み込んでしまえばいいのかもしれませんが、焦点を合わせる実験もしたいのである程度きちんと固定しようかと思っています。

焦点を探すためのGコードも用意しなければいけません。いまのところ50mmの線を20本くらい並べて、一本ごとにZ軸を2mm上げながらレーザーを照射して、どの距離がベストなのか調べるGコードをつくろうとしています。


Inkscape Laser Tool Plug-in
調べているあいだに、InkscapeのLaser用のExtension(Laser Tool Plug-in)があることが分かったので、早速ダウンロードしました。

使い方はシンプル。
Inkscapeで図形を描き(パス化しておく:Path>Object to Path)、そしてExtensions>Generate Laser Gcode>J Tech Photonics Laser Tool...を選ぶと、上画像の設定画面がでる。
GコードのM3でON、M5でOFF、あとはスピードや出力値、何回パスで切断するなど設定し、DirectoryとFilenameを入力して(入力しないとエラーになる)Applyを押せば、Gコードファイルが生成されます。あとはこのGコードファイルをG Code Senderで読み込んで実行するだけ。
レーザーの出力設定は、Laser PowerS#の欄に、grbl0.9なら1000で出力100%、500で50%、0で0%。生成されたGコードでは、M3 S1000などとなっています。

たぶん個人的にはEngravingは使わないと思います。なので簡単な設定で使えそうです。


レーザー防護アクリル
このサイトでは、レーザー防護用のアクリル板(24x12インチ:$24.99)も売っているようで、他のところと比べると結構安い。しかし送料が高い($67.61)。送料込みで1万円くらいになってしまうけど、それでも他より安いかも。もう少し探してみます。
レーザーは怖いので、いずれレーザーモジュールの真下あたりにつけたいと思ってます。

レーザーはレーザーでルーターやトリマとも違うし、もう少し調べたりしないといけません。


レーザーモジュールの取り付け
どのようにレーザーモジュールをZ軸に固定しようか悩みましたが、以下のようなブラケットをLアングルでつくってみました。

Lアングルは25x25x148mmです。レーザーモジュール(5.5W 450nm)はM3スクリュー2個でとめてあります。


このLアングルをルーターマウントの隙間にはさんで固定することにしました。ルーターマウントを外してから取り付けるのは面倒なので、そのままどこかに固定できないかと思ってこうしました。レーザーの場合は力が加わらないので、動かないように固定できれば充分なはずです。
まだ、焦点距離の実験をしていないので、一応レーザー先端と台座表面までの距離が0mmまで下げられるようにしてあります。焦点距離が分かれば、多少上のほうにずらすかもしれません。


まだ配線少し残っています。上画像のものは付属のレーザー用ドライバです。左側にLD+-端子、FAN(DC12V)+-端子、右側にTTL+-端子、電源(DC12V)+-端子の合計8端子あります。このドライバをレーザーモジュールの近く(Z軸上)に持って行くか、それともCNCシールドなどがあるコントロールボックスに持ってくるかも悩みましたが、とりあえずコントロールボックスに置いて、左側のLD+-、FAN+-端子をZ軸までつなげる感じです。Z軸までは配線済みなので、あとはコネクター端子をつくるだけです。
CNCシールドV3.5のSpnEn(pwm)端子とレーザードライバのTTLをつないで、Gコードで
M03 S10000
を入力すればレーザー最大出力となるはずです。grbl0.9ではS0〜S10000まで出力を可変できるようですリンク先ページ真ん中あたりにレーザーのPWMのことが書いてあります)。
追記:
bCNCで試してみましたが(grbl0.9j)、
M03 S500
を入力するとCNCシールド上のSpnEn(pwm)端子から2.5Vが出ているということは、
S1000で出力100%、
S500で50%、
S100で10%、
S0(もしくはM5)で出力ゼロ
ということです。S1000以上いれると5Vのまま、つまり100%。


焦点距離計測方法
それからレーザーの焦点距離計測実験のGコードも書かないといけません。Inkscape Laser Plug-inで50mmの線を5mm間隔で10本引くというのをGコード出力してみましたが、以下のような感じになっていました。単純なGコードなので見ると分かります。

M05 S0
G90
G21

G1 F600
G1  X56.8936 Y61.0874
G4 P0 
M03 S10000
G4 P0
G1 F400.000000
G1  X56.8936 Y11.0874
G4 P0 
M05 S0
 ・
 ・(繰り返し)
 ・
G1 F600
G1  X51.8936 Y61.0874
G4 P0 
M03 S10000
G4 P0
G1 F400.000000
G1  X51.8936 Y11.0874
G4 P0 
M05 S0

G1 F600
G1 X0 Y0
M30 (この部分、オリジナルのコードはM18ですが、grblだとエラーになるのでM30に変更)

基本的には、最初と最後の部分を除くと、一本線を引くごとにX座標が5mmずつ減っているだけです。それを10回繰り返しているだけ。ここにはZ軸のコマンドが入っていないので(Z軸は固定という設定だったので)、一本引くごとに5mmずつ上げていくとかすればいいと思います。

なんとなく焦点距離は50mm前後だと思うのですが、材料表面から10mmずつ100mmまであげていき、その結果から焦点に近い距離を1mm単位で動くGコードに書き直して、2段階くらいでやってみようと思ってます。
ただ、問題はレーザーモジュール先端についているレンズも調整可能なので、中のレーザーダイオードからレンズまでの距離も合わせる必要があるのだとすれば、少し面倒です。

実験の結果は次の投稿へ

追記:
その後、配線が終わりレーザーがつくかどうか試してみました。
ひとつ問題は、bCNCでシリアル通信でつなぐときにレーザーが一瞬光ってしまうということ。すぐに出力がゼロになるのですが、しかし出力ゼロにしても、よく見るとわずかながらレーザーが出ています。ちなみにレーザーの元電源を切ってしまうと、Hard limitが働いてエラーがでます。なので、元電源というよりレーザーだけの配線の途中にスイッチをいれたほうがよさそう。

それと焦点調整については、レーザーの出力をかなり弱くして(1/100くらい)、とりあえず手でレーザーモジュールの調整可能なレンズを動かしてみました。
どうやら、レンズをきつくしめた位置だと、ピントがぼけてしまうようです。けっこう緩めて、2mmくらい飛びでるくらいがちょうどよさそうです。ただ、ネジ山があまりタイトではないので、ゆるめると少しぐらつきます。薄いナットで動かないように固定できるといいのですが、おそらくレンズチューブのネジ山はM9/ピッチ0.5mmらしく、なかなかないタイプ。

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についてはこちらへ。

人気の投稿