uchan が 2021年07月26日21時28分28秒 に編集
初版
タイトルの変更
KiCad + FlatCAM で楕円を削る
タグの変更
FlatCAM
KiCad
プリント基板
基板自作
メイン画像の変更
記事種類の変更
セットアップや使用方法
本文の変更
KiCad で楕円の穴が必要な部品を使った場合、ドリルデータに楕円が出力されますが、そのままでは FlatCAM で楕円を扱えません。本記事では、Gerber X2 形式でドリルデータを出力することで、楕円の穴を FlatCAM で扱う方法を説明します。 ## 問題背景 [KiCad + FlatCAM で KitMill 用の基板切削データを作る](https://elchika.com/article/3bfd48b8-24e8-4455-b2dd-c3b582fd0c23/) という記事を書きましたが、この記事の方法だけでは、下図のような楕円を必要とする部品を上手く扱えません。 ![楕円がある部品](https://camo.elchika.com/ec8cd91731c0bf86fc1b8fcef76679fede7a05b3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f35373066616332352d633663652d343462652d623863652d663861653933336561383334/) このような部品を含む基板パターンで、先の記事の通りにファイルを出力すると、ドリルデータに楕円穴も含まれて出力されます。そのまま FlatCAM でドリルデータを開くと、下図のように楕円の両端に穴があるように認識されてしまいます。 ![](https://camo.elchika.com/df8cb77f3b3fa4e10a13aa81a20e7a655dc9277f/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f62303036336664642d353063342d343665392d393930312d313939636137613737613033/) 本来、2 つずつの穴は楕円として繋がっていて、長細い穴が空くはずなのです。しかし、このまま加工すると、単に 2 箇所にドリルが打たれるだけで、楕円になりません。 ## 対処方法 この問題に対処するには 3 つの方法があると思います。(他にもあるかもしれませんが) - 部品の端子を曲げて、表面実装で対応する - 穴を空ける必要を無くす、という発想 - ドリルで穴を空けた後、手動加工により穴を広げる - FlatCAM が対応する形式で楕円データを出力する 本記事では 3 番目のやり方を説明します。 大まかな手順としては、KiCad で楕円のドリルデータを Gerber X2 形式で出力し、FlatCAM で「ドリルによる穴開け」ではなく「切削による穴開け」として対処します。 ## ドリルデータから楕円を削除 ドリルデータは、先の記事では Excellon 形式で出力しました。しかし、FlatCAM は Excellon に含まれる楕円を認識できません[^1]。そこで、楕円のドリルデータをガーバー形式で出力する、という方法を用います。必要なドリルデータは次の 2 つです。 [^1]: https://muut.com/i/flatcam/usage:can-i-make-oval-holes - Excellon 形式の普通の穴データ(通常のドリル加工用) - ガーバー形式の楕円の穴データ(切削による加工用) 普通の穴と楕円の穴をファイルとして分離するということです。それらが同じファイルに含まれてしまっていると、普通の穴まで切削加工(Mill Holes)の対象になってしまいます。普通の穴は従来通り、ドリルで加工したいですからね。 Excellon 形式の普通の穴データを作るには、まず Pcbnew で基板パターンを開き、Excellon 形式でドリルファイルを生成します。この Excellon ファイルには普通の穴も、楕円の穴も含まれています。 このファイルをテキストエディタを開き、楕円データを削除します。難しそうに思えるかもしれませんが、ドリルファイルを見る限り、楕円は最後の方にまとまるようなので、それほど心配は要らないでしょう。 Excellon 形式のドリルファイル(*.drl)の中身はこのようになっています。 ``` M48 《中略》 FMAT,2 METRIC T1C0.800 T2C1.000 % G90 G05 T1 X004374Y056900 《中略》 X071620Y021340 T2 X005580Y021340 《中略》 X071620Y008640 T1 G00X005860Y068620 M15 G01X005860Y066420 M16 G05 G00X011760Y070770 M15 G01X009560Y070770 M16 G05 T2 G00X011910Y064520 M15 G01X009410Y064520 M16 G05 T0 M30 ``` Excellon 形式について詳しくないですが、どうやらこんな意味のようです。 | 命令 | 意味 | |-------|-------| | T1C0.800 | ツール 1 の定義。T1 = 0.8mm | | T2C1.000 | ツール 2 の定義。T2 = 1.0mm | | T1 | ツール 1 を選択 | | T2 | ツール 2 を選択 | | X004374Y056900 | X 座標 004374、Y 座標 056900 | ファイルの先頭にツールの定義などがあり、その後で普通の穴の座標がずらっと並びます。穴は、ドリル交換を最小にするために、径ごとにまとまって出力されています。登場する穴径の種類が 2 種類だったので上記のように T2 まで登場しています。種類数が変われば、その数だけ T* が出現するはずです。 普通の穴の並びに続き、楕円の穴が登場します。上記の例では、T1、T2 の後、T1 が再度登場する行が楕円の始まりです。1 つの楕円データだけを抜き出すと、以下の通りです。 ``` T1 G00X005860Y068620 M15 G01X005860Y066420 M16 G05 ``` 座標 (005860, 068620) から (005860, 066420) に向かう楕円を表しています。座標を良く見ると Y 座標だけが変化しているので、縦方向の楕円だということが分かります。 これらの、楕円を表す行をすべて削除してください。削除すると、最終的に次のような内容になります。 ``` M48 《中略》 FMAT,2 METRIC T1C0.800 T2C1.000 % G90 G05 T1 X004374Y056900 《中略》 X071620Y021340 T2 X005580Y021340 《中略》 X071620Y008640 T0 M30 ``` これで「楕円を含まないドリルファイル」が完成しました[^2]。 このファイルを FlatCAM で読み込むと、楕円部分だけ穴が空かないことが分かります。 ![](https://camo.elchika.com/67a34cfa5849b0a9f147af47e081580bd469e767/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f64356534346636352d396335372d343562622d626562362d656662386434383061636234/) [^2]: Excellon ファイルをテキストエディタで修正するのではなく、Pcbnew で「楕円パッドを含まないパターン」を作り、ドリルファイルを出力する方法もあります。お好きな方を選択してください。個人的には Excellon ファイルの修正の方が楽だなと思います。 ## 楕円データをガーバー形式で出力 「楕円を含まないドリルファイル」が完成したので、次は「楕円だけを含むガーバーファイル」を作ります。 それには、まず Pcbnew で「楕円パッドだけを含む基板パターン」を用意します。これは、本来の基板パターンを作成した後、楕円パッド以外を削除することで作れます。本来の基板パターンを壊さないように、Pcbnew のファイルメニューから「名前を付けてコピーを保存」でコピーを作り作業すると良いでしょう。 楕円だけを含む基板パターンを作成できたら、ドリルファイルの生成画面で「Gerber X2」を選びます(下図)。 ![Gerber X2を選ぶ](https://camo.elchika.com/f8e424df789af92fe19c14884ad03c145b93474c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f32393730363831382d316665372d346562362d386131382d363635363239326334393966/) *-PTH-drl.gbr と *-NPTH-drl.gbr の 2 つのファイルが生成されます。前者はスルーホールの穴、後者は非スルーホールの穴を含んだファイルです。部品を取り付けるための穴は通常はスルーホールなので、後者のファイルはほとんどの場合に活躍しません。 ## FlatCAM で楕円データを切削 楕円だけを含むガーバーファイルを FlatCAM で開くと、次のような表示になります。(下図は、導体面のガーバーデータも読み込んであります) ![](https://camo.elchika.com/557f4c0b0a43c8357906470b872eec99889aa8a8/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f35383932363736352d313634312d343765642d386366372d373033633137623734353738/) Excellon 形式の穴はオレンジ色で表示されるのに対し、楕円はガーバー形式ですので、緑の線で表示されています。この緑の線を削れば、見事楕円の穴が空く、というわけです。 導体面を削るのと同様の流れで、FlatCAM で処理していきます。その際、下図のように、エンドミルの直径(Tool dia)を負値にするのがミソです。 ![直径をマイナスにする](https://camo.elchika.com/340dcf2b0dbd7d7e24c438c209f43b2f37abdaad/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f32363365666636342d643362362d346336312d613030612d636262633864636130663735/) このように設定し、Generate Geometry をクリックすると、下図のようにジオメトリオブジェクトが生成されます。 ![](https://camo.elchika.com/21c557b1b3721a63fddab6cbd4d7cbe27cbd6b64/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f35373065396332382d663866382d343230352d383438372d346434313330636533366462/) 楕円の緑線の内側を赤い線が通っているのがポイントです。これが直径を負値にした効果です[^3]。Tool dia を正の値にすると、楕円の外側を削ることになってしまいますが、負にすることで内側を削れるのです。 次に、切削の設定をしますが、ここでは Tool dia を正の値に戻しておきましょう[^4]。 ![正の値に修正する](https://camo.elchika.com/b7a28dfca2ff105c46e03133a0149c1454829dab/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f32643636343638632d363033372d343939312d613862342d386538383333343532343538/) そして、穴を空けるので「Cut Z」は基板厚以上の値を設定し、Feed Rate もエンドミルが折れない程度の値に調整してください。 Generate で CNC プログラム(G code)が生成されます。 ![](https://camo.elchika.com/ea793ca2ba112a46292043a52e8593e2bea28d70/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f64333538613639352d326633342d346639392d396130622d636465376163366533386535/) ここまで来れば、後は通常の手順で切削するのみです! [^3]: そもそも「負値」に設定できることを発見したのは、ひらめきです。 [^4]: ここで「Tool dia」を正に戻しておかないと、FlatCAM がバグります。