<第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、
座標   終点 始点
                |
 3個目のX、
座標      終点 始点
                   |
 4個目のX、
座標         終点 始点
                      |
 5個目のX、
座標            終点 始点
                         ||
 6個目のX、
座標               終点


下は上の処理を新しく入れて変換した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になっていました。パッドの両縁を測ってそれを基準に縮小してしまいました。パッドのセンタ間で測る必要があります。次回は縮小率を修正して、ぎりぎりまで切削厚を薄くして、最後まで切削する予定です。