<第21回目:’06年5月14日>
kicadのPCBデータの切削加工
1.PCBの切削
フライス盤にV字カットのカッタを付けると、切削加工によるPCB(プリント基板)が作製できるようになります。ただし、Y軸の移動距離が10cm弱な
ので、小さい基板 しか作れません。コネクタやソケットの変換基板のような小さい基板なら実用的に使えると思います。
2.ガーバデータについて
基板のガーバデータはrs473というフォーマットで
す。このデータをCNCデータ変換できれば、CNCフライスで基板が切削加工できるようになります。しかし、ガーバデータは元々フォ
トプロッタ用なので太さのあるオブジェクトの中心座標の
情報だけしか持っていません。形状
は別にアパチャデータとして持っていま
す。つまり、何々のアパチャが一瞬露光(flash)したり、これこれのアパチャがシャッタを開けてXY座標を移動するという動作でフイルム上にパターンを描いていきます。データ変換は本来なら直接ガーバデータから行な
うのが筋なのですが、けっこう難しいです(笑)。そこで、以前にも使ったautotraceで輪郭を抽出して簡易的に
PCB作製をしてみます。時間があれば、ガーバデータを直接CNCデータ
にするプログラムを作ってみたいです。
3.kicadについて
今回使ったkicadですが、FreeBSDの
ports/packagesにあり、良くできています。回路図入力、部品作製、アートワーク、ガーバビューワ、3Dビューワで構成されています。
4.データの流れ
・kicadでアートワーク作製
・ps形式でアートワークデータをセーブ
・pstopnmでpnm形式に変換
・autotraceでpnmをdxf形式に変換(輪郭抽出)
・qcadにて寸法合わせと修正を行ない、dxfでセーブ
・dxf2zcamでCNCデータに変換
という流れになります。
5.ps形式でデータをセーブ
kicadではdemosにサンプルのデータが入っていますので、取りあえず出来あがっているアートワークデータを使います。”sonde xilinx”
というザイリンクスのダウンロードケーブルのアートワーク例がありました。ハンダ面のみ表示したろころです。
plotボタンを押して、ハンダ面(Copper面)の
みを3倍寸でps形式でplotします。
ちゃんとps形式で出力されたかghostscriptで確認します。90度左に回転しています。
% gs -g600x900 sonde-Copper.ps
6.ps形式を
autotraceが読めるpnm形式に変換
画像変換プログラム群のnetpbmに含まれるpstopnmを
使ってpnm形式に変換します。
% pstopnm sonde-Copper.ps
とするとsonde-Copper001.ppmとい
うファイルに変換できます。
pstopnm infile > outfile というコマンドではないので要注意です。このppmというファイルはxvなどの画像ツールで読めますので確認しておきます。
7.ppm形式を
autotoraceでdxf形式に変換
% autotrace -input-format PPM
-output-format DXF sonde-Copper001.ppm > test.dxf
とすると
輪郭がベクタに変換されたdxfファイルが生成されます。早速qcadで読んでみます。こんな感
じです。なんかへろへろです(笑)。コネクタ
の部分にみ抜粋しました。
autotraceには多数のスイッチとパラメータが指定できます。manを読んでも、良く判らないのです
が、色々と試してみた結果、以下の−corner−
surroundというスイッチで整数のパラメータを1や0にすると(デフォルトは4)ラスタデータがほぼそのままベクタに変換されるようです。
% autotrace -corner-surround 1
-input-format PPM -output-format DXF sonde-Copper001.ppm > test-cs1.dxf
こんな
感じです。ラスタデータのジャギまで忠実にベク
トルになってるようです。ちょっとぎざぎざ過ぎなので−corner
−surroundを2や3にしてみましたが、なぜかデフォルトの4と同様なってしまいました。とりあえずこのデータを使ってみます。qcadに読み込んだ後、寸法を実寸に戻します。既知の距離(例えばD−subコネクタの間隔)をqcad内で測り、それをqcadのscale機能を使って実寸の長さに変換します。
8.dxf形式を独自
CNCデータに変換
上記の大
きさを修正したデータに原点と切削厚を追加してセーブしCNCデータに変換します。
% dxf2zcam test-cs1
とします。変換するとCNCデータとgnuplot用のplot
データが生成されるはずなのですが中身は空でした。dxfファイル内を調べる
と、LWPOLYLINEと
いうエンテティが使われているということが判りました。qcad内ではフリーハンドで線を描いたときに使われるエンティティです。現状の変換プログラムでは対応していないエンティティでした。以下に抜粋を示します。緑で注釈を入れておきます。
ENTITIS
0
LWPOLYLINE
<
-エンティティの開始
5
45
8
<
-レイヤ指定
DEF_100
62
<
-色指定
7
370
0
6
<
-線種
CONTINUOUS
100
AcDbEntity
100
AcDbPolyline
90
<
-点の数
5
70
<
-フラグ
0
10
<
-X座標 1個目
129.9010600000000011
20
<
-Y座標 1個目
251.6105200000000082
10
<
-X座標 2個目
129.9010600000000011
20
<
-Y座標 2個目
・
・
・
というような感じで、点の総数が指定され、その後X、Y座標が列挙されているフォーマットです。その他、線の属性はその他のものと変わりないようです。このフォーマットであれば簡単にLINEのエンティティに変換できそうです。LINEはX、Y座標が1組になって1本の直線を表しています。そこで、以下の様にLWPOLYLINEを
通常のLINEへ変換します。
LWPOLYLINE LINE
1個目のX、Y座標 始点
|
2個目のX、Y座標 終点 始点
|
3個目のX、Y座標 終点 始点
|
4個目のX、Y座標 終点 始点
|
5個目のX、Y座標 終点 始点
||
6個目のX、Y座標 終点
下は上の処理を新しく入れて変換したgnuplotの
図です。正常に変換できているようです。6521本の直
線に変換されました。ぎざぎざなのでデー
タの数はだいぶ多くなっていると思います。
変換後、実際に基板を切削してみます。1.6mm厚の両面基板を
フライスに固定して、V字カット用のカッタで
切削します。このカッタは以前にアク
リルやアルミなどに使ったものと同じ物を使いました。図面上では切削厚を1.0mmとし、カッタを基板表面から0.5mm浮かせて切削を開始します。0.
5mmで切削すると切削幅が太いので途中、Z軸を手動で下げていき、丁度良さそうなところで固定しました。写真の左が切削初めで、切削厚が深くなっていま
す。今回は初回テストなので、D−sub9ピンのコネクタのパッドの切削が終った
ところで中断しました。
コネクタを入れるために端の余分な部分を切り取ります。コネクタ用のパッドがずれていました(笑)。
作製した基板を会社に持ってきて、顕微鏡で観察してみま
した。ぎざぎざまで再現されています。調整後の切削幅は大体0.23mm程度になっていました。パッドは削幅と同じ寸法だけ小さくなるわけですから0.8mmの穴開けは難しそうです。切削厚をもっと薄くするか、フットパターンを変えて、パッドを大きくする必要があります。
9ピンのD−subコネクタ用のパッドですが、縮小率を違えま
した。ピン間が2.76mmの必要がありますが、2.98mmになっていました。パッドの両縁を測ってそれを基準に縮小してしまいました。パッドのセンタ間で測る必要があります。次回は縮小率を修正して、ぎりぎりまで切削厚を薄くして、最後まで切削する予定です。