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

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



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


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

2016年5月18日水曜日

Inkscape Laser Tool Plug-inのエラー

InkscapeのExtensionである「Laser Tool Plug-in」は、レーザー加工するときには便利なのですが毎回最後のGコードでエラーがでます。工程の最後にエラーがでるようなので、作業自体には問題ないのですが、作業終了後毎回ロックがかかってしまいます。
「Laser Tool Plug-in」で簡単なGコード(画像上:20mmの円を描くGコード)を生成すると、以下のような感じ。

M05 S0

G90
G21
G1 F600
G1  X27.6603 Y17.0556
G4 P0 
M03 S500
G4 P0
G1 F400.000000
G2 X24.7314 Y9.9845 I-10. J0.
G2 X17.6603 Y7.0556 I-7.0711 J7.0711
G2 X10.5892 Y9.9845 I-0. J10.
G2 X7.6603 Y17.0556 I7.0711 J7.0711
G2 X10.5892 Y24.1266 I10. J-0.
G2 X17.6603 Y27.0556 I7.0711 J-7.0711
G2 X24.7314 Y24.1266 I-0. J-10.
G2 X27.6603 Y17.0556 I-7.0711 J-7.0711
G1  X27.6603 Y17.0556
G4 P0 
M05 S0
G1 F600
G1 X0 Y0
M18

この最後のM18がたぶんエラーの原因になっているのだと思います。
M18を調べてみると、RepRapのGコードでは、「全てのモーター停止」となっているので、このことなのかもしれません。しかしgrblでは、M18は対応してないようなのでエラーがでるのだと思います。
「プログラム終了」というMコードであれば、M30が一般的のようです。grblでもM0、M2、M30がポーズと終了になっています(このページのNice featuresの欄に書いてあります)。しかしRepRapだとM30は「SDカード上のファイルを削除する」のようです。
おそらくLaser Tool Plug-inはRepRapよりの設定なのかもしれません。

ということで、M18をM30に書き換えてから実行してみたらエラーはでませんでした。
生成されたGコードファイルをTextEditで開いて訂正してもいいし、bCNCなら以下のようにEditorで編集してもいいと思います。

それなら、Laser Tool Plug-inのファイルを開いてプログラムを書き換えればいいのかもしれないと思ってApplication/Inkscape.app/Contents/Resources/share/inkscape/extensions/laser.pyをTextEdit(行数が表示されないのでSublime Text)で開いてみました(Inkscape.appを右クリックでパッケージの内容を表示、もしくはcontrol+クリックでパッケージの内容を表示でContentsフォルダ内を見ることができます)。
そうすると、
laser.pyの91行目にM18がありますね。どうやらfooterとして挿入しているようです。おそらくこのM18をM30に書き換えればgrblでもエラーがでなくなるのではないでしょうか。

さっそくM18を上画像のようにM30に書き換えました。これでlaser.pyを保存し直して、Inkscapeで試してみます。Inkscapeを開いてLaser Tool Plug-inで簡単なGコードを生成してみます。以下。

M05 S0

G90
G21
G1 F600
G1  X58.0571 Y43.5429
G4 P0 
M03 S500
G4 P0
G1 F400.000000
G2 X52.6251 Y30.4288 I-18.546 J0.
G2 X39.5111 Y24.9968 I-13.114 J13.114
G2 X26.3971 Y30.4288 I-0. J18.546
G2 X20.9651 Y43.5429 I13.114 J13.114
G2 X22.3768 Y50.6401 I18.546 J0.
G2 X26.3971 Y56.6569 I17.1343 J-7.0973
G2 X32.4139 Y60.6772 I13.114 J-13.114
G2 X39.5111 Y62.0889 I7.0973 J-17.1343
G2 X46.6084 Y60.6772 I0. J-18.546
G2 X52.6251 Y56.6569 I-7.0973 J-17.1343
G2 X56.6454 Y50.6401 I-13.114 J-13.114
G2 X58.0571 Y43.5429 I-17.1343 J-7.0973
G1  X58.0571 Y43.5429
G4 P0 
M05 S0
G1 F600
G1 X0 Y0
M30

最後がM30になってますね。これでgrblを使っている場合はエラーがでないはずです。これでひとつ問題解決しました。よかった。


それから前にも書きましたが、Laser Tool Plug-inの上から5個目のLaser Power S#は0-256 or 0-10000となっていますが、grblだとデフォルトが0-1000なので、ここも違います。数値入力するので、ここはプログラム自体を書き換える必要はないかと思いますが。

grbl0.9のconfig.hの254行目を見ると、

#define SPINDLE_MAX_RPM 1000.0 // Max spindle RPM. This value is equal to 100% duty cycle on the PWM.
#define SPINDLE_MIN_RPM 0.0    // Min spindle RPM. This value is equal to (1/256) duty cycle on the PWM.

となっているので、スピンドル最高1000(100%)、最低0がデフォルトのようです。

grblの今後の開発予定(Development Path and Future Needs)では、リアルタイムに調整可能なフィードレート、クーラントやスピンドルのオーバーライドなどが挙げられているので、bCNC上にあるオーバーライド機能はまだ使えないということなのかもしれません。
追記:Grbl1.1からはオーバーライド機能に対応しました(こちらのページ中程)。
これはbCNCのControl画面ですが、画像の下のほうにFeed OverrideとSpindleのスライダーがあり、ここでリアルタイムに調整可能にはなっていますが、grblではまだということだと思います。
フィードやスピンドル(PWM)の値は、あらかじめ何回か素材に合わせてテストしてから実行しているので、それほど使うわけでもないのですが、たしかにあったほうが可変的に実験もできるので便利です。
まあオープンソースなので、この辺りは各自でやっていくしかないでしょう。

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らしく、なかなかないタイプ。

人気の投稿