【LTspice入門】サブサーキットファイルでのモデル追加 〜 LM358の場合
※ 当ページには【広告/PR】を含む場合があります。
2020/07/11
2021/10/18

特定の電子部品で、標準ライブラリには記載されていない場合の手動で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
これらのライブラリファイルはLTspiceインストール時に自動で作成されますが、お手元のOSによって作成される場所が異なってくるので、事前にどこにあるのか探しておきましょう。
サブサーキットファイルの準備
ようやくここからLM358NのSPICEモデルを作成する話に移ります。
最初はまずお目当てのデバイスのSPICEモデルが製造メーカーから提供されてないか調べるところから始まります。
メーカーから提供されていなくても、メジャーなデバイスならば、標準モデルライブラリに収録されていたり、有志の方が自作モデルを公開している場合もあります。
今回使おうと思ってるSTマイクロ製のLM358Nですが、こちらは幸運にもメーカー公式のダウンロードページからSPICEモデルが公開してあります。
ということで、

各メーカが提供している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
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
ここでは
ModelFile
STMicro/lm358n.subckt
変更を適用後、回路エディタでシンボルをインポートすると、
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
両電源オペアンプは設定するピン配置が5箇所あるので、同様に他のピンにも確認・設定してモデルデータと整合性をとります。
今回は以下の表のようにサブサーキットライブラリ側の設定に沿ってピン番号合わせると完了です。
以上でサブサーキットモデルが利用可能な状態になると思います。
動作チェック
折角なので追加したモデルを使って簡単な

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