LTspice入門

アナログ系の回路は実際に作ってみないと解らないことがありますが、Spiceは回路をシュミレートする
ために開発されたソフトウェアです。
LTspiceはフリーで使えるリニアテクノロジー社の回路シュミレーターで、素子数に制限がありません。

 実際に組んだ回路を動作させてみて、測定と推論を重ねながら回路に改良を加える作業は実に大変な作業ですが、spiceはこの多くを手助けしてくれる強力なツールといえます。
 無論、シュミレーターはあくまで「模擬」です。回路接続をうっかり間違えても、万が一にもspiceは発煙してしまうことはありませんが(!?)、これは別な角度からみると、spiceは回路特性の全てを模擬しているのではないことを意味しています。では、「どの特性は模擬していないが重要か」というと、これは厄介な問題です。無視した僅かなキャパシタンスやインダクタンスの違いで大きく結果を左右することもあります。豊富な知識だけでなく、実験と失敗の経験がどうしても必要とされる部分のようです。spiceでは大丈夫でも実際は動かない回路や、逆にspiceでは動かない回路も、実際には動く場合が多々あることは確かで、spiceは極めて強力なツールですが、spiceに頼り過ぎないことも大切です。

















































LTspiceの使い方


File: 新しいファイルを作る、ファイルを開く、上書きしてセーブ

実行(Run)
: 作った回路を実行して、波形を観測します。

停止: 実行を停止

消す: 配置した部品などを削除します。

複写: 指定する範囲の回路を別な位置に複写します。
 別ファイルへコピーする時は、元ファイルと先ファイルを二つ開いておき、まず元ファイルのコピーする回路をこの複写ツールを使ってコピーし、次に先ファイル画面をクリックして Edit→Paste で貼り付けます。

配線
: 配線を接続します。

GND: グランド  (GNDから浮いた回路が無いようにしてください)

ラベル: ラベルに名前を付けて配置します。 (VccやVddに接続する時にも使用)

抵抗、C、L、D: パーツを配置。 値はパーツを右クリックして表示される欄に記入します。
 値の単位 "Ω"、"V"、"A"は省略することもできます。
 また、
 PET(1015)ペタ, T(1012)テラ, G(109)ギガ, meg (106)メガ, k (103)キロ
 m (10-3)ミリ, u (10-6)マイクロ, n (10-9)ナノ, p (10-12)ピコ, f(10-15)フェムト
が使用できます。 ただし、μの替わりに"u"を使うので、toolsのcontrol panel の netkist optionsで "Convert μto u" をチェックしておきます。

部品: クリックしてライブラリから部品を選択して配置します。

選択: 部品を掴み、選択した状態にします。選択された部品は移動することができます。

ドラッグ: 配線ごと部品を引き摺ります。

回転: 部品を掴み選択した状態にしてから、ここをクリックして回転させます。

ミラー: 部品を掴み選択した状態にしてから、ここをクリックして左右を反転させます。



電源および信号源
 電源は部品の中からVoltageを選び、右クリックで電圧を指定します。
 信号源の場合はAdvencedをクリックしてFunctionsから波形を選びます。
  サイン波の場合は振幅Amplitude、周波数Freqなどを指定します。
  Pulseの時は、初期電圧V Initial、 ONした時の電圧V on、ON時間 T on、周期 Tperiod  などを指定します。
 Stop Timeは例えば1(sec)を入力します。



デジタル素子
 部品の degital→ and を選択すると 普通とゲート記号と少々違って、出力側に正と負の両出力がでている記号が現れますが、必要な出力を使います。入力ゲートも必要な本数を引き出して使います。

 右クリックして、SpiceLine  を選択して入力項に
   Vhigh=5V Vlow=0V Vt=2.5V
 のようにON,OFF,スレッシュレベルを記入します。
 スレッシュレベルを指定しない場合は、ON=1 OFF=0 となります。


作った回路の例】 特定の周波数だけを通さないノッチフィルタ




注意
回路は必ずGNDを必要とします。GNDから浮いた回路があるとエラーになります。
なお、エラーが検出された場合は、そのノード番号が表示されますが、回路をポイントすると、画面下に This is node N002 のように表示されますから捜すことができます。



実行して波形を表示させる
Runを実行して、測定したい位置の配線をマウスでポイントすると下図のようにプローブが表示されるので、左クリックすると画面に電圧波形が表示されます。


複数箇所を測定値を重ねて表示することができます。また、波形の一部を選択して囲み、拡大表示させることができます。

グランドを基準にした電圧ではなく、2点間の電位差は、測定回路位置で左ボタンを押し込んだままドラッグして、基準回路位置で左ボタンを離すことで、相対電圧を測定することができます。





電流を測定する
素子をポイントして下のような電流プローブのマークが表示されたら左クリックすると素子に流れる電流を測定することができます。


なお、素子の上ではなく信号線上で流れる電流を測定する場合はAltキーを押しながら信号線をクリックします。


周波数特性を表示させる。
 入力信号として接続したvoltageを右クリックでadvancedを選び、function を non にして、
 small signal AC analysis(AC) のAC Amplitude に入力信号の振幅、例えば 1 を入力します。
 次に、画面の部品が何も無い場所で右クリックして Edit Simulation Cmd を選び、 AC Analysis タグを
 クリックして、Octave 、Number of points..に25、Start Freq に 1、Stop Freq に100kのように入力してOKします。
 この条件データを画面の中に貼り付けます。
 Runして測定位置をポイントすると、周波数特性カーブが表示されます。
 例に用いた回路では1KHzのやや上に鋭い落ち込みが見られます。破線は位相特性です。





【デシベル】 音量や音声信号などの量は、測定器の感度ではなく、人間の感覚の感度に合わせた尺度が用いられます。人間は静かな環境では小さな音量の差もわかりますが、大音響下では、小さな音が加わっても感知できません。その感度の変化のしかたは対数関数(log)的といわれ、測定単位としてはデシベル(dB)が使われます。

電圧がA倍の場合、デシベル表現では  10 log A  で表します。(電力は 20 log A)
    1倍=0dB
    2倍=3dB    1/2=-3dB
   10倍=10dB   1/10=-10dB
   50倍=17dB   1/50=-17dB
  100倍=20dB   1/100=-20dB
  500倍=27dB   1/500=-27dB

Ltspiceでは1Vを0dB基準としていますが、オーディオでは1mWを0dB、無線では1μV/mを0dBとしています。
dB計算は、人間感覚に近いという以外にも便利なことがあって、乗除算に替えて加減算を使えることです。試しに
 ×50÷2 → 17-3=14dB



DC Sweepを表示させる。
入力をリニアに振って、その出力特性を調べるのが DC Sweepです。
作成した回路の入力はDC5Vのような固定値を与え、回路の部品の無いスペース部分で右クリックして、 Edit Simulation Cmd を選びます。すると下図のような入力画面が現れますので DC Sweep タグをクリックして、スタート、ストップ、ステップ条件を入力したらOKして、この条件データを画面の中に貼り付けます。Runして測定位置をポイントすると、特性カーブが表示されます。




2nd Sorce を使う DC sweep
第2条件を振りながらDCスイープをする方法です。

例としてトランジスタのベース電流をステップで振った場合のコレクタ電圧と電流の関係を調べます。
下のように current I1 と voltage V1 を配置(値は共に0)


前例同様、部品の無いスペース部分で右クリックしてEdit Simulation Cmd を選び、下の例のようにDC sweepの1st Souse を指定します。



2nd Source を指定します。下の場合はI1を0Aから5μAずつ増やして50μAまで計11本のグラフを描きます。



この条件データを画面の中に貼り付けます。
Run して、Altキーを押して電流測定モードにしながら、コレクタの上の線をポイントすると、ベース電流を0〜50μAまで,
5μAごと増加させた時のコレクタ電圧とコレクタ電流の関係グラフが表示されます。







波形の時間(周波数)や電圧を測る。
波形が表示されたら測定したい波形の部分を左クリックで範囲指定します。
下の例は1周期の波形を囲んだ状態です。画面の左下に 時間差dx(周波数) と電圧差dy が表示されます。




消費電力を測る
Altキーを押しながら、消費電力を測りたい部品を左クリックすると、温度計の絵が現われ、(W)ワットが表示されます。


下はサイン波電圧を掛けた二つの抵抗の消費電力です。半導体やICの発熱も測定できます。



平均消費電力は、上の方法で調べたい消費電力のグラフを画面に表示させた状態で、Ctrl キーを押しながらグラフの項目(下図参照)をクリックすると表が現れます。


なお、このCtrlキーを使う方法は 電圧や電流測定時にも、AverageやRMS(実効値)を表示する方法として使うことができます。



複数のパネルを並べて表示する。
実行して、波形をパネルにひとつ表示させたら、その表示されているパネル枠をクリックすると Settings というメニューが表示されるので、メニューの中の Add plot Pane をクリックして、表示させたい信号を指定します。



FFT
どのような波形も、
 A + (B×基本周波数のsin波) + (C×基本の2倍周波数のsin波) + (D×基本の3倍周波数のsin波) +、、、
のように変換することができ、これをフーリエ変換といいます。
つまり、どんな波形も基本周波数の倍数のsin波の成分に分解できることになります。

FFT(高速フーリエ変換)は、フーリエ変換により波形の周波数成分を抽出することのできるLTspiceの機能です。

Edit → SPICE Analysis で Stop tyme を5サイクル程度に設定してRunさせて出力波形が表示されたら、波形画面をクリックしてから、Viewをクリックして「FFT」を呼び出して必要な信号を指定してOKするとFFT分析グラフが表示されます。

下は1kHz sin × 5波 のFFTの例です。数学上のフーリエ変換なら1kHzのスペクトルだけになるはずですが、FFTでは雑音が乗っています。




1kHzのsin波が正確に増幅された場合、出力信号に含まれる周波数成分は1kHzだけですが、波形が不正確に増幅されると、2kHz、3kHz、4kHz、、といった基本周波数の倍数の周波数成分が入ってくるようになります。これら高調波成分の合計値の%を全高調波歪率といいます。

FFTの機能を使って全高調波歪率を調べるには以下のようにします。



調べる回路に vout のように適当なラベルを付けます。
Edit → SPACE Directive で .four 1k v(vout) のようなフーリエ解析コマンドを入力し、画面に貼ります。
  .four 周波数 v(観測ラベル1) v(観測ラベル2) ,,,
のように、複数のラベルもOKです。
周波数は通常、1kHzを使います。

実行すると、実行ディレクトリ内に 実行回路名.log ができますから、エディタで各次数の高調波歪量を知ることができます。Total Hamonic Distortion が全高調波歪率 です。

なお、stopサイクル数は5波程度が適当で、少な過ぎたり、あまり多過ぎるとデータ精度が劣化するようです。




相互インダクタンスの設定
トランスや中間タップ付きコイルには相互インダクタンスを設定します。2つのインダクタを配置して、各自己インダクタンスの値を設定後、
 Edit → Spice directive で開いた欄に
 K1 L1 L2 1
のように記入し、データを画面の適当な場所に貼り付けます。最後の値は相互インダクタンス係数(1以下)です。



初期条件
マルチバイブレーターのような回路はそのままでは発振が開始しないため、回路に初期条件をセットしてやると
発振が開始します。
先ず、初期化電圧を設定したい回路位置にラベル名を付けます。そのラベル名が in とか out の場合は、
 Edit → Spice directive で開いた記述欄に
  .ic V(in)=0 V(out)=5
あるいは
  .ic V(in)=5
のように記述し、OKでそれを画面に貼り付けます。



SW(電圧制御スイッチ)の使いかた
LTspiceには、プッシュスイッチの代わりに電圧で制御するスイッチSWがあります。リレー回路としても使うことができます。
部品の中からSWを選択して配置します。 SWをクリックしてValueをSW1のように変更後、
 Edit → SPICE Directive で開いた記述欄に
 .Model SW1 SW(Ron=10meg Roff=10m Vt=2.5)
のようにスパイスモデルを定義し、OKで画面に貼り付けます。
これでSW1は駆動電圧が2.5Vで動作し、接点抵抗が10mΩになり、駆動電圧がOFFで10megΩになります。

注意
することは、記号の上ではSWの接点が開いているため、N.O (通常オープン)のスイッチを連想してしまいますが、このスイッチは N.C (通常クローズ)型のスイッチであるということです。RonとRoffの設定に注意してください。

                                 赤:駆動電圧V2  白:out電圧




CSW(電流制御スイッチ)の使い方
回路の中に電流センサーをセットし、そのセンサーの検出によりON-OFFするスイッチがCSWです。
部品の中からCSWを選びます。下図W1がCSWです。
センサーの端子のラベル(例 A,B)を回路図に配置し、センサーの回路を配線します。



センサー端子A-B間には仮想電流計のダミー抵抗R1を入れておきます。ダミー抵抗値は何でもよく、シュミレーションしても電流は流れないようですが、入れておかないと電流計は動かないようです(?)。
センサーに流す電流を回路で決めます(例では I=V1/R2)。この電流検出素子はLやCでも構わないようですが、GND側に入れる必要があるようです。
次に、スイッチを右クリックし、Valueに [電流センサパラメータ] [スイッチ接触パラメータ] を記入します
例ではパラメータを  VSW TSW  としています。


Edit → Spice Directive に
 VSW A B 0

 .model TSW CSW(Ron=0.01 Roff=10meg It=8m)
のように設定します。Ronは接点のON抵抗、Roffはoff抵抗、It は検出する電流のスレッシュ値です。
例図は、センサー回路A-Bに0〜20mAの電流(青波形)を流した時のout電圧(緑波形)です。R2を流れる電流が8mAを越えるとスイッチW1がONして、outにV1が出力されています。
RonとRoffの値を逆にすれば、逆動作型のスイッチにすることもできます。



 Time step too small エラー
帰還を利用したデジタル回路などの場合、起動するとこのエラーが発生して困ってしまう場合があります。この場合は、デジタル素子を右クリックして表示される Spice Line の欄に、 Td=10n のように遅延時間を入れるとエラーが止まる場合があります。


時間で変化する電源
Voltageを配置し、右クリックでAdvencedを選び、PWL(t1 V1,t2 v2)をチェックします。
入力画面で、各時間毎の電圧を指定します。


White noise
ランダムなノイズ信号(white nose)を発生させる方法。
componentからbvを選び配置する (アイコンはvoltageと同じ)。
bvを右クリックしてValueの欄に、
 V=white(2*pi*100meg*Time)     (100meg の部分は上の周波数帯域?)
のように記載 。次に、何もない画面上を右クリックして Edit Simulation Cmd を選び、Transient の Stop Time の値を、下の周波数に応じた時間 (例 1m )にしてからrunします。

この方法で、振幅1Vのホワイトノイズが得られるようです。振幅の大きさは V=white(2*pi*100meg*Time)*10 のようにします。
FFTを表示させて確認することができます。


modulate
変調信号を発生します。
componentから special functions のmodulate を選び変調出力器を配置します。
modulateのシンボルを右クリックして、表示される表のValue欄に mark=1kHz space=10kHz のように記入します。
FM変調:変調電圧が0Vの時spaceで指定する搬送周波数が出力され、1Vの時markの搬送周波数が出力されます。
AM変調:markが搬送波の周波数です。spaceにダミーの数値を入れないとエラーになるので適当な数値をセットしておきます。
シンボルのFMまたはAM端子に変調用の信号を接続します。


上例の変調信号は 
FM変調信号V1:Amptitude 0.5V 、Freq 20Hz
AM変調信号V2:DC offset 0.4V 、Amptitude 0.2V 、Freq 10Hz
  図において DC offset は "off"、Amptitude は "A" の示されるレベルです。



素子の値をパラメーター化
例えば、コンデンサの値を定数ではなく {C1} のように記述しておき、Edit → Spice Directive に
 .step param C1 list 値1 値2 値3 ,,,,
のように指定して実行することができます。





部品を作る

作った回路を一つの部品のように取り扱うのがサブサーキット機能です。

1)部品を入れるフォルダを用意する
例として作るのは、JK-FF です。
まず、作った部品を入れるフォルダを準備します。ここではフォルダ名を "PARTS" とします。

LTspiceIV を起動し、 File → New Schematic で新しい図面を起こします。
次に、このファイルに名前を付けて、PARTSのフォルダにいったんセーブします。

File → Save as  で、先程作ったフォルダ PARTS を指定し、ファイル名を "jkflop.asc"  として保存します。

これで、中身が空のファイル jkflop.asc が フォルダ PARTS にできました (一見、無駄な作業ですがLTspiceのファイル環境を用意するためです)


2)部品の回路図を作る
空のjkflop.asc を開きます。
下図のように、JKフリップフロップの回路を作成し、各端子に ラベルを付けます。Port TypeはNoneで構いません。



完成したらファイルはセーブします。


3)部品のシンボルを作る
次に、上で作った部品(JKフリップフロップ)のシンボルマークを作ります。

File → New Symbol

で、シンボル編集画面が開きます。この作業で主に使うのは Draw(描く) と Edit(編集)です。

Draw でシンボルに表示する図形を描きます。
 Line  線     端子の線など。 端子はグリッドの点に合わせて配置します。
 Rect  四角形  部品の枠など
 Circle  円
 Arc   円弧
 Text  文字    部品名称など

Edit  部品を編集します。
 Add Pin/Port  入出力端子を取り付けます。
 ハサミや移動も可能です。



入出力端子(Pin)を付ける際には、回路図で指定したLabelに指定し、Pin名を表示する位置を指定します。上図の J ならBOTTOMといういうに、Pinを示す青い小さな四角に対する文字の表示位置方向を指定します。
線で描いた端子の末端にピンを注意して貼り付けます。表示されるグリッドの点を参考に、線端部の赤丸とピン位置を示す小さな青い四角を正確に一致させて配置します。 

シンボル図ができたら、
File → Save as
でPARTSフォルダを選び、 "jkflop" として書き込みすると。 シンボルファイル jkflop.asy ができあがります。

ここで重要なのは asc ファイルと asy ファイルは同じフォルダに作られる必要があることです。



4)部品を使ってみる
作った部品を使って、回路図を作成する場合の注意点は、上の例で部品回路図を作った時と同じように、

 File → New Schematic に続いて、File → Save as で、PARTSフォルダを指定してから新しいファイル名(例:TEST.asc)を作ります。

すると、配置する部品を選択する画面で、下図のように、Top Directory をポイントすると、部品のフォルダがアクセスできるようになります。インストールした一般部品も同じく、Top Directoryで選択することができます。




作った部品 JKフリップフロップ を3個配置して動作させた結果が下図。全体回路としても正常に動作していることがわかります。



オリジナルのLTspiceには、FFとしてはD-FFしかインストールされていませんが、この方法を使うことで、構成が分かっているデバイスは部品化して、回路に組み込むことができるという訳です。




SPICEデータ

コンパレーターLM339をLTspiceに導入する。  (LT wiki より翻訳抜粋)
 以下の作業は Programfiles\LTC\LTspice の下で作業

1)シンボルを改造して作る
 lib\sym\Comparators\LT1017.asy を リネームコピーして LM339.asy を作り、下記部分を変更。

SYMATTR Value LT1017
SYMATTR Prefix X
SYMATTR SpiceModel LTC1.lib
SYMATTR Value2 LT1017
SYMATTR Description μPower Dual Comparator(1 of 2)


SYMATTR Value LM339
SYMATTR Prefix X
SYMATTR SpiceModel LM339.sub
SYMATTR Value2 LM339
SYMATTR Description Quad Single Supply 3V/5V Comparator LM339

これを、LM339.asy としてlib\sym\Comparators へセーブ。

2)マクロモデルを作る。
下のデータを一旦エディタに読み込み、 lib\sub の中へ LM339.sub として書き込む。

* LM339 VOLTAGE COMPARATOR "MACROMODEL" SUBCIRCUIT
* CREATED USING PARTS VERSION 4.03 ON 03/07/90 AT 14:17
* REV (N/A)
* CONNECTIONS: NON-INVERTING INPUT
* | INVERTING INPUT
* | | POSITIVE POWER SUPPLY
* | | | NEGATIVE POWER SUPPLY
* | | | | OPEN COLLECTOR OUTPUT
* | | | | |
.SUBCKT LM339 1 2 3 4 5
*
F1 9 3 V1 1
IEE 3 7 DC 100.0E-6
VI1 21 1 DC .75
VI2 22 2 DC .75
Q1 9 21 7 QIN
Q2 8 22 7 QIN
Q3 9 8 4 QMO
Q4 8 8 4 QMI
.MODEL QIN PNP(IS=800.0E-18 BF=2.000E3)
.MODEL QMI NPN(IS=800.0E-18 BF=1002)
.MODEL QMO NPN(IS=800.0E-18 BF=1000 CJC=1E-15 TR=807.4E-9)
E1 10 4 9 4 1
V1 10 11 DC 0
Q5 5 11 4 QOC
.MODEL QOC NPN(IS=800.0E-18 BF=20.29E3 CJC=1E-15 TF=942.6E-12 TR=543.8E-9)
DP 4 3 DX
RP 3 4 46.3E3
.MODEL DX D(IS=800.0E-18)
*
.ENDS

* Model for packaged LM339 devices
* 14-pin DIP, 4 comparators per package
* CONNECTIONS: Output 2
* | Output 1
* | | Positive Power Supply
* | | | Input 1 Inverting
* | | | | Input 1 Non-Inverting
* | | | | | Input 2 Inverting
* | | | | | | Input 2 Non-Inverting
* | | | | | | | Input 3 Inverting
* | | | | | | | | Input 3 Non-inverting
* | | | | | | | | | Input 4 Inverting
* | | | | | | | | | | Input 4 Non-inverting
* | | | | | | | | | | | Negative Power Supply (or Gnd)
* | | | | | | | | | | | | Output 4
* | | | | | | | | | | | | | Output 3
* | | | | | | | | | | | | | |
.SUBCKT LM339_DIP14 1 2 3 4 5 6 7 8 9 10 11 12 13 14
X1 5 4 3 12 2 LM339
X2 7 6 3 12 1 LM339
X3 9 8 3 12 14 LM339
X4 11 10 3 12 13 LM339
.ENDS



標準モデルのSpiceデータ   

インストールされた状態では日本製デバイスは少ないようですが、各メーカーのHPにはspiceデータが公表されている場合があります。スパイスモデルを取り込むと、LTspiceで使うことができるようになります(そのまますべて有効という訳ではないようですが)。

トランジスタ、FET、ダイオードなどの標準モデルは、
Program files\LTC\LTspiceIV\lib\cmpの中に、
 standard.bjt バイポーラトランジスタ
 standard.dio ダイオード
 standard.jft FET
 standard.mos MOSFET
のようにライブラリが入っています。データはテキストですからメモ帳などのエディタで「ファイルの種類」を「すべてのファイル」にして開けて、必要な部分をコピー&ペーストすることでモデルを拡張することができます。
下に公開されている日本製半導体のSpiceデータを添付しておきます。ただし、メーカーが保証するものではなく、あくまで参考データです。2SC1815始め、本サイトで使用しているSPICEモデルにも使っています。

Spice_std.txt


Fileの保護】 WindowsのsystemやProgran Filesのフォルダにはアクセス保護がかかっている場合があります。ここに強制的にファイルを書く場合は、copyするファイルをエクスプローラで一旦デスクトップに落とし、このショートカットをエクスプローラでドラッグして保護されたフォルダにドロップすることで強制的にファイルの追加や書換えが可能になります。

改造したLTspiceのデータのセーブ
改造したり追加したLTspiceのデータは再インストールやPCを更新すると消えてしまいます。
Program files\LTC\LTspiceIV\lib
の中の追加変更したファイルは控えのフォルダにセーブしておくことを薦めます。Libフォルダごとセーブしておいたほうが簡単かもしれません。


Spiceパラメータ
トランジスタの新たなモデルを作ったり、現行のモデルの特性を変更することができます。
トランジスタのパラメータに関する説明はLTspice BJT資料を参考にすることができます。

主なパラメーターとしては、
   [デフォルト値]
 Is= [0.1f]  飽和電流 Vbeを決めるパラメータ
 Vaf= [∞]  アーリー電圧 儼ce/僮c を決めるパラメータ
 Bf= [100]  Hfe
 Cjc= [0]   ゼロバイアスの時のB-C接合容量







アクセスカウンター アクセスカウンター

                           Top page




LTSpiceを入手する
Top page
LTspiceで回路設計

当サイト管理人著




 <テスターの職人技>


出版社名   :   技術評論社
税込価格:    2,030円

全国書店ネットワーク
amazon.co.jp