EAGLEとCNCでArduino(もどき)の作成

#目的
　なにか使えるものを作りたくなった。　---　まずは市販品をまねてつくってみよう。
　そうだArduinoなら簡単そうだ。Arduinoを作ってみよう。
　基本部分が作れれば、あとは回路を追加すればいくらでも拡張できるはずだ。
　最初のターゲットはdigispark(もどき)だ！。　(しかしてこれが何の役に立つかは置いといて)

#経緯
　前回「EAGLEとCNCで両面プリント基板の作成」で一応両面基板は作成できた。
　しかし課題が残ったので試行を繰り返し、Arduinoとして稼働するものが一応出来上がった。
　以下は「しろうと」の試行錯誤の結果であり、最適解という保証は無い。
　錯誤も多分混じっているので、使えるかどうかは自分で確かめてね。
　※これをやるに当たり、切削工具を沢山だめにしました。

#前提条件
　前回の「EAGLEとCNCで両面プリント基板の作成」とほぼ同様な操作が必要。
　(1)CNCのコントロールソフト　Candle、versionは1.1.7、grbl(制御基板)は1.1f
　(2)プリント基板設計ソフト　　EAGLE-7.2.0(最新バージョンでも動くと思う)
　(3)g-code作成　　　　　　　　pcb-gcode(Version 3.6.2.4)

#１．切削上の課題の解決
　当初は切削幅をうまく管理できず、切削工具(made in china)の精度不足と考えていた。
　※一本50-100円の安物を使っている。1000円ぐらいのものを使えばもっと楽だったのかもしれないが、折れるのが怖い。
　しかし、下記の対応を行う事により、0.2-0.3mmの切削幅であれば、ほぼうまく出来るようになった。
　※切削工具ではなく、自己の作成スキルの問題であった。
　(1)切削深さが深くなったり、浅くなったりする
　　Heightmapを使用するにしても、ベースの水平が狂っていると補正が追い付かない(と思われる)。
　　可能な範囲で水平を取っておく。その為には、ベース一杯に金属板(プリント基板)を張り付け、計測。
　　※Heightmapで測定し水平でない場合は、ボルトを緩め上下に微妙に調節する(誤差0.2mmぐらい?に収める)。
　　※Heightmapでの数値の変化が急な場合、Probe gridを多くすれば補正される(可能性が高い)。
　(2)基板を両端だけで固定すると中央が浮き上がる
　　両面テープで固定個所を増やして固定する。
　　※前面固定が望ましいが、５ｃｍ間隔の固定でも取り合えず何とかなっている。
　(3)切削中の振動(音)が大きい
　　プリント板の下にゴム板を敷いた。
　　※年賀状作成用のゴム判(150mmx100mm)がピッタリだった。
　　※振動が大きいと切削工具が折れやすいような(気がする)。
　(4)作成した切削ラインが曲がっている。
　　PCB-GCODEのMachine-Epsilonを小さく設定する。
　　※0.001mmに設定している。小さくすると処理時間が増えるようだ。
　(5)細い配線を描画できない。
　　先の細い切削工具(Ｖカッター)を使用する。
　　※先端0.1mm(公称)のＶカッターを使用している(これは誇大広告だろう)。
　　　使用結果からは、実力は0.2mm程度と考えるほうが無難。
　　※先が細いときわめて折れやすい。
　　※仮に0.1mmであった場合は沿面距離が狭く、手はんだが難しくなると思われる。
　　　つまり、搭載部品と自己のはんだスキルに合った細さを選ぶ事が肝要。
　(6)切削工具が折れる
　　切削工具(Ｖカッター)の先端が折れる原因は切削抵抗と考える(振動も含めて)。
　　切削抵抗を減らすには、深く削らないことである。
　　プリント基板の銅箔の厚さは通常0.035mmなので、これ以上に設定すれば切削は可能。
　　※PCB-GCODEのMachine-Z Downを、約倍の0.075mmに設定している。
　(7)ライン(配線)が細くなる。ややもすると無くなってしまう。
　　PCB-GCODEのMachine-ToolDiaを切削工具(Vカッター)の太さに合わせて大きくする。
　　※但し、ここを大きくするとラインが消え、配線同士が勝手に繋がるので程々に。
　　※配線間の距離が取れていないとくっついている事が多々あり、目視確認が必要。
　　※現在は0.14mmに設定しているが、状況によりケースバイケースだろう。
　(8)切削工具の先端は細いのに、切削ラインが太くなる。
　　当初は切削工具の芯が出ていないと邪推していたが、結果として工具の保持方法に問題があった。
　　コレット(ER-11など)を使用する事により、装着時の芯の再現性が格段に向上した。
　　※最初は六角ナットで止めていたが、同一の切削工具で太さが変化したのを見つけた。
　　　そこで、コレットチャックを取り付けて(モーター軸に叩き込んで)使用すると良くなった。
    但し、切削工具をチャックに十分に差し込まないと、これでも芯ずれを起こす事があった。
　　※チャックへの差し込みを十分にすることにより、芯ずれは発生しなくなった。
![Image4.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/103f8715-821d-f0e5-d640-a21ee5bf4c12.jpeg)
　(9)信号間の沿面距離が取れない
　　切削工具の先端が0.2mmだとすると、信号間の沿面距離も0.2mmmになる。
　　この程度だと、一寸油断すると部品のズレなどにより回路ショートが発生する
　　PCB-GCODEのGeneration OptionsのIsolation-Single passのチェックを外す事により、
　　信号線の外周が複数回切削されるようになるので、沿面距離が広く取れはんだ付けが多少楽になった。
　　※Maximumを大きくすれば沿面距離が取れるが、切削に時間がかかるので2周程度に設定している。

　切削結果(写真はatmega32U4による作成時)
![Image1.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/1debc734-f83e-1d35-539f-a2e2bf3df3d1.jpeg)
![Image2.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/c924231c-5367-457c-ccd5-5db34908f58e.jpeg)

#２．部品面、はんだ面の位置合わせ改善
　前回は冶具を使って位置合わせを行ったが、0.1mm以上の誤差となる事も有った。
　そこで、次の手法により精度向上を図った。
　(1)部品面の切削を行う。
　(2)モーターを基準点(０点)に戻し、細いドリル(0.3mm)に交換する。
　(3)基準点から僅かにオフセット(ずら)し(例えばx0.5mm,y0.5mm)、穴を開ける。
　　※基準点に穴を開けと、z-probe動作で悲惨なことが発生する。これで工具を何本無駄にしたことか。
　(4)外周をカッティングする。
　(5)プリント基板をひっくり返し、はんだ面を上にして張り付ける。
　　※この時、ピッタリくっ付く事よりも、隙間が平行になっている事が重要。
　　※z-probe用の配線を忘れないように。
　(6)細いドリル(0.3mm)に交換する。
　(7)ドリルの先端を、(3)で開けた穴の上に持ってくる(マイクロスコープで拡大してしっかり確認)。
　(8)オフセット分(例えばx0.5mm,y0.5mm)移動させ、ここを原点(Zero)に設定する。
　
　z-probe用の信号はGND側をモーター外周に、信号側をプリント基板にテープで接着している様子。
　プリント基板をひっくり返した時には、アルミ箔で信号を繋いでいる様子。

![Image6.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/4ca9332c-8493-d2da-4a56-f1c376e2f1b7.jpeg)
　ドリルの先端がプリント基板の穴(0.3mm)と一致した様子と、確認に使ったデジタルマイクロスコープ。![Image3x.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/bbe0c8c4-597e-93bf-100d-50ca78ba6b6c.jpeg)

#２．１　ＸＹ軸の直角が出ていなかった場合
　基板上の位置によりズレが異なる場合、Ｘ軸の固定用アルミ角棒を前後に移動させて修正する。
　※当方ではズレていなかったようなので、以下は構想のみで効果は未確認。
　※以下はＹ軸を基準と考え、Ｘ軸を修正する。
　(1)測定の基準点を適当に設定。基準点に穴を開ける。　　　※この穴をB1とする。
　(2)基準点から横方向に適当にずらした位置に穴を開ける。　※　〃　　B2とする。
　(3)基準点から縦方向に適当にずらした位置に穴を開ける。　※　〃　　M1とする。
　(4)M1から横に(2)と同一距離に穴を開ける。　　　　　　　 ※　〃　　M2とする。
　(5)B1B2を除いてM1とM2を含んだ範囲を、長方形の形状に切り取る。※縦方向に長いほうが精度が出る。
　(6)切り取った長方形をひっくり返し、元の位置に縦方向を密着させて張り付ける。
　(7)B1とM1、B2とM2の距離を測る。不一致の場合は誤差の半分だけＸ軸を移動させる。

#３．異なるドリル径への対応
　pcb-gcodeでは***.drill.tapに全ドリル情報が纏められている。
　これではドリル交換が出来ないので、次のようにdrill.tapをドリル別に分類する。
　※PCB-GCODEのGeneration OptionsのSpot drill holesのチェックは外す。
　※PCB-GCODEのGCode OptionsのDo tool change with zelo stepのチェックは外す。
　(1)drill.tapをドリルの数だけコピーし、名前を変更し開く。
　(2)複数の穴径が指定されている場合、T01,T02....のような型式で区分されている。
　(3)一つのドリル指定(M06 T**)は、直前のM05(停止命令)から次のM05迄である。
　(4)そこで、ファイルの中から、穴あけ指示(M05からM05)で対象ドリル以外への不要部分を削除する。

#４．スルーホールの処理
　スルーホールでは上下面を電気的に接続する必要が有り、一か所毎に手作業が必要となる。
　そこで次のようにしてスズメッキ線を通す事により、かなり作業は楽になった。
　(1)スルーホール用パッドが小さくてはんだが盛れない
　　EagleのEdit-DesignRules-RestringのPads-Top/Bottomを大きくする(25% -> 40%程度)
　　※但し、ここを大きくすると配置配線の効率が覿面に悪くなるので大きさはケースバイケース。
　(2)ドリルが大きく、パッドのはんだ付け面積が確保できない
　　小口径ドリル(例えば0.3mm)で穴を開ける。
　(3)ドリル穴にスズメッキ線が通らない
　　0.3mmの穴に0.29mmのスズメッキ線は通るはずだが、少し通りにくいので次の加工を施す。
　　・スズメッキ線を強く引っ張る。するとピンと真直ぐになってすぐ切れる。
　　・真直ぐになったスズメッキ線を１ｃｍ程度に切断し、基板にラジオペンチでぐりぐりとねじ込む。
　(4)通したスズメッキ線が抜け落ちる
　　通したスズメッキ線の先を折り曲げた後、スズメッキ線を少し引き戻すと引っ掛かり抜けなくなる。

#５．表面実装部品の採用
　リード線のついたディスクリート部品の方が大きく扱い易いが、今回は表面実装部品にチャレンジした。
　これは下記のような理由によるが、はんだ付けの難易度は上がる。
　※はんだ付け時、目には優しくないが、慣れればなんとかなった。
　(1)表面実装部品の方が、基板が小さくなる。また値段が安い。
　(2)穴あけが要らない。
　(3)上下にはんだ付けが不要。
　　※ICソケット等は部品面でのはんだ付けが出来ないので、そのままでは使用できない。。

#６．はんだ付け
　下記の工具を使用し、フラックスをべたべた塗ってはんだ付けを実行。
　はみ出した余計な部分のはんだは、はんだ吸取りで除去。
　(1)はんだごて　　６０Ｗ温度調節付き(350度に設定、温度が高すぎるかも)
　(2)はんだ　　　　0.3mm 63sn/37pb (環境に優しくないかも)
　(3)はんだ吸取り　(安いやつ)
　(4)フラックス　　HOZAN
　※CPUの下には、スルーホールを作らないように、又はんだをする前に耐熱テープで絶縁した。

#７．動作確認
　attiny85をArduino(Digispark)として使用するにはブートローダーの書き込みが必要となる。
　下記のツールを使用し、パターンを作成しているICSP端子から書き込んだ。
　　(1)書込み装置　　　USBASP　　　※cpu単体より安く売っているような。
　　(2)書き込みソフト　AVRDudeGUI　※チェックを入れるとそこを実行するので、不要なチェックは外す。
　　(3)ブートローダー　micronucleus - t85_default.hex　※Githubからダウンロード
　正しく書き込まれ、正常動作するとデバイスマネージャー画面には下記が表示される。
　　libusb-win32 Usb Devices　-　Digispark Bootloader
　これが表示された状態になれば、Arduioからのプログラム書き込みが可能となる。
　CPUとしてAtmega328p,Atmega32U4等で構成したものでも、usbasp経由でArduinoからプログラムは可能。

#８．増産
　練習も兼ねて、CPUを色々取り換えて作ってみた。
　最初の頃は、動かないのが何点か出来てしまったが、はんだ付けに問題が有ったと思われる。
　試作パターンをGithubに何点かＵＰしているので、参考になれば。
 　 [［プリント板試作］](https://github.com/hi631/make-PB)
　※部品を揃えて自作するより、市販基板の方が安いというジレンマが有るが。
　　自分専用の基板を作れるという、男のロマンを大切にしたい。
![Image5.jpg](https://qiita-image-store.s3.amazonaws.com/0/159764/e0fca5e4-6c28-76a2-097a-2d1b85557b83.jpeg)

#９．その他注意事項
　(1)CNCの動作異常について
　　プリント基板作成中に何度かCNCがコマンドを受け付けない状態に何度か陥った。
　　ブラシノイズによる誤動作とも考えられるが、USBの接触不良の可能性の方が高いと想定される。
　　稼働中はUSBケーブルに触れないように配置したら発生しなくなった。
　　※製品に添付されていたケーブルは接触不良を起こし易いような気がする。

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