EAGLEとCNCで、お手軽両面プリント基板の作成

#目的
　FPGAのソフトだけでなく、ハードも作りたくなったが、配線のはんだ付けは気が重い。
　プリント基板が作成出来れば、手間が省ける。
　でもエッチングは液の取扱いなど床に穴をあけそうで、機械的に削り出す方向で検討しよう。
　３Ｄプリンタの部品を流用した設計を考えてブツを物色していたが、A**とかE**でＣＮＣが安くなっているではないか。
　※CNCミニルーター(フライス盤)のことです。
#経緯
　(1)A**で一番小さいCNCフライス盤(CNC1610)のキットを調達(2018/8購入時点で20,000円ぐらい)
![Image99.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/6ef24279-7c37-4165-09de-140e39f80d10.jpeg)

　(2)なんとかキットを組み立てる。多少トラブル有るもとりあえず稼働を開始。
　(3)回路をプリント基板から削り出すには、gcodeへの変換が必要なことが調査により判明。
　(4)お手軽にgcodeに変換する為に、EAGLEを使うことに決定。(小さい寸法なら無料かな)
　(5)まず試しに適当設計を行い、EAGLEの自動配線(すごく便利)で片面基板にパターン化、pcb-gcodeでgcode化。
　(6)取り合えず片面は無事作成出来たが、配置配線に大きな制約が有ることが判明。(当たり前だが)
　　ジャンパ線が増えるとは面倒くさいし。
##　----　そうだ「両面プリント基板」にしてしまおう　----

#両面基板を作る
　といっても、ソフト(EAGLE)は両面基板を作れるように出来ている。
　問題は、部品面とはんだ面の位置合わせが面倒で、うまく重ならないとの情報アリ。
　この部分の問題を、お手軽に解決する方法を考えたので、以下に説明する。

１．前準備
　(1)CNCを組み立て、Grblcontrol(Candle)で制御できるようにする。
　　※前提として、Candleのversionは1.1.7、grbl(制御基板)は1.1fです。
　(2)制御基板のA5より、z-probe(Z軸のゼロ調整)用配線を引き出す。
　　※ついでに基準点(XYZ)復帰確認SWも付けておくと位置調整が楽になる。
　(3)Heightmapを使用可能にしておく。
　　※この辺りが詳しい [［小型工作機CNC2418 その３（HeightMap検討）］](https://martyworkshopdiary.blogspot.com/2017/03/cnc2418-heightmap.html)
　(4)EAGLEを導入
　(5)EAGLEのulpとしてpcb-gcode(Version 3.6.2.4)を導入
　　※この辺りが詳しい　[［EAGLE 8.5.2でPCB-Gcode 3.6.2.4（ULP）の試用］](https://martyworkshopdiary.blogspot.com/2018/01/eagle-852pcb-gcode-3624ulp.html)
　　※当方だけの問題かもしれないが、Windows10でpcb-gcodeが動作しなかった。そこで
　　　"pcb-gcode.ulp"の129行目の"viewer.exe"を"viewer.exe.bat"に変更
　　　　"system(g_path + "/viewer/application.windows/viewer.exe.bat");"
　　　"viewer.exe"の存在するディレクトリに下記内容で"viewer.exe.bat"を追加。
　　　　path=%path%;C:\Program Files\Java\jdk1.8.0_152\bin
　　　　%~p0\viewer.exe
　　　　※viewer.exeは"pcb-gcode.ulp"が存在するディレクトリ下の"\viewer\application.windows"
　　　　　javaの格納位置が異なる場合は"C:\Program Files\Java\jdk1.8.0_152\bin"もそれに合わせる。

２．回路とボードを作成
　EAGLEの使い方がまだよく判らないので、取り合えず回路は"\examples\tutorial"のdemo2を流用する。
　"demo2.brd"をプリント基板化する。
　基板の切り出しを行う為に、ボードのレイヤー46(Milling)にボードの外形を追加記入する。
　この時、基準点(＋)を含ませて、最小サイズより1-2mmより大きく書いておく。
![Image9.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/d64dff7a-cd0f-7b6f-dc92-e32b02a1253e.jpeg)

３．gcodeへの変換
　ulpとして"pcb-gcode-setup.ulp"を起動、下記を設定。
　※取敢えずの設定、最適化している訳ではない。
![Image8.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/3bd33581-9fba-d8e9-9af6-3353c03bf2a8.jpeg)
　"Accept and make board"を選択すると、画面とダイアログが(4回)出るのでOKして閉じる。
　見本の設定では"demo2.brd"のディレクトリに**.tapが5個出来ている。(はず)

４．部品面のカッティング
　(1)両面プリント基板をベッドに固定。
　(2)Grblcontrolを起動、"demo2.top.etch.tap"を読み込む。
　(3)ドリルの刃として、Vカットを装着。
  (4)ドリルを部品面の基準(０点)位置まで移動。※左下が基準位置
　(5)z-probeを実行。Zelo_XY,Zelo_Zでワーク位置を0,0,0に設定。
![Image03.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/9ea59c35-8f22-9e5e-9a37-01b46b41df9a.jpeg)
　(6)HeitmapのCreateを選択すると、下部にHeightmap_settingsが現れるのでautoを選択、XYWHが設定される。
　　probe_gridを適切に設定、Zt(1.00)とZb(-1.00)も適切に設定。
　　probeを実行。z-probeが上下を繰り返し、マップが作成される。
    ※z-probeを繋ぎ忘れるとえらいことが。
　　※エラー(Alarm)になった場合、"\$X"を送信、それでも解除されない場合は"?"を送ってから"\$X"を送信で解除。
　(7)Edit_modeを選択する。切削モードになるので、忘れずに"Use_heightmap"を選択しておく。
![Image2.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/d0094caa-e43c-6b88-ab52-506c672a45d3.jpeg)
　(8)Sendを押すと、切削が開始される。

５，外周のカッティング
　(1)外周データ(demo2.top.mill.tap)を開く。
![Image04.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/a53d2013-a84a-af02-67d2-632c0609d174.jpeg)
　(2)この時に、基板のX方向の幅を記録しておく。(図では -2.540_48.260)
　(3)Z軸を上に上げ、ドリルをEnd_millに換装。(取敢えず0.8mmを使用している)
　(4)手動でドリルを基準点まで持って来て、x-probeを実施、Zelo_ZでワークのZ軸を0に設定する。
　(5)Sendを押すと、音を立てて外周カッティングを実行。※切削速度が速いとドリルがポッキリ
![Image06.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/acbef0bf-be8b-6532-b732-b147017329bb.jpeg)

６．部品面、はんだ面の入れ替え
　(1)基板を取り出し、左右方向に１８０度回転。※重要
　(2)下側(部品面)に両面テープを張り付け、取り出した場所に再度固定する。
　(3)この時に切削したドリルの寸法だけ隙間が有るので、平等に振り分ける。
　　※振り分け用のツールを使えば比較的簡単。
![Image09.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/a8ac7420-cf7f-b2ab-6ba4-e3d92b625b18.jpeg)
　　　1)ツール(黒い部分が0.5mmの幅で飛び出している)の上に、基板を乗せる
　　　2)基板の上に両面テープを張り付ける。
　　　3)基板を左右にひっくり返して、元の穴に埋め込む。
　　　4)ツールを取り外すと、基板がほぼ穴の中心に来ている。

７．はんだ面のカッティング
　(1)はんだ面のデータ(demo2.bot.etch.tap)を開く。
　(2)Z軸を上に上げ、ドリルの刃としてVカットに換装。
　(3)ドリルを基準点のオフセット分移動させる。
  　※外周カッティングに記録した寸法(-2.540_48.260)の場合、引き算して45.72mm移動。(G00X45.72)
　(4)z-probeを実行。Zelo_XY,Zelo_Zでワーク位置を0,0,0に設定
![Image010.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/806d04e4-feeb-b111-7a6e-fa67a7603826.jpeg)
　(5)Heightmapを実行。
　(6)Sendを押すと、切削が開始される。

８．はんだ面からの穴あけ
　(1)"demo2.brd"を再度開き、ulpとして"pcb-gcode-setup.ulp"を起動し、MachineqタブのDriill Depthを1.6mmに設定。"Accept and make board"を実行。
　　※現在の設定だと貫通しない。
　(2)穴あけのデータ(demo2.bot.drill.tap)を開く。
　(3)Z軸を上に上げ、ドリルをEnd_millに換装。
　(4)ドリルを基準点まで移動させ、x-probeを実施、Zelo_ZでワークのZ軸を0に設定する
　(5)Sendを押すと、穴あけが開始される。
　　※今の設定では部品面、はんだ面から各々1mmずつ穴あけしており、既に貫通しているはずだが。

９．出来上がり
　基板を取り外し水洗い。
  正しく操作出来ていれば、部品面の穴が貫通して、それ以外の穴は無い筈。
![Image015.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/844d32bb-e8ea-9ddc-b528-35ee53e2c2f5.jpeg)


１０．評価ほか
　(1)上記の方法で両面基板の部品面、はんだ面の位置合わせは旨く行っており、当初の計画は成功。
　(2)但し、スルーホール等は上下で繋がっている訳ではなく、はんだ付け時に考慮が必要。
　(3)線幅、切削速度、切削速度等は未だ未成熟、今後詰める必要が有る。

##-- 両面プリント基板の作成に目途が立ったので、なにを作るのかを考えて行こう。 -- (本末転倒だね)

　上記記載内容は無保証であり、各自の責任においてご利用願います。
　ドリルの刃がポキッと折れても、当方は責任を取れません。

"