【LTspice入門】サブサーキットファイルでのモデル追加 〜 LM358の場合


2020/07/11
2021/10/18
蛸壺の中の工作室|サブサーキットファイルでのモデル追加 〜 LM358の場合

特定の電子部品で、標準ライブラリには記載されていない場合の手動でLTspiceコンポーネントを追加する手順をまとめるシリーズです。

今回は、両電源オペアンプの定番としてAmazonをはじめメジャーなウェブストアでも入手しやすい
LM358のサブサーキットモデルを追加してみます。


TL;DR

サブサーキットモデルのコンポーネント化の基礎に関しては以下の記事で大体の手順を解説していました。

要点をまとめると、サブサーキット形式(.lib,.subckt,.model...など拡張子でメーカーが提供しているモデル)のライブラリ追加の手順は、

            1. 各メーカーのホームページで型式検索を行い、
    添付資料・付属項目でモデルファイルが提供してないか調べる。
    ファイルがダウンロードできたり、リソーステキストがそのまま貼り付けられていたりと、
    メーカーによって対応が異なる。
    探せなければ、SPICEモデルを自作するしかない。

2. LTspiceインストール時に作成されるLTspiceXVII/lib/subフォルダ(以降subフォルダ)
    配下に先程ダウンロードしたサブサーキット形式のファイルを保存

3. LTspiceインストール時に作成されるLTspiceXVII/lib/symフォルダ(以降symフォルダ)
    の適当なシンボルデータファイル(オペアンプの場合はopamp.asyやopamp2.asyなど)をコピーし、
    新規コンポーネントとしてファイルをリネームする(hogehoge.asy等)。
    リネームしたファイルは新たにsymフォルダ配下に保存

4. シンボルファイルをシンボルエディタで編集する。
    もしくはテキストエディタで直接編集する(上級者向け)

5. サブサーキットファイルを編集する。
    シンボルのピン配置番号やsubフォルダに配置したモデルライブラリのリンクを設定等を行う

6. 以上が正しく設定されていれば、独自定義のコンポーネントとして利用できる
        
と、おおよそこのような流れで進みます。

今回は以上の手順を踏まえて、以降の内容で両電源デュアルオペアンプLM358Nのサブサーキットモデル化を行ってみましょう。


まえおき

本記事では、主にLinux上で動作させたLTspiceを利用しています。

Linux環境でのLTspiceをインストール手順は
こちらの記事にまとめました。

WindowsやMaxOSなどではインストール版のアプリケーションがありますので、そちらを利用ください。


LTspiceの作業フォルダ構造

本題に進む前にLTspiceでサブサーキットの自作モデルを作る際の重要な確認事項であるアプリケーションのフォルダ構造をおさらいします。

LTspiceをインストールした後で、インストール先のフォルダ構造を覗いてみると、以下のようになっていると思います。(※第三層までのファイルを表示)

            $ tree -L 3
.
└── LTspiceXVII
    ├── examples
    │   ├── Educational
    │   └── jigs
    └── lib
        ├── cmp
        ├── stamp.bin
        ├── sub
        └── sym
        
大きく分けて、プロジェクトを保存しておくexamplesとモデルデータを管理するライブラリlibに分かれています。

SPICEモデルづくりに重要なのは
libフォルダの中身です。

この内、標準モデルライブラリが収録された
cmpフォルダ、サブサーキットモデルを登録するsubフォルダ、回路図面作成用のシンボルデータをsymフォルダ、の3つのフォルダの取り扱いが重要になります。

これらのライブラリファイルはLTspiceインストール時に自動で作成されますが、お手元のOSによって作成される場所が異なってくるので、事前にどこにあるのか探しておきましょう。


サブサーキットファイルの準備

ようやくここからLM358NのSPICEモデルを作成する話に移ります。

最初はまずお目当てのデバイスのSPICEモデルが製造メーカーから提供されてないか調べるところから始まります。

メーカーから提供されていなくても、メジャーなデバイスならば、標準モデルライブラリに収録されていたり、有志の方が自作モデルを公開している場合もあります。

今回使おうと思ってるSTマイクロ製のLM358Nですが、こちらは幸運にもメーカー公式のダウンロードページからSPICEモデルが公開してあります。

ということで、
公式のSPICEモデルをダウンロードし、適切にLTspiceへモデルをインポートして利用しましょう。

合同会社タコスキングダム|蛸壺の中の工作室

各メーカが提供しているSPICEモデルの形式は実際のところ開いみるまでわからないので、形式によってインポートのやり方も変わってきます。

今回のSTM製のLM358のモデルは、
lm358.txtという名前のテキストファイルのようです。

LTspiceでインポート可能なデバイスモデルのファイル形式にはいくつか種類があり、

            デバイスモデル:
    .modelの拡張子で終わるもの。
    lib/cmp/直下のstandard.*ファイルへ登録することで
    コンポーネントを利用することができる。
    データを提供しているメーカーによっては、
    .mod/.lib/.txt...などで公開されているので、
    中身で判断したほうがよい。

サブサーキット:
    lib/sub/直下のフォルダへファイルを置くことで
    コンポーネントとして利用できる。
    .sub拡張子のファイルはバイナリ形式、
    .lib拡張子のファイルはテキスト形式になっている。
    .libファイルの場合、データを提供しているメーカーによっては、
    .txt/.cir/.subckt/.modなど、こちらも統一性がないので、
    最終的には中身をみて判断すること。
        
というようにいくつか種類があります。

拡張子からはあまり判断がつかないので、ファイルの中身を見て判断することになります。

お目当てのサブサーキット形式の場合、
.SUBCKT ****という行がありますので、これで判断するしかありません。

このファイルの中身を覗いてみると、

            * WARNING : please consider following remarks before usage
*
* 1) All models are a tradeoff between accuracy and complexity (ie. simulation
*    time).
* 2) Macromodels are not a substitute to breadboarding, they rather confirm the
*    validity of a design approach and help to select surrounding component values.
*
* 3) A macromodel emulates the NOMINAL performance of a TYPICAL device within
*    SPECIFIED OPERATING CONDITIONS (ie. temperature, supply voltage, etc.).
*    Thus the macromodel is often not as exhaustive as the datasheet, its goal
*    is to illustrate the main parameters of the product.
*
* 4) Data issued from macromodels used outside of its specified conditions
*    (Vcc, Temperature, etc) or even worse: outside of the device operating
*    conditions (Vcc, Vicm, etc) are not reliable in any way.
*
*
** Standard Linear Ics Macromodels, 1993.
** CONNECTIONS :
* 1 INVERTING INPUT
* 2 NON-INVERTING INPUT
* 3 OUTPUT
* 4 POSITIVE POWER SUPPLY
* 5 NEGATIVE POWER SUPPLY
.SUBCKT LM358 1 2 3 4 5
***************************
.MODEL MDTH D IS=1E-8 KF=3.104131E-15 CJO=10F
* INPUT STAGE
CIP 2 5 1.000000E-12
CIN 1 5 1.000000E-12
EIP 10 5 2 5 1
EIN 16 5 1 5 1
RIP 10 11 2.600000E+01
RIN 15 16 2.600000E+01
RIS 11 15 2.003862E+02
DIP 11 12 MDTH 400E-12
DIN 15 14 MDTH 400E-12
VOFP 12 13 DC 0
VOFN 13 14 DC 0
IPOL 13 5 1.000000E-05
CPS 11 15 3.783376E-09
DINN 17 13 MDTH 400E-12
VIN 17 5 0.000000e+00
DINR 15 18 MDTH 400E-12
VIP 4 18 2.000000E+00
FCP 4 5 VOFP 3.400000E+01
FCN 5 4 VOFN 3.400000E+01
FIBP 2 5 VOFN 2.000000E-03
FIBN 5 1 VOFP 2.000000E-03
* AMPLIFYING STAGE
FIP 5 19 VOFP 3.600000E+02
FIN 5 19 VOFN 3.600000E+02
RG1 19 5 3.652997E+06
RG2 19 4 3.652997E+06
CC 19 5 6.000000E-09
DOPM 19 22 MDTH 400E-12
DONM 21 19 MDTH 400E-12
HOPM 22 28 VOUT 7.500000E+03
VIPM 28 4 1.500000E+02
HONM 21 27 VOUT 7.500000E+03
VINM 5 27 1.500000E+02
EOUT 26 23 19 5 1
VOUT 23 5 0
ROUT 26 3 20
COUT 3 5 1.000000E-12
DOP 19 25 MDTH 400E-12
VOP 4 25 2.242230E+00
DON 24 19 MDTH 400E-12
VON 24 5 7.922301E-01
.ENDS
        
となっています。

中身で判断して、これは
subckt(サブサーキット)形式のファイルであることが分かります。

ちなみに
*はコメント行になっているので、削除しても構わない行です。

このサブサーキットファイルを
lm358n.subcktと名前を変えて、subフォルダより下位の階層に移動させます。

そのまま
subフォルダ直下に置いもいいのですが、既に標準登録されているサブサーキットデータに埋もれてどれを追加したか後々分かりにくくなることがあります。

そこで、メーカー毎にフォルダを作成し、そこに登録するようにすると、判別も用意にできて便利です。

今回でいうと、
STMicroelecronics社製ですので、STMicroというフォルダ以下にlm358n.subcktを移動してみます。

            $ mkdir LTspiceXVII/lib/sub/STMicro
$ mv lm358n.subckt LTspiceXVII/lib/sub/STMicro/
$ ls LTspiceXVII/lib/sub/STMicro/
lm358n.subckt
        


シンボルの準備

シンボルデータは、大抵の場合メーカーから提供されないので、自前で用意する必要があります。

まずはデータシートなどを見ながら、一番近しいと思われるシンボルデータをLTspiceから探してきます。

今回の
LM358Nは両電源2入力式の汎用オペアンプなので、opamp2という名の既存のシンボルデータをコピーして再利用します。

合同会社タコスキングダム|蛸壺の中の工作室

sym/OpAmps/opamp2.asyからコピーしたら、lm358n.asyでリネームして、その中身をテキストエディタで開いて以下のように書き換えます。

            Version 4
SymbolType CELL
LINE Normal -32 32 32 64
LINE Normal -32 96 32 64
LINE Normal -32 32 -32 96
LINE Normal -28 48 -20 48
LINE Normal -28 80 -20 80
LINE Normal -24 84 -24 76
LINE Normal 0 32 0 48
LINE Normal 0 96 0 80
LINE Normal 4 44 12 44
LINE Normal 8 40 8 48
LINE Normal 4 84 12 84
WINDOW 0 16 32 Left 2
WINDOW 3 16 96 Left 2
SYMATTR Value opamp2
SYMATTR Prefix X
SYMATTR Description Operational Amplifier symbol for LM358N
PIN -32 80 NONE 0
PINATTR PinName In+
PINATTR SpiceOrder 1
PIN -32 48 NONE 0
PINATTR PinName In-
PINATTR SpiceOrder 2
PIN 0 32 NONE 0
PINATTR PinName V+
PINATTR SpiceOrder 3
PIN 0 96 NONE 0
PINATTR PinName V-
PINATTR SpiceOrder 4
PIN 32 64 NONE 0
PINATTR PinName OUT
PINATTR SpiceOrder 5
        
こちらも先程のサブサーキットファイルと同様の考え方で、オペアンプ用シンボルデータのsym/OpAmps/というフォルダにSTMicroというフォルダを作り、先程作成しておいたlm358n.asyを移動させます。

            $ mkdir LTspiceXVII/lib/sym/OpAmps/STMicro
$ mv lm358n.asy LTspiceXVII/lib/sym/STMicro/
        
LTspiceを立ち上げていた場合、この段階で一度アプリケーションを閉じて再起動しましょう。

合同会社タコスキングダム|蛸壺の中の工作室

シンボルデータが登録されたらひとまず成功です。

しつこいようですが、作成したリソースファイルの配置は現時点で以下のようになっているかを再度確認しておきましょう。

            $ tree -L 3
.
└ LTspiceXVII
  └─ lib
      ├─ sub
      │   └─ STMicro
      │      └── lm358n.subckt
      └─ sym
          └─ STMicro
              └── lm358n.asy
        


シンボルエディタでシンボルを編集

慣れてくるとシンボルファイルのテキストの中身を直接編集しても良いのですが、今回は感覚的に分かりやすいシンボルエディタからシンボルの詳細設定を行ってみましょう。

LTspiceの
[File]から[Open]を選択し、シンボルを右クリックしてlm358n.asyを表示します。

合同会社タコスキングダム|蛸壺の中の工作室

上記の作業までで、シンボルデータの
Valueプロパティが依然としてopamp2のままでした。

合同会社タコスキングダム|蛸壺の中の工作室

シンボルの
Valueはサブサーキットライブラリを呼び出す際のコンポーネント名に使われるので、opamp2のままでは独自定義のコンポーネントとしては利用できません。

よってここでは
Valueは参照先のサブサーキットファイルのモデル名であるLM358を指定しなければなりません。

そこで右クリックメニューから、
[Attributes] > [Edit Attributes]を選択し、以下のように書き換えます。

合同会社タコスキングダム|蛸壺の中の工作室

また、
ModelFileには参照先のサブサーキットファイルのsubフォルダ以下の相対パスを指定します。

ここでは
ModelFileの項目に先程subフォルダ配下に保存したSTMicro/lm358n.subcktを入力しましょう。subフォルダからのファイルの相対パスをスペルミスなどがないか良くチェックしましょう。

変更を適用後、回路エディタでシンボルをインポートすると、
Valueがモデル名に変更されていることが分かります。

合同会社タコスキングダム|蛸壺の中の工作室

ピン番号合わせ

もう一点大切な作業として、モデルデータ先に定義してあるピンの番号と、シンボルデータのピン配置を一致させる必要があります。

今回の両電源オペアンプのモデルデータでのピン配置の定義はどうなっていたかというと、

            ** CONNECTIONS :
* 1 INVERTING INPUT
* 2 NON-INVERTING INPUT
* 3 OUTPUT
* 4 POSITIVE POWER SUPPLY
* 5 NEGATIVE POWER SUPPLY
.SUBCKT LM358 1 2 3 4 5
#....
        
ということでした。

そのままではサブサーキットとシンボルとのピンの対応がめちゃくちゃなので、オペアンプのシンボルのピン配置もこれと一致させないといけません。

例えば、シンボルエディタ上で、
Invert Inputにあたるポート上にマウスを持ってきて右クリックすると、ピンごとの設定をするダイアログが出てきます。

合同会社タコスキングダム|蛸壺の中の工作室

ピン配置は
List Order番号として設定しますので、今回のInverting Inputは1ですので、ここが1になっていればOKです。

両電源オペアンプは設定するピン配置が5箇所あるので、同様に他のピンにも確認・設定してモデルデータと整合性をとります。

今回は以下の表のようにサブサーキットライブラリ側の設定に沿ってピン番号合わせると完了です。

ピン名

ピン番号

信号インプット(-)

(1)

信号インプット(+)

(2)

出力

(3)

+側電源電圧

(4)

-側電源電圧

(5)

以上でサブサーキットモデルが利用可能な状態になると思います。


動作チェック

折角なので追加したモデルを使って簡単な
反転増幅回路のDC動作点シミュレーションをしてみます。

合同会社タコスキングダム|蛸壺の中の工作室

入力3VDCに対して、出力-6VDCを得ており、きちんと動作しているようでした。


まとめ

今回はオペアンプのライブラリ追加手順の概要を一通り解説してみました。自分専用の部品ライブラリとしてモデルを整備していくと後々のアセットになると思いますので、地道に増やしていきましょう。


参考サイト

LTspice - サブサーキットモデル(.subckt)の追加方法

LTSpiceでOPA134, LM358を使う

オペアンプにspice

記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。