プリント基板CADと3D-CADの連携(2)

前回、IDFデータでKiCadと3DCADを連携できたら良いなと書いたばかりですが、今回はもっと簡単な方法の紹介です。

同じくオープンソースのソフトウェアで「FreeCAD」という3DCADソフトがあります。これはソリッドモデルを扱える本格的なCADのようで(3DCADは私の専門外)、こちらも密かに動向をウォッチしていました。

久々に本家サイトを見に行くとバージョンが0.12から0.13に上がっているじゃないですか!!

早速ダウンロードして試してみると・・・「イイ!」前バージョンよりもGUI関係が簡素化されたのか、見た目がスッキリしています。

freecad_top

freecad_parts_design_example

試しにKiCadで設計した基板をVRML形式でエクスポートして、FreeCADで作成した簡単なケースデータを合成して、ビューを回転させて見ました。

 

オープンソースのコラボでコレだけできるって凄いですね。作成方法も追々紹介します。

 

プリント基板CADと3D-CADの連携(1)

KiCadは予め3Dの部品ライブラリを作っておくことで、VRML形式(.wrl)の3Dデータを出力できます。VRMLはもともとWeb上で手軽に確認するために開発されたフォーマットのようで、所謂3D-CADのソリッドデータのように複雑な情報は持っていないのですが(単位系の指定も無かったように思います)、ブラウザとプラグインがあれば見ることが出来るので、ちょっとした確認には便利です。

ただ、VRMLフォーマット自体があまり使用されなくなっていたり、上述の理由のため直接3D-CADで確認、干渉チェックするという用途には向きませんが、IDF形式のデータを作成できれば、多くの3D-CADと簡単に連携できる可能性があります。

IDF形式のデータとは、プリント基板CADと3D-CADのやり取りをするための中間フォーマットで、自由に使用することが出来ます。基板外形、板厚、部品座標、部品高さ、禁止領域などを設定できるTXT形式のデータです。

IDFデータは、プリント基板と同様に部品をライブラリファイルとして管理できるので、IDF用のライブラリファイルを作成(或いは抽出)できれば、あとは基板外形、板厚、部品座標、部品の搭載面などの情報を組み合わせて作成することが出来ます。

IDFデータは、SolidWorks、Pro-engineerの2つではやり取りをした事があります。その他の3D-CADについては不明ですが、コンバータさえあればIDFからIGESなどへ変換をかけることも可能と思います。

3D-Cadとプリント基板CADの連携が個人レベルで可能になれば、もっとモノづくりの可能性が広がりますね。

 

 

 

 

 

KicadとLTspice(回路シミュレータ)の連携(6)ブロック毎のシミュレーション

もう良いんじゃね?という声が聞こえてきそうですが、もう一つシミュレーション関連のTipsです。

勘の良い方はタイトルを見てピンと来たかもしれません。製品の回路図には当然様々なブロックが載っていますが、シミュレーションをかけたいのはアクティブフィルタの部分だったりDC-DC電源の部分だったり、幾つかあると思います。

結局それぞれのブロックごとにシミュレーションをかけるので(また回路設計者と基板設計者が別、或いは会社のシステム云々という理由もあるかもしれません)、LTSpiceその他のシミュレータソフト側で回路図を描いてシミュレーション、回路が決まったら製品の回路図に展開というのが今までの流れではないでしょうか。

KiCadでは、回路図シートの中に回路図シートを設ける「階層構造」を持つことが出来ます。そしてこの階層ファイルは、「実際に別のファイルを紐付け」しています。(プロジェクトフォルダ内に別名の.schファイルがあるので分かります。)

という事は、紐付けされたそれぞれの子ファイルから単独でネットリストを吐き出せば、ブロックごとにシミュレーションが可能になり、回路図の二度打ちを本当になくす事が出来ます。

ということで、demoフォルダの幾つかのプロジェクトファイル、自作プロジェクトファイルの子ファイルを直接C:Program FilesKiCadbinEeschema.exe(Windowsの場合)で開き、ネットリストを抽出したところ、確かに子ファイルのみのネットリストが作成されました。

後は子ファイル内のSpice用のシンボル対応や、制御構文を書くだけですので、本ブログに書いて手順でイケる筈です。回路図の二度打ちが無くなると本当に楽ですね。KiCadどれだけ凄いんでしょうか。

階層ファイルについても色々Tipsがありますが、まだ後日まとめます。

※子ファイルを直接Eeschemaで呼び出す事は問題ないか、(特に問題ないと思いますが)一応開発MLに質問してあります。回答が届きましたらこちらでご連絡します。

 

KicadとLTspice(回路シミュレータ)の連携(5)FFT解析

KiCadのTipsというよりもLTSpiceでの.cirファイルのTipsに近いので、もう終わりにしようかと思いましたが、もう少しだけ書き足します。

AC解析、過渡解析と来れば次はFFT解析です。

前々回の記事で使用したプロジェクトファイルから作成した 555_ltspice.cir を使って、FFT解析を行います。作成されていない方は上記ファイルをダウンロードしてご使用下さい。

1.ダウンロードしたファイルをLTSpiceで開き、上部メニュー左から五番目のアイコンを押して解析を実行します。

2.上部メニュー「View」から「FFT」を選択します。
LTSpice_fft_1

 

3.設定ダイアログが開くので、解析したいノードを選択します。ここではV(/pwm)を選択しました。サンプル数、解析にかける時間の区間、窓関数などが選択できます。ここでは「ハニング窓」を選択しています。窓関数については詳しくないので、専門の方に委ねさせて頂きます。
LTSpice_fft_2

 

4.下図のように結果が表示されます。
LTSpice_fft_3
また、画面上右クリックで「Manual Limits」をクリックする事で軸設定を変更できます。

PS.今回もファイルをダウンロードされた方は下の「ツイート」「いいね」をクリックして下さると嬉しいです。

KiCadのクロスプローブ機能(EeschemaとPcbNewの連携)

基板設計中に「この部品は何だっけ?」と回路図CAD上で検索したり、逆に回路図を見ていて、「この部品は基板上で何処にあったっけ?」と探すことはよくあります。KiCadには他の商用のCADと同じく、クロスプローブの機能が実装されています。これはEeschemaとPcbNewを同時に立ち上げておくと、どちらかで部品を選択した際にはもう一方のソフトでも同一の部品の場所に画面をパンしてくれる機能です。
Crossprobe
各ソフトの画面左のツールバーでCrossを選択して大きなクロスカーソルに変更してから画面を少しズームしておくと検索対象を見つけやすくなります。
Kicadではゲートスワップとピンスワップ(後日記事にします)はEeschema側で行うようになっていますので、常に両方のソフトを立ち上げておいて、必要に応じてネットリストを出力することになります。
高額の統合CADの多くは、基板CADから回路図CADに向けてネットリストのバックアノテーションができますが、色々な理由でバックアノを禁止している会社さんも多いようです。
個人的には、KiCadのようにマスターのネット情報は常に回路図になるのが正しいと思います。KiCadはこのような設計ポリシーもしっかりしている所が良いですね。

KicadとLTspice(回路シミュレータ)の連携(4)サブ・サーキット

前回の記事ではOPAMPのAC解析を行いましたので、今回はトランジェント解析をやってみます。
タイマーIC、NE555を使ってPWM回路を作り、トリガー電圧、ACサイン波入力、ディスチャージ端子、出力波形を追ってみます。
今回もプロジェクトファイルを作りましたので良かったらダウンロードしてみてください。
敢えてエラーを残してある箇所がありますが、後ほど説明します。
kicad_ltspice_ne555_pwm.zip
ファイルを展開し、.schファイルを開くと図のような回路が表示されます。
555は最初からEeschemaにあるライブラリファイル”linear”内の”LM555N”を使用しました。電圧源は、”電源” “トリガー電圧” “モジュレーション電圧(sin波)”の3つです。sin波の電圧源はAC解析の時には”AC”という属性でしたがトランジェント解析の時には”SIN”となります。各電圧源の設定をコメント表記していますので参考にしてみてください。
kicad_ltspice_ne555_1
前回同様、ネットリスト出力を行い、作成された.cirファイルをLTSpiceで開きます。
kicad_ltspice_ne555_2
“LM555Nがありません”というようなメッセージが出ていますので修正を行います。LTSpiceのライブラリディレクトリの内”sub”フォルダを検索すると、下図のように”NE555.sub”というのがありますので、これを使います。
ltspice_sub_1
ここで.subというファイルが出てきましたが、spiceでは回路の1ブロックを”サブサーキット”として扱うことが出来ます。各社が提供しているspiceモデルを.sub形式に変換できれば、それも使用できそうです。
という訳で、.cir内の”LM555N”を”NE555″に書き換え、”.lib NE555.sub”の行を加えてNE555を認識させて再実行します。今度はちゃんとグラフウィンドウが開くと思います。
kicad_ltspice_ne555_3
グラフウィンドウ内で右クリックして、”Visible Traces”で電圧ノードを選択すると数のように結果が表示されます。
kicad_ltspice_ne555_4
少し見難いので、トリガー電圧を非表示にして見ます。グラフウィンドウ内で[Del]キーを押すとマウスカーソルがはさみの形になります。この時にウィンドウ内の赤い文字”V(/trig)をクリックすると、トリガー電圧の波形が消えます。入力電圧とディスチャージ端子電圧、出力波形の関係が良く分かります。
kicad_ltspice_ne555_5
テキストウィンドウで入力電圧を変化させて再実行すると波形も変化します。.subファイルさえ手に入れば、LTSpiceの回路規模無制限というメリットを合わせて、もっと規模の大きい回路もシミュレーションでき、しかもそれが直ぐに基板に展開できるのは凄いですね。
ps.ダウンロードされた方は、この下にある「ツイッター」「いいね」など押して頂けると嬉しいです。

KicadとLTspice(回路シミュレータ)の連携(3)

画面を見てるだけでは分かりにくいと思いますので、下記リンクにLT1208を使用したKicadのプロジェクトファイルをアップロードしました。KicadとLtSpiceをインストールした後に、こちらのダウンロードボタンを押してプロジェクトファイルを開いてみてください。
kicadプロジェクトファイル-LT1208シミュレーション用
kicadを立ち上げて解凍されたlt1208_ltspice.pro(.sch)を開きます。今回は、spice用に作成したオペアンプのコンポーネントを同梱しています。基板設計時にはピン配列を元に戻すため、「For SPICE」のコメントを入れたコンポーネントを作成しました。
kicad_ltspice_sim_lt1208_1
左側に正負電源、その右にAC解析用の信号源とLT1208を使用した回路を配置しています。
青い枠の中がspiceの制御構文で、”+PSPICE”の部分はこの分がSPICE制御構文であることを宣言するためのものです。その後LTSpiceのライブラリパスの指定、AC解析実行と進みます。”.print”の部分は結果表示の部分ですがLTSpice側で本当に必要なのか良く分かりませんでした。
またその他の青文字は信号源の設定内容をコメントで記しているだけで、SPICEの動作には関係ありません。
次に、前々回の記事の手順でSpiceネットリストを作成し、作成された.cirファイルをLTSpice側で開きます。
kicad_ltspice_sim_dialog
.cirファイルがテキスト表示されたら、左から5番目のアイコンをクリックしてシミュレーションを開始します。”V/”で始まる項目を選択すると、テキスト画面の上部にグラフエリアが表示されるので、右クリック後に”Visible Traces”で表示項目を選択します。これで振幅と位相特性が表示されていると思います。
kicad_ltspice_sim_lt1208_2
グラフが重なって見にくいときは、右クリック後に”Add Plot Pane”をクリックするともう一つグラフエリアが作成されます。
さらに、画面下のテキストエリアを編集することで、再度シミュレーションを実行できます。この際にはいちいち保存しなくても大丈夫です。下の画面ではC2の値を変えているので、位相特性が変化しています。
kicad_ltspice_sim_lt1208_3
部品の値や入力信号の大きさもテキストエリアで修正し、すぐに実行できます。
パラメータを変化させて一括表示なども出来るのかもしれませんが、そこまで出来なくても十分高機能だと感じます。
ps.ダウンロードされた方は、この下にある「ツイッター」「いいね」など押して頂けると嬉しいです。

KicadとLTspice(回路シミュレータ)の連携(2)

LTSpiceとの連携の前に、EeschemaでSpice用のコンポーネントがどのように作られているかを見てみます。
具体的な事例がないと分かりにくいので、Kicadインストールディレクトリ内の /share/demos/pspice/pspice.pro(.sch)を例にしてみます。Eeschemaを開くと下図の回路図中に信号源とGNDのシンボルがあります。
kicad_pspice_sch0622
この図で使用しているGNDコンポーネントは、Kicadに添付されているライブラリファイルpspice.lib内の”0″という
コンポーネントです。
kicad_pspice_symbol_0622_1
コンポーネントのプロパティを確認すると、下図の赤枠の中で”チップ名”(chip name)と”定数”(Value)に0が設定されています。これによりGND電位を0Vと設定しているようです。
kicad_pspice_symbol_0622_2
次に信号源V2のプロパティを見ると、”チップ名”(chip name)に”VSOURCE”が、”定数”(Value)に”AC 0.1″が設定されています。ここで、交流電圧源0.1Vの設定をしています。
kicad_pspice_symbol_0622_3
同様に信号源V1は”VSOURCE”、”DC 12V”と設定されています。回路の電源電圧はこれで指定すれば良さそうです。
kicad_pspice_symbol_0622_4
これで、信号源とGNDの設定が大体分かりました。シミュレーション終了後、実際の基板設計に入る際にもしかしたらこれらのコンポーネントを通常のコンポーネントにを置換する必要があるかもしれませんが、これについては別途確認することにします。

KicadとLTspice(回路シミュレータ)の連携

KicadのEeschemaには、回路シミュレータ用のネットリストを出力する機能があります。単独の回路シミュレータもGUIを装備しているものが殆どだと思うので、(回路シミュレータも装備している高額CADを除いて)シミュレーション後に再度基板CADに入力することになります。
今回、Kicadで出力したネットリストを、LTspiceに読み込んでみました。
初めてなので、インストールディレクトリ内の”KiCadsharedemospspicepspice.sch”を修正して使用します。
下の図は試しに描いた回路図です。
Kicad_simulation_1
オペアンプLT1012を使用し、マイナス電源はプラス電源をコピーして修正しました。各ネットにはネット名のラベルをつけてわかり易くしています。
青枠内のテキストがSPICEの制御構文です。いろいろな構文を書いておいて、不要な部分はLTspiceに読み込んだ後にコメントアウトする事にします。SPICEについては以下のURLを参考にさせて頂きました。
HSPICEの使い方 ~SPICEネットリストの書き方~
回路図作成後、”Prefix refarences…”の項目にチェックを入れてネットリストを出力します。
Kicad_simulation_2
“ファイル名.cir”というネットリストが作成されますが、ここでオペアンプのピン番号(ネットリスト上の順番)を確認します。SPICEでのピンの順番と実際のパッケージのピン番号が違いますので、「非反転入力」「反転入力」「プラス電源」「マイナス電源」「出力端子」の順に並べ替えます。(今回は手修正しましたが、頻繁に使う場合にはSPICE用のコンポーネントを作成した方が良いかもしれません)
Kicad_simulation_3
上の図で制御構文の”.lib LTC.lib”はLTspiceライブラリのパスの記述です。”.tran”の前に”*”をつけてトランジェント解析をコメントアウトし、AC解析のみを実行させます。
次にLTspiceを起動し、”File”→”Open”でSpiceネットリストを開くと、解析をしたいノード電圧、電流などを聞いてくるので選択します。(下図)
Kicad_simulation_4
するとグラフのウィンドウが開くので、右クリック→”Visible trace”で表示する項目を選択します。
Kicad_simulation_5
解析結果が以下のように表示されます。
Kicad_simulation_6
シミュレーションだけならKicadを持ち出す必要もないですが、Kicadには回路図と基板のクロスプローブ機能(EeschemaでC1を選択するとPcbNewでC1に移動する)があるので、上記のような使い方も良いと思います。
最終的には使う人の好みですね(^^)
フィルタやDC-DCコンバータの設計、また一般的なトランジスタのSPICEモデルなどが使えたら、とても幅が広がるので、もう少し勉強してみたいと思います。

(2012年06月26日 18:04 追記)
この記事のOPAMPピン板指定の順番が違っていましたので訂正しました、正しくは「非反転入力」「反転入力」「プラス電源」「マイナス電源」「出力端子」です。公開しているOPAMPシミュレーション用のプロジェクトファイルは最初からこのようになっていますので、ダウンロード済みの方もそのままお使い頂けます。