<第22回目:’09年4月6日>
kicadのPCBデータ解析
1.はじめに
前回更新は2006年の5月でした(笑)。最近
CNCテーブル(プリント基板作製機)に付いていた高速モータ(4万回転)を産業廃棄物で拾ってきまし
た。ここはやはり基板を作ってみたくなります。ガーバデータの解析をしてみることにしました。
2.kicadのphoファイルの覗いてみる
フ
リーのPCB作製ソフトのkicadが出力す
るphoファイル(ガーバファイル)を調べてみます。簡単のためパッド1つとトラックが2又に分かれる簡単なガーバを作ります。小さくて分かりづらいです
が、クリックすると800x600になります。矢印部がファイルの先頭のD10のパッドで座標がX:4.900、Y:−2.000(インチ)になっていま
す。
下のリストが上記のガーバファイルです。//でコメントと解かりやすいように改行を入れ
ました。
//ここから
G04 (Genere par PCBNEW 19-jan-06) le 1/4/2009-06:31:58*
G01*
// 直線補間
G70*
// インチ指定
G90*
// アブソリュート指定
%MOIN*%G04 Gerber Fmt 3.4, Leading zero omitted, Abs format* // LZO
%FSLAX34Y34*% // 3.4 3.4フォーマット
G04 APERTURE LIST*
%ADD10C,0.070000*% //
D10=0.07inc 円のアパチャ
%ADD11C,0.040000*% //
D11=0.04inc 円のアパチャ
G04 APERTURE END LIST*
G54D10*
// D10(0.07inc) 選択
X49000Y-20000D03* // 移動 FLASH
図中の矢印のパッドの描画
G54D11*
// D11(0.04inc) 選択
X37500Y-30500D02* // X3.7500 Y-3.0500 OFF
X40750Y-30500D01* // X4.0700 Y-3.0500 ON
X36000Y-30500D02* // X3.6000 Y-3.0500 OFF
X37500Y-30500D01* // ON 以下同様〜
X34500Y-30500D02* // OFF
X36000Y-30500D01* // ON
X41000Y-17250D02* // OFF
X41250Y-17000D01* // ON
X41000Y-19750D02* // OFF
X41000Y-17250D01* // ON
X41250Y-17000D02* // OFF
X42500Y-17000D01* // ON
X41250Y-20000D02* // OFF
X41000Y-19750D01* // ON
X46000Y-20000D02* // OFF
X41250Y-20000D01* // ON
X42500Y-15750D02* // OFF
X42500Y-17000D01* // ON
X42250Y-15500D02* // OFF
X42500Y-15750D01* // ON
X40500Y-15500D02* // OFF
X42250Y-15500D01* // ON
X46000Y-20000D02* // OFF
X49000Y-20000D01* // ON
X41000Y-30250D02* // OFF
X41000Y-19750D01* // ON
X40750Y-30500D02* // OFF
M02*
//ここまで
先頭の部分で分かるのは以下のようなことです。
・直線を補完する。
・数値はインチ指定である。(PCBなので当然です)
・数値は絶対位置である。
・数値はLZO(上位省略)の3.4フォーマットである。
例えばX49000Y-20000はX=4.9000
Y=-2.0000(インチ)でという意味になります。
・基
板は第四象限にある。
・原点は左上にあり、Y軸はマイナスの値になっている。
また、アパチャの登録は2つで
・0.07インチの円
・0.04インチの円
が登録されています。
実際の描画はG54でアパチャを選択し、その後D[1−3]のシャッタ制御と
共に移動して描画しています。Dコードは以下のような動作になります。
・D1 シャッタON
・D2
シャッタOFF
・D3 シャッタON、OFF(フラッシュ)
3.最終目標は
kicadが出力するカーバデータから切削加工で基板作製ができるようにベク
トル形式に変換することです。例えば左のようにパッドとトラック1本からなるパターンがあれば、右のような輪郭を抽出して一筆書きの図形を生成します。実際には途中で分岐したりパターンの太さが変わったりします。けっこう難しいです(笑)。