<第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本からなるパターンがあれば、右のような輪郭を抽出して一筆書きの図形を生成します。実際には途中で分岐したりパターンの太さが変わったりします。けっこう難しいです(笑)。