ミッツの回路基板拙作機 FP-7A は、 機械はこの分野においては入手しやすいものの (値段は120万円もするけれど)、 専用CAD FLASH for WIN の設計製図関連の出来栄えが悪く アップデートやバグ修正やサポートが有料 (1回あたり4万7千円もしくは9万8千円)です。
しかも、専用CAD には、 1ライセンス料金につきハードウェアキー1個が付属していますが、 専用CAD での設計と、基板切削の実行とで、排他使用になる為、 誰かが設計中は切削ができないし、誰かが切削中は設計ができません。 それでいて、 バグだらけだの、よくクラッシュしてデータが消えるだの、 操作性悪いだの、機能が不完全だの、 ミッツの専用CAD で設計なんぞ、とてもできたものではありませんし、 敢えてやると、時間を食うので、順番待ちの人にひんしゅくをかいます。
順当に考えると、他の出来の良い基板CAD を使って設計して ガーバデータで出力し、 ミッツの専用CAD で読み込んでやろう、と考えるのですが……、 ミッツの専用CAD は RS-274X ガーバ 非対応で、 RS-274D ガーバ の読み込みもかなり怪しい動作をします。
そこで、 なんとかしてミッツの専用CAD に 他の CAD で作成したガーバを読み込ませてやろう、 と言うおはなしです。
回路図CAD QtBSch , 回路基板CAD pcb.sourceforge.net 関連の拙作ツールや拙作ライブラリはこちら。
参考:
PCB : Printed Circuit Board Editor
「PCBE Ver.0.48」から「ミッツ FP-7A」への転送方法
http://www.nagano-it.go.jp/jyouhou/kaisetsu/gbf_s.pdf ガーバーフォーマット [解説] (数ヶ所、微妙に間違っているので注意)
http://www.nagano-it.go.jp/jyouhou/kaisetsu/ext_gerber.pdf 拡張ガーバーフォーマット解説 (数ヶ所、微妙に間違っているので注意)
gerbv - A Free Gerber Viewer (ver.1系はミリ系が扱えないバグがあるので注意。ver.2系で治っている)
基板切削機の所要時間のメモ。
大きさ:A6両面 ドリル(表):35〜45分 ライン取り(表):20〜25分 ミリング(表):25〜30分 裏面の原点出し:15分 ライン取り(裏)+ミリング(裏):35〜45分 外形:20分 合計で2時間半くらい。 大きさ:A5両面、片面の処理に合計4時間ちょっと。両面合わせて9時間くらい。
次章(次のH2タグ)で述べている、 pcb.sourceforge.net で設計したデータをミッツ専用CAD に読み込ませる方法を、 半自動化するプログラムです。
突貫工事で作ったので、 他の CAD で作った RS-274D/RS-274X を変換できるかどうかは不明です。 切削データ抽出と外形加工データ抽出は独自仕様ですが、 それ以外は汎用に処理してはいますが、未確認です。
ミッツ専用CAD は、 RS-274D/RS-274X の領域塗り潰し(いわゆるベタパターン)の 読み込みができません。 本ソフトで途中まで自動変換した後、 手動で塗り潰しの編集作業をしなければなりません。 ……結論から言うと、 ミッツ専用CAD でベタパターンを扱うのは諦めた方が楽だと思う。
本変換プログラムの独自拡張で、 線幅 0.01mil(0.0005mm)以下の線は、切削データとして出力します。 ベタパターンを使いたい時に、 他CAD での設計時点で(手動でとはいえ)ベタパターンを作れる様に、 そう言う仕様にしました。
RS-274D/RS-274X では、基板の外形データに関する、 共通の方法がありません(fab はどうだろう?)。 本変換プログラムでは、 pcb.sourceforge.net 独自仕様で記録されている外形寸法(長方形のみ対応)を 抽出して使用しています。
ライセンス: 実行プログラムは BSDライセンス、 ソースコードは GPL(LGPLでは無い方。ソース公開義務が無期限に波及する方)。 但し付加条項として、 明示的に許可した場合を除き、 本ソフト自体もしくは本ソフトの生成物、 ないしは本ソフトのソースもしくは生成物を利用して製作した物を用いて、 金銭ないしは有価証券もしくはそれらに準ずる物を得る事を禁止する。 当サイト fenix.ne.jp の維持運営に関して、 金銭的ないし物品面もしくは実働面で貢献ないし負担している人は、 その本人に限り許可する。
gerb2mits.lzh(Tue,08 May,2007)(49KB)
コンパイルの仕方は環境によって千差万別なので、 各自でなんとかされたし。
銅箔幅は一般的には 15mil(0.4mm)、 部分的には 10mil(0.25mm) が下限。 100mil 間隔のランド間に配線1本が限界です。 穴直径 31.5mil(0.8mm) ランド直径 60mil(1.5mm) クリアランス片側15mil(0.4mm)、配線幅 19.69mil(0.5mm) が限界かつ無難に実現可能 (注:配線がランド間を通る時に線幅 10mil くらいまで削り込まれます)。 2本通すと切削時に千切れます。 穴直径 0.8mm ランド直径 39.69mil(1.0mm) は、ランドが千切れました。
クリアランス 0.25mm(10mil) は無理です、あちこちに切削残しが出ます。 クリアランス 0.3mm(12mil) も切削しのこしが、ちょくちょく出ます。 クリアランス 0.4mm(16mil) ぐらいなら問題無しでした。 そもそも 0.1mm 単位で指定すること自体が困難です。
pcb.sourceforge.net の八角ランドは、 ガーバ出力時にベタパターンとして出力されます。 その他の CAD でも、丸・四角 以外のランド形状を扱える物がありますが、 ミッツ専用CAD では、丸・四角 以外のランド形状を扱うことはできません。
ミッツ専用CAD では、ベタパターンの読み込みがまともにできませんし、 ミッツ専用CAD でのベタパターンの製図もかなり不可解な動作をします。 諦めてベタパターンを使わない方が無難かと思いますが、 それでもベタパターンを使いたい場合の注意は以下。
RS-274X で言う所の G36 と G37 を無視して、 領域の輪郭を配線とみなしてしまう。 なので、本変換プログラムでは、 G36 のデータは補助レイヤに転送しています。
RS-274X で言う所の %LPC*% は、%LPD*% と等価に処理される。 なので、本変換プログラムでは、 %LPC*% は補助レイヤに転送しています。
でも、ミッツ専用CAD の補助レイヤは、 塗り潰し領域の輪郭指定と、 画面に表示するだけの文字通り補助線にしかならない。
但し「何も無い」領域に線やランドを置くと、その輪郭は切削される。 ベタパターンとの接続はされない。
でも「削除」で輪郭の切削データを消してやれば、 ベタパターンと接続できる。 ただ、「輪郭抽出」を再び行うと戻ってしまうので、 再び手動で編集しないといけない。
「何も無い」領域に線パターンを引いてやれば、 ベタパターンを分割できる。 ただ、線の両側を切削するのでエッジが二重になってしまう。 線の太さを 0.001mm(0.05mil) ぐらいにすれば、太いけれども1本のエッジになる。 線の太さを 0.000mm(0.000mil) にすると、無視されてしまうので注意。
本変換プログラムの独自拡張で、 線幅 0.01mil(0.0005mm)以下の線は、切削指定として出力します。 「何も無い」領域に線幅 0.01mil(0.0005mm)以下の線パターンを引いてやる事で、 ベタパターンを分割する事ができます。 変換時には元のクリアランス指定は無視し、 変換後はクリアランス片側 7.9mil(両側で0.4mm)で出力します。 なお、線幅 0.01mil(0.0005mm)以下の線でパターンやランドを横切ると、 回路基板CAD 上ではつながっていても、 加工時にばっさり切断されてしまいますので注意。 また、ミッツ専用CAD で「輪郭抽出」を行う際に、 「輪郭データを消去してから抽出しますか(Y/N)」で 左クリックもしくは Y と答えると、 切削の加工データも消されてしまいますので注意。
ミッツ専用CAD で切削データの生成を行う際に、 「輪郭抽出(内外)」で生成すると、 閉ループ内の輪郭線の内側も切削されるので、 エッジが二重のベタパターンになってしまう。
でも、ベタパターンの内と外にまたがる線やランドがある場合、 この方法だと、 それらのパターンと輪郭線が接続しない様に作図してやらないと いけないので、けっこう面倒。
早い話が、フォトレイヤに置いた物体の輪郭が切削されます。 隣接していようが重複していようが、構わず切削してくれます。
設計時に接続検査の為に意図的にベタパターン内に ベタパターンに埋もれさせる配線を引いた場合、 ばっさり切り取られてしまいます。
接続したい場合、 「グループ化解除」で輪郭の切削データのグループ化を解除し、 「削除」で接続したい切削データを削除します。 ただ、グループ化解除をすると大量の断片データになるので、 すごい手間がかかります。
1つのベタパターンを複数個の領域に分けて作図した場合も同様に、 個々の領域の輪郭線をまたぐと接続されてしまう。
ベタパターンの輪郭線を横断している線やランドが複数ある場合、 それら全てが接続しているとして処理されます。 例えば、 ベタパターンの輪郭線を横断する平行した8本のラインがあったりすると、 太い1本のラインになっちゃったりします。
一旦、ベタパターンを作成して切削データの生成をした後、 ベタパターンの輪郭線とベタパターンを削除し、 「部分輪郭抽出(内外)」で 輪郭線を横断している線やランドを 1個1個全部選択してやると、一応、切り離せます。
なお、「部分輪郭抽出(内外)」は、 オブジェクトを1つ選択する毎に、指定モードが解除されます。 オブジェクトを1つ選択する毎に、 「部分輪郭抽出(内外)」のアイコンをクリックしないと いけません。
pcb.sourceforge.net で、ベタパターンの縁に八角ランドを作ると、 これにひっかかってミッツ専用CAD でエラーが出て拒否されます。
1つのベタパターンを複数個の領域に分けて作図した場合も同様に、 個々の領域の輪郭線をまたぐとエラーになりました。
例えば、pcb.sourceforge.net で test.pcb と言うデータを作成し、 ガーバ形式で出力すると、
test.backmask.gbr 裏面のハンダマスク。使わない。非対応。 test.backpaste.gbr 裏面のペーストマスク。使わない。非対応。 test.backsilk.gbr 裏面のシルク。使わない。非対応。 test.fab.gbr FAB。使わない。非対応。 test.frontmask.gbr 表面のハンダマスク。使わない。非対応。 test.frontpaste.gbr 表面のペーストマスク。使わない。非対応。 test.frontsilk.gbr 表面のシルク。使わない。非対応。 test.plated-drill.cnc 穴あけのデータ。これを変換する。 test.group0.gbr 0面のパターン(pcb-20060822の場合)。これを変換する。 test.group1.gbr 1面のパターン(pcb-20060822の場合)。これを変換する。 test.front.gbr 表面のパターン(pcb-20070208の場合)。これを変換する。 test.back.gbr 裏面のパターン(pcb-20070208の場合)。これを変換する。
と言うファイルが作られる。 20060822版と20070208版でパターンレイヤのファイル名が変わった。
0/1面と表/裏面の対応は、 pcb.sourceforge.net の File - Preferences - Layers - Groups の solder side 指定が裏面、component side 指定が表面、 になる。
本ソフトは、インチ系/ミリ系を自動判別するので、気にしなくて良い。
gerbv の ver.1系はミリ系の自動判別が不完全で、 たいていインチ系とみなして表示するので注意。 ver.2系で治っている。
KICAD の gerbview は、%LPC*% を含むガーバは正常に処理できない。 pcb-20060822 は %LPC*% を含む。 pcb-20070208 は %LPC*% を含まない仕様に変更された。
上記「準備」で述べた例だと、
% ./gerb2mits test.group0.gbr test.group1.gbr test.plated-drill.cnc
とすると、ミッツの専用CAD で読み込める形式に変換した
test.gbr2mits.cnd 条件データ一覧 test.mits.outline.gb 外形(pcb.sourceforge.net を使った場合のみ) test.plated-drill.mits.drill.gb 穴あけ test.group0.mits.object.gb 0面(pcb-20060822の場合)の配線 test.group0.mits.milling.gb 0面(pcb-20060822の場合)の加工レイヤ test.group0.mits.aux.gb 0面(pcb-20060822の場合)の補助レイヤ test.group1.mits.object.gb 1面(pcb-20060822の場合)の配線 test.group1.mits.milling.gb 1面(pcb-20060822の場合)の加工レイヤ test.group1.mits.aux.gb 1面(pcb-20060822の場合)の補助レイヤ test.front.mits.object.gb 表面(pcb-20070208の場合)の配線 test.front.mits.milling.gb 表面(pcb-20070208の場合)の加工レイヤ test.front.mits.aux.gb 表面(pcb-20070208の場合)の補助レイヤ test.back.mits.object.gb 裏面(pcb-20070208の場合)の配線 test.back.mits.milling.gb 裏面(pcb-20070208の場合)の加工レイヤ test.back.mits.aux.gb 裏面(pcb-20070208の場合)の補助レイヤ
が作られます。
データは全て、ミリ系、トレーリング0の 4.3 形式になります。 絶対系/相対系は、元のデータの形式を引き継ぎます。
なお、変換後のデータを gerbv で確認したい場合、 gerbv ver.1系はミリ系のデータの自動判別が不完全なバグがあるので、 -i オプションを追加して
% ./gerb2mits -i test.group0.gbr test.group1.gbr test.plated-drill.cnc
とし、インチ系で出力する必要があります。 但し、インチ系で出力した場合、ミッツ専用CAD では使えません (読み込めるけれども、ミッツ専用CAD のバグが発症する)。 gerbv ver.2系では治っているので、 特に気にせず、ミリ系のデータのまま使えます。
まずは、ガーバーの読み込み/保存を行うモードに切替えます。
インチ系を指定すると、ミッツ専用CAD のバグが発症します。
ステータスバー以外に、単位系の操作をできるメニューはありません。
基板サイズを選択します。
ここ以外で、基板サイズを設定したり変更したりする方法がわかりません。
そもそも、ここで指定した基板サイズが、何に利用されているのか判りません。
ガーバのパターンのデータ形式を設定します。
pcb.sourceforge.net ならば、下記の通りです。
座標系:アブソリュート(ガーバデータが相対形式の場合は「リラティブ」にする)
ターミネータ:*(穴変換条件と違うので注意)
単位系:0.001(mm)
X反転:しない(ガーバデータが反転している場合は「する」にする)
Y反転:しない(ガーバデータが反転している場合は「する」にする)
後0サプレス:しない
ガーバデータの穴のデータ形式を設定します。
pcb.sourceforge.net ならば、下記の通りです。
座標系:アブソリュート(ガーバデータが相対形式の場合は「リラティブ」にする)
ターミネータ:CRLF(フォト変換条件と違うので注意)
単位系:0.001(mm)
X反転:しない(ガーバデータが反転している場合は「する」にする)
Y反転:しない(ガーバデータが反転している場合は「する」にする)
後0サプレス:しない
アパーチャ(線幅、ランド形状とランド大きさ)、 ツール(ドリル径)、 輪郭(パターン/ランド用ミリング径)、 外形(外形用ミリング径)、 のデータを読み込みます。
ミリ系とインチ系に注意。読み込みは、強制的にミリ系になります。
上記「準備」で述べた例では、 「test.gbr2mits.cnd」を指定して読み込みます。
アイコンバー以外に、ガーバー読み込み操作をできるメニューはありません。 アイコンバーを非表示にしていると、作業できなくなります。
読み込みレイヤは、上記「準備」で述べた例で、 1面が表面、0面が裏面の場合だと、
pcb-20060822の場合 test.group1.mits.object.gb フォト表 test.group0.mits.object.gb フォト裏 test.group1.mits.milling.gb 加工表 test.group0.mits.milling.gb 加工裏 test.mits.outline.gb 外形表 test.plated-drill.mits.drill.gb 穴 test.group1.mits.aux.gb 補助表 test.group0.mits.aux.gb 補助裏 pcb-20070208の場合 test.front.mits.object.gb フォト表 test.back.mits.object.gb フォト裏 test.front.mits.milling.gb 加工表 test.back.mits.milling.gb 加工裏 test.mits.outline.gb 外形表 test.plated-drill.mits.drill.gb 穴 test.front.mits.aux.gb 補助表 test.back.mits.aux.gb 補助裏
となります。
線幅 0.01mil の線を切削データとみなす独自拡張を利用したくない時は、 加工表、加工裏、を読み込まないで下さい。
ミッツ専用CAD は、 時々クラッシュして編集中のデータを消し去ってくれます。 こまめに保存した方が良いでしょう。 ……この注意書きがミッツ専用CAD のマニュアルにも書いてあるんですが。
ミッツ専用CAD では、 「輪郭抽出(外)」「輪郭抽出(内外)」「部分輪郭抽出(内外)」 の UNDO ができません。 実行する前に保存した方が良いでしょう。
読み込んだデータのうち、自動変換できない部分を修正します。
ベタパターンは自動変換できません。
加工データで細工をする場合:
pcb-20060822 の場合、 ベタパターンと接続しない線(クリアランスを持っている配線)には、 補助レイヤに補助線が引いてあります。 ベタパターンと接続する線(クリアランスが無い配線)には、 補助線がありません。 ベタパターンと接続しないランドにも、 補助レイヤに補助線が引いてあるのですが、 ミッツ専用CAD は表示しないみたいです。
pcb-20070208 では、 ガーバファイルにクリアランスを出力しない仕様に変更になりました。 その為、補助線がありません。 補助線のデータを作ろうにも元にするデータが無いんです。 ちょっと困った。
ミッツ専用CAD で塗り潰し領域を指定する場合:
pcb-20070208 では、 ガーバファイルにクリアランスを出力しない仕様に変更になりました。 その為、補助線がありません。
ベタパターンと接続しないランドにも、 補助レイヤに補助線が引いてあるのですが、 ミッツ専用CAD は表示しないみたいです。
ミッツ専用CAD で塗り潰し領域を指定する際に、 くりぬき領域をどうやって確保しようか、 考えずに済みます。
但し、物凄い大量の領域に細切れにされています。 とても手動で塗り潰し領域の指定をする気にならないぐらいに。
ミッツ専用CAD は、補助レイヤのガーバを読み込む際に、 どこまでが1つの塗り潰し領域であるか、 どこからが次の塗り潰し領域であるか、 を示しているデータを無視して捨てています。 その為、塗り潰し領域を指定した際に、 元のデータと違う形を塗り潰し領域とみなしてしまう事があります。
pcb.sourceforge.net で設計したデータを、 ミッツ専用CAD に読み込ませる方法の話。 前章(前のH2タグ)の半自動化プログラムを作成する以前、 全て手動でやっていた時の話です。
Last modified on Sat,18 Mar,2006.
本記事は、私が同僚に渡した文書を、 体裁を調整の上、そのまま転載したものです。
http://pcb.sourceforge.net/ http://gerbv.sourceforge.net/どちらも、ガーバー系式は RS-274X のみです。
G04 Format: Gerber/RS-274X * %FSLAX23Y23*% %MOIN*% %LNGROUP_0*% G04 contains layers solder (0) GND (2) power (3) * %IPPOS*% %LPD*% %ADD11C,0.020*% %ADD12C,0.050*% %ADD13R,0.060X0.060*% %ADD14R,0.090X0.090*% %ADD15C,0.060*% %ADD16C,0.090*% %ADD17C,0.015*% %ADD18C,0.010*% %ADD19C,0.008*% %ADD20R,0.050X0.050*% %ADD21R,0.080X0.080*% %ADD22C,0.080*% G01X0Y0D02* (以下略)
M48 INCH,TZ T01F00S00C0.020 T02F00S00C0.028 T03F00S00C0.030 % T01 X700Y2600 (以下略)M48 はヘッダ(仮称、正式名称不明)開始の指定で、% まで続く。
[ArtWork] ArtworkNo011Division=0 ArtworkNo012Division=1 ArtworkNo013Division=2 ArtworkNo014Division=2 ArtworkNo015Division=1 ArtworkNo016Division=1 ArtworkNo017Division=0 ArtworkNo018Division=0 ArtworkNo019Division=0 ArtworkNo020Division=3 ArtworkNo021Division=3 ArtworkNo022Division=1 ArtworkNo011Code=0.508000;0.000000 ArtworkNo012Code=1.269999;0.000000 ArtworkNo013Code=1.523999;1.523999 ArtworkNo014Code=2.285999;2.285999 ArtworkNo015Code=1.523999;0.000000 ArtworkNo016Code=2.285999;0.000000 ArtworkNo017Code=0.381000;0.000000 ArtworkNo018Code=0.254000;0.000000 ArtworkNo019Code=0.203200;0.000000 ArtworkNo020Code=1.269999;1.269999 ArtworkNo021Code=2.031999;2.031999 ArtworkNo022Code=2.031999;0.000000 [Hole] HoleNo001=0.508000 HoleNo002=0.711200 HoleNo003=0.762000