So-net無料ブログ作成
  • ブログをはじめる
  • ログイン
Altium Delphi Script ブログトップ
前の20件 | -

べたアースの考え方 Part.2 [Altium Delphi Script]

デバイスからの熱を垂直と水平で別々に考える必要があります。
それを2層、4層、露出パッドの3種類で計算させます。

VIAの熱抵抗と水平方向の熱抵抗を計算してオームの法則にしたがって積み上げます。
細かく処理するには微分、積分が必要になるので単純化しました。

水平方向の計算は面倒なので面積を半円や円に換算して処理しています。

THV_IMAGE.png

nice!(0)  コメント(0) 

基板の熱抵抗計算 [Altium Delphi Script]

VIAの熱抵抗がわかってもべたアースにそれを接続しないとデバイスの放熱は完結しません。
そこで基板のべたアースのパターンの熱抵抗を計算できないか検討に入りました。

参考にしたのは以前にVIAで紹介したページの次ページのこちらです。
http://www.tij.co.jp/analog/jp/docs/analogsplash.tsp?contentId=50617

放射状のパターンで抵抗ネットワークで計算しようとするものです。
そこまで厳密でなくてもいいので、2層べた、4層べた、露出パッドぐらいは計算したい
ものです。

THV_L2.png

nice!(1)  コメント(0) 

VIAの安全電流 [Altium Delphi Script]

常温より10度上昇した場合の電流値を安全電流とします。
VIAの内径から抵抗値などを計算するスクリプトがあるのでそれに更に追加しました。
参考なので計算結果は灰色で表示します。

基板の表層で35マイクロで幅1mmの場合は1Aということを応用します。
内径を開いて平面にして考えたいと思います。

内径1mmなら平面にすると3.14mm幅となります。
メッキ厚は25ミクロンが一般的なので35ミクロンとの差の25/35を係数にします。
厳密に内径はメッキ厚で広がった部分なので下記のようになります。

仕上がり内径 + 2 x メッキ厚

スルーホールの断面は筒状の銅パイプですが開いて平面にした場合より熱がこもるので
係数が必要です。

1/2(0.5) としたいところですが、0.3mm幅の場合は0.3mmAと記載される場合が多いので
他の値でも矛盾のないように、調整値として0.42にしました。

仕上がり内径が0.5mm幅の場合は

(0.5 + (0.025 x 2)) x 3.14 x 25/35 x 0.42 = 0.52

0.52(A)となりますが小数第一位になるように四捨五入するので結果は
0.5(A)となります。

VIA_I_Safe.png


nice!(0)  コメント(0) 

高周波でのPADやVIAの間隔のスクリプト [Altium Delphi Script]

べたアースなどにVIAを打つ場合がありますが、その間隔をどうするかを
周波数に関連して考察されたことがあるでしょうか。

海外の文献ではその基板が扱う周波数の波長を調べ、その1/20にすれば良いと書かれて
いました。
正弦波の一周期は360度ですが、その波形を18度ごとにGNDに何度も落すことでGND電位を保つ
という意味です。

ガードリングなどの場合はVIAを打つ間隔にに相当します。
そういうものがない低い周波数では取り付け穴PADの間隔でもあります。

100MHzであれば波長λは300cm(3メートル)なのでその1/20の150mm間隔で取り付け穴を
設けるという意味です。

3GHz(3000MHz)の場合は5mm間隔でVIAを設けるという意味です。
取り付け穴は間隔が狭いのでレジストを剥がして金属ケースにそのまま貼り付ける方法が
あります。

沢山のVIAをマシンガンのように打っても無意味ということではありません。
適当な間隔で打ってください。

べたアースのVIAは10mm間隔ぐらいにしています。
マイクロストリップラインの周囲の場合は高周波なので5mm間隔にすることが多いです。

Freq_Via_Pitch.png

nice!(0)  コメント(0) 

伝送線路の遅延時間のスクリプト [Altium Delphi Script]

以前にEXCELで作成していたものをDelphiスクリプトとして移植中です。
但し、複数の線路のMax/Minを調べるのではなく、単純に二つの線路の長さの違いを
Lとして、それから計算しています。

比誘電率は基板材料によって異なり、さらに実効誘電率の値をどうするか悩ましいので
プリセットすることにしています。

プログラムのチェックと準備ができたら、ダウンロード可能なように対応します。

DeLay_TXL_F.png
nice!(0)  コメント(0) 

VIAやPADの抵抗値 Part.2 [Altium Delphi Script]

VIAの熱抵抗も計算できるようにスクリプトを修正しました。

前の記事で、内径0.45mmで厚さ1.5mmのVIAは100となっていますが
このスクリプトで計算すると99.8となり、誤差の範囲でしょう。

発熱体の直下に存在するVIAの数でこの値を割れば、それがトータルの熱抵抗となります。
直下ではない場合は、基板の上下の熱移動ではなく拡散なので、VIAの数のカウントからは
外す必要があります。

その部分の計算は難しそうでまだトライしていません。

VIA_TR_Calc.png


nice!(1)  コメント(0) 

VIAの熱抵抗 [Altium Delphi Script]

こちらの記事の下の辺りにVIAの熱抵抗が書かれています。
http://www.tij.co.jp/analog/jp/docs/analogsplash.tsp?contentId=49908

内径0.45mmで高さは1.5mmと通常のサイズとは少し異なりますがその値が
100℃/Wとなっています。

16個のVIAを打っていれば100/16で約6.25℃/Wとなります。
1Wの場合は、僅か6.25℃のロスで部品面から半田面に伝えることが可能です。

これを検証して、これまでのスクリプトに追加する予定です。


nice!(0)  コメント(0) 

VIAやPADの抵抗値 [Altium Delphi Script]

主に穴径の直径が小さいVIAでは以前から抵抗値が気になっていました。
電流が流れる場合は複数のVIAを打ちますが、大きなVIAを数個の方がいいのか
小さなVIAを多数打った方がいいのかの判断がつきません。

そこでそのスルーホール部分の銅の抵抗値を計算するスクリプトがあったらいいのでは
ないかと考えました。

計算のしやすさもありますがそのメッキ厚は25ミクロンをデフォルトにします。
その場合は穴の断面では両側となるので0.05mmとなるからです。
仕上がり径が0.5mmの場合はメッキ前の下穴は0.55mmという意味です。

銅パイプの抵抗値という計算なのでアニューラリング部分については計算に入れない
ことになります。

Via_Calc3.png

続きを読む


nice!(0)  コメント(0) 

自社のスクリプトの分類 [Altium Delphi Script]

これまで作成してきたスクリプトを分類することで、まだ作成していないスクリプトを作成するための
参考にします。

1.スクリプトを作成し始めた頃は、「Altium Designer」の操作をより楽にするという「Utility」という
 感じでした。
 プログラムの内容としては、「Delphi Script」というよりは「Run Process」を連続で記述している
 ものでした。

2.その次に作成したものは「Altium Designer」にない操作をスクリプトで実現するという「Tool」と
 いうジャンルでした。
 プログラム内にはメニューフォームがあるものが多くなっています。

3.昨年に作成したものはあるジャンルの「Footprint」を作成するものが殆どでした。

4.これ以外のものがないかと考えていましたが、「Transmission line」などの計算をするものでした。

これらのうち、1.と2.の境界は微妙なので同じ分類にしていいのかもしれません。
4.の計算をするようなジャンルで何かできないものかを思案中です。


nice!(0)  コメント(0) 

今更のDelphiなのか [Altium Delphi Script]

「Altium Designer」におけるDelphi Scriptに関しては殆どの方が興味がないようです。
使用しているものとしてはこれほど便利なものはありません。

Delphi自体は20年ぐらい前のもので、その当時のボーランド社がマイクロソフト社に負けた形と
なっています。
プログラマーとしては今更、MS-DOSでプログラミングしているような印象となるのでしょうか。

Delphiに関係する情報やAltium社からのドキュメントが非常に少ないのですが、プログラミング
初心者でVBしか知らない私でも特に問題なく作成できているのでハードルはそれほど高くないです。

基板設計者は人が作成したものを利用するだけで、自ら作成するという考え方がないのか
がわからずにいます。


nice!(1)  コメント(0) 

Delphi Script内のメッセージ [Altium Delphi Script]

メニューフォームは英語で作成していますが、エラーや処理工程のメッセージなどは
場合によっては日本語を使用しています。

しかし、英語でグーグル検索すると弊社のブログがヒットすることが多くなってきたので
メッセージもなるべく英語に変更しようとし始めました。

現状で修正したバージョンは「SOIC_Creator」スクリプトだけです。

ブログの記事もそれに対応する為に「続きを読む」以降に英語での記述もしていきますが
その点はご了承ください。


nice!(1)  コメント(0) 

ガルウィングのリード幅 [Altium Delphi Script]

SOP、SSOPなどのフットプリントを作成するスクリプト内ではリードピッチとリード線幅は関連が
あるので自動にしています。
しかし、メーカーによっては大幅に異なっていたり、別のフットプリントを作成することに利用
する場合は変更したくなります。

メニューフォームの一部を修正してプログラムの修正も行いました。
「Lw」がその部分です。
しかし、画像の修正はしていないのでLwが何なのかはわからないかもしれません。

SSOP_GULL_Lw.png

これでDFNなどの部品外形の下書きは可能ですが、パッケージの内側にまでは
入れません。
SON、DFNはQFNも含めて別途、専用のスクリプトで対応するほどの使用頻度でもないので
このスクリプトで対応することにしました。



nice!(0)  コメント(0) 

PDF画面でのスクリプト表示 [Altium Delphi Script]

「Altium Designer」でスクリプトを実行している時に部品の寸法図をPDFで見たい場合が
多いでしょう。

これまでは別のPCでPDFを表示させて数値入力していました。
しかし、同じPCでバックグランドでPDFを見ながらでもスクリプトは表示できるようです。
同じ画面内で目線を移動させるのが最小限なのでミスを減らすことができます。

下記のようなフットプリント作成スクリプトでは最終的には「Altium Designer」のライブラリー内の
どこに配置するかをクリックする必要があるのでそのライブラリーの画面に表示させないといけません。

SOP_PDF_HSOP.png

nice!(0)  コメント(0) 

DFNとQFNパッケージのスクリプトが欲しくなる [Altium Delphi Script]

どちらもフットプリントの雛形は作成しているのですがメーカー推奨のもので作成していて
自社規格とはいいづらいです。

両者は似たタイプで放熱パッドがあるというのも似ています。
一緒でタブで切り替えるメニューで作成すれば便利でしょう。

これからパターンの設計基準に準拠した法則を見つけなければいけません。
QFNの場合はシルクがコーナーだけになるでしょうが、その位置を確定させるのが
プログラムとしては面倒そうです。


nice!(0)  コメント(0) 

シンプルBOM生成スクリプト [Altium Delphi Script]

あまり意味はありませんが、DelphiスクリプトでシンプルBOMを生成するには
下記のスクリプトを実行すればいいでしょう。

Procedure GENE_S_BOM;

var
board : IPCB_Board;

begin

board := PCBServer.GetCurrentPCBBoard;
if (board = nil) then exit;

{ Set ------------------------------------}

ResetParameters;
AddStringParameter('ObjectKind','Report');
AddStringParameter('KInd','SimpleBOM');
AddStringParameter('Target','Document');
RunProcess('WorkspaceManager:GenerateReport');


{ Redraw ------------------------------------}

ResetParameters;
AddStringParameter('Action','Redraw');
RunProcess('PCB:Zoom');

end;


nice!(0)  コメント(0) 

Delphiスクリプトでなくても [Altium Delphi Script]

前の記事の「Trans_Line スクリプト」は「Altium Designer」内で動作しても
その結果をフットプリントなどのようにプログラム上に反映する訳ではないので
EXCELマクロでフォームを作成しても良かったと思い直しました。
当然ながら、Delphiスクリプトだと「Altium Designer」を所有していないと使えないことになります。

ソリッドワークスVBAでもタブによるページ選択は使用出来たのでEXCELでも探したら「マルチページ」
として存在していました。
ただ、Delphiスクリプトで作成したプログラムをまた時間を掛けてVBAに移植するかどうか悩ましいです。

最初から事情や操作体系を想定しないとこういうことになりますね。
他の自作Utilでも探すと、そういうものがありそうです。


nice!(1)  コメント(0) 

12ピンのパッケージ [Altium Delphi Script]

DelphiスクリプトでSOP_TSOP作成する場合に全ピン数を8P、10P、14P、16Pという風に
メニューフォームでプリセットしていました。
これまでこれで特に問題がなかったからです。

しかし、6極のディップスイッチのフットプリントを作成する場面でこのスクリプトを使用しようと
しましたがそれに該当する倍の12Pがないので16Pで作成してピン番号の振りなおしと不要パッド削除
で対応しました。

折角スクリプトがあるのに使えないという羽目に。
仕事が終わった後でそのスクリプトに12Pを追加しておきました。
6Pも追加するが悩みますが、フォームで選択肢が多いのも裏目となるので今回は
やめておきました。


nice!(0)  コメント(0) 

フットプリント収集スクリプトの修正 [Altium Delphi Script]


これまでフットプリントの収集はSummer09でのみDelphiスクリプトを
動作させていたのでAD14.3またはそれ以上などのバージョンではPCBLIBの
場所を指定できませんでした。

これは「XPDirectoryEdit」というコンポーネントがかなり古いものなので
動作しない為でした。

これはフォルダをファイルエクスプローラのように表示できるので直感的な
操作が可能でした。

FtCl_Scr0.png


仕方ないので単純な「TEdit」に直接的に存在しているパスを指定する
方法に変えました。

FtCl_Scr1.png


これであればAD18などでも問題なく動作します。
他にも古いコンポーネントを使用したスクリプトは修正が必要になりそうです。


nice!(1)  コメント(0) 

PCBLIBのDetaBase [Altium Delphi Script]

「Altium Designer」を使い始めた当初はどこに使用したい部品(フットプリント)があるか
わからない場合があります。
筆者はP-CADから変換し統合と分割とリネームを行ったので余計にそう感じました。

基板設計CADで各種ツールを使用してインテリジェント化するにはまずは部品のデータベースを
作る必要があります。
また常に追加による内容の変化があるのでそれを最新版に更新する方法も確保しないといけません。

Delphiスクリプトでフットプリント群(*.PCBLIB)のある親フォルダを指定すれば型番リストを
*.TXT形式で保存するか、*.CSVでどのPCBLIB内にあるかのレポートが出力できるようにしてあります。

後者の一例を示しておきます。

"PCN10-96S-2.54DSA","CN_0ETC.PCBLIB","0mm","PCAD"
"PCN10A-96P-2.54DS","CN_0ETC.PCBLIB","0mm","PCAD"
"PCN10A-96S-2.54DS","CN_0ETC.PCBLIB","0mm","PCAD"
"DSUB9P","CN_DDK_DSUB.PCBLIB","0mm","PCAD"
"DSUB9S","CN_DDK_DSUB.PCBLIB","0mm","PCAD"
"57LE14P","CN_DDK_DSUB.PCBLIB","0mm","PCAD"
"57LE24P","CN_DDK_DSUB.PCBLIB","0mm","PCAD"
"57LE36P","CN_DDK_DSUB.PCBLIB","0mm","PCAD"

続きを読む


nice!(0)  コメント(0) 

SMDコネクタの作成 [Altium Delphi Script]

以前にSMDコネクタのフットプリントを作成するDelphiスクリプトを作成していましたが
それを実際のフットプリント作り(モレックス製コネクタ)に使ってみました。

このスクリプトを作成してから間が空いていたので不安でしたが数値を入力して問題なく
作成できました。
シルク外形には対応していませんが、手動の方がややこしくなくて良さそうです。
という訳で特に改修するような点はありませんでした。

基板設計でフットプリント作りは面倒な作業でミスも発生しやすいのでそういう時に
こういったスクリプトはありがたいです。

詳しくはこちらをご覧ください。
http://sophil3.blog.so-net.ne.jp/2017-03-22

Altiumユーザーは他の似たIPCウィザードを使って後から編集するようです。
しかし位置出し穴やホールド用パッドなどには対応できないので後から追加するので面倒では
ないでしょうか。

nice!(0)  コメント(0) 
前の20件 | - Altium Delphi Script ブログトップ