ぽんさんのレーザー加工機

先日ハンズマンのガラクタ市に行った話を投稿したところ、ぽんさんから書き込みを頂きました。 この記事でお互いの家が近い事が分かったとの事で、メールで連絡を取り合ったところ車で20分程度の距離であると判りました。
ぼんさんもレーザー加工機を作ってられるそうです(今のところネットでは公開されていないそうですが)。
今まで近くには同様の事をする人がいないと思っていましたが、こんなに近くにおられたとは・・・。
で、早速ぼんさん宅にお邪魔してレーザー加工機を見せていただきました。
未完成と聞いていましたが殆ど完成に近い状態です。あとはGrblからのコントロールを残すのみの様です。

さっそくぽんさんのレーザー加工機を拝見。 

一見、どこにあるのかわかりませんでした。木製の蓋にする事で加工機の上も有効活用できる様にとの事です。

BONSAN Laser1

家具調のレーザー加工機です。
机の様に見えます。

 

蓋を開けるとこの通り。レーザー管も電源も箱の中に納まっています。

bansan Laser2

ふたを開けるとレーザー加工機になっていました。

 

冷却水のタンクです。ウチの様にポリタンクではありません。
お子様が小さいので外部の低い位置には配管等を置くことを避けたそうです。
PC用の水冷装置を流用しています。

BonsanLaser3

冷却水は不凍液を使われています。
緑色なのでどこに水が通っているか一目瞭然です。

 

冷却水はラジエターで冷やす構造です。これにより小容量のタンクでも温度上昇を防ぎます。

Bonsan Laser4

ラジエター

 

レンズ、ノズルは市販品を使われています。レンズの高さを調整できる構造になっていて焦点距離を合わせる事ができます。
ほいほい堂の加工機はレンズが固定な上に、ベース上下機構もないので金網の下に敷く薄板の枚数で高さを調整していますが、こちらの構造だと焦点調整がやりやすそうです。
このパーツが欲しくなりました。

Bonsan Laser5

Xキャリッジ。

 

3Dプリンタもこの様に箱に収まっています。

Bonsan 3Dprinter

3Dプリンタ。
箱に収めるとスッキリします。

 

その後、ぽんさんには ほいほい堂の工作室にも来ていただきました。
半日でお互いの家を訪問できてしまいました。近いという事は素晴らしいです。

BONSAN

ぼんさんと記念撮影。

自宅が近いので簡単に行き来できますし、是非今後ともよろしくお願いいたします。
(お土産に頂いたアクリル板とLEDテープ、ありがとうございました)

※2016-12-12追記
当初「ぼんさん」と記載していましたが正しくは「ぽんさん」でした(BONSAN→PONSAN)。
大変失礼いたしました。 >ぽんさん

FRISKサイズのUSBジョイスティック

OpenStickLiteが使える様になったので、Laser加工機用に小型のジョイスティックを製作しました。

これまでLaser加工機のジョグ制御には、下の様なジョイスティックを使用していました。見覚えがある方もいらっしゃるかもしれませんが、MakerFaireではラジコンシミュレータのコントローラに使用しているものです。
今回、OpenStickLiteを使って場所を取らない小型のものを作ろうと思います。

LaserCutterController

これまでのLaser加工機のコントローラ。
ちょっと大きくて邪魔になる。

 

X-Y軸入力のスティックはジャンクのゲームコントローラーから外したものです。HardOFFで108円で買ってきたコントローラをバラしてストックしています。
これはX-Yのアナログ制御に加えスティック自体を押し込む事でボタンをON/OFFできます。今回入力デバイスはこれ一つだけで、
X-Y軸とボタン1個だけにしました。

JoysticksFromPS

PlayStation用コントローラから外したジョイスティック

 

簡単に回路を描いて・・・

LaserStickSchematic

Laser制御用ジョイスティック回路図

 

基板切削CNCで削って・・・ 

LaserStickPCB

LaserStick基板
(実は一部パターンをミスっており、この後手配線で修正しました)

 

FRISKのケースに入れました。
FRISKはケースサイズが変わるという話ですが熊本ではまだ従来サイズしか見かけません。今回使用したのも従来サイズです。

LaserStick2

フリスクケースに収納。

 

中身はこんな感じです。
PIC18F14K50はフリスクケースにピッタリ。
部品がとっても少ないです。

LaserStick3

水晶発振子周りのスペースが厳しくなってしまったので、水晶を少し浮かして取付け、更にショート防止のためカプトンテープで保護しました。

LaserStick4

斜めからみたところ

 

コンフィグはこれを書き込みました。

LaserStick Configuration

今回のOpenStickConfigLiteの設定。
入力信号はX-Y軸とボタン1個だけ。

 

またLaser加工機に取付ける為、3Dプリンタでホルダーを製作しました。

LaserStick with Holder

ホルダーと小型ジョイスティック

そして加工機に取り付け!!

LaserStick6

ホルダーと共に加工機に取付けた図。

PIC18F14K50採用で小型機器が作り易くなりました。
SOP版を使うともっと小型化できそうです。

 

動画にしてみました。 2016-10-25

 

皮にレーザーマーキング~その2~

前回はくまモンを試し描きしたところまででした。
すこし大きすぎて皮の端切れからはみ出したので今回は少し小さくしてみます。

まず少し小さめのくまモンをPNG型式で作成します。背中も含めました。

そしてレーザーでマーキング。方法はこのあたりに書いた通りです。

少しですが加工中の動画を撮ってみました。

リングをつけてカシメで止めてキーホールダーにしてみました。
(この金具はカシメっていうんですかね。皮革加工は初めてなのでわかりませんが店ではそういう名札が付いていました。なんかそのままのネーミングです。因みにこれをカシメる道具は持ってないので万力で挟みました)

KumamnoKeyholder

くまモンキーホールダー
輪郭はハサミで適当に切ったのでガタついてしまいました。

暫く使用した後撮影したので既に剥げています。レーザーがスキャンした方向にスジ状に剥げているのでもう少し密度を上げてマーキングすると良いかもしれません。因みにこの時は144dpiの設定でした。

このキーホールダーは家の鍵に付けて使用しています。

皮にレーザーマーキング

レーザーで皮にマーキングできるとの事なので試してみました。
嫁が持っていた皮の切れっ端に・・・

皮マーク

皮にレーザーマーク
くまモン、こればっかり。

また、くまモンです。足の部分が切れてしまいましたが綺麗にマーキングできています。横にある二つの丸はパワーを確かめる為の試し打ちです。

Laser使用中 ~その2~

先日の投稿に書いたLaser使用中のサイン。

LaserSign ON

レーザー使用中サイン

家族が入室する際、レーザー使用中である事を示して注意を促すサインですが、これまで古い携帯充電器から電源を取り手動で点灯していたので点け忘れがちでした。 そこでレーザー電源と連動にしてみます。

まずレーザー電源には5V出力端子があり、ここから電源を取れば確実。

Laser PS

レーザー電源のコネクタ。
一番右の4ピンコネクタに5V出力がある。

レーザー加工機から部屋の入り口まで電線を引くため、昔使っていた電話線(約10m)を使う事にしました。 写真の様にレーザー電源にナイロンコネクタを挿して電話線に接続し、電話線の反対側は使用中サインに接続します。

LaserPS2

電話線からRJ11コネクタを切り去り、代りにナイロンコネクタを接続して5Vを取る(黒い線が電話線)。
電話線の反対側はレーザー使用中サインに接続。

これで点け忘れはなくなった。

なおレーザー使用中は保護メガネを掛ける事にしています。
保護メガネはえらく高かったのですが調整中はカバーもなしで動作させるし、完成後は息子も使用するので思い切って購入しました(今回のレーザー加工機製作では単体価格で最も高い買い物だった)。

レーザー保護メガネ

理研オプテックのレーザー保護メガネ。
えらく高かったが息子も使用するし思い切って購入。

今はアクリルカバーも付けたし、ここまで必要かどうかはわからないけど安全第一でいきます。。

NONSAYAさん設計パーツ収納ボックス

レーザー加工機が完成したら作ろうと思っていたNONSAYAさん設計のパーツ収納ボックスを製作してみました。加工機はまだ完全に完成した訳ではありませんが、とりあえずはカットできる様になったので。

抵抗も入れたいのでオリジナルに比べて各ボックスの幅を10mm広げています。
また手持ちの関係でアクリルパーツは3mm→2mmに変更しました。

PartsBox

パーツ収納BOX

NONSAYAさんが横浜で設計された物が熊本でも同じ様に作れる。
これがデジタルファブリケーションってやつですね。

# データをアップ頂いてNONSAYAさんに感謝です。

Laser加工機製作 ~その15 安全スイッチ~

安全のため、稼働中に上蓋を開けるとレーザー発射を停止する様にします。

上蓋にリードスイッチを取付けて制御基板のレーザーイネーブル信号に入れる構想です。フォロカプラ(図中のIC1B)をOFFするとレーザー電源のイネーブル端子がオープンになりレーザーは発射されません。

LaserCtrl-A

赤で追記した箇所にセンサーを挿入します。

 

当初センサーにはこういうのを使おうと考えていました。生産ラインの装置では良く見かけます。

OMRON_GLS

OMRON磁気型近接センサ

http://www.fa.omron.co.jp/products/family/481/?WT.mc_id=1202600001403030

ショップで値段を見ると800円以上します。そこで裸のリードスイッチの購入を考えました。これだと100円前後です。 暫く悩んでいると息子から「ダイソーに同様のセンサーを使用したLED照明があるよと」の情報が。(こいつ、勉強はしないくせにこういう事には目ざとい)

そこで買ってきたのはこれ。

DisoLEDlightNo21

ダイソーLEDセンサーライト
即刻ばらした後の写真

磁気近接センサーの他にLED、制御回路、LR44バッテリx3個が入って税込み108円。いつもながら何でこんな値段で出来るのか不思議です。 白い長方形のが磁気センサーと磁石で、センサーにはリードスイッチが入っているものと思われます。 本来の用途では、これをドアと壁に取り付け、センサーと磁石の距離が離れるとスイッチがOFFになりLEDが点きます。 スイッチOFFでLEDをつける為、制御基板にはトランジスタらしきものが2個載っており、ざっと見たところ次の回路です。

LEDSenserLightSchematic

LEDセンサーライトの制御基板回路

今回はセンサー部分のみ使用するのでLEDと制御基板は取っておきます。

センサーは付属の両面テープでレーザー加工機に貼り付けました。

安全カバーセンサ

安全カバーセンサ

蓋を開けるとレーザー電源のイネーブル信号がOFFとなり発射されません。
本来モーターも止めるべきですが、こちらは蓋を開けたまま動かしたい場合もあり、またレーザー程も危なくないので止めません(会社でこういう仕様にしたら怒られるでしょうね)。

 

Laser使用中

Laserは物騒なので使用中を示す表示を部屋の入り口に取付けます。

まず、切り抜きデータを作成します。
こちらのサイトを参考に文字をdxfに直してjw-cadにもって行き、’O’や’A’等、切り抜くとこぼれ落ちてしまう文字を手修正しました。あとはレーザーのマーク等も書き加えて厚紙をレーザーカットします。

LaserSignMask

文字の切り抜きデータ

次にケースをカットします。

ケース

ダイソーの6mm厚MDFをカットして組み立てます。

そしてアクリルカバーをカットします。

LaserSignCover

赤系透明アクリルカバー

ケースの底には白い紙、側面にはアルミテープを貼り、赤色LEDと抵抗2個をグルーガンで貼り付けました。また文字マスクの空き部分にもアルミテープを貼っています。
本体とカバーとは両面テープで接合しました。

LaserSign

LaserSign組み立て中

電源には古い携帯電話の充電器を使用しました。

LaserSign PowerSource

mova時代の充電器

ドリルで壁に穴を開けて配線を通し、ドアの上に取付けて完成です。

LaserSign ON

点灯!

 

Laser加工機製作 ~その14 LinxCNCでレーザーラスター加工 まとめ~

前回まででLinxCNCによるレーザーラスター加工が可能になりましたが課題もあります。

  1. 中間階調が出ない。
    今の所ONとOFFのみで写真等は綺麗に描画できません。
    細かい点の密度で階調を表現する様にgmaskファイルを生成すれば出るかもしれません。あるいはPWMでレーザーパワーを調整する様にHALを書き換えるとか・・・
    いずれ試したいと思います。
  2. TouchOffボタンにより座標系原点を機械原点と異なる値にすると正常動作しない。
    HAL内でX軸の位置を取得している「axis.0.joint-pos-fb」は機械座標での位置を返す様です。TouchOffボタンでワーク座標系を機械原点と異なる値にすると*.gmaskに書かれたX位置と一致せず、正しい位置でレーザーが出ません。 何か方法がありそうな気がしてマニュアルを読んでいるのですが・・・わかったら報告します。

そんなこんなで色々とありますが最低限の動作はした、という感じです。

なおLinuxCNC自体についてはhttp://linuxcnc.org/が、
またドキュメントの一部を日本語化されているシマリス技研さんのサイトも大変参考になりました。

 

Laser加工機製作 ~その13 LinxCNCでレーザーラスター加工 Graster~

ここ何回かRastering With a Laserに沿ってLinuxCNCによるラスター加工について書いてきました。今回のGrastarをインストールする事で任意の画像データを変換しレーザー加工機で出力するまでの流れが完結します

Grasterの動作

Grasterは画像データをLinuxCNCに喰わせる形に変換するプログラムで、Rubyで書かれています。 例えばKumamon.pngという画像ファイルをGrasterで処理すると、次の3つのファイルが生成されます。

  • Kumamon.png.raster.ngc ラスター描画時にレーザーヘッドの移動を制御するNCコードです。
  • Kumamon.png.raster.gmask ラスター描画時にレーザーのON/OFFを制御するデータです。上記NCコード実行時に読み込まれます。
  • Kumamon.png.cut.ngc 外形カット用NCコードです。

まずはRuby関係のツールをインストール
Grasterを動作させる為、まずはRubyとその関連ファイルをインストールします。ほいほい堂のUbuntu上ではapt-getにより以下のツールをインストールしました。

sudo apt-get install ruby
sudo apt-get install imagemagick
sudo apt-get install librmagick-ruby1.8
sudo apt-get install rubygems1.8

前回の投稿でダウンロードしたGrasterファイル
Graster自体は前回の投稿に書いた通り、下記コマンドで入手します。 ※前回の投稿は当初リンク切れのアドレスを載せていたので後日修正しています。

https://github.com/jedediah/graster/archive/master.zip

Grasterの動作確認と修正
ダウンロードしたGrasterを解凍するとgraster-masterディレクトリ下にbin/grasterというファイルがあります。これが実行すべきコマンドファイルですが、私の環境では次のエラー出ました。

$ ./bin/graster
/usr/bin/env: ruby -rubygems: そのようなファイルやディレクトリはありません

どうやらbin/grasterファイルの先頭行「#!/usr/bin/env ruby -rubygems」で引っかかっている様です。  /usr/bin/envでrubyへのパスを指定した場合、引数があると環境によってはエラーになるそうです。そこで次の様にrubyへのパスを直接指定してエラー回避しました。

$ diff graster.ORG graster
1c1
< #!/usr/bin/env ruby -rubygems
---
> #!/usr/bin/ruby -rubygems

これでとりあえずはエラー無く変換ができる様になったのですが、実際に加工機で描画してみると正しい場所でレーザーが出力されません。またレーザーヘッドの動作範囲が妙に狭い様です。 原因は次の通りと思われます。

  • Grasterはインチ単位の動作を前提に書かれている。 私の加工機はLinuxCNCの設定で、ミリ単位を基本にしています。本来インチで書かれたNCコードをミリと解釈しているためレーザーヘッドの動作範囲が狭くなっています。 また、xxx.raster.gmaskファイルにはX軸が所定の箇所に達したら次の動作(レーザーをON/OFFしたり)に移るという動作が書かれていますが、これもインチで書かれています。 これに対し加工機がhalに知らせるX軸のポジションがミリなので、ここも上手く行きません。
  • xxx.raster.gmask中の記述が往復描画と片道描画が混乱している。 ラスタースキャンではレーザーヘッドが往復する際に右向きと左向き両方で描画する方法と、片方向のみ描画する方法があります。速度と精度のトレードオフなのですが、生成されたgmaskはこの両方の方式が混ざって記載されている様で正しく制御できていませんでした。

以上2点の対策として次の方針で変更しました。

  • 単位はミリで出力する。 あまりややこしく考えず、座標を出力するデータ全てに25.4を掛けるという方法で修正しました。 よって出力はミリ単位になっていますがオプション入力での数値はインチのままです。
  • 片方向描画に統一したgmaskファイルを生成する。 とにかく片方向描画が正しく出来るファイルを生成する様に変更します。

これらを変更したところ、それっぽく動作する様になったのですが、描画の最後の方だけレーザーが出ないという問題が発生しました。 動作の最後の方になるとなぜかstreamerからデータが出てこなくなります(LinuxCNCのバグではないかと思っています)。結局原因は判っていないのですが、streamerのバッファにデータがたっぷりあればこの現象が発生しない様なので、gmaskファイル生成時にデータを余分に出す事で逃げています(全フィールド0の行を400行ほど余分に出力しています)。 本来LinuxCNCの最新バージョンでどうなるかを試すべきですが・・・いずれやってみます。

Graster修正結果
最終的に変更したのは次の内容です(それと上に掲載したbin/grasterもです)。

$ diff lib/graster.rb.ORG lib/graster.rb
177c177,178
<     @image.size[1].times {|y| @tiled_rows << tiled_row_spans(y, (forward = !forward)) }
---
>     #@image.size[1].times {|y| @tiled_rows << tiled_row_spans(y, (forward = !forward)) }
>     @image.size[1].times {|y| @tiled_rows << tiled_row_spans(y, (forward)) }
219a221
>     gmask.epilogue
$ diff lib/graster/gmask_file.rb.ORG lib/graster/gmask_file.rb
13,15c13,15
<         self << "0 0 0 %0.3f\n" % x1 if @begin_row
<         self << "0 0 1 %0.3f\n" % x1
<         self << "0 1 1 %0.3f\n" % x2
---
>         self << "0 0 0 %0.3f\n" % (x1*25.4) if @begin_row
>         self << "0 0 1 %0.3f\n" % (x1*25.4)
>         self << "0 1 1 %0.3f\n" % (x2*25.4)
17,19c17,19
<         self << "0 0 1 %0.3f\n" % x1 if @begin_row
<         self << "0 0 0 %0.3f\n" % x1
<         self << "0 1 0 %0.3f\n" % x2
---
>         self << "0 0 1 %0.3f\n" % (x1*25.4) if @begin_row
>         self << "0 0 0 %0.3f\n" % (x1*25.4)
>         self << "0 1 0 %0.3f\n" % (x2*25.4)
22a23,29
>
>     def epilogue
>       (0..400).each do |x|
>         self << "0 0 0 0\n"
>       end
>     end
>
$ diff lib/graster/gcode_file.rb.ORG lib/graster/gcode_file.rb
35c35
<           "#{k.to_s.upcase}%0.3f" % v
---
>           "#{k.to_s.upcase}%0.3f" % (v*25.4)

修正版一式
修正版一式をアップしておきます。

使用方法
次の様に使用します。 各種パラメーターはカレントディレクトリのgraster.ymlに書いておくとデフォルトとして使用されます。下の例では画像のドットを300dpiとして描画する様に指定しています。実行後、上に書いた3本のファイルが出来ています。

%graster –dpi 300,300 Kumamon.png

変換後のファイルもアップしておきます。