レーザー彫刻機を使ったPCB基板作成 Laser Engraving PCB (2)

前回(レーザー彫刻機を使ったPCB基板作成)では、NEJE Masterを標準アプリで動かしてみました。いくつか制限もあったので、前から気になっていたLaserWebというアプリでレーザー彫刻をやってみました。

使用しているレーザ加工機は以下のタイプ

LaserWebの導入

Electron.jsというNode.jsアプリからデスクトップアプリケーションを作成するフレームワークで作成されている感じで、モダンなインタフェースになっています。

このアプリは、GRBLという3DプリンタやCNCフライス盤などを制御する機構(XYZ軸に沿ってステッピングモーターで、ホットエンドやレーザー、ビットなどを動かして造形する)のインタフェースに準拠しています。

https://github.com/grbl/grbl/wiki

NEJE MasterもGRBL云々の記載があったので、トライしてみたところ、制御できることは確認できました。

まずは、このアプリをGithubから取得します。以下から最新版(LaserWeb.Setup.4.0.996-134.exe) を取得&インストールします。

https://github.com/LaserWeb/LaserWeb4
https://github.com/LaserWeb/LaserWeb4-Binaries/
https://github.com/LaserWeb/LaserWeb4-Binaries/releases

NEJE Masterのファームウェア更新

入手した機体の時期に依存しますが、制御基板のファームウェアを最新版にしておきます。最低でもver1.1b以上に上げないと動作しない云々言われた気がします。以下のURLの下のほうにファームウェアを更新するツールがあります。

http://wiki.nejetool.com/doku.php?id=nejelaser_master

neje_grbl_uploader_v1.0.rar

USBでPCと機体を接続した後に、grbl-uploader.exeを起動すると以下のような画面が表示されます。

laserweb003

機体がPCにUSB接続されているポートを選択(分からん場合はデバイスマネージャなどで)して、一番新しいバージョンのボタンを押すとアップデートされます。終わったようなメッセージが出たらアプリは終了します。

NEJE MasterをLaserWebで制御できるか確認

起動直後

laserweb001

とりあえず、造形エリアのグリッドを設定します。(settings - Application)

laserweb002

Commsタブを選択して下図のように接続されているポートとボーレートを選択したら、Connectボタンを押します。

laserweb004

ログ出力エリアに以下のようなメッセージがでればOKです。ファームウェアが古いとこの時点で接続エラーになるはずです。

laserweb005

とりあえず手動で動かしてみます。Controlタブを選択してjog by 10mmあたりを選択します。そのあとで、Y+ Y- X+ X-を適当に押して、機体が動けばとりあえずOKです。

laserweb006

ボタン 機能 NEJE Master
home all 設定した原点に移動する 動作しない?
run job レーザー彫刻を開始する 動作する
abort job 彫刻を停止する 動作する
set zero 現在のレーザーポイント位置を原点に設定する 動作する
check size 加工パスを包含する四角形をスキャンする。これで加工対象とパスがズレてないか確認できる。 動作する(Gcode生成後)
Laser Test 設定した出力で押したときに照射する? 動作せず
XY +- 指定した距離だけ移動する 動作する

おそらくNEJE Masterは完全にGRBLコマンドをフルサポートしているわけではないので、押しても反応しないボタンはいくつかありますが、問題にぶち当たるまでは無視します。

LaserWebの基本的な使い方メモ

https://darklylabs.zendesk.com/hc/en-us/articles/115002901431-LaserWeb-Interface-Overview

まずは簡単な形状をDXFファイルで用意します。以下はFlatCAMのGeometryエディタで5㎜間隔で20mmの直線を3本描画してDXFへエクスポートしてます。sample01.dxf

laserweb008

LaserWebのFilesタブを選択して、作成したDXFファイルをAdd Documentから選択します。

laserweb007

ビューにロードした形状が表示されます。(3本の縦線が表示)

laserweb009a

Gcode欄にDXFファイルをドラッグ&ドロップします。

laserweb011

Gcode欄に選択した加工パス(3本線)に対して、どのようにレーザーを照射させるかを指定します。

laserweb013

デフォルトだと、Laser Cutが選択される。これは指定パスの上をスキャンするだけの一番シンプルなパターンになり、レーザー強度と速度、回数を指定する。

パラメータ 機能
Name 任意の名前?指定しなくても照射可能
Filter Fill SVGをインポートしたときに塗りごとに指定?
Filter Stroke SVGをインポートしたときにストロークごとに指定?
Laser Power レーザーの出力[%]
Passes パスを何回スキャンするか?
Cut Rate スキャンスピード。NEJE Masterの場合、1~10mm/s程度の範囲で正しく動作している感じ。
それ以上のスピードを指定しても10mm/sと変わらない。
Use A Axis 不明
Segment 円弧のディテールかと思われる。0のときは最高精度になる。

Laser Cut InsideおよびOutsideは、レーザースポット径とマージンを指定して外周や内周を彫刻する。FlatCAMでオフセットする必要がなくなる。

laserweb014

Laser Fill Pathは、閉じた領域を塗りつぶす方式で、マージンと間隔を指定する。

laserweb015

DXFファイルのパスや彫刻の方法などは複数指定できるので、

  • カット位置の彫刻 (Laser Cut)
  • PCBパターン (Laser Cut Outside)
  • パターン面除去 (Laser Fill Path)

などの使い分けもできそう。

ほかにもDXFの代わりにラスタ画像を使った彫刻も可能。

問題点(解決済み)

上記の3本線を彫刻すると、下図のような結果になる。

laserweb016

フィード時のレーザー出力が強すぎて、移動中も彫刻されてしまう。LaserWebの出力するG-codeの内容が以下になる。

G21         ; Set units to mm
G90         ; Absolute positioning
M4 S0       ; Enable Laser/Spindle (0 power)

;
; Operation:    0
; Type:         Laser Cut
; Paths:        3
; Passes:       1
; Cut rate:     5 mm/s
;


; Pass 0

; Pass 0 Path 0
G0 X2.00 Y-10.01
G1 X2.00 Y0.00 S1000.00 F300

; Pass 0 Path 1
G0 X7.01 Y0.00
G1 X7.01 Y-10.01 S1000.00 F300
G1 X7.01 Y-10.01

; Pass 0 Path 2
G0 X12.01 Y-10.01
G1 X12.01 Y0.00 S1000.00 F300
M5          ; Disable Laser/Spindle

G0がフィードになるが、レーザーOFFのコマンドになるM05が存在しない。M4 S0でレーザが100%になったまま最後のM5まで、出力が変わってない。G1で直線を引く前後に、M05(ON) => G1 => M03(OFF)となるようにテキストエディタで編集して実行したところ、正しく彫刻してくれた。

G21         ; Set units to mm
G90         ; Absolute positioning
M4 S0       ; Enable Laser/Spindle (0 power)

;
; Operation:    0
; Type:         Laser Cut
; Paths:        3
; Passes:       1
; Cut rate:     5 mm/s
;



; Pass 0

; Pass 0 Path 0
M05 ; laser off
G0 X2.00 Y-10.01
M03 ; laser on
G1 X2.00 Y0.00 S1000.00 F300

; Pass 0 Path 1
M05 ; laser off
G0 X7.01 Y0.00
M03 ; laser on
G1 X7.01 Y-10.01 S1000.00 F300
G1 X7.01 Y-10.01

; Pass 0 Path 2
M05 ; laser off
G0 X12.01 Y-10.01
M03 ; laser on
G1 X12.01 Y0.00 S1000.00 F300
M5          ; Disable Laser/Spindle

laserweb017

ちなみにInkscapeのLaserアドオンでNCファイルを出力すると以下になる(座標位置は合わせてないので無視)


G90 ; 絶対座標
G21 ; mm unit
G0 X32.642 Y65.0707 ;seek

M03 ; laser on
G1 F30.000000
G1  X32.642 Y49.2831
M05 ; laser off

G0 X24.3215 Y64.644 ;seek

M03 ; laser on
G1 F30.000000
G1  X24.3215 Y48.8564
M05  ; laser off

G0 X17.0677 Y64.4307  ;seek

M03 ; laser on

G1 F30.000000
G1  X17.0677 Y48.4297
M05 ; laser off

G0 X0.000 Y0.000 ;seek
M05 ; laser off
M02 ; EOF

Gコードの出力パターンを変更する

どうにかならないか、アプリの設定を眺めていたら、それらしき設定がありました。デフォルト状態のGコード設定が以下になる。GCODE ENDTOOL ONTOOL OFFあたりを修正すれば、いけそうな予感。

laserweb018

以下のように変更してみる。

  • 加工前にM03
  • 加工後にM05
  • 終了時にM02

laserweb019a

設定変更後、もう一度、加工パスからGコードを生成してみたところ、以下のコードになった。

G21         ; Set units to mm
G90         ; Absolute positioning

;
; Operation:    0
; Type:         Laser Cut
; Paths:        3
; Passes:       2
; Cut rate:     5 mm/s
;


; Pass 0

; Pass 0 Path 0
G0 X2.00 Y-10.01
M03
G1 X2.00 Y0.00 S1000.00 F300
M05

; Pass 0 Path 1
G0 X7.01 Y0.00
M03
G1 X7.01 Y-10.01 S1000.00 F300
G1 X7.01 Y-10.01
M05

; Pass 0 Path 2
G0 X12.01 Y-10.01
M03
G1 X12.01 Y0.00 S1000.00 F300
M05


; Pass 1

; Pass 1 Path 0
G0 X2.00 Y-10.01
M03
G1 X2.00 Y0.00 S1000.00 F300
M05

; Pass 1 Path 1
G0 X7.01 Y0.00
M03
G1 X7.01 Y-10.01 S1000.00 F300
G1 X7.01 Y-10.01
M05

; Pass 1 Path 2
G0 X12.01 Y-10.01
M03
G1 X12.01 Y0.00 S1000.00 F300
M05

; End of Program
M02

実際の加工結果が以下になった。

laserweb020a

どうにか使えるようになりました!

-->