uchanのアイコン画像

KiCad + FlatCAM で KitMill 用の基板切削データを作る

uchan 2021年07月09日に作成  (2021年07月09日に更新)

KiCad + FlatCAM で KitMill 用の基板切削データを作る

KitMill CL200(あるいは CL100/CL420)で基板切削をするための CNC プログラム(KitMill を制御するデータ)を作る手順のメモです。

大まかな手順

  1. KiCad で導体面(片面 1 層基板なら F.CuB.Cu のどちらか)と外形(Edge.Cuts)のガーバーデータを出力
  2. KiCad でドリルデータを出力
  3. FlatCAM でガーバーデータとドリルデータを読み込む
  4. ガーバーデータ、ドリルデータから CNC プログラムを生成
  5. USBCNC で切削

KiCad で導体面と外形のガーバーデータを出力

まずその前に、Pcbnew で原点を適度な場所に設定しておきます。
基板外形の左下とか左上とか、分かりやすい場所が良いでしょう。
参考 Gerber出力 - KiCadのメモ

原点設定ができたら Pcbnew の「プロット」メニューからガーバーデータを出力します。

KiCadでガーバーデータをプロットする

大事な設定

  • 含まれるレイヤーで「B.Cu」と「Edge.Cuts」を選択
    • 表面に配線した場合は F.Cu を選択する
    • 他のレイヤーを出力しても害はない
  • 「原点に補助座標を使用」をチェック

「製造ファイル出力」をクリックすると、KiCad のプロジェクトファイルと同じ位置に「プロジェクト名-レイヤ名.gbr」が生成されます。

KiCad でドリルデータを出力

プロット画面で「ドリルファイルを生成」をクリックするとドリルデータの出力画面になります。

KiCadでドリルファイルを生成する

大事な設定

  • ドリルファイルフォーマットで「Excellon」を選択
    • 「Gerber X2」は未検証(今のところ Excellon の方が普及してる形式だと思う)
  • 「PTH と NPTH を一つのファイルにマージ」をチェック
    • これをチェックしないとドリルファイルが 2 つ生成されてちょっと面倒
  • ドリル原点で「補助座標」を選択
  • ドリル単位で「mm」を選択

「ドリルファイルを生成」をクリックすると、KiCad のプロジェクトファイルと同じ位置に「プロジェクト名.drl」が生成されます。

FlatCAM の設定(初回のみ)

FlatCAM を使う前に、FlatCAM 内での単位を「inch」から「mm」に変えておきましょう。Options タブで変更できます。

FlatCAMの単位を設定する

inch → mm に変更したらいったん FlatCAM を再起動しておきます。

FlatCAM でガーバーデータとドリルデータを読み込む

単位変更が済んだら「ファイル」メニューからガーバーデータ(Gerber)とドリルデータ(Excellon)を読み込みます。
ガーバーデータは B.Cu と Edge.Cuts の 2 つ、ドリルデータは .drl を 1 つ、読み込みます。
ここからの手順は FlatCAM使い方(1) - 電子工作専科 を大変参考にさせていただきました。

導体面として裏面を出力した場合、図面を左右反転させる必要があります。

「Tools」メニューの「Double-side PCB Tool」を使います。設定は次の通り

  • Bottom Layer: 導体面のガーバーデータ(B.Cu または F.Cu)を選択
  • Mirror Axis: Y
  • Axis Location: Box
  • Point/Box: Bottom Layer と同じものを選択

本来、この Double-side PCB Tool はその名の通り両面基板を作成するための機能です。
片面を削った後、裏返すときに基準にする反転軸を設定するわけですね。

上記の設定で 1 つのデータを反転させたら、他のデータ(Edge.Cuts とドリルデータ)も同様に反転しておきます。

ガーバーデータから CNC プログラムを生成

ガーバーデータはベクターデータですが、配線はその中心を通る直線として表されているそうです。
一方で、KitMill で削るためには配線の外形をなぞるような軌跡を、ドリル径を考慮して生成する必要があります。
ガーバーデータから CNC プログラムを生成するとは、そういう処理をするということです。

FlatCAM の Project タブで、導体面のガーバーデータをダブルクリックします。
ここでは「hoge-B_Cu.gbr」を選択したとします。

Gerber Object の画面で次の通り設定します。

  • Tool dia: 0.5
    • ドリルの直径
  • Width (# passes): 1
    • 切削の幅。ドリルを何回通過させるかを設定。
    • 「1」だったらドリルは 1 回だけ通っておしまい。

「Generate Geometry」をクリックすると Project タブに hoge-B_Cu.gbr_iso が追加されます。
これをダブルクリックすると Geometry Object の編集画面になります。

「Isolation Routing」で次の通り設定します。

  • Cut Z: -0.1
    • Z 方向の切削深さ。銅箔より厚く削る必要があるので -0.1 くらいを指定する。
    • 単位は Options タブで設定したものが使われる。先ほど mm に設定したので、「-0.1 mm」ということになる。
  • Travel Z: 2.0
    • 切削せずに移動するための高さ
  • Feed Rate: 120
    • 1 分間の切削距離
    • ドリルの強度などを勘案して決める
  • Tool dia: 0.5

「Generate」をクリックすると Project タブに hoge-B_Cu.gbr_iso_cnc が追加されます。
これをダブルクリックします。
出てきた画面で「Export G-Code」をクリックすると、CNC プログラムをファイルとして出力できます。

外形についても、導体面と概略の手順は同じですが、「Isolation Routing」ではなく「Board cutout」を使い、次のように設定します。

  • Cut Z: -1.8
    • 基板より厚い数値、例えば 1.6mm 基板なら 1.8 とか
  • Feed Rate: 30
    • 深く削る分、遅くしないと折れる可能性が高まる
  • Margin: 0.1
    • 外形面よりどれだけ外側を切り取るか
  • Gap size: 1.0 程度
    • 基板と外枠を繋ぐ部分の幅
  • Gaps: 2 または 4
    • 基板が小さい、あるいは丈夫な材質の基板なら 2 で十分ぽい

ガラスエポキシ片面銅張基板で 5cm×4cm の基板を作る場合、Gap size は 0.7mm、Gaps は 2(上下)で十分だと思います。
Gap size 1.0mm、Gaps 4 でやったときは堅すぎて、Gap をカッターで強く切らないと基板を取り外せないほどでした。

ドリルデータから CNC プログラムを生成

Project タブで hoge.drl をダブルクリックすると Excellon Object の編集画面になります。

Excellonオブジェクトの設定を行う

「Tools」は、今回 CNC プログラムを生成する対象の穴を選びます。複数選択できます。

ガーバーデータとは異なり、ドリルデータは本質的に点の情報です。
穴を空ける位置の座標だけが記録されています。
本来、穴開け作業というのは、穴の大きさ毎に加工を行い、穴の種類を変えるときにドリルを適切な直径のものに交換するのです。

「Tools」で穴の種類を選ぶのは、普通は穴の種類毎に CNC プログラムを分けて出力したいからなのですね。

ちなみに、複数の穴の種類を選んだ状態で「Tool change」をチェックすると、ドリル交換のために一旦停止する命令が CNC プログラムに挿入されます[1]
一旦停止する際は、「Tool change Z」で設定した高さだけヘッドを上げた状態で止まってくれます。
ドリル交換に十分な高さ(例えば 40mm とか)を設定しておきましょう。

ドリル交換せず、1 本のドリルで複数の穴を加工しわける方法もあります。
穴の内側を円形にくり抜けば良いのです。
KitMill の基板加工でおすすめされている「土佐昌典」シリーズを使う場合、この方法になります。
持っているドリルでは対応できない大きな穴も、この方法で開けることができます。

「Create CNC Job」では普通のやり方の CNC プログラムを出力でき、その下にある「Mill Holes」では円形にくり抜く方式の CNC プログラムを出力できます。
Mill Holes では、「Create CNC Job」の設定に加え、ドリル径(Tool dia)を設定する必要があります。

「Create CNC Job」の「Generate」をクリックすると hoge.drl_cnc が、「Mill Holes」の「Generate Geometry」をクリックすると hoge.drl_mill が、それぞれ出力されます。
前者はそれ自身で CNC プログラムですが、後者は CNC プログラムではなく Geometry Object ですので、以降はガーバーデータと同様に処理していくことになります。

Mill Holesで生成されたGeometry Objectの設定

ドリルデータの「Mill Holes」で生成した Geometry Object の設定は、外形データ(Edge.Cuts)の設定と考え方は同じです。

おまけ:FlatCAM とは

ガーバーデータはベクターデータですが、そのままでは CNC を制御することはできません。
専用ソフトウェアで CNC プログラムに変換します。

KitMill の基板加工アタッチメントを買うと付いてくる「ORIMIN PCB」がまさにそのためのソフトウェアですが、試したところ KiCad が出力するガーバーデータを読めませんでした。
具体的には G36 という拡張ガーバー形式(このあたりは余り詳しくないです……)の命令を使ったファイルを ORIMIN PCB が読めないということだそうです。

その代わりになるソフトウェアとして「Gynostemma」というものがあるそうですが、2015 年を最後にリリースが止まっているので、
今回は FlatCAM を使ってみたというわけです。
FlatCAM でも特に問題無く基板を作れました。


  1. 一旦停止の命令は、各穴の種類が切り替わる時点にはもちろんですが、プログラムの先頭にも挿入されるようです。したがって、B.Cu と Edge.Cuts の切削が終わったら、そのままドリル加工に移ることで、エンドミル→ドリルの付け替えを行うタイミングが確保できます。 ↩︎

1
uchanのアイコン画像
本業はプログラマですが、昔から電子工作は趣味でやってます。初めてのプログラミング言語はPICアセンブラです。 モジュールを買ってきて組み合わせるだけでなく、部品の動作原理をきちんと理解して回路を設計することに楽しさを感じます。 2021年3月22日に拙著「ゼロからのOS自作入門」を出版します。低レイヤ好きの方、ぜひお手にとってみてください。Amazon→ https://amzn.to/2NP3FUj
ログインしてコメントを投稿する