JWCADでライブラリ作りを工夫

出典: Wikimura

Altiumのライブラリ作りで嫌なのは、ウィザードに無い形状...特にソケットとかコネクタのフットプリントを作るときだと思います。 複雑な形状でピン数が増えてくると、もはや手作業でパッドを配置するのは困難です。そこで、Excelなどの表計算ソフトで座標やサイズなどを定めておき、エディタ上でSmart grid insertを行うのが賢いやり方だと考えています。(予断ですが、私はミスをしたかもしれないと思っていると先に進めない性質なので、しっかりとチェックできるこの機能が結構気に入っています)


手作業でできるならこんな面倒なことをしなくても...とよく言われるのですが、単純な作業ほど注意深くやらないとミスをします。 そしてミスにも気付きにくいものです。 どうせ後になって変更したくなるのですから、予め数値データを用意した方がGUIに頼るより良いと考えています。


とはいうものの、予め寸法を計算するのも結構面倒です。データシートにある寸法は、Altiumに入力するデータにする前に多少の計算を要します。 この計算は小学生でもできるのですが、数が多い上にチェックも大変です。


そこで、改めて図を起こし、そこから寸法を取り出してしまおうと考えました。 JWCADというフリーの2D CADを使えば、定規とコンパスを使うかのように簡単に図面を書くことができます。


JWCADを使ってフットプリントを作る手順は以下のようになります。

  • JWCADを使って部品の図を描く(完全に再現しなくて良い)
  • パッドや外形線を作成するための基準点、寸法を書き加える
  • Excelなどへ基準位置とパッドサイズなどのパラメータを入力する
  • パッドの中心位置、サイズ、外形線の形状などを計算する
  • AltiumのList形式に整える
  • Smart Grid Insertでフットプリントを作成する


文字で書いても分かりにくいので、ROHM社の三端子レギュレータで使われるパッケージTO-252-5のフットプリント作成の流れを紹介します。 少し手間はかかりますが、ドキュメントとしてとって置けますし、変更に対して柔軟に対応できるようになります。 (根拠のあるフットプリントなら安心して使えますし...ある程度は適当ですが)


目次

題材

ROHM社ではTO-252-5パッケージは、シャットダウン機能付のレギュレータに使われているようです。BAxxシリーズの一例を参照してください。

JWCADで描く前に

Altiumではパッドの位置とサイズを入力できれば最低限のフットプリントが作れます(外形もですが)。 パッドサイズは半田付けのしやすさを考え、リードの接地面より少し大きめに作ります。 これはあくまで好みなので変更が生じやすいところです。 そこで、CAD上では基準位置の座標だけ求め、パッド中心とサイズについてはExcel上で計算した方が使い勝手が良くなります。


パッド基準位置を下図のようにリード中心軸の先端に設定すると、パッドサイズのパラメタライズがしやすくなります。

基準位置


これに習って、TO-252-5の5つのパッド基準位置を設定するとした図のようになります。

5つの基準位置

JWCADで描く

基準を作る

水平・垂直の十字を作り、基準を設けます。以降の作業はこの十字の上で行います。

外形を描く

まず円ツールを使って半径3.25mmの円弧を、十字の交点を中心として水平軸と2点で交わるよう描きます。 円ツールを選択したら、十字の交点を右クリックすることで、中心を交点に設定できます。

JWCADには、交点や端点の近くで右クリックすると、その点にスナップする機能があります。 この機能を使うことで、コンパスと定規を使っているかのように作図することが可能です。

続いて、水平軸と円弧との交点それぞれについて、垂直の線を描きます。線ツールを選択したら、始点として交点を右クリックして選択します。 終点は決まっていないのですが、垂直方向にある程度の長さを確保します。

今度は外形線の上側を作ります。円弧ツールをコンパスのようにして、先程の直線の付根を中心とした半径5.5mmの円弧を描きます。

これでできた交点から水平方向に直線を引くことで、外形線を描く下書ができました。


リードを描く(3番ピン)

まず上側の線を引くために、図のように半径7mmの円弧を描き、直線との交点を作ります。 この交点から水平方向へ直線を描けば、上辺ができます。

リードは幅が5.1mmなので、中心から半径2.55mmの円弧を描き、先程の直線との交点を2箇所作ります。 これらの交点から垂直に直線を引けば、3番ピンの完成です。


残りのリードも描く

リードは1.27mmピッチのようなので、中心から半径1.27mmと2.54mmの円弧を描きます。 水平軸との交点から垂直に直線を引けば、リードの中心軸が出来上がります。

長さを決めるために、一番端のリードの付根から、1.5mmと2.5mmの円弧を描きます。これはリードが接地するまでの距離と、リードの長さです。円弧とリードの中心軸との交点から、水平に直線を引くことで、全てのリードの長さを決めることができます。

これでフットプリントを作るための位置情報は整ったのですが、ついでなのでリードの外形も描きます。 各リードの付根から、リードの太さの半分である半径0.25mmの円弧を描きます。これと水平軸との交点から垂直方向に直線を描けば、リードの外形線になります。


清書する

ここまでで下書が終わったので、これから清書します。 下書とレイヤを分けたいので、レイヤ切替ボタンで編集対象を切り替えます。 (ここではレイヤ0が下書用、レイヤ1が清書用)

もう外形などは分かりきっているので、下書の交点を頼りに線や四角を描きます。

完成した図をオリジナルの形状と比較します。一致していることが分かります。


寸法を入れる(X座標)

まずはリードのX座標を求めます。ある基準からの距離を書き込む場合、寸法ツールの中でも累進モードが適しているようです。使った感覚では...


累進モードを選択したら、まず引き出し線位置を決定します。この線から(普通は)垂直に寸法線が引き出されます。これには原点を右クリックします(どこでも良いのですが、分かりやすいので) 寸法線位置は適当に配置します。

続いて、基準点を原点に設定します。原点上で右クリックして設定します。 そして、終点としてリードの中心軸(とどこかの水平線との交点)を右クリックすることで、基準からの水平距離が得られます。

このコマンドは何度も連続して基準からの距離を測れるので、そのまま別のリード軸の距離も測ります。


寸法を入れる(Y座標)

今度は寸法線の傾きを90度に設定し、垂直方向の長さを図れるようにします。 傾きを変えたら累進モードに設定し、X座標のときと同様に原点を基準とした各点のY座標を記入します。


寸法を入れる(幅)

リードの幅も入れます。2点間の距離には寸法線モードが適しているようです。 寸法線を選択したら、引き出し線と寸法線を設定し、始点と終点を設定すれば寸法が記入されます。

このツールは連続的に動作させることも可能ですが、前の終点が始点になります。 全く違う場所を図りたい場合は、リセットボタンを押します。 引き出し線と寸法線の設定からやり直しになります。(リセットの左隣のボタンは、引き出し線と寸法線のタイプを選ぶボタンのようです)


完成

これが完成した図です。外形線の幅をうっかり忘れていました...


フットプリントを作る

Excellで計算

図から得られた基準点位置と、パッドサイズのパラメータを設定し、Smart Glid Insert用の表を作ります。 なぜかHole Sizeも書かないとパッドに勝手に穴があけられてしまうのは私だけなのでしょうか...


PCBLib ListへSmart Grid Insert

上図のようにExcelで表をコピーします。 AltiumのPCBライブラリエディタで、PCBLib Listを開き、Editモードにした状態でSmart Grid Insertを実行します。 ヘッダを正しくつけていれば、自動認識ペーストを使うことができ、1クリックで下図のように値がセットできます。あとはOKボタンを押すだけ。


完成

完成したフットプリントとオリジナルの形状を比較しました。 これなら半田付けしやすいはずです。もちろん放熱のことを考えるなら、基板側のパターンで工夫する必要がありますが...基本はこれでOKのはずです。


あとがき

  • 今回は対称性もあり、Altiumでもできそうな非常に簡単な例でした。しかし、コネクタやソケットといった類の部品をAltiumだけでやるのは本当に手間がかかります。自前でライブラリを作ることになったら、間違う+変更すること前提で作った方が後々になって楽だと思います。
  • JWCADのファイルとExcelのシートを置いておきます。
    • あまりうまくないですが...とりあえず参考までに使ってあげてください。
  • 他人の作ったライブラリはどうにも使いづらいのですが、パラメタライズができれば、好みに合わせて使ってもらいやすくなるはずです。
    • でも研究室内ですらWikimuraの更新を知らない人が多いという現状...
    • SVNリポジトリでAltiumライブラリを管理していること自体知らないだろうし、知ったところで面倒くさがって使ってくれないんだろうな...
    • 以上 愚痴でした