Monthly FB NEWS 月刊FBニュース 月刊FBニュースはアマチュア無線の電子WEBマガジン。ベテランから入門まで、楽しく役立つ情報が満載です。

ジャンク堂

第23回(最終回) LTspiceのススメ(後編)

JH3NRV 松尾信一


さて、前回の続きでLTspice紹介の後編です。

前回の記事を見てLTspiceをインストールされた方は、おそらくネットで使い方などをいろいろと調べられたのではないでしょうか? 前回も述べましたが操作については習うより馴れろ、で使う時間に比例して操作のストレスが減ってきます。これを機会に試された方は是非、継続して使われることをお勧めします。

トランジスタのモデルの変更

前回はC、Rの定数変更の説明をしましたが、トランジスタについては触れませんでした。いろいろ試された方は既にお分かりかと思いますが改めて説明します。

トランジスタの変更はC、Rと同様に、マウスを部品の所に持っていき右クリックをします。そこで現れる画面の“Pick New Transistor”をクリックします。


そうするとリストが表れるので、そこからトランジスタを選択します。


ダイオードやFETなども同じ方法で選択します。

今回は、このトランジスタやダイオードなどをリストに表示されるように追加する方法と、オペアンプを追加する方法の一例をお話します。ただ、私はspiceについて十分な知識を持っていないので、正確さを欠いた説明となっている部分もあるかと思いますが、ご容赦願います。

また、この記事中で部品モデルを提供出来れば良いのですが、著作権の問題が出る可能性があるので皆さんがネットや書籍などから個人で入手して頂くことを前提としています。

私の部品モデル入手経路は、メーカーや個人がネット上で公開されているもの、CQ出版社の書籍の付録CDなどがあります。私がネットでspiceモデルを探す時は、例えば“2SC1815 spice model”のように、部品名の後にspice modelを付けて検索しています。メーカーが公開しているものはPspice用が多いようです。

日本のメーカーでは日清紡マイクロデバイス(旧JRC)やロームがネットで公開しています。
日清紡マイクロデバイスは以下のサイトから探すことができます。
https://www.nisshinbo-microdevices.co.jp/ja/design-support/macromodel/

ロームは少々分かり難いのですが、トランジスタなどの部品名をロームのサイト内で検索し、部品の情報ページを良く見るとspiceモデルがダウンロードできるようになっています。(全てのモデルがあるかどうかは分かりませんが、、。)

ほかにもネットで検索すると海外の半導体メーカーが提供しているものも見つかります。

ただ、アマチュアの自作で有名な2SC1815などは、既にメーカーが作っていないために個人レベルでWEBに掲載されているモデルの情報を使うことになります。

もし、少々お金を出しても良いと思われる方はCQ出版社のLTspiceの解説書でCD付きのものを購入するのも良いと思います。ただし、必ずしも希望するモデルが入っているとは限りません。2SC1815などの古いトランジスタなどは著者の方が作成されたモデルが入っている場合もありますが、やはりメーカーがネットで公開している範囲のものが多いように感じます。

注) ネットで公開されているモデルの中には余り精度が良くないものもあるようです。ただ、そのようなモデルでもシミュレーションの結果には誤差があるということを理解して割り切れば使えると思います。

注) ここでのモデルとはspice用の部品モデルのことです。

部品モデルの種類(分類)

spice系の部品モデルの型式はいくつかの種類に分けられます。分類や呼び名はいくつかあるようですが、ここでは一般的と思われる呼び方で分類したいと思います。

・パラメータモデル
抵抗やコンデンサ、あるいはトランジスタなどのふるまいを数式で表して、計算に必要なパラメータを部品毎に与えることで、個々の部品の動作を再現します。デバイスモデルやコンパクトモデルとも呼ばれるようです。L/C/R/TR/FET/Dなどがパラメータモデルで表されます。

・マクロモデル
パラメータモデルであるトランジスタや抵抗を組み合わせて回路を作り、それをモデル化したものです。ICの場合、ほとんどがこのモデルで作られています。なお、パラメータモデルだけでなく下に述べるビヘイビアモデルも組み合わされる場合があります。等価回路モデルとも呼ばれるようです。

・ビヘイビアモデル
部品の動作(behavior: ふるまい)だけを抽出して作成されたモデルです。パラメータモデルと似ているようですが、更に簡素化されていると考えてよいでしょう。LTspiceではVoltage(電圧源)やBi(電流源)などがそれに相当するでしょう。

なお、パラメータモデルやビヘイビアモデルは回路記号を回路図に置いてからマウスの右クリックでパラメータの設定や使用する部品を選択しますが、オペアンプのようなマクロモデルの場合ははじめから部品名で選択して回路図に置きます。ここからも分かるように、部品モデルの追加方法もパラメータモデルとマクロモデルでは異なります。

部品モデルが収納されているフォルダ

LTspiceの部品モデルはマイドキュメントのLTspiceXVIIフォルダの中にあるlibフォルダに収められています。


上図はlibフォルダの中ですが、各々のフォルダには主に以下の内容が含まれています。

cmpフォルダ:
L、C、RやTR、FETなどのパラメータモデルが収められています。

subフォルダ:
ICなどのマクロモデルが収められています。拡張子が.subと.libのものがありますが、subファイルはバイナリファイルなので中身を見ることができません。libファイルはテキストファイルなのでテキストエディタで中身を見ることができます。

symフォルダ:
各部品のシンボル(回路記号)が収められています。シンボルファイルは拡張子が.asyのファイルです。シンボルファイルは、汎用で使用できるもの(npn.asyなど)と、個別の部品名がついたもの(LT2708.asyなど)があります。これらはテキストエディタで開いて編集することもできますがLTspiceで開くとシンボルを編集する画面(以下、シンボルエディタと呼びます)が起動するので、そこで編集する方が良いと思います。

注) 以下の表記で単にモデルと書いている場合、パラメータモデルの説明のところではパラメータモデルのことを、マクロモデルの説明のところではマクロモデルを意味しています。

トランジスタ、ダイオード、FETなどのモデルの追加

まず、トランジスタなどのパラメータモデルが置かれているcmpフォルダの中を確認します。


見てわかるように、ファイル名は全てstandardとなっていますが、拡張子が部品の分類名(の略語)になっています。

standard.bead: フェライトビーズのモデルが収められています。
standard.bjt: トランジスタ(Bipolar Junction Transistor)のモデルが収められています。
standard.cap: コンデンサのモデルが収められています。
standard.dio: ダイオードのモデルが収められています。
standard.ind: インダクタ(コイル)のモデルが収められています。
standard.jft: J-FETのモデルが収められています。
standard.mos: MOS-FETのモデルが収められています。
standard.res: 抵抗のモデルが収められています。

この中で、bead/cap/ind/resはバイナリファイルになっています。これらの部品を追加/変更するようなこともないのでここでは触れません。

注) 抵抗やコンデンサなども周波数特性や自己共振周波数を再現したモデルとして使用したい場合もあります。そのような場合は、パラメータモデルのL、C、Rを組み合わせてマクロモデルを作成して使用します。同様に、トランジスタなどもリードインダクタンスなどを含めたモデルが必要な場合はマクロモデルを作成して使用します。

bjt/dio/jft/mosはテキストファイルで書かれており、これらはユーザーによる部品の追加などができるようになっています。

注) ここでは、spiceモデルの編集や追加の紹介をしていますが、既に書かれてある記述内容をむやみに変更するとエラーが出たり、正しいシミュレーションができなくなります。これらのファイルの編集には細心の注意を払って行うようにしてください。

試しに、cmpフォルダ内にある“standard.dio”をメモ帳などで開いてみましょう。


この中には多くのダイオードのパラメータが書かれています。ここに書かれたダイオードが回路図上のダイードを右クリックして選択できるダイオードになります。

各行は.modelで始まり、各ダイオードのパラメータが1行に書かれています。つまり.modelから改行までが1つのモデルのパラメータになります。また、各パラメータは半角のスペースで区切られています。(全角文字は使用不可です)

パラメータの数(種類)はダイオードによって多少異なりますが、最低限のパラメータが書かれていればspiceモデルとして動作します。またパラメータに記載順序はなく、その行の中に書かれていれば良いようです。

また、上の行に“*”で始まる部分がありますが、“*”で始まる行はコメント行として扱われるのでシミュレーションには影響を与えません。なお、“*”を頭に配置した行のみ全角文字が使えます。

次にstandard.bjtをメモ帳で開いてみます。


今度は、一つのモデルが複数行に分けて書かれています。改行はパラメータの終了を表しますが、改行した次の行に“+”を記載すると前の行の改行は無視されて前の行からの続きと見なされます。このような表記にするとパラメータの見通しが良くなります。

モデルの追加方法
.modelで始まる記述はLTspiceに限らずspice系共通になっているので、そのようなモデルファイルの.modelから改行までの部分をコピーして、Ltspiceのstandard.xxxのファイルにペーストすると部品が追加されます。

例えば、以下は2N2222AのPspice用のモデルですが、この部分をコピーしてLTspiceのstanddard.bjtファイルの新しい行にペーストします。(2N2222Aは既にLTspiceに組み込まれているので、わざわざ組み込む必要はありませんが、例として示しています。)


既に書かれているモデルの区切り(行)を壊さないように注意すれば簡単にできます。

このPspice用のモデルの部品名を見ると部品名2N2222Aの前にQが付いています。これは(昔の?) Pspiceのお約束で、部品名の先頭は部品の種類を表す特定の文字を記述する必要があるためです。Qはトランジスタを表し、Dはダイオードというような具合です。Pspice用のパラメータモデルはこのような表記になっている場合が多いと思います。例えば2SC945のPspice用モデルはQ2SC945やQSC945と書かれています。

LTspiceでは、部品の種類毎にファイルを分けて管理しているために、standard.bjtであれば、そこに記述されているパラメータは全てバイポーラトランジスタということになり、Pspiceのように部品毎に種類を表す文字が必要ありません。逆にいうと、追加する部品の品種に適したファイルに追記する必要があります。

したがって、ペーストした際にQ2N2222Aを2N2222AとQを削除しても問題ありません。もちろんQ2N2222Aのままでも良く、部品を選択する際にQ2N2222Aと表示されるだけです。

馴れないうちは、オリジナルのstandard.xxxファイルのバックアップを取って行うと安心かと思います。

これらの方法で部品を追加した場合は、LTspiceを立ち上げなおします。そうすると回路図に配置したトランジスタなどの回路記号をマウスで指定して右クリックするとリストの中に追加した部品が現れます。

注) spice系シミュレータは必ずしもモデルのライブラリに部品を登録しなくても回路図画面(ネットリスト)に部品のパラメータを記載して使用することもできます。しかし、回路を作成するたびにデバイスパラメータを回路図に貼り付ける必要があり、面倒なので今回はこの方法については触れません。

マクロモデルの追加

LTspiceに限りませんが、回路図入力のユーザーインターフェースを持ったSpiceシミュレータでは、各部品モデルは回路図上で表示されるシンボル(回路記号)と、各部品の動作/特性を記述したspiceモデルの2つの要素に分かれます。LTspiceのマクロモデルの場合、その2つの要素は別々のファイルになっています。

メーカーなどで提供されるモデルファイルにはシンボルファイルがない場合が多く、シンボルは自分で用意する必要があります。(Pspiceなどではシンボルも提供されているものもあります)

LTspiceではマクロモデルを追加する場合、symフォルダにシンボルファイル(拡張子がasy)を置き、そのシンボルファイルのからsubフォルダに置いたspiceモデルファイル(拡張子がlib)を呼ぶ(指定する)必要があります。


通常のTRやFET、ダイオードなどのパラメータモデルはcmpフォルダ内にある、各モデルのファイルに追記するだけで済みますが、マクロモデルの場合は両方のフォルダにファイルを置く必要があります。

今回は、JRCのオペアンプのモデルを使ってLTspiceに追加する方法を紹介します。JRCのオペアンプは入手しやすい上に、多くの品種のspiceモデルをメーカーが公開しているので電子回路工作をする者にはありがたい存在です。

なお、LTspiceにはシンボルを作成するツールも組み込まれていますが、オペアンプなどの一般的なものであればLTspiceで用意されているものを流用することができます。

マクロモデルを追加する場合のフォルダについて

LTspiceは追加するマクロモデルのファイルの置き場所については比較的融通がきくようですが、ここでの説明では以下のようなフォルダ構成でマクロモデルを追加することとして話しを進めます。


subフォルダの中にmysubというフォルダを、symフォルダにはmysymというフォルダをそれぞれ作成して、その中に追加するlibファイルとasyファイルを保存します。

試しにNJM4558をLTspiceに組み込んでみる

それでは、JRCのNJM4558を例に、LTspiceへの追加の一例を示してみたいと思います。いまから紹介する例は、あくまで私が行っている手順なので、スマートでない部分があると思います。あくまで一例ということで参考にしてください。

まず、日清紡マイクロシステムのWEBサイトからNJM4558のspiceモデルをダウンロードします。
https://www.nisshinbo-microdevices.co.jp/ja/design-support/macromodel/
モデルはOrCAD Caputure及びPspice用と書かれています。

WEB画面をスクロールしていくと、NJM4558が見つかります。


上図の所をクリックすると、モデル名がついたzipファイルがダウンロードされますので、zipファイルを解凍します。

そうすると、以下のようなファイルが展開されます。


この中で、使用するのはnjm4558_V2.libというファイルだけです。spice系のマクロモデルは.txtなどいろいろな拡張子で提供されることがありますが.libが一般的なようです。

NJM4558は1つのパッケージに2個入っているICなので、ダウンロードしたモデルにもオペアンプが2個入っています。私は以前、自分で2個入りのシンボルを作成して組み込みましたが、非常に使い難かったので今回はNJM4558の特性を持つ1個入りのオペアンプとして登録します。

ダウンロードしたNJM4558のlibファイルの修正(1個入りのモデルに変更)

まず、ダウンロードしたnjm4558_v2.libをメモ帳などのテキストエディタで開きます。


上図がメモ帳で開いたものですが、オペアンプ(サブサーキット)が2つ入っているので、1個入りのオペアンプモデルに変更するために上図の赤で囲った部分を削除して、下図の赤線で囲ったようにします。


X1、X2が各々のオペアンプモデル(サブサーキット)で、ここではX2を抹消しX1のみにしました。また、+IN2 -IN2 OUT2はX2の端子を表しているので、これも削除しました。他にも2つ目のオペアンプに関わる部分がありますが、この部分だけ削除すればOKです。モデルファイルの変更はトラブルを防ぐ意味でも最低限にとどめます。

なお、IN+やIN-、OUTはオペアンプの入出力端子のことですが、V+とV-は電源端子を表します。

.SUBCKTの行は重要

.SUBCKT直後のNJM4558がspiceモデルの名前となり、その後の OUT1 -IN1 +IN1 V- V+ と書かれた端子名の記述順番を元に部品シンボル(asyファイル)の端子と一致させる必要があります。

まず、.SUBCKTの後ろの品名がspiceモデルの名前になります。次に、品名の後に書かれている端子名の並び順がシンボルファイルの端子の割り付けとの橋渡しをします。

NJM4558では品名の後、OUT1が最初に書かれており、シンボルファイルにおける端子番号が1になり、V+が最後の5番目のために端子番号が5になります。シンボルファイル側ではlibファイルのIn+とかOUTとかいう名前ではなく、端子名の並び順の番号で端子を識別します。

少し説明が分かり難いと思いますが、この後のシンボルファイルを変更する部分と併せてご覧下さい。

さて、NJM4558_V2.libファイルを、オリジナルの2個入りのモデルから1個入りに変更したので、singleを表す_Sをファイル名の後ろに付け、NJM4558_V2_S.libという名前でmysubフォルダに保存します。

これらのファイルは他の場所に置いて使うこともできますが、subフォルダの中以外の所に置くと後で述べますがシンボルファイルとの関連付けが少々面倒くさくなります。

注) モデルファイルによっては.SUBCKTの行の端子記述が数字になっている場合もあります。このような場合はコメント行などに数字と端子名の関係が書かれています。その場合もシンボルファイルでの端子番号は数字そのものではなく数字の並び順になります。

また、NJM4558のlibファイルの中の表記を見ると、接続ピン情報と書かれた部分があります。(下図)


ここを見ると、非反転入力が1番で出力が5番と書かれています。これはモデルファイル内で端子名の代わりに使われる番号と思ってください。シンボルファイルとの連携には.SUBCKTの行に書かれてある端子名の記述の並び順を用います。

今回は2個入りのマクロモデルを1個入りのモデルに変更したので、このような手間を掛けていますが、元から1個入りのマクロモデルであれば、このような変更は必要ありません。ただし.SUBCKTの行のモデルの名前と端子の順番は確認しておく必要があります。

シンボルファイルを用意する

シンボルファイルはLTspiceを使って作成することもできますが、ここではあらかじめLTspiceに用意されたオペアンプのシンボルを使用します。

LTspiceで用意されているシンボルはsymフォルダの中にある拡張子がasyのファイルで、ピン数などのつじつまのあうものであればどれでも利用可能です。asyファイルをダブルクリックするとLTspiceが起動してシンボルの編集画面(シンボルエディタ)が起動してシンボルの形状を確認できます。また、この画面上で汎用のオペアンプのシンボルをNJM4558専用のシンボルに変更します。

今回は、symフォルダ内のopeampsフォルダにあるopamp2.asyを利用します。opamp.asyというものもありますがこちらには電源端子がないので利用しません。

opamp2.asyをダブルクリックして、LTspiceのシンボルエディタを開きます。

一旦開いたら、そのままNJM4558_V2_S.asyというモデル名で新たに作成したmysymフォルダに保存します。このファイル名がComponentsのダイアログに表示されるので、名前でどのようなものか分かるようにしておきます。(部品名だけでなく1個入りモデルである、など)

シンボルエディタでの作業は大きく2つあります。一つはこのシンボルはNJM4558用であるために回路図上で表記される名前や、spiceモデルの名前、呼び出すlibファイル名を設定します。(Attributeの設定) もう一つはシンボル上の端子とlibファイル上の端子を一致させることです。

まず、シンボルエディタを開いた状態で、メニューバーからEdit -> Attributes -> Edit Attributes でアトリビュートエディタを開きます。(下図)


ここで、以下の3カ所を入力、あるいは修正をします。表の右列をダブルクリックすると文字が入力できます。


Spice Model -> NJM4558と入力。これはlibファイルに書かれた.SUBCKTの後に続く名前を入力します。

value -> ここも上と同じ、NJM4558と入力します。

Model File -> ここは先ほど修正したNJM4558_V2_S.asyをセーブしたフォルダとファイル名を入力します。libファイルがsubフォルダにあればディレクトリの指定は不要で、ファイル名だけで良いのですが、ここではsubフォルダの中にmysubフォルダを作って、その中にlibファイルを保存しているので“mysub/NJM4558_V2_S.lib”と記入します。

もし、subフォルダの外にlibファイルを置いた場合はディレクトリをフルに書く必要があるので面倒です。

シンボルとモデルの端子番号を合わせる

次に、シンボルエディタ上でシンボルの端子(正方形の部分)にマウスを持っていき、右クリックします。今回は5カ所あります。


そうすると端子番号を設定する画面が現れるので、番号を修正します。なお、記号から上下に出ている端子が電源端子で、上が+電源、下が-電源になります。


今回の場合はlibファイルに、OUT1、In-、In+、V-、V+の順で書かれているので、OUTが1、In-が2、In+が3、V-が4、V+が5になります。先に述べたように、ここが数字で書かれている場合も、数字が並んでいる順番で1、2、3、、となります。

修正が終わったら、メニューバーからView -> Pin Tableをクリックします。そうすると、各端子の番号の一覧が表示されるので間違いがないかを確認します。


以上の修正が終わったら、NJM4558_V2_S.asyというファイル名でmysymフォルダに保存します。

これでNJM4558のモデルの登録が終了です。LTspiceを再起動して、Componentsを開くとmysubというフォルダが新たに加わり、その中に作成したNJM4558_V2_Sというモデル名があるはずです。

試しに、下のtest_opamp.zipをダウンロード/解凍して、LTspiceでシミュレーションしてください。ファイルを開いてオペアンプを一旦削除し、今回追加したNJM4558を配置してシミュレーションを走らせます。エラーなくシミュレーションができればNJM4558のモデル追加は成功です。
test_opamp.zip

このファイルを開くときにNJM4558がないというエラーが出た場合は、フォルダの設定などがここでの説明と異なっているためと思います。ファイルを開いて、自分で追加したNJM4558_V2_Sを回路図に置いてシミュレーションしてください。

また、今回の説明通りのフォルダ構成にした場合のシンボルファイル(asyファイル)を用意しましたので、このファイルを解凍してmysymフォルダに移動させて使っていただいても結構です。libファイルがsubフォルダ内のmysubフォルダに置かれていれば動くはずです。
NJM4558_V2_S_asy.zip

もし、何らかのエラーが出たら、もう一度asyファイルとlibファイルの記述内容の間に矛盾がないか確認してみてください。

少し面倒ですが馴れると難しい作業ではありません。JRCのオペアンプなどは一つ作成すると、それを元に少し変更するだけで同じようなピン接続のオペアンプを組み込むことが簡単にできます。

さて、2回に渡ってLTspiceの紹介をしました。紹介できた部分は断片的でこの記事だけではLTspiceを十分に使うことができないと思います。しかし、LTspiceについてはWEBやトランジスタ技術誌、解説書などの情報が非常に豊富なので自分で調べることも比較的容易です。

他にも無償の回路シミュレータがありますが、やはり情報が多いことがLTspiceの強みだと思います。機能面でも趣味だけでなく仕事にも十分使えるレベルにあります。ここではトランジェント解析とAC解析しか触れていませんが、他にもノイズ解析など幾つものシミュレーションが可能です。是非、使い馴れて(使いこなして、、とはいいません)活用されると電子回路工作/設計の良き友(ツール)になると思います。

ジャンク堂閉店のお知らせ

オペアンプの入門から始まったジャンク堂ですが、約1年の連載も今回が最後になりました。そのため、ジャンク堂は一旦閉店をさせて頂きます。

また、気が向いたら不定期で店を開けるかも知れません。その時はまた覗いてください。
ありがとうございました。

Best 73 and 88!

ジャンク堂 バックナンバー

2022年10月号トップへ戻る

次号は 12月 1日(木) に公開予定

サイトのご利用について

©2024 月刊FBニュース編集部 All Rights Reserved.