2017年12月30日土曜日

小型工作機CNC2418 その42(レーザー階調描画テスト)

以前「小型工作機CNC2418 その41(コルク板にレーザー描画)」で
コルク板に階調無しで描画しました。

その時、GitHubにLaserGRBLというソフトを見つけましたが、
設定がよくわからずうまくいかなかったので結局使きりませんでした。
でも階調をつけれるのが気になってきてリベンジです。
ダウンロードは、ここからです。

「コルク板にレーザー描画」で使用したバージョンは、v2.8.12でしたが
.19にした後、久しぶりに立ち上げるとv2.8.35にアップデートされました。
約1ヶ月で、もう.35なのでかなり頻繁にバージョンアップされています。
精力的に改良が進んでいるようです。
いきなり写真でやって設定地獄にハマってしまいそうなので
まず、Inkscape v0.92.2で階調確認用のグレースケールチャートを作ります。
[ストロークの塗り]で[CMYK]モードにして
[K:]のバーで黒の%を変えていきます。
黒さ加減「K:」は、
最上段:0%、100%
2段目:25、50、75、100%
3段目:13、25、38、50、63、75、88、100%
最下段:6、13、19、25、31、38、44、50、56、63、69、75、81、88、94、100%
にしています。
白を入れると、実質、2段目は5階調、3段目は9階調、最下段は17階調です。
380dpiでPNG画像にエクスポートします。
グレースケール・チャートのPNG画像ができました。
レーザーで描画する前に
レーザードライブボードとCNC2418の結線をTTL制御にする必要があります。
詳しくは「GRBL v1.1f レーザー TTL制御」で試しています。

マーティーのCNC2418は、5.5Wのブルーレーザー付きセットで購入しております。
今は、CNC2418と5.5Wのセットはないようですが、
単品では売られています。
余談ですが、ここには、3mmMFDを1パスでカットした写真が載っていますが
2W、3Wのにも載っていて、何Wで切ったのか明記してないのです。
少なくともマーティーの5.5Wは3mmMDFを1パスで切ることはできておりません。

この写真は、DZT's Storeの推奨接続図ですが
TTL端子は使わず、12V端子に「PWMされた12V」を入力する方法です。
電源と制御を1つの線で兼ねています。
出所:AliExpress DZT's Store
しかし、TTL端子を使わない「12V Direct PWM」の接続だと
レーザーダイオードへの入力パワーは、Duty 10%まで急激に上がり(オレンジ線
その後は、ほとんど変化しないのです。
これでは、レーザーパワー可変で階調をつけるのは困難だと思われます。
TTL制御にするとDutyの変化に対してレーザーパワーはリニア(緑線)になります。
これは、入力電力なので効率50%としてレーザーパワーは約半分になります。
TTL制御にする為にCNC2418のボードWoodpeckerとの結線を変えます。
回路図だとTTL制御パルスとしてQ3:Power MOS-FETのGate信号を
レーザードライブボードの[TTL]端子へ接続します。
この信号は、D11でATmega328Pの15ピンから来ています。
[12V]端子にはDC12Vを入力します。
CNC2418のコントロールボード Woodpeckerとの接続はこれ。
マーティーは、12Vを右下の電解コンデンサの両端から取っています。
※この接続では、レーザーが勝手に照射する場合があるので十分注意が必要です。
 24V電源を入れてる間はゴーグルを絶対に外さない覚悟で作業します!
※Candle立ち上げてからUSB挿すと
 Duty 100% 1.3A 5秒程、レーザーでます。
USB挿してからCandle立ち上げたり、WoodpeckerのRESETボタンを押すと
 Duty 100% 1.3A 1秒程、レーザーでます。
(レーザードライブボードとしては本来の使い方なのですが...)
レーザードライブボードはこのように接続しています。
いまだ宙ぶらりんのままですが(^^ゞ
CNC2418の準備が終わったので次の作業に移ります。

LaserGRBL v2.8.35の[File]-[Open File]で
グレースケールチャートPNG画像を読み込むとこの画面になります。
上の方のバーは、
 Brightness:100%
 Contrast:94%
 White Clip:10%
左中の[Conversion Tool]は、[Line to Line Tracing]にします。
レーザーパワーを可変して描画の濃さを変えるモードです。
Previewの階調がよくでるようにするには、
できるだけWhite Clipを下げて(10辺り)Contrastを調整するのが良さそうです。
Contrastでグレースケール左下の6%グレーがぎりぎり見える設定にしました。
[Next]すると、このBOXがでてきます。
Laser ON]を[M4]にします。
GRBL v1.1のダイナミック・レーザーパワー・モードになります。
移動開始時と停止時や曲がり角でFeedが遅くなると
自動でレーザーパワーを下げてくれ、欽一な焼き上がりにしてくれるモードです。
ただ、「M4」がでてこない場合もあるようです。
ダンボールに描画する予定なので
以前のコルクへの描画の経験からこの辺りに設定します。
 S-MIN:最も薄く焼くパワー
 S-MAX:最も濃く焼くパワー
と考えていいようです。
サイズがあまり大きいとLaser描画の時に時間がかかるので
[Size]30mm x 30mmにしています。
[Create!]ボタン押すとGcodeに変換されます。
これは、できたGcodeを表示しています。
う~ん、階調ついてるんだろうか?
一見ダメそうですが
Gcodeの一部を見てみると、細かくパワーが変わっています。
大丈夫だと思います。
*****
X1.667 S347
X.333 S356
X.333 S387
X1 S384
X.333 S380
X.333 S401
X.333 S417
X1 S415
*****

ここで一旦、[File]-[Save Program]して
Gcodeを保存しておきます。
LaserGRBLには編集機能はないのでテキストエディタでやる必要があります。
今度は、
左中の[Conversion Tool]を[1bit BW Dithering]でやります。
パワー固定、ディザで階調つけます。
 Brightness:100%
 Contrast:101%(ここだけ変えました)
 White Clip:10%
ここもContrastで左下の6%がぎりぎり見える設定にしました。
左下部分の拡大です。
で[Next]します。
ここは、先の[Line To Line Tracing]と同じにして[Create!]します。
焼いてみないと何とも言えませんが、みるからに良さそうな気がします。
瞬時にGcode変換されて、表示されます。
これも[File]-[Save Program]してGcodeを保存しておきます。

所で、できたGcodeの最初の方を見ると
Laser Mode ONにする「$32=1」がありません。
通常、開始前に外部コマンドを送信してセットするようです。
G0移動命令の行は、「S0」でレーザーをOFFにしているので
Laser Mode OFFでも大丈夫なコードになっているようです。
*****
G90
G0 X0 Y0
M4 S0
F1500
G91
G0 X2.333 Y0 S0
G1 X.333 S1200
G0 X3.333 Y0 S0
G1 X.333 S1200
G0 X2.333 Y0 S0
G1 X.333 S1200
*****

それと、以前のバージョン v2.8.12では、[setting]メニューで
Laser Modeを指定できましたが(確かv2.8.19までは、あったような?)
その後、一気に .19 ⇒ .35までUPしたので...
この v2.8.35で[setting]を見ると
中が大きく変わっていて[Laser Mode]がなくなっているのです。
あちこち設定を探しても[Laser Mode]がないのです。
で、テキストエディタでGcodeの最初に「$32=1」を追加します。
*****
G90
$32=1
G0 X0 Y0
M4 S0
F1500
G91
*****

テスト用のグレースケールチャートのGcodeができたので実射描画に移ります。
ダンボールをセットします。
毎年年末は、ダンボールは全部リサイクル置き場に持っていましたが
これからは綺麗なものは少し残しておいた方がいいかな~? 貴重です!
ゴミ屋敷にならないように気をつけねば!
LaserGRBLでCNC2418を動かせるのでのUSBを接続します。
COMは、自動で認識してくれ(前に使ったからかも?)
Baud 115200の右の アイコンでConnectするとつながります。
ちょっと横道にそれますが、一度、接続して外すと、
その後どうやっても、この設定BOXに「M4」がでてこなくなりました。
何も設定は変えていなんですが...何故かわかりません(´-﹏-`)
何度やり直しても「M4」は二度と出てこなくなりました。
仕方ないので、その後は、Gcodeの「M3」を「M4」に書き替えました。
いざLaserGRBL v2.8.35からCNC2418(GRBL v1.1f)にGcodeを動作させると、
横に真っ直ぐ動くはずが、ちまちまと動くだけでレーザーもでないのです。
停止してDisconnectした途端、暴走してしまい、縦に動いて焼け焦げたので
慌ててハードリセットしました。
GRBL v1.1に対応してないのでしょうかね~?
そこでLaserGRBLで吐出したGcodeをCandle v1.1.7に読み込みます。
Candle v1.1.7は、CNC2418付属のGRBLcontrolソフトのGRBL v1.1対応版です。
1回目は、なぜかエラーがでて、ちまちま動いています。
Gcodeでは、相対移動のG91なのに、絶対移動のG90で動いている感じです。
アプリの[RESET]ボタン押して再度[Send]すると動き始めました。
何か命令が不足しているのでしょうか?
Gcodeの最初は、これだけで始まっています。
***
G90
$32=1
G0 X0 Y0
M3 S0
F1500
G91
***
そこで
Inkscape v0.92.2のGcode Toolが吐き出すGcodeの先頭にあったものを
G90の後に追加してみます。
赤文字:Inkscape v0.92.2のGcode Toolが吐き出すGcodeの先頭のもの
青文字:Laser Mode ON、Dynamic Laser Power Mode にするため
***
G90
G94 (units per minute mode)
G17 (Select the XY-plane)
G21 (use millimeters)
G54 (Select work offset #1)
$32=1
G0 X0 Y0
M4 S0
F1500
G91
***
そうすると、1回目からうまく動くではないですか!
G94、G17、G21、G54どれが必須なのか調べていませんが
あった方がいいのは確かなようです。

なかなか先に進みません、やっと焼き始めることができました。
まず、[1bit BW Dithering(パワー固定ディザ階調)]を動画で
破線を打っているようなものなのでレーザーが細かくON/OFFしています。
$32=1:Laser Mode ON
M4:Dynamic Laser Power Mode
F1500 S900
1bit BW Dithering(パワー固定ディザ階調)]で
ダンボールに焼いたグレースケールテストチャート!30mm角です。
いい感じですが、一番下の16階調はちと無理があります。
8階調が限界ですかね。
領域を広くして遠くから見ると行けるかも?という感じ。
次は、「Line To Line Tacing(レーザーパワー可変で階調)」です。
S300~S900で可変していますが
Laser Mode ON、M4 ModeでF1500なので、実際のDutyは、Max 31%になります。
ディザと同じように追加編集します。
赤文字:Inkscape v0.92.2のGcode Toolが吐き出すGcodeの先頭のもの
青文字:Laser Mode ON、Dynamic Laser Power Mode にするため
***
G90
G94 (units per minute mode)
G17 (Select the XY-plane)
G21 (use millimeters)
G54 (Select work offset #1)
$32=1
G0 X0 Y0
M4 S0
F1500
G91
***

Line To Line Tacing(レーザーパワー可変で階調)」を動画で
$32=1:Laser Mode ON
M4:Dynamic Laser Power Mode
F1500 S-MIN:S300、S-MAX:S900の設定なので
Dutyは、10~30%辺りで変化しているはずですが
パワーが変化しているのはよくわかりませんね~
で、LaserGRBLの設定のS-MIN と S-MAXの設定を色々変えてみました。
描画したダンボールをデジカメで同時に撮ったので撮影条件は同じはずです。
6階調辺りが限界のようです。
黒さは、S1200のがいいですが
階調(特に4階調)は、S100~S900のがいいですね~
ということで、S-MIN:100   S-MAX:1200 にすることにしました。
 左:Line To Line Tarcing:レーザーパワー可変で階調
 右:1bit BW Dithering :レーザーパワー固定のディザで階調
S1000以上のS1200にしていますが、
$32=1(Laser Mode ON)で M4(Dynamic Laser Power Mode)では、
Duty 120%にはならないのです。このなぞは、一番最後で解説します。
小さい方が分りやすいかも?

やっぱし写真で試したくなりました。
昨年の秋に行った、この唐津城(佐賀県)の写真にしましょう!
ほとんどモノクロ写真っぽくて丁度良さそうです。
LaserGRBL v2.8.35にカラー画像を取り込むと
[Grayscale]の項目がでてきます。
この4種類が選択できます。
上の3つは、変化がわかりません。
[Custom]にすると
R、G、B 個別に設定できます。
一番上の[Simple Average]にして
 Brightness:100
 Contrast:120
 White Clip:50 (空が真っ白になるようにした)
Line To Line Tracing]で[Next]
Previewでは一見良さそうです。
S-MIN:100、S-MAX:1200、サイズは奮発して100 x 75mmにして
[Create]してGcodeへ変換します。
LaserGRBLでのGcode変換後はこれ。
1bit BW Dithering]これも
Grayscale:[Simple Average]にして
 Brightness:100
 Contrast:120
 White Clip:50(空が真っ白になるようにした)
Previewはこんな感じ
先と同様にS-MIN:100、S-MAX:1200、Size 100 x 75 に設定し[Create]。
LaserGRBLでのGcode変換後はこれ。
Candle v1.1.7に読み込みます。
グレースケールチャートの時もでしたが、描画の軌跡が見えないのです。
何故だかわかりませんが、動作させるとちゃんとレーザーは照射されます。
それでは、ディザでの描画を動画で
騒音はレーザーモジュールのファンの音です。
TTL制御の結線にするとファンには常時12Vがかかります。
M4 Dynamic Laser Power Modeですが
点と点線なのでチカチカして照射しています。
Duty 30%位なのでレーザーパワー 1.5W位でしょう。
F1500に達していないようなので、1.5Wでてないかも?
Gcodeみると
ディザ[1bit BW Dithering]では、パワー(S値)はほとんど変化していません。
20分22秒で完了!
遠目に見るとかなりいい感じです。
続いて[Line To Line Tracing(レーザーパワー可変階調)]の方です。
ゴーグルなし
レーザーパワー可変階調の方を動画で
白のところだけスピードが早くなっています。
G0命令で移動しているので当たり前かな?
しかし、焼いている箇所は、本当にF1500なのだろうか?
Gcodeは、ちょっとずつS値を変えながら移動しているので加速できないようです。
こちらは、23分36秒で完了!
う~ん、ほとんど階調らしきものが見えませんね~
パワー可変で階調つけるのは、3~4階調が限界なのだろうか?
横に並べると差は歴然!
左:[Line To Line Tracing(パワー可変階調)]
右:[1bit BW Dithering(パワー固定ディザ階調)]
どうも、パワー可変[Line To Line Tracing]の方が気に入りません。
White Clipを空が真っ白になるようにしたのがいけないかもです。
Brightness、Contrast、White Clipをグレースケールチャートと同じにしてみます。
 Brightness:100、Contrast:97、White Clip:10にして
 S-MIN:100、S-MAX:1200
LaserGRBLでの結果はこれ
前より全体が濃くなっただけの気もします。
濃くなるとやっぱり遅いです。
空がグレーになり、空も描くのでなおさら時間かかります。
お~っ!いい感じです。
かなり階調付いています。
動画で
できました。
空も照射するので時間かかります。
前の設定と雲泥の差です。
600dpiでスキャンしたのでかなりサイズがでかいですが
拡大すると水平ラインの詳細まで見れると思います。
前の設定の描画絵(デジカメの撮影条件が違いますが)
裸眼で見ても、薄くて階調が出てなく、これ位の差があります。
LaserGRBLでのContrast、White Clipの設定でこんなに変わるんですね。
というかグレースケールのチャートで設定しないと
Preview見ただけではダメだということを物語っています。
1bit BW Dithring(パワー固定ディザ階調)]の方も
グレースケールチャートでテストした時と同じ
 Brightness:100、Contrast:101、White Clip:10にして
 S-MIN:100、S-MAX:1200
LaserGRBL v2.8.35での処理後はこれ。
こちらも空を描いたので時間かかりました。
S900⇒S1200にした分、黒が濃くなり引き締まっています。
これも600dpiです。
これも完成品をスキャナー600dpiで取り込んでいます。
描画の設定は、3 Lines/mm = 76.2dpiです。(この2行、2019.2.6追記)
前の設定。

この後、気づいたのですが
LaserGRBLでは、[Line To Line Option]の下の設定
てっきり[Vectorize!]の時だけと思い込んでいたら効きますね~
[Line To Line Tracing]では、
 [Horizontal(横線画)]
 [Virtical(縦線画)]
 [Diagonal(斜め線画)]
の3種が選べます。
3種のPreviewを並べると、
この写真は斜め線が多いからか[Diagonal]がコントラスト良さそうです。
左から[Horizontal(横線画)][Virtical(縦線画)][Diagonal(斜め線画)]
LCDディスプレイでモワレが邪魔するので拡大して見ると違いがわかるかと。
[1bit BW Dithering] では、
同じく[Direction]は、縦・横・斜めの3種。
更に[Dithering]項目もでてきます。
上と組み合わせるととんでもないことになりそうなので止めときます。
そして、両方式とも
[Quality]でLines/mmを設定できます。
そして[Line To Line Tracing(パワー可変階調)]の[Diagnal](斜め)が
気になって、また、グレースケールチャートをやってみたのがこれら。
横と縦はほぼ同じ時間ですが、斜めは少し時間かかります。
 横:5分52秒
 縦:5分21秒
 斜め:7分41秒
左3つが[Line To Line Tracing]の[Horizontal][Virtical][Diagonal]
右端が[1bit BW Dithering]
Virticalはパワーが弱くなって階調がでていません。
Diagonalは、一見かなり階調が良さそうに見えますが、
なぜか8分割で縦の濃い線(2段目の4階調部も8等分されて見える)ので
綺麗に階調が出てるように錯覚するのです。
同じS値の設定でもパワーの強さは、Diagonal>Horizontal>Virtical になるようです。
全て同じ S-MIN:100、S-MAX:1200にしているのにです。
これも600dpiです。
でも、何だか[Diagonal]も良さそうな気がして唐津城もやってみたくなり
グレースケールチャートと同じ
Brightness:100、Contrast:97、White Clip:10にして
S-MIN:100、S-MAX:1200
LaserGRBL v2.8.35での処理後は、これ
おっ! 思ってたより随分いいぞ!
同じ条件の[Horizontal]がこれなので期待できそう!
[Virtical]は、縦に、[Horizontal]は、横に描画していくのですが、
[Diagonal]は、この様に斜めに描いていきます。
全体的により黒い方にシフトしていますが、いい感じのようです。
動画で
薄い所は、早く動いていますが、濃い所は、明らかにFeedがノロイのです。
LaserGRBLが吐出したGcodeには、Feedを変えている所はないので
GRBL v1.1fのM4:Dynamic Laser Power Modeが制御しているのだろうか?
おまけ、PCのCandle(GRBL Controller)画面の動画です。
[Spindle]バーと数値がパラパラと変わっているのがよくわかります。
斜め(Diagonal)ができました。46分45秒もかかりました。
どうやら濃い方が時間かかるようです。
全体に黒い方にシフトしていて階調再現は[Horizontal]より低いような気がします。
でも黒さがあるので結構メリハリついていいですね~
横に線が入っているのは、ダンボール表面の凹凸の模様がでています。
これも600dpi
[Line To Line Tracing](パワー可変階調)の
[Diagonal](斜め線画)、[Horizontal](横線画)と
[1bit BW Dithering](パワー固定ディザ階調)の3方式を並べました。
この大きさだとディザに軍配が上がりますが
パワー可変階調でもここまでできるんですね。
紙を選べばもっと綺麗にできると思われます。
左から[Diagonal][Horizontal][Ditherng]
600dpi
最後に全体の様子です。
スパナは文鎮代わり!
今回の全作品。感が冴えていたのが意外と少なくできたと思います。
右側の唐津城は、最初の設定。
最初に描画した時は良く見えたのですが、いいやつと並べると結構薄いですね~
マーティーは他のソフトを使ったわけでなないのでJUST感想ですが。
LaserGRBLは、階調をつけるLaser描画には、よくできていると思います。
ただ、GRBL v1.1fへの対応が完成していない気がしますが
精力的に改善が進んでいるので良いソフトに仕上がるのではないかと思います。
Gocodeへ変換するだけなら既に十分な性能ではないかと思います。

所で、実は、途中でZ軸が2mmズレていました。
同じ条件でZを2mm変えただけでこの階調の差が出るのです。
どちらも[Line To Line Tracing]の[Horizontal
[Line To Line Tracing]は、レーザーパワー可変で階調をつけるので
レーザーの焦点をよ~~く合わせておかないと
ちょっとのズレで階調がでなくなるという実例です。
LaserGRBLで変換時のContrastやWhite Clip設定も微妙です。
思いついて、実験、追加です。
0~100%のグラディエーションをLaserBRGLで処理すれば
何bitで階調付けているかわかるかもと思ったわけです。
Incscape v0.92.2で0~100%のグラディエーションを付けました。
最も均等に割り付けるには、Previewを見ると
Brightness:100、Contrast:40(これがMIN)、White Clip:0
にすればいいと思います。
でGcodeを保存して、その一部を見ますと
S-MIN:0 ~ S-MAX:1000に対して、S値のステップは、最小4のようですので
何と!S値への変換は、約8bitの分解能です。
横は、0.333mm間隔でS値を変化させています。(1mm移動の所もチラホラ)
すごい!
*****
X.333 S121
X.667 S125
X.333 S129
X.333 S133
X1 S137
X.333 S141
X.333 S145
X.667 S149
X.333 S156
X.333 S152
X.333 S156
X.333 S160
X.333 S164
X1 S168
X.333 S172
X.667 S176
X.333 S180
*****

【補足】
S1000以上のS1200にしていますが、
Laser Mode ONのM4 Mode(Dynamic Laser Power Mode)では、
Duty 120%にはならないという解説です。

GRBL v1.1から「Laser Mode」が追加されています。
$32=1でLaser Mode ONにすると
M3:Constant Laser Power Mode
M4:Dynamic Laser Power Mode
が選択できます。
詳しくは、
小型工作機CNC2418 その30(GRBL v1.1f Laser Mode)」で調べました。

特にGcodeのF値(Feed)とS値と実際のDuty(max)との関係がややこしく
説明が分かり難いとは思いますが
小型工作機CNC2418 その34(GRBL v1.1f レーザー TTL制御)」で調べました。

マーティーのCNC2418(GRBL v1.1f)+5.5WBlueLaserで
実測して調べて所では・・・下のグラフの様になっています。

F176以下では、S値とDutyの関係は、Laser Mode ON/OFFに関係なく
 Duty比 = S値 ÷ 10
つまり、S100でDuty 10%、S1000でDuty 100% など、普通の状態です。

しかしLaser Mode ONのM4(Dynamic Laser Power Mode)では、
F176以上になると
S1000でもDuty maxは、100%にならないのです。(SQRT:√ 
 Duty比 = S値 ÷{1000 x SQRT(F値 / 176)}
例えば、F1000では、S1200でDuty max 50%となります。
しかもこれは、F1000に達した時のDutyのMAXであって
加速途中、減速中は、これよりDutyが小さくなります。

Duty比、F値がわかっている時のS値は、(SQRT:√ 
 S値 = Duty比 x{1000 x SQRT(F値 / 176)}
例えば、F2000でDuty max 50%にしたい場合は、
S = 0.5 x {1000 x SQRT(2000 / 176)}= 1685
Gcodeで $32=1 M4 S1685 G1... F2000 という具合になります。

ということで
GRBL 1.1fでLaser Mode ON、M4:Dynamic Laser Power Modeの時は
F1500 S1200では、Duty max=41% で動作するのです。
移動速度に応じてDuty 0~41%で変化することになります。
ちなみに、F1500では、S2919でやっとDuty max=100%となります。
Duty 41%だとマーティーの5.5W Laserでは、
入力電力:3.8Wとなり、効率50%として、レーザーパワー:約1.9Wとなります。
これは、F1500のスピードに達した時のパワーです。
描画している時は、このスピードに達していないことが多いので、
更に低いパワーで描画していることになります。

今年最後の投稿になります。
1月にCNC2418を組み立てて3月にブログを開始しました。
気がつくと、お陰様で36600超えのページビュー!
単純に365日で割ると100ページビュー/日になります。
(ページとは、1タイトルのことです)
沢山の方が見にきてくださり誠にありがたいことです。
コメントも沢山いただき活力になりました。
この場を借りて、お礼を申し上げると共に今後とも宜しくお願いします。
2017年、ありがとうございました。m(_ _)m

ちなみに開始から12/30までの全期間の国別ページビュー順位です。