2018年1月27日土曜日

EAGLE 8.5.2でPCB-Gcode 3.6.2.4(ULP)の試用

昔青年さんから教えていただいた
EAGLE Ver.8.5.2でのGcodeエクスポートのULP(User Langage Program)である
PCB-GCodeの修得記録です。
年始からEAGLEにどっぷり状態です。

EAGLE Ver.8.5.2です。

AUTODESKのサイトで「Gcode」を検索すると
これが出てきました。
10.25.2013!ちと古いですね~
ここに新しいのがありました。
04/15/2017 結構新しいですね~
2番目にさっきのやつがあります。個人の方が作ったFreeソフトなんですね~
[Release 3.6.2.4]から次のページに進みますが、
上の方のリンクが切れていて、下の方のここからダウンロードします。
解凍すると[docs]フォルダに「pcbgcode.pdf」User's Manualがありますが
インストールのやり方は、ここを参考にさせていただきました。m(_ _)m
設定項目は、この英語サイト
解凍して[docs]フォルダにある「pcbgcode.pdf」User's Manualを
読みまくる羽目に!

インストール方法ですが、ダウンロードしたファイルを解凍して
EAGLEインストールフォルダの[C:\EAGLE 8.5.2\ulp]に
解凍した[pcb-gcode-3.6.2.4]フォルダごと移動します。
EAGLE Ver.8.5.2 free を起動してControl Panelの
[Option]-[Directories]
このボックスがでるので
[User Langage Program]の右の欄でカーソルをクリックしてから
下の[Browse]ボタンを押します。
青枠のの所が[Add...for User Langage Program]になっている事を確認して
[pcb-gcode-3.6.2.4]フォルダを選択して
下の[フォルダーの選択]ボタンを押します。
前の画面に戻るので[OK]
これでインストールは完了ということです。
[User Langage Program]の「$EAGLEDIR\ulp」の後ろに
[;C:/EAGLE 8.5.2/ulp/pcb-gcode-3.6.2.4]
[;C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4](2018.3.15修正)
が追加されています。
いわゆる、環境変数のPATHだったんですね。
この欄に手動でフォルダーPATHを「;」を付けて追加してもよいようです。
PCB-Gcodeの設定を行います。
EAGLEを立ち上げます。
[File]-[New]-[Board]でBoard Editorを立ち上げます。
[Run ULP]アイコンをクリック。
右上のプルダウンメニューから
[pcb-gcode-3.6.2.4]フォルダを選択して
[pcb-gcode-setup]を選択して[OK]
文字が小さくて見え難いですが
[C:/...../pcb-gcode-3.6.2.4/profiles/generic.pp]を選択して[Accept]します。
この画面は、最初の1回だけです。
もう一度やり直したい時は、[pcb-gcode-3.6.2.4]フォルダの
「pcb_gcode_is_setup」を削除すれば、またでてきます。
左上のノートみたいなアイコン、本当は、このロゴがでるようなのですが
参考サイトのスクリーンショットもノートのロゴになっています。
EAGLEのバージョンが新しいと、正常な画がでないのだろうか?
あ゛~~~~っ
下の方が画面からはみ出して見れません。
これ以上、小さくもできません。
マーティーPCは、解像度 1366 x 768 が最大なのです。
初っ端でつまずくとは、う~どうしようか?
[Windows]+[P]キーのショートカットで
Windows10の拡張ディスプレイ機能を呼び出すも
デスクトップ拡張機能は、2台のディスプレイがないとダメなのです。
とりあえず、画面を横にしてキャプチャーしてみました。
PCを横倒しにして使うわけにもいきません。NotePCなのでキーボード打てないし。
ノートになっているロゴが大き過ぎるんですね。
本来、ここには次の画像がでるはずなのです。
C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\docs\images
にあります。
しばし横道に逸れてしまう事になりました。
「pcb-gcode-setup.ulp」をワードパッドで開いていじります。
上の3つの画像を「pcb-gcode-setup.ulp」と同位置のフォルダに入れて
リンクを編集しましたが、「ノートロゴ」のままなのです。
なぜ画像が出ないんだろう?HTML作法の「’」を「”」に変えてもダメです。

上の3つの画像のスクリプトの行を変更してでサイズが小さくなるように
「width=300」⇒「width=50」にしてみると
マーティーPCのデスクトップ画面内に納まりました。
ここで妥協しようとも思いましたが、
どうしても正規の図を入れたいですね~
そうだ、gif画像を指定している所にフルPATHを入れてみます。
マーティーの場合のフルPATH
C:/EAGLE 8.5.2/ulp/pcb-gcode-3.6.2.4/」を
C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\」を(2018.3.16修正)
3箇所ある「docs」の前に追加します。
\」の代わりに「¥」ではダメです。ひらがな「ろ」キーのバックスラッシュです。

(2018.3.16修正 「/」⇒「\」)
***①変更前***
dlgLabel("<img src='docs\images\isolation_settings_300.gif' width='300'\>");
*********
***①変更後***
dlgLabel("<img src='C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\
docs\images\isolation_settings_300.gif' width='300'\>");
*********

***②変更前***
"<img src='docs/images/pcbgcode-600.gif' width='300'/>"
*********
***②変更後***
"<img src='C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\
docs\images\pcbgcode-600.gif' width='300'\>"
*********

***③変更前***
dlgLabel("<img src='docs\images\z_axis.gif'\>");
*********
***③変更後***
dlgLabel("<img src='C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\
docs\images\z_axis.gif'\/span>/>");
*****
でました!でました!
この画像があるのとないのとでは、やる気が変わります。(^^ゞ
ここまで消沈していた気分も一気に急上昇!
ということで
PCB-Gcodeの設定を最初から行きま~す。
一旦、[pcb-gcode-3.6.2.4]フォルダの
「pcb_gcode_is_setup」を削除します。

EAGLEを立ち上げます。
[File]-[New]-[Board]でBoard Editorを立ち上げます。
[Run ULP]アイコンをクリック。
右上のプルダウンメニューから
[pcb-gcode-3.6.2.4]フォルダを選択して
[pcb-gcode-setup]を選択して[OK]
この画面が出ます。
「pcb_gcode_is_setup」を削除しておかないと
この画面が最初の1回しかでないからです。
もう何度やり直したことか(^^ゞ

ここは、User's Manualをみると
「自分のControllerに最もマッチするGcodeスタイルを選択する」とありますが
CNC2418+Candle(GRBLcontrol)にはどれが適しているんだろう?
文字が小さくて見え難いですが
右の説明に「tries to be very compatible」とあるので
[C:/...../pcb-gcode-3.6.2.4/profiles/generic.pp]を選択して[Accept]します。
これがいいかと思います。
この画面[Generation Options]がでてきます。
[pcb-gcode-setup]の2回目からは、上の画面はでず、即この画面になりますが
上と同じ項目は、[GCode Style]タブにあります。
ようやく肝心の設定です。
ここから先は、
[docs]フォルダの「pcbgcode.pdf」User's Manualと
英語サイトのここは、添付のUser's Manualより詳しく説明があります。
Googleの英語の先生と一緒に見ながら意味を解明していきます。

青文字がデフォルトから変更した所です。

まず、簡単そうな[Machine]タブの設定から

《Machine》タブ
マーティーの《Machine》タブの設定です。
<Units>
Millimetoers:他のタブ項目も全て「mm」になります。

<Z Axis
Z High]:10mm:退避時の高さ
Z Up]:2mm :移動時の高さ
Z Down]:-0.1mm:銅箔を削る深さ
Dril Depth]:-2.0mm:ドリルの深さ
Drill Dwell]:1 secs:ドリル切削の最深部での待機時間

<Tool Change>
 M06での工具交換位置の座標
Position X]:0mm
Position Y]:0mm
Position Z]:10 mm:CNC2418では高過ぎる気がするので

<Spindle>
[Spin Up Time]:3secs:スピンドル回転安定までの待機時間

<Feed Rates>
Etch]:パターン切削
Drill]:穴開け
Mill]:基板外形カット(ミルの径は指定できないのか?)
Text]:文字彫り
Stencil]:ソルダーマスクの薄いシート切削
XY][]:Feed Speed mm/min(Units:Millimetersなので)
Spindle rev/min]:スピンドル回転数だが、入力値=GcodeのS値
Tool Dia]:工具の直径

で表形式になっている設定は、
units/mm     XY   Z   Spdl rev/min Tool Dia
Etch]   : 150   80   800    0.2 mm
Drill    000   25   800
Mill]    300 150   800
Text   600 300   800
Stencil]  : 300 150   800    0.2 mm
(2018.3.16修正)
Etch]   : 500 250   800    0.1 mm
Drill    000 150   800
Mill]    : 300 150   800
Text   : 500 250   800
Stencil]  : 500 250   800    0.1 mm

<Misc>
Epsilon]:Gcodeの動きの最小単位。これ以上細かい動きは丸められる
Default Drill Rack File]:ドリルラックなんてないのでそのまま

次は、
《Generation Options》タブ
マーティーの《Generation Options》設定はこれ。
ここは、各項目の意味がわかり難く、解説が長くなりました。
User's Manualと英語サイトを何度も読まねばなりませんでした。
最後の方で、読んで理解した内容を検証しています。


<Top Side>
Generate top outline]:Top(部品面)のパターン切削Gcode生成
Generate top drills] :Top面のドリル穴開けGcode生成
Generate top stencil]:Top面の文字彫りGcode生成
今回は、片面なので全部チェックを外します

<Bottom Side>
Bottom top outline]:Bottom(裏面)のパターン切削Gcode生成
Bottom top drills] :Bottom面のドリル穴開けGcode生成
Bottom top stencil]:Bottom面の文字彫りGcode生成
Mirror]      :Gcodeを左右反転する
      通常は、原点右下でGcodeX座標がマイナス値になる
      Mirror ONでは、左右反転し原点左下、X座標はプラス値になる
デフォルトのまま「outline」と「drills」にチェックです。

<Board>
Show preview]:PreviewerでGcodeをプレビューする画面のサイズ
          PreviewerはJavaをインストールする必要があります
Generate milling]:Milling(46)Layerの外形カットGcode生成と切削深さ
 (英語サイトでは、1回で掘る設定しかできないので別の方法を推奨しています)
 (User's ManualにはMulti Passできるとあるが、設定はみつからないです)
Generate text]:Milling(46)Layerの文字堀りGcode生成と切削深さ
Spot drill holes]:パターン切削ミルでドリル穴中心にガイド切削する深さ
          ドリル穴開け時にセンターズレを軽減する
Prefer climb]:チェックすると時計回りでパターン切削する
Isolation]:
-[Single pass]:パターンの周りを1回だけ切削する場合
           チェックすると[Minimun]のみの設定になる
-[Minimum]:1回目の切削で工具先端半径に加えて離す距離

***[Minimum]の詳細***
 ストレートミルでは、工具中心パスは、切削ラインより先端半径分ずらします。
 Vカッターは、テーパーがあり、深く掘るほど先端径より切削幅が広くなるので
 工具中心パスを更に[Minimum]設定分、外側を切削するのです。
 例えば、テーパー20°のVカッターで0.1mmの深さで切削すると
 小さい数値ですが、0.1mm x tan(20°/2)=0.018mm 多めに切削されます。
 深さ0.05mmだと、0.009mm。深さ0.2mmだと、0.035mm。
 その過剰になる分を[Minimum]として設定して避けるのです。
 なので、テーパー角と深さに依存しますが、0.01~0.04mm辺りが妥当かと。
 この小さな数値を気にしなければ、デフォルトの0.01や0mmでもいいでしょう。
***[Minimum]の詳細ここまで***

Isolation]:の項目の残り
 -[Maximum]:パターン間の切削の最大距離。
          これより間隔がある所は、銅箔が残る。
          通常は、0.3~0.5mmでいいと思います。
          (その後、最大切削量=Maximumでないことが判明)
          (詳細は、最後の方の検証にて)
 -[Step size]:マルチPassの1回のステップ距離。

***[Step size]の詳細***
 ここは、エンドミルの径に依存します。
 英語サイトの説明の下図では
  ・左のストレート End Millでは、直径の40%
  ・右のEngraving Bit(Vカッター)では、先端平坦部直径の100%
 Engraving Bit(Vカッター)は、テーパーになっているので
 切削はV溝で溝の開口部は、先端平坦部の直径より切削幅が広くなります。
 テーパー角:20°、深さ:0.1mmだと
 切削幅は、[2 x 0.1 x tan(20°/2)]=0.035mm 先端径より広くなり
 その分オーバーラップして切削できるから100%でよいのです。 
 右のVカッターの場合は、Step size=先端径 でいいということです。
出所:http://www.richa1.com/RichardAlbritton/create-g-code-from-an-eagle-file/
 間隔が広い所では、Step sizeでMaximumの箔間距離に達するまで
 切削を繰り返すようです。それ以上は、削らないので銅箔が残ります。
 (ほぼこの意味ですが、後の検証で、最大切削量=Maximumでないことが判明)
 ([Minimum]も絡んできます)

 User's ManualのFigure 1.2を見るとPreviewerの画像があります。
 色は、何回目の切削Passかを示しています(抵抗のカラーコードと同じ)
 茶色~白まであるので全部で9回。
  緑枠の所は、丁度9回でこの領域を削りきっています。
  赤枠の所は、狭いので茶・赤・橙と3回で終わっています。
  白枠の所は、9回でも中に削らない所(黒部)ができています。
 ということで箔間距離によって自動的に回数を決めているようです。
 (後の方で式を導き出しています)
pcb-gcode-3.6.2.4 User's Manual Figure 1.2
***[Step size]の詳細ここまで***

で、結局の設定値ですが
マーティーは、CNC2418に付属していた「Vカッター」
先端径0.1mm、20°テーパーを使って深さ0.1mmにする予定なので
Minimum] :0.02mm:切削深さ x tan(テーパー角÷2)で算出
Maximum]:0.5mm:お好みで
Step size] :0.1mm:Vカッターの先端径と同じ
にします。

ちなみにCNC2418に付属していた「Vカッター」です。

5種類ありますが、付属していたのは「Model2」
出所:AliExpress DZT's Store
 [Minimum]項目なんかの意味を調べていたら
テーパー10°の「Model1」も欲しくなってきましたが、
10本組で、通常価格:US$ 7.5、時々30%OFFのUS$ 5.25になります。
30%OFFになるまで待ちます。
出所:AliExpress DZT's Store
ややこしい設定は、ここまでのようです。

《GCode Options》タブ
ここは、あまり触らなくていいようですが
マーティーの《GCode Options》設定です。
デフォルトでは、生成されるGcodeにかなり長いコメントが入るので、
Gcode Sender(CandleやbCNC等)でエラーがでた時は、チェックを外します。
<NC File Comments>
NC File Comment from Board
NC File Comment Date
NC File Comment Machine Settings
NC File Comment Pcb Default Settings
 デフォルトのままチェック有りにしておきます。

<Other Options>
Do tool change with zero step]:
 工具交換で一時停止した後、ゼロステップで工具を変更すると
 Z軸がZ0.000に移動して一時停止するので、工具をPCB表面に接触させて
 Zゼロ調整することができる。
 デフォルトのままチェックしておきます。

Use simple drill code:単純なXYZ移動でドリル穴を開ける。
 チェックなしでは、DRILL_FIRST_HOLEとDRILL_HOLEが使用され、
 一部のコントローラではコマンドを理解できない(典型的なのはG82)
 と説明がありましたが、意味不明です。
 英語のサイトの勧めで、ここはチェックをつけます

<File Naming>
 生成されるGcodeが「***.tap」というエクステンションになるので
 「***.nc」になるように、一箇所だけ変更します。
 [Extension]:tapnc

《GCode Style》タブ
一応、[...../generic.pp]をクリックしてブルーにしていますが
初回のsetupで指定しているので関係ないみたいです。

《Plugins》タブ (デフォルトのまま)

ようやく設定完了です。
どこのタブでもいいので[Accept]クリックして設定を保存します。
ちなみに、
Boardファイルを開いていない状態で[Accept and make my board]すると
EAGLEがフリーズして大変重くなり最後は、動作停止の通知がでます。
マーティーはやってしまいましたが、setupの内容は残っていました。
貴重なスクリーンショット?
EAGLEを再起動し、前に作ったBoardファイルを開いて
[ULP]から[pcb-gcode-3.6.2.4]の[pcb-gcode]を実行すると、
怒られました!
Javaを入れてないとダメなのか~
そういえば、User's Manualに書いてあったな~
Javaを探します。
マーティーPCは、Windows10 64bitなので「Javeのマニュアル・ページ」から
[Windowsオフライン(64ビット)]をダウンロードします。
が、下の方に
「32ビットと64ビットのブラウザを切り替えて使用している場合、両方のブラウザでJava Plug-inを使用できるように、32ビットと64ビットの両方のJavaをインストールする必要があります。」とあります。
EAGLE、Chrome、Firefoxは、どれも64bit版を入れているので大丈夫でしょう。
こんなファイル名。
ダウンロードした「jre-8u161-windows-x64.exe」を実行してインストール。
Javaのインストールは記録しなくでいいでしょう。
無事インストールされたようです。

で、再度、
EAGLEを再起動し、前に作ったBoardファイルを開いて
[Run ULP]アイコンをクリック。
右上のプルダウンメニューから
[pcb-gcode-3.6.2.4]フォルダを選択して

[pcb-gcode]を選択して[OK]
PCBのパターンや周辺がパタパタ青くなって待つこと数秒。
おお~!できました。
Preview Windowでてきました!
KEY Commandが上の方に赤文字で書いてあります。
+/-:拡大/縮小、←→↑↓:移動、:x1倍、:x2倍、C:Color/BW、
:終了   とあります
キーでカラー/白黒表示がトグルします。
白黒表示はこれ。
+/- キーで左下部を拡大してみます。
これいいですね~
茶・赤・橙・黃・緑・青の6Passになっています。
[Maximum]:0.5mm なのに、最大0.6mmなのです。
(この謎については、後ろの方で解明しています)
白丸枠の所は、6Passでは切削しきれず黒の銅箔が残っています。
Preview画面の右上の[X]で終了すると
裏にこれが隠れていました。[OK]で終了します。
ちなみにPreview画面を開いたまま、Board Editorで作業なんかすると
「Permission denied」!って怒られます。つい閉じるのを忘れるんです。
で、ファイルが3つできています。
***.bot.etch.nc」:パターン切削(Etching)のGCode
***.bot.drill.nc」:ドリル穴開けのGCode
***.b##」:設定やボードの全て情報がTEXT化されているようです。
Boardファイル名は、「TEST_LED01.brd」です。
パターン切削の「***.bot.etch.nc」ワードパッドで開いてみると。
先頭から切削初期の所まで抜粋しています。
最初の方に沢山のコメントが
setupで[GCode Options]-[NC File Comments]のチェックを全部外すと
Gcode内のコメントは、入らなくなります。

[Spindle rev/min]:800 で、「S800」になっています。感が当りー!

それにしても全てG01命令だけで、円弧命令のG02・G03は、使ってないので
かなり細かく刻んだGcodeになっています。

「G04 P3.000000」は、ドウェルで、「P」:sec、「X」:msecです。
設定時間だけプログラム休止して、スピンドルの回転安定を待ちます。
調べると、「P」:ミリ秒ともありましたが
後で実際にCNC2418で動作させると「P3.0」で3秒停止していました。
*****
(.../pcb-gcode-3.6.2.4/pcb-gcode.ulp)
(Copyright 2005 - 2012 by John Johnson)
(See readme.txt for licensing terms.)
(This file generated from the board:)
(.../Marty/Downloads/TEST_LED01.brd)
(Current profile is .../pcb-gcode-3.6.2.4/profiles/generic.pp  )
(This file generated 2018/01/26 21:48)
(Settings from pcb-machine.h)
(spindle on time = 3.0000)
(  Tool Size)
(0.1000 )
(spindle speed = 800.0000)
(tool change at 0.0000 0.0000 10.0000 )
(feed rate xy = F500.00 )
(feed rate z  = F250.00 )
(Z Axis Settings)
(  High     Up        Down     Drill)
(10.0000 2.0000 -0.1000 -2.0000 )
(Settings from pcb-defaults.h)
(isolate min = 0.0200)
(isolate max = 0.5000)
(isolate step = 0.1000)
(Generated bottom outlines, bottom drill, )
(Unit of measure: mm)
(Metric Mode)
G21
(Absolute Coordinates)
G90
S800
G00 Z10.0000 
G00 X0.0000 Y0.0000 
M03
G04 P3.000000
G00 Z2.0000 
G00 X-1.0412 Y1.1299 
G01 Z-0.1000 F250.00 
G01 X-1.1299 Y1.0412 F500.00 
G01 X-1.2385 Y0.9785 
G01 X-1.3597 Y0.9460 
*****

Candle v1.1.7(GRBLcontrol)で開くと
なるほど~ 確かに右下原点でX軸がマイナス方向になっています。
上のGcodeもX軸はマイナスになっていますね~

X軸がマイナス方向に動くのは余り気持ちよくないので
ULP[pcb-gcode-setup]して[Generation Options]で[Mirror]してみます。

Previewはこうなりました。上と同じBoradファイルです。
X軸原点が左側に来ますが、パターンも左右反転していますね~
いわゆる部品面からパターン面を透かして見ていることになります。
X軸原点左下で、左から右へのプラス方向移動のGcodeを期待したのですが...
ここは、そのままでCNC2418の作業時に注意するしかありません。
ぼーっとしてると、原点の右側にパターンができるつもりが
左側を削り始めたって事になりかねません。
ということで、半実働テストに行きます。
手持ちのCNC2418のボード(Woodpecker)の予備をUSBで接続します。
いわゆる、ステッピングモーターやスピンドルを繋いでない状態です。
【パターン切削】

Candle v1.1.7にパターンのGcode「TEST_LED01.bot.etch.nc」を読み込み
[send]ボタンで開始!
G04 P3.000000の所は、ちゃんと3秒待っています。

削る順番は、Previewerの色の順番(抵抗のカラーコード順)ですね~
《Generation Options》の[Boards]の
[Spot drill holes]:-0.2794mm(デフォルトのまま)に数値を入れているので
Vカッターでドリル穴の中心を深さ0.3mm程、ガイド切削しています。
ドリル穴開け時にセンターズレを軽減するためです。

ん~ん、これは、いい~

エラーなしで終了しました。



【ドリル穴開け】
一方、ドリルの方「TEST_LED01.bot.drill.nc」は、Errorがでます。

M06:工具交換命令なので[Ignore]で先に進みます。

M06の所が何箇所かありますが、それ以外は、エラーはでず終了しました。


Gcodeをよく見ると、

随所に工具交換があり、たぶん次の動きを想定していると思われます。

 ①スピンドルが止まって
 ②工具交換命令で
  交換位置([Tool Change]で設定した座標)に移動してPAUSE。
  工具を交換し短かめに固定しRESUMEすると
 ③スピンドル停止状態でZゼロに降りてきて
 ④M06でPAUSE。ここで工具をZゼロに合わせて固定。RESUMEすると
 ⑤移動位置まで上がり
 ⑥スピンドル回転開始...次の穴開けへ
*****

①M05
②M06 T01  ; 0.8000
③G01 Z0.0000 F150.00
④M06
⑤G00 Z2.0000
⑥M03
*****

Candle(GRBLcontrol)v1.1.7で動作させてみると。
 ①でスピンドルは停止します。
 ②で下のボックスのErrorがでて止まります。
  Gcodeが「G00 Z2.0000」まで先読みされているので
  「M06 T01  ; 0.8000」「M06」が一緒にError処理されます。
  ここで[Ignore]ボタンを押すと
 ③でスピンドル停止のままZゼロに降りてきます。
 ④で停止しません。
  先に「M06」命令も一緒に「Ignore」処理したことになっているので
  止まらずに先に進みます。

これでは、最初の停止で工具の交換はできますが、Zゼロの調整ができません。
工具交換のZ位置は、10mmにしているので
10mmの台座でもあれば、調整できないことはないですが...
或いは、適当な台座の高さに合わせて、交換時のZ位置を設定すればできますね~
或いは、ドリル径毎に手動でGcodeファイルを分離するか?
実践の時が来たら考えることにします。
ちなみに《GCode Options》タブの<Other Options>の
Do tool change with zero step]のチェックを外すと
③と④がないGcodeが生成されます。
*****
①M05
②M06 T01  ; 0.8000
⑤G00 Z2.0000
⑥M03
*****

関係ないだろうとは思いつつも
[Use simple drill code]のチェックを外してみましたが
マーティーが試したBoardでは、
「G04 P3」の後に「G00 Z2」があるかないかの微妙な違いだけ。

***ON:[Use simple drill code]チェック有り***
M06 
G00 Z2.0000 
M03
G04 P3.000000
G00 X-5.0800 Y3.8100 
*****

赤文字の所に「G00 Z2.000000」が追加されています。
どう考えても意味が無いと思うのですが...
***OFF:[Use simple drill code]チェック無し****
M06 
G00 Z2.0000 
M03
G04 P3.000000
G00 Z2.000000
G00 X-5.0800 Y3.8100 
*****

【外形カット】
続いて、外形カットもやってみます。
[Generation Options]の[Board]の
[Generate milling Depth]にチェックを入れ、やってみます。
が、Previewは、真っ黒(´-﹏-`;)
BottomとTopの2つのMilling(外形カット)のGcode
***.bot.mill.nc」と「***.top.mill.nc」ができますが
中身の切削の所には、切削命令が何もないのです。
*****
G90
S800
G00 Z10.0000 
G00 X0.0000 Y0.0000 
M03
G04 P3.000000
M05
M02
*****

そうだ、User's Manualに「MillingはLayer46」ってあった記憶が!
Board Editorで[Line]アイコンして
上の方のLayer選択のドロップダウンメニューで
46 Milling]を選択 して
[Radius][Width]はデフォルトのままです。
外形をなぞるように角で左クリックしていって囲みます。水色の線になっています。
四角の外形を囲み終わったら[ESC]で抜けます。
で、[Generation Options]の[Board]の
[Generate milling Depth]にチェックを入れ、「-1.6」mmにします。
[Accept and make my board]すると
最初にパターンのReviewがでるので、右上[X]で閉じると
裏に隠れていたこれがでるので[OK]で閉じます。
これ、いつもPreviewerの裏に隠れているんですよね~
これを先に[OK]すると、一発で閉じると思ったら
「Permission denied」!って怒られます。ので、順番に閉じましょう!
次にTOPの外形カットのPreviewがでて、四角の外形が確認できます。
右上[X]で閉じると
また、裏に隠れていたこれがでるので[OK]で閉じます。
今度は、BOTTOMの外形カットのPreviewがでます。
当然TOPと全く同じですが、四角の外形が確認できます。
TOP、BOTTOMと必ず2つ出るようです。 右上[X]で閉じて
またまた、裏に隠れていたこれがでるので[OK]で閉じます。
ファイルが5つできています。
 「***.bot.etch.nc」:パターン切削
 「***.bot.drill.nc」:ドリル穴開け
 「***.bot.mill.nc」:Bottomの外形カット
 「***.top.mill.nc」:Topの外形カット
 「***.b##
外形カットを表と裏どちら側からでも加工できるするためなんでしょうかね?
GCodeの中身を見ると
英文サイトで言ってた通り、-1.6mmの深さを一発堀りです。(´-﹏-`;)
外形は、35 x 20mmなので、工具径も加味されていないですね~
工具径の設定箇所はないので、外形を描く時に何かツールがあるのかもですが、
まだ、肝心なBoard Editor側の設定は、よくわかってないのです。
CNC2418では、マルチパスで掘れないのは致命症ですので
外形カットは、Fusion360でやるのが良さそうです。タブもつけれるし。
この前やったFUSION SYNCを使えば、外形は簡単にFusion360に引渡せます。
*****
G90
S800
G00 Z10.0000 
G00 X0.0000 Y0.0000 
M03
G04 P3.000000
G00 Z2.0000 
G01 Z-1.6000 F150.00 
G01 X-35.0000 Y0.0000 F300.00 
G01 X-35.0000 Y20.0000 
G01 X0.0000 Y20.0000 
G01 X0.0000 Y0.0000 
G00 Z10.0000 
M05
*****

【[Minimum]の詳細分析】
ここからは、パラメーターの意味を分析するための実験です。
特に[Minimum][Maximum][Step size][Tool Dia.]と
パターン切削のされ方、最大パターン切削量について
User's Manualと英文サイトの説明から想像で設定していた所もあったので、
色々やってみました。

最初に
ULP[pcb-gcode-setup]して[Generation Options]の[Minimum]を
0.2mmにしてみます。
Preview画面は、こうなりました。
拡大して[Minimum]0mmと0.2mmで比較してみます。
[Minimmum]だけの差です。左:0mm     右:0.2mm
[Maximum][Step size][Tool Dia.]同じです。
0.2mmの方は、最大切削量が、0.4mmで[Maximum]指定値より小さいです。
これは、切削回数が、[Maximum]÷[Tool Dia.(工具径)]で決まるのではなく
最大切削量 = 工具径[Tool Dia.]+[Maximum]-[Minimum]になっています。


















今度は、共に[Minimum]:0で
工具径[Tool Dia.] 0.1mm と 0.2mm で比較します。

最大切削量 = 工具径[Tool Dia.]+[Maximum]-[Minimum]で合います。

0.1mmの方は、Previewがテーパー情報まで加味されていないので
切削ラインが完全には重ならず微妙な黒の隙間が見えます。
実際には、テーパー角と深さの分、切削幅が広がるので、重なるはずです。
0.2mmの方は、切削ラインが、0.1mm(工具径の1/2)重なるので
隙間もなく、むしろ切削ラインは濃い色になっています。


















これでわかりました!
 最大切削量 = 工具径[Tool Dia.]+[Maximum]-[Minimum] 
 最大Step回数 = (最大切削量 - 工具径)÷ [Step size]+ 1
になります。
間違っていたらご容赦を。

Board図をランドだけにして、LEDのカットされたランド部をPreviewと並べます。
[Minimum]:0mmでは、(一つ上の右側)と比較
ランド輪郭から工具半径分ツールパスが離れているだけの
通常の切削なので、ランドサイズも箔間距離もピッタリ合っています。
[Minimum]:0.2mmでは、(二つ上の右側)と比較
ランド輪郭から工具半径+0.2mm([Minimum]設定分)
ツールパスが離れてが通るので、Boardのランドサイズより
[Miminum]設定分、切削された右側のランドは、大きくなっています。

[Isolation]の[Minimum]の意味は、
先の[Minimum]の詳細の説明で間違いないと考えられます。
式は、
 [Minimum]= 切削深さ x tan(テーパー角÷2)
   切削深さ:[Machine]タブの[Z Axis]の[Z Down]値


User's Manualには、
isolation = EtchingToolSize+ MinimumIsolation+ PassNumber∗StepSize (1.1)
この式がありますが
[PassNumber]の設定はないので、古い解説が残っているのだろう?と思います。

これでやっとEAGLEのPCB-GCode ULPが使えそうです!
PCB専用だけあって分かってしまえばFusion360より簡単のようです。
ドリルと外形カットは、やり方を考えねばなりませんが
何よりも一番複雑なパターン切削が
EAGLE ⇒ Inkscape ⇒ Fusion360 ⇒ Candleでやろうとしていたので
EAGLE ⇒ Candleで一気にいけます!

昔青年さん良いものを教えていただきありがとうございました!m(_ _)m

次は、手持ちパーツのライブラリ作成に掛からないと!

24 件のコメント:

昔青年 さんのコメント...

PCB-Gcodeをここまで詳細に日本語で解説されたブログは、初めてだと思います。しばらく解説内容を正しく理解するのに時間がかかると思います。その間に、ライブラリーの作成が進んでおられると思います。特殊パーツでなければ、先人が作られてるかも。

マーティーの工房日誌 さんのコメント...

昔青年さん、お褒めの"エネルギー"ありがとうございます。
なかなかうまく説明できなくて分かり難いと思います。
ライブラリに進んでいますが、EAGLEのVersionの違いで先人の方の解説とメニューが違ってて、難航しています。
なかなか先に進みませんね~
Ver.8.6.0がでてPreviewが面白そうです、が、
Updateは我慢して進めないと...

kuchan さんのコメント...

マーティーさん、ご無沙汰です。
とうとう基板切削始められたのですね。

当方の環境は以前、Eagleを使っていましたが、最近はKicadに乗り換えました。
ガバ-->gcode変換はflatcamを使用し、これだとパターン作成、穴空け、基板カットまでこれ1本で行けます。
Kicadは完全フリーでライブラリもRSのデータベースが使えるのでほぼライブラリは作らず済みます。
ご参考まで。

マーティーの工房日誌 さんのコメント...

Kuchanさん、情報ありがとうございます。
簡単なものをFusion360のスケッチでパターン描いてCAMで切削していたので、有名なEAGLEでやって見ようと奮闘中なのです。
Kicad、本家サイトの情報量半端ないですね~
3D Viwerとかレンダリングまでできるようですごい!
これで完全フリーですか! う~ん、心が揺らぎますね~
が、ひとまず、EAGLEで1枚は作りたいな~と思います。

UI ReHome&Made さんのコメント...

解説がすばらしい。
判りやすい
PCB-GCOADとEAGLE6を勉強中のものです。
知恵袋に投稿したのですが回答がつかず、失礼とは存じますが教えてください。
GCOADのPOST設定です、
自作POSTを
N994 この行にオリジナル書式を挿入したい
N995 M05
N996 M02

しかし、挿入できるのは、スポットドリルの手前です。
これを上記のM2又M30の手前に入れたいのですがご存知でしたらどうかご指導をお願いいたします。

マーティーの工房日誌 さんのコメント...

解説が分かり難いかと思っておりましたが
お褒めいただきありがとうございます。

私の思いついた方法は、荒業かもしれませんが。
Versionの違いで動作しなかったらご容赦ください。

私の場合、PCB-GCodeを入れているフォルダ
C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\source
の「pcb-file-utils.h」の次の行に追加する策です。

ここの"SPINDLE_OFF"が最後の"M05"
"END_PROGRAM"が最後の"M02"です。
***orignal***
void end_gcode(void)
{
rz(DEFAULT_Z_HIGH);
out(SPINDLE_OFF);
out(END_PROGRAM);
}
*****

"out"の前は、SPACEではなくTABで
PRE-END PROCESSの所にGCodeを記述します。
***追加後***
void end_gcode(void)
{
rz(DEFAULT_Z_HIGH);
out("PRE-END PROCESS" + EOL);
out(SPINDLE_OFF);
out(END_PROGRAM);
}
*****

※但し、DrillやMill等の全てのGCodeにも入ります。

上の"SPINDLE_OFF"や"END_PROGRAM"は、
C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\settings
「gcode-defaults.h」で定義されています。
そこに定義をを追加してもいいかもです。

では、ご検討を祈ります。

UI ReHome&Made さんのコメント...

postの場所が判明したことで作業が進みます。
大変ありがとうございました

マーティーの工房日誌 さんのコメント...

お役に立てて良かったです。
所で
C:\EAGLE 8.5.2\ulp\pcb-gcode-3.6.2.4\profiles
の***.ppにも同様の記述がありますが
そこで変えてもpost処理は変わりませんでした。
***.ppは、何なのでしょうね?

UI ReHome&Made さんのコメント...

完成いたしました書式です
void begin_gcode(real spindle_speed)
{
out(get_mode());//?
out(ABSOLUTE_MODE);//COMMENT & G90
rz(TOOL_CHANGE_POS_Z);//Z25
rxy(TOOL_CHANGE_POS_X , TOOL_CHANGE_POS_Y );//X0 Y0
out("M00"+EOL);
//TOOL V_CAT
out(COMMENT_BEGIN + "TOOL V_CAT" + COMMENT_END + EOL);
out("M06 T61" + EOL);
out("G43 H61 G00 Z25" +EOL);
rz(TOOL_CHANGE_POS_Z);//tool cheng

reset_current_positions();//

rxy(X_HOME, Y_HOME);//X0 Y0
out("M00"+EOL);
out(fr(SPINDLE_SPEED, spindle_speed));
out(fr(SPINDLE_ON, SPINDLE_ON_TIME));//G04 P10SEC
}
GCOADが走っていても、止まるので工具補正チェックできます。
皆さん参考程度に利用してください。
本日判明:EAGLEの基板サイズはランドが原点から100X80以内なら基板、大きくても可能でした。X-25からX125Y100(150X100)とか

マーティーの工房日誌 さんのコメント...

「sontonsan 2004」さん
大変有用な情報ありがとうございます。

早速、「pcb-file-utils.h」の
void begin_gcode(real spindle_speed)
の所を置き換えてやってみました。

私の環境(GRBL v1.1f+Candle v1.1.7)では、
工具交換命令に対応していないので
工具交換のM06 T61 と 工具補正のG43 H61
でErrorがでます。
しかし、
「2つのM00:HOLDの間で、何かをさせて、また再開させる」
という動作のGCodeを自動的に吐き出してくれる。
という 本来の考え方は 、理解できました。
いつか活用させていただきたいと思います。
大変勉強になりました!

v8.5.2でもマイナス側に基板を大きくできますね~
流石に、パーツを置くと「Upgrade!」と怒られますが
あと少し大きくしたい時は、余白を上手く使えばよさそうですね~

PCB-GCode初心者 さんのコメント...

こんにちは。
PCB-GCodeの記事が少ないので大変ためになってます。

ところでロゴの件ですが、以下の修正で表示されますが、マーティーさんの環境ではいかがでしょうか。
(src=に続くアポストロフィー(')を取るだけ)


***①変更前***
dlgLabel("<img src='docs\images\isolation_settings_300.gif' width='300'\>");
*********
***①変更後***
dlgLabel("<img src=docs\images\isolation_settings_300.gif width='300'\>");
*********

***②変更前***
"<img src='docs/images/pcbgcode-600.gif' width='300'/>"
*********
***②変更後***
"<img src=docs/images/pcbgcode-600.gif width='300'/>"
*********

***③変更前***
dlgLabel("<img src='docs\images\z_axis.gif'\>");
*********
***③変更後***
dlgLabel("<img src=docs\images\z_axis.gif\>");

(注:imgがhtml認識されるので、<は2バイト文字にしています。)

PCB-GCode初心者 さんのコメント...

一つ間違えました。

以下のようにwidth指定は行わないとダメなようです。
<img src=docs/images/z_axis.gif width='300'/>

マーティーの工房日誌 さんのコメント...

コメントありがとうございます。
久々にEAGLE立上げたらULPの起動のやり方すら忘れておりました^^;
早速、src=に続くアポストロフィー(')を取ってみましたが
私の環境では、ダメですね~(T_T)
空白画像もでず、画像のファイル名が出ているだけでした。
現時点は、Win10 Home 64bit Ver1803 Build 17134.228 です。

PCB-GCode初心者 さんのコメント...

ちょっと不親切だったので、言い直します。
scr=に続くアポストロフィーとgifの後のアポストロフィーの2か所です。
width 指定が無い場合は、300で指定します。

マーティーの工房日誌 さんのコメント...

私の環境では、受付けてくれませんね~
何かが違うんでしょうね。
現在、Ver. 9.1.3がでてるんですね~
私のは、まだ 8.5.2のままなので、EAGLEのバージョンの差なのかもです。

CNCペンプロッタの作り方 さんのコメント...

マーティーさんの工房日誌でEAGLE 8.5.2が使えるようになりました。複雑な基板も作れますが、一つ質問なんですが、出来上がった基板にUVレジストをつけるのですが、部品パットのみレジストを切削するのがわかりません。ご存じでしたらお教えいたたけないでしょうか

マーティーの工房日誌 さんのコメント...

見ていただいてありがとうございます。
バージョンが古いですが、お役に立てたとのことで嬉しい限りです。
YOUTUBEにCNCで不要なレジスト削る映像があったのですが、今見ると無くなってました(T_T)
私もまだやってないので、言葉でしかお伝えできませんが
ER11とかのまともなコレットではなく
イモネジ式(本ブログの最初の方で使ってます)コレットを改造して中にバネを入れて、
そこにミルを挿して、押すとミルが少し引っ込むようになってました。
バネを程よい強さにして、レジストだけを削るという動画でした。
ミルがストンと落ちてしまないようにどうやってるか忘れました。
いつかやってみたいと思ったまま実現できておりません(-_-;)

CNCペンプロッタの作り方 さんのコメント...

マーティーさんの工房日誌を見まして使えるようになりました。そこで質問ですが0.1mmのビットでPCBを切削するのですが0.1mmの先端が直ぐに折れてしまいます。XYの送り速度の設定が悪いのでしょうか。
送り速度を80にしたり150にしたりしても折れるのです。スピンドル回転数は8000回転で使っています。折れないための設定をご存じであればお教え願えませんでしょうか

マーティーの工房日誌 さんのコメント...

見ていただいてありがとうございます。
お役に立てて光栄です。
ずっとやってないのですっかり忘れております(-_-;)
最近の感覚ですが
小径ミルは、回転数を数万rpm、できれば50000rpmとかに
するのが本来の使い方のようです。
でも、数万回転のモーターは大きいし、高価です。
安いものは先端のブレも数10μmと大きいようです。
なので、8000rpm程度でやるとしたら
1回の深さを浅くして、数回に分けて
送りも遅くして、切削するしかないと思います。
モーターの軸のブレでミルの先端が大きくブレてると
小径ミルで折れやすくなります。
例えば、20umのブレでも0.1mmに対して
20%にもなるので、可能であれば
ブレの少ないモーターを使いたいところです。
何個か買って選別するしかないのですかね~
ご健闘を祈ります。

マーティーの工房日誌 さんのコメント...

そういえば、ちょっと前に
UVレジストをダイオードレーザーで
飛ばしている映像がありました。
パワーとか詳細は不明でした。
いつかやろうと思ってますが
まだやっておりません(-_-;)

ぽえぽえ さんのコメント...

とても助かりました.
このサイトのおかげで自宅のCNCで基板切削できました!
実際の調整値も書いてくださって,大いに参考になりました.
ありがとうございます.

ちょっと質問なのですが,少なくとも私の環境ではステンシル用のG codeをここから生成するとt cream, b creamレイヤー外形のみが出力されてしまいます.
t stop, b stopレイヤー内のものも出力してくれないとviaなどのステンシルが出力されず,行き詰まっております.

やりたいこととしては,基板切削後にuvレジストを全面に塗布して,マスク部分のみをバネをつけたv字ビットで削りたいのです.

何かご存知であればぜひ教えていただけないでしょうか?

マーティーの工房日誌 さんのコメント...

ぽえぽえ さん、お役に立てて光栄でございます。
奇遇にも公開してちょうど4年ですね~
私もレジスト削りをやりたいなと思いながらも
ほとんどいじらず仕舞いで、ほぼ4年のブランクです^^;
ということで、
今の私にはお答えできず、ごめんなさいm(_ _)m

匿名 さんのコメント...

こちらの記事のおかげでEAGLEで基板切削ができるようになりました!

ただ、セットアップの"GCode Options"で"Do tool change with zero stop"のチェックを外してもdrill.tapのg-codeに反映されずドリルが頻繁に原点に戻る動作を繰り返してしまいます。

どうにかして修正する方法はないでしょうか?

マーティーの工房日誌 さんのコメント...

応答が遅くなりすみませんm(_ _)m

私の環境では発生してないので
試すことはできず
この箇所が影響しているかわかりませんが

pcb-gcode.ulp
390行目からの処理部分を次の様に
コメントアウトしてみてはいかがでしょうか?

if (DO_TOOL_CHANGE_WITH_ZERO_STEP == YES) {
// output_tool_zero_begin();
// fzr(0.000, FEED_RATE_DRILL_Z);
// out(OPERATOR_PAUSE + EOL);
// output_tool_zero_end();
}