がれすたさんのDIY日記

電子回路、Python、組み込みシステム開発、自作エフェクターを語るblog

KiCad6のSpice機能で回路シミュレーションを行う方法

2021年12月にKiCad6 Stableが公開されてUI含め大きな変更がありました。
Spice機能についても見た目が変わったりしているので再度解説を書きます。

シミュレーション回路の準備

KiCad6のngspiceを使うにあたり回路を準備します。
簡単なトランジスタ増幅回路を題材として扱います。
f:id:gsmcustomeffects:20220116043210p:plain

抵抗、コンデンサは通常通りのものを配置します。
信号源はSpiceシンボルを配置します。
Spice信号源シンボルですが、シンボル配置検索ウィンドウでspiceと打つと出てきます。
ここではVSINとVDCを使います。
f:id:gsmcustomeffects:20220116043425p:plain

Q1のトランジスタはBC550がKiCadの標準ライブラリに入っているのでそれを使います。

オペアンプトランジスタのようにspice外部モデルを使うようなシンボルはKiCad-ngspice間でピン配置を合わせないといけないのですが後述しますのでとりあえず変更しなくても済むBC550を使用してください。

次に各種シンボルに値を設定してきます。
ダブルクリックか選択+Eでプロパティに入ってもらって下部のSpiceモデル...というボタンをクリックします。
Spiceモデルエディターが開くので好みに設定します。*1
今回は過渡解析をやりたいので画像のように設定しました。
f:id:gsmcustomeffects:20220116045023p:plain



うまく設定ができるとシンボルフィールドにSpiceに関するパラメータが入ります。


f:id:gsmcustomeffects:20220116045450p:plain


DC信号源も同じように設定します。
抵抗コンデンサも同様に処理しますが、KiCadのValueフィールドとSpice_Modelフィールドが自動連動してないので注意してください。
あとは回路図上のすべての素子に対してSpice_Modelフィールドを設定していきます。
f:id:gsmcustomeffects:20220116050120p:plain

トランジスタモデルの読み込み

ONSEMIのサイトからBC550のspice modelをダウンロードします。
https://www.onsemi.com/products/discrete-power-modules/general-purpose-and-low-vcesat-transistors/bc550

先ほどと同様にプロパティからSpiceモデルエディタを開きます。
モデルタブからファイルを選択をクリックしてダウンロードしたモデルファイルを読み込みます。

f:id:gsmcustomeffects:20220116053322p:plain

ここで注欄にシンボルピンのナンバリングが要求されたSPICEのピン順と一致しませんという文字が出てきますが、修正の必要のないシンボルでも出てくるのでおそらくBugかと思います。BC550はピン順がコレクタ、ベース、エミッタの順なので修正の必要なし

シミュレーションの設定

ここではシミュレーションの設定を行います。
KiCad上部メニューよりシミュレータを起動します。
f:id:gsmcustomeffects:20220116054726p:plain

シミュレータウィンドウが起動するのでパラメータアイコンをクリックします。
f:id:gsmcustomeffects:20220116054944p:plain

各自シミュレーションの設定を行います。
今回は過渡応答を行うので以下のように設定しました。
互換モードは基本PspiceLTspiceを選んでおくとエラーが起こりにくいです。
f:id:gsmcustomeffects:20220116055046p:plain

シミュレーションの実行

実行アイコンをクリックしてシミュレーションを実行します。
信号を追加 or プローブで見たい信号を選びます。

この時KiCad上でノードに名前を付けておくとシミュレーション画面が見やすくなります。
f:id:gsmcustomeffects:20220116055226p:plain

Tipsなど

SpiceとKiCadでシンボルピン番号が違う場合

SpiceのBJTのピンはコレクタ(1)、ベース(2)、エミッタ(3)の順なのでそれ以外のものは代替ノードシーケンスを使う必要があります。
f:id:gsmcustomeffects:20220116070406p:plain

オペアンプの場合

オペアンプの場合は多回路入りを使うとノードでバグるのでSPICE専用シンボルを使うことになります。
実際の回路を作るときは多回路入りに戻すことになるので多少めんどいです。
f:id:gsmcustomeffects:20220116074845p:plain

代替ノードシーケンスはトランジスタと同様でSPICE側のピンに合わせます。
f:id:gsmcustomeffects:20220116074743p:plain

シミュレーションに含めたくないシンボルの扱い

シミュレーションに含めたくないシンボルもあると思います。
その場合はシミュレーションでシンボルを無効化にチェックを入れることで回避できます。
f:id:gsmcustomeffects:20220116075648p:plain

シンボルフィールドテーブルの利用

一個一個設定するのがめんどくさい方はシンボルフィールドテーブルを使うとまとめて管理できる。
f:id:gsmcustomeffects:20220117090805p:plain

*1:この辺は一般的なSpice(PSpice,LTspice,ngspice)と何ら変わりないので好みの値でやってもらって構いません