2017年11月25日土曜日

小型工作機CNC2418 その41(コルク板にレーザー描画)

レーザー加工の依頼が飛び込んできました。
コルクボードに線画で焦がして描画するというものです。

デザイン画は、Illustrater CS5かなの *.ai で生成されいます。
Inkscapeで読み込めるようベクター形式の *.svg形式にしてもらいまいた。

まずは、CNC2418に付属していた”LiteFire.exe”を使ってみます。
当初、Inkscapeでは、輪郭だけで塗り潰しができないと思い込んでいて
遠回りの記録から。
Inkcapeでベクター形式の*.svgをビットマップの*.jpgに変換して
[Load Picture]で読み込むと
自動的にしきい値を変えて2値化した6つのパターンがでてきます。
右下を選択しました。
読み込みました。
[Device Setting]タブでレーザーパワーの設定をします。
[Laser Power]:20%にします。S200です。
「Weak Light Adjust」は、焦点調整時のパワーです。
”30”でS30になります。こちらは%ではないのです。
[Print Picture]タブに戻って
この[Pixel Size]のスライドバーでサイズを変更できますが
5段階しか変えられません。スライドバーを真ん中にすると
約40x40mmになります。
縦横のスケールで読むしかないのです。
[Work Area]は枠だけ出てきて意味不明です。
ダンボールに照射! 焼けるには焼けていますが...
これではダメですね~
しかも最初に暴走したので強烈な縦線が入っています。
そこで、GitHubにLaserGRBLというソフトを見つけました。
ダウンロードは、ここからです。
マーティーが使用したバージョンは、v2.8.12でした。
PNG画像を取り込むんだ画面です。
細かい設定ができます。
[Vectorize]にすると輪郭のみになります。
今回[B&W]にチェックしていますが、
階調モードにするとContrastなども設定できます。
[Filling]で[Horizontal][Vertical][Diagonal]の3種の塗り潰しができます。
 斜めの[Diagonal]を選択しました。
Laser Modeを指定できますが、ひとまずLaser Mode OFFでいきます。
で、焼いてみます。
あれっ? レーザーが照射されません。
Gcodeを見てみると

S200に設定しているのに輪郭部のS値が異常に小さいのです。
[Vectorize]で輪郭だけだとGcodeの最初に”M5 S200”が入るだけでうまくいきます。
塗り潰し部も焦がすようにするとS値(一部抜粋)がこんなに変動するのです。
その後、バージョン 2.8.19でも同じ結果でした。
どこか使い方を間違っているのかな?
*****
G1 F1000 X-.333 Y.333 S2
G0 X-0.333 Y0.666 F1000 S0
G1 F1000 X.333 Y-.333 S1
X.667 Y-.667 S3
G0 X33.667 Y-33.667 F1000 S0
G1 F1000 X.333 Y-.333 S1
G0 X0.333 Y-0.333 F1000 S0
G1 F1000 X.333 Y-.333 S112
G0 X0.333 Y0 F1000 S0
G1 F1000 X-.333 Y.333 S43
X-.333 Y.333 S13
G0 X-34.333 Y34.333 F1000 S0
G1 F1000 X-.333 Y.333 S3
*****
仕方ないので
せめて”S1”⇒”S100”程度にしたく、ダメ元で設定MAXを20000にしてみると
最初はいい感じに焦げていましたが、ちょっと広いと完全に貫通しています。
だめですね~
Gcode見てみるとS78~S20000まで振れています。
なぜこんなに変動するのかわかりません。
*****
G0 X-10.667 Y10.667 F1000 S0
G1 F1000 X-.333 Y.333 S78
G0 X-0.333 Y0.333 F1000 S0
G1 F1000 X-.333 Y.333 S392
G0 X0 Y0.333 F1000 S0
G1 F1000 X.333 Y-.333 S784
X.333 Y-.333 S6666
X.333 Y-.333 S78
G0 X11 Y-11 F1000 S0
G1 F1000 X.333 Y-.333 S2509
X.333 Y-.333 S20000
X.333 Y-.333 S5019
*****

そこで塗り潰しだけの画像を作って
輪郭ラインと塗り潰しを別々にしてみます。
ようやくうまく行った!と思いきや
よく見るとラインがどうしても2重になるのです。
これでは、特に顔や髪の毛で違和感があります。
Inkscapeで原画のライン幅を0.1、0.2、0.3mmとやってみますが
0.1mmにすると2重はなくなるのですが、今度は曲線がギザギザになるのです。

それならば、輪郭:Inkscape、塗り潰し:LaserGRBL を思いつきました。
で、Inkscape 64bit Ver.0.92.1でGcode変換します。
(Ver.0.92.1では、デフォルトでGcodetoolsが入っています)
InkscapeでGcode吐き出すのは、
「みら太な日々」さんのここを参照させて頂きました。
ブログを始める前に簡単な円とかは、やったことはあります。
待つこと数分、できました。
Candle v1.1.7で読み込むと
おっ!塗り潰し部分もできているではないですか!
最初からこれでいけばよかった~(´-﹏-`;)
またダンボールでテスト焼きです。
最初の方(上方の葉)は、パワー出し過ぎで塗り潰し部が焦げ過ぎです。
GRBL v1.1fにしているのでOverridingが使えます!便利です。
Feedを150%:F1500、Power(Spindle speed)を落として
InkscapeでのGcode変換は、移動時のレーザーOFFコード"S0"が入りません。
GRBL v1.1で追加された$32=1(Laser Mode ON)コードを追加しています。
レーザーモードでは、G0でOFF、G1・G2・G3でONを自動でやってくれます。
パワー下げてからは、いい感じになりました。
書き遅れましたが、
最初からレーザーは、全て、以前やったようにTTL制御にしています。
約20分弱で終了。
これなら本番に行けそうです!
上の葉っぱ2枚は、パワーが大きくて焦げ落ちたところ。
いざ、本番です。
コルクボードをセットします。
もう一枚やるので、四角にくり抜いたダンボールで位置決めしています。
コースターとして百均に売っている無地のものです。
ダンボールより焦げやすいですね~
記憶が曖昧ですが、F1500 S250だったかと?
マーティーのレーザーモジュールは、5.5W、その25%なので
通常のレーザーポインター 1mWとして約1400倍のパワーです。
ちょっとパワーを落として、S200だったかな?
都度、完成品に設定を記録しておかないと、
後から写真やスクリーンショットをみてもわからないですね~
良くなったけど、よく見ると塗り潰し部の輪郭や曲率の小さな所が焦げすぎです。
移動が遅い所も速い所もレーザーパワーは一定だからですね~
そうだ!M4のダイナミックパワーモードがあったのを忘れていました。
GRBL v1.1f で $32=1のレーザーモードにしているので
”M3”命令でレーザーONしている所を”M4”命令にすれば、
ダイナミック・レーザーパワーモードになります。
移動速度でレーザーパワーが自動的に変わるモードです。

ここでレーザーモードを調査して作っていた表を使います。
M4:ダイナミック・レーザーパワーモードでは、
F170以上になると同じS値に対してFeed Speedが速くなるほど
Max Dutyは小さくなるのです。
F1500でMax Duty:30%位にしたいのでS900にします。
【F値を固定、S値に対するDuty変化
まずは、ゴーグルなしの動画で。
GRBL v1.1f $32=1:レーザーモードON
M4:ダイナミック・レーザーパワーモード
最後の方でバイクの音が聞こえますが
煙がわりとでるので寒いのですが部屋の窓全開なのです。
コルクだともう少し煙多いです。まあ木の焦げなので香りは好きです。
ゴーグルありも動画で。
ラインの最初と最後で移動が遅くなるのでパワーが下がって
スポット径がじわっと小さくなるのがわかります。
ダンボールでテスト完了。いいですね~完璧かな!?
では、四角いコルクの本番に行きます。
デジカメさんにもゴーグル付けて。
かなりいい感じです!
ダンボールからパワーを60%辺りにしましたが、ちょっとパワー下げ過ぎました。
""の横棒が焦げていません。
少しパワー上げましたがまだ不足で""の横棒は変わりないですね~
コーヒーカップの輪郭や小さな花も綺麗です。
丸コルクの時は、小さな花や頭巾の模様が潰れていました。
逆に塗り潰し部は、まあ焦げているのでこの辺がベストかと?
これ以上は、塗り潰しとラインを別々にやるしかないでしょう。
最後は、これです。
裏を見ると
”天然木”で ”ポリ酢酸ビニル”の表面塗装とあります。
ダンボールより白っぽいので
M4モード、F1500 S1000でやっています。
Max Duty 35%辺りになります。
ステージに置いているだけです。
実はこれ、一回目、ちょっと失敗したので、表面を削って消しました。
表面塗装がないと、やたらと焦げにくいのです。
3回重ね焼きしているので、塗り潰し部の輪郭がヤニでボワーっとくすんでいます。
コントラストがついてこれはこれでいいです。
それで裏側にも
これは、最も綺麗になりました。
”ポリ酢酸ビニル”の表面塗装が良いようで、ダンボールと同等の細い線で””もOKです。
上とは対象的に薄いですが、塗り潰しには木目も出て味がありますね~
今回は、階調はなかったので助かりました。
この程度の大きさで階調つけると数時間~十数時間かかるようです。
や~ たっぷり楽しませて頂きました!
ご依頼主さん、ありがとうございました!

できあがって、最後によーく見ると
元絵の*.svg画像とGocode変換後で違う所があるのに気づきました。

どこが違うでしょう?
      左:元絵  右:Gcode変換後
(変換後の矢印マーカーは比較にはじゃまなので消しています)
重ね合わせると
・腕と手
・頭巾の上部
・コーヒーカップの取手
・髪の毛
などなど、細かい曲線はキリがないです。
ビジネスだったらクレームでやり直しモノですね~
特に腕がマッチョになっているのは...
コーヒーカップが重いからか?!ここだけ異様に違うのです。
      青:元絵  赤:Gcode変換後

これは今後のためにも調査しておかねば!

一旦、PNGなどのビットマップ画像にして
ビットマップトレースでパス変換してベクター化した方がいいのでは、と。

Inkscapeで 元絵 *.svg ⇒ PNG ⇒ ビットマップトレース します。
一瞬で終わります。
トレース後、目など細かい部分が潰れています。
ビットマップのPNG形式にした時点で詳細がなくなっているからです。
後で見るとPNG形式のエクスポートは、デフォルトの96dpiでした~
Gcodeに変換すると、目がこんなになってしまいます。
(目の周りだけマーカー矢印を消しています)
腕のところは大丈夫です。
PNGでビットマップトレースした方がこの辺は良いという事がわかりました。
元絵は薄くて見えませんが。
PNG変換時にdpi値を大きくしてみます。
*.svg形式からPNG形式にエクスポートする時に
デフォルトでは、96.00 dpiになっていますが
ここを4倍の 384dpiにします。
できたPNG画像を読み込みます。
画像の大きさは、元の4倍になるので、
読み込むと、A4の縦長方形に対してこの大きさになります。
上の[幅]と[高さ]欄に入力して、元の画像サイズと同じ大きさにします。
ビットマップのトレースで
ベクター画像に変換します。
元の線を0.1mmにしていたのがいけないのか
しきい値(T)を0.96以上にしないとうまく線がでませんでした。
できたベクター画像を一旦、横に移動して元画像を消し
ベクター画像をもとに戻します。
(ビットマップ画像はGcode変換で無視されるのでこれやらなくていいかも?)
いいですね~
腕、コーヒーカップの取手、湯気、ピッタリ原画に合っています。
目も口も
薄緑がGcode変換後のラインです。黒線が元絵。

髪の毛も完璧です。
試しに、2倍程度 200dpiのPNG画像でやった場合です。

・腕部分はいいです
・湯気のところも大丈夫
・コーヒーカップの台座の左側が曲率の小さい楕円になっています。
 左右で異なってしまっています。
 (薄くて見えにくいですが)

目は綺麗ですが、髪の毛、鼻がズレています。
(Gcode変換後:薄緑、元絵:黒)
前髪部分で結構ズレている所があります。
ということで
200dpi 程度ではまだダメで、
400dpi 程度であれば、ほぼ原画のラインにできることがわかりました。
これで次回の準備万端です!

もう一つ、所で、がありました。
マーティーの場合、InkscapeのGcodeToolsでの変換が、
デフォルトでは、サイズが正しく出力されないのです。
Inkscape 64bit Ver.0.92.1でデフォルトで入っているGcodetoolsを使っています。

直径20mmの円を描いてGcodeに変換してCandle v1.1.7に取り込むと
X:0~5.634
Y:0~5.634
とかなり小さいのです。(左下の数字)
Gcodeへの変換は、
Gcodeを吐き出す際に、この[Orientation points]を選択して
[3-points mode]にチェックを入れて[OK]します。
この100 x 100mmのガイドがでてきます。
赤丸部の矢印が(X,Y)の(0,100)と(100,0)を示しているのですが
左側のA4縦の長方形より遥かに大きいのです。

(X,Y)の(0,100)と(100,0)の矢印に合わせて四角を描くと
354.399 x 354.399 なのです。
つまり 100 x 100 の矢印が、夫々 3.54341倍されているのです。
ということは、2つ前の画像において
[Orientation point]を表す長方形全体(幅:518.730  高さ:371.928)を
X・Y 夫々 1/3.54341すれば、
100 x 100の矢印の位置が正しく100 x 100mmになるはずです。
幅:518.730÷3.54341=146.393
高さ:371.928÷3.54341=104.963
にすればいいはずです。
こうして
[エクステンション]-[Gcodetools]-[Tools library]して
[エクステンション]-[Gcodetools]-[Path to Gcode]でGcodeを吐出し
Candle v1.1.7に読み込みます。
X:0~20.001
Y:0~20.001
になりました!(左下の数字)
Gcodeを見ると(円を描く所だけ)細かい円弧の塊です。
*****
G02 X 19.2393 Y 6.1734 Z -0.1000 I -10.0004 J -0.0000 F 400.0000
G02 X 17.0716 Y 2.9290 I -9.2391 J 3.8269
G02 X 13.8272 Y 0.7612 I -7.0713 J 7.0713
G02 X 10.0003 Y -0.0000 I -3.8269 J 9.2390
G02 X 6.1733 Y 0.7612 I -0.0000 J 10.0002
G02 X 2.9290 Y 2.9290 I 3.8270 J 9.2391
G02 X 0.7612 Y 6.1734 I 7.0713 J 7.0713
G02 X 0.0000 Y 10.0003 I 9.2391 J 3.8270
G02 X 0.7612 Y 13.8273 I 10.0004 J 0.0000
G02 X 2.9290 Y 17.0716 I 9.2391 J -3.8269
G02 X 6.1733 Y 19.2394 I 7.0713 J -7.0713
G02 X 10.0003 Y 20.0007  I 3.8269 J -9.2390
G02 X 13.8272 Y 19.2394  I -0.0000 J -10.0002
G02 X 17.0716 Y 17.0716  I -3.8270 J -9.2391
G02 X 19.2393 Y 13.8273  I -7.0713 J -7.0713
G02 X 20.0006 Y 10.0003  I -9.2391 J -3.8270
G01 X 20.0006 Y 10.0003 
*****

Fusion360で円をGcodeにすると(21mm穴の輪郭を1.0mmで切削の場合)
上半円と下半円の2命令です。
*****
G0 X10 Y0 Z-0.1
G3 X-10 I-10
X10 I10
*****

実は、円は、Gcode 1命令で描けるようです。
開始位置は必須ですが
*****
G0 X10 Y20 Z0
G2 X10 Y20 J-10
*****

ということからして~と、特別な結論がでるわけではありませんが
InkscapeでGcode作る時は、細かい円弧の塊になるので
元絵とよく比べた方がいいということですかね~

今見ると、LaserGRBL v2.8.21になっています。
すごい勢いてバージョンアップされていますね~
今回、時間の関係でLaserGRBLの使い込みができませんでしたが
その内、階調を付けて焼いてみたいものです。