しばらくすると忘れてしまうので、現状のフローをまとめておく。
- pcb2gcode の millproject
- AutoLeveller は基本的には常時使うほうが結果的に早い。DIP しか使わないような電源回路では使わなくてもなんとかなるけど使ったほうが安心。
- 基板外形のカッターは 1.5mm が適当。1mm だと 500mm/min でフィードするとちょいちょい折れてストレス
- パターン切削は30度0.1mmのカッター
概要
- KiCAD からの出力
- pcb2gcode の設定
- machinekit (LinuxCNC) での操作
KiCAD でのデザインルール
0.25mm 幅で削るので、これが限界。0.05mm でもトレランスをとれれば安定しやすい。
- 最小配線幅は 0.25mm が限界。できれば 0.3mm のほうが安定。
- クリアランスも 0.25mm が限界。できれば 0.3mm ぐらいにしたい。
KiCAD からのエクスポート
- 切削する銅箔層 (F.Cu or B.Cu) と Edge.Cut をガーバーに出力する
- ドリルファイルを出力する
pcb2gcode
以下のような前提で gcode 化する
- 30° 先端0.1mm のVカッターを掘る用に使う
- φ0.8mm のエンドミルを全ての穴開けに使う
- φ1.5mm のエンドミルかφ1mmで2枚刃を外形カットに使う
- 基板の厚さは 0.8mm か 1.6mm を使う。基板の歪みを矯正できるぶん、0.8mm のほうが細かいパターンは削りやすく感じる。
先端0.1mmのエンドミルといっても、実際買ってみると綺麗に 0.1mm になっていることはすくない。というかすぐ先端が折れる。計算するときは 0.15〜0.20mm として扱う。
切削速度を落とせばφ0.8mmで穴開け〜外形カットまで可能で、ツール取り替えの手間が減らせるはずだけど、0.8mm のミルは高価であんまり折りたくないので、別途φ1.5mmのミルを使っている。これは今後 0.8mm にするかも。あんまり太いミルで外形カットすると切削抵抗が大きくなり、両面テープが剥れてずれる可能性もあるので注意。
# Use standard mm metric=true metricoutput=1 front=tachometer-B_Cu.gbr #back= outline=tachometer-Edge_Cuts.gbr drill=tachometer.drl front-output=front.gcode back-output=back.gcode outline-output=outline.gcode drill-output=drill.gcode milldrill-output=milldrill.gcode # https://github.com/chrysn-pull-requests/pcb2gcode/blob/graphical-documentation/man/options.svg zwork=-0.1 zsafe=1 mill-feed=220 mill-speed=10000 mill-vertfeed=150 mill-diameters=0.22 milling-overlap=25% isolation-width=0.5 zdrill=-1.7 zmilldrill=-1.7 zchange=20 drill-feed=100 drill-speed=10000 min-milldrill-hole-diameter=0 milldrill-diameter=0.8 # 外形カット時のミル直径 cutter-diameter=1 # PCB板厚+0.1mm zcut=-1.7 cut-feed=500 cut-speed=10000 cut-infeed=1 cut-side=front # mirror-axis=51.575mm optimise=true zero-start=true
pcb2gcode 2.0.0 で動くように変更
pcb2gcode して生成 gcode をデスクトップとリモートの Machinekit に転送する。デスクトップにコピーしているのは CAMotics で読みこませて確認するときに便利なので。
- mirror-axis を基板サイズの半分に設定すること
- これやらないと back 面がマイナスからはじまってしまう
- 一度実行して表示される width を元に書きかえる必要がある
~/ghq/github.com/pcb2gcode/pcb2gcode/pcb2gcode && cp *.gcode ~/Desktop/ && scp *.gcode machinekit@192.168.0.240:gcode
確認
- CAMotics を起動して、すべてのファイルを読みこむ。
- Workpiece を以下のように設定して再描画
- X: xxx/0
- Y: xxx/0
- Z: 1.6/-1.6
段取り
- 事前に捨て板の面出しをする (φ6mm ぐらいのミルで加工面全てを 0.2mm ほどさらう)
- AutoLeveller 使うなら毎回やる必要はない。
- ニチバン ナイスタック 透明タイプ (材質がセロハンのもの) を使って切削基板を捨て板に固定する
- このときしっかり全面を押さえつけて捨て板に接着する (加工時の圧力で高さが変わらないように)
AutoLeveller
- AutoLeveller に切削対象 gcode を読みこませる
- Probe Clearance は 0.5〜1、Z Safe Height は 1、Z feed は 50 にする
- create probe file only にチェックを入れて、Create Levelled Gcode ボタンを押すと、ALProbeback.ngc ができる
- ALProbeback.ngc を machinekit に読みこませる
- 一旦 Probe を行い、Z を Touch Off する (原点を設定する)
- 実行して基板全体を Probe する。
- .ini と同じディレクトリに RawProbeLog.txt ができているので、ローカルに転送する
- gcode 用のディレクトリに RawProbeLog.txt への symlink を貼っておくと便利
- RawProbeLog.txt を AutoLeveller に読みこませる
- create probe file only にチェックをはずして Create Levelled Gcode を押す
- ALback.ngc ができるので転送する
drill や外形カットなどは面倒なので AutoLeveller はかけず、0.1mm 余計に掘る。
https://lowreal.net/2016/10/19/1
AutoLeveller の起動
java -cp ~/ghq/bitbucket.org/daedelus1982/autoleveller/out/artifacts/autoleveller_jar/autoleveller.jar com.cncsoftwaretools.autoleveller.Autoleveller
生成 gcode の転送
scp ~/Desktop/*.ngc machinekit@192.168.0.240:gcode
プローブログを手元に転送
scp machinekit@192.168.0.240:gcode/RawProbeLog.txt ~/Desktop/
切削手順
基板パターン
- ALback.ngc を machinekit に読みこませる
- 実行すると Probe をつけろと言われるので、つけて Resume
- Probe後、Probe をはずせと言われるので、はずして Resume
- 切削がはじまる
ドリル
- エンドミルをφ0.8mmに交換
- Probe を行い、Z Touch Off
- Feed Override を 10% ぐらいに下げる (折れ対策。pcb2gcode が mill 時と milldrill 時でフィードレートが変えられないので)
- drill.gcode を読みこんで実行
外形
- エンドミルをφ1.5mmに交換
- Probe を行い、Z Touch Off
- outline.gcode を読みこんで実行
備考
pcb2gcode の --al 系オプションは使わないの?
ある程度規模が大きくなると machinekit に読みこませたときに非常に時間がかかってしまうので、その時間を使うぐらいなら AutoLeveller を使ったほうがよいと考える。時間がかかるのはプレビューのために gcode を一通り仮想的に実行しているためだと思う。
また、--al のオプションは Probe → 切削 がひとつの gcode で行われるため、リトライすることができない。途中でミルが折れたりすると交換してやりなおすということができなくなる。
エンドミルの不具合
基板切削をはじめた直後に削った銅がけばだつようだったらミル先端が既に折れている可能性がある。そのまますすめてもうまくいかないので新しいのに変えること
または確認しても折れていないようなら、ミルの突き出し量を見直すこと。ぎりぎりまでマシンに指しこんでいないと、同様にけばだつことがある。