macOS版LTspiceで限界を調べる初心者の試行錯誤
電子回路が壊れるような致命等な問題を、実際に動かさずに見付けられないか。そう思って調べてみたところLTspiceでシミュレーションできることが分かった。
LTspiceはアナログ・デバイセズ社で開発された電子回路シミュレータであり、カリフォルニア大学バークレー校で開発されたSPICE(Simulation Program with Integrated Circuit Emphasis)から派生したものだそうだ。
LTspiceやSPICEに触れたことがないソフトウェア系エンジニアにとってはWikipediaでの日本語の説明を読むとどういうものか把握しやすいかもしれない。
というのはLTspiceで検索するとWindows版での説明が多くヒットするのだが、macOS版ではUIがまったく違う。デザインが違うということではなくて部分的に実装がなかったりする。Windows版ではフォームから入力できるパラメータが、macOS版ではまったく別の方法でどうにか書き込む方法を探すことになったりする。まったくの初心者であるためにおおげさにとらえてしまっているかもしれないが、ともあれ、SPICEでは電子回路をテキストで記述した「ネットリスト」というもので扱っていることを最初に知っておくと途方に暮れる回数が減るのではないかと思う。
なお、SPICEから派生した中にはOSSのngspiceもあるというのをいろいろ試した後で知ったが、ここではLTspiceでの試行錯誤を記録する。
インストールはhomebrewでできる。
brew install ltspice
起動すると以下のウィンドウが表示される。
LTspiceの起動
電子回路を新たに書き始めるにはStart a new, blank Schematic
をクリックする。
新規作成
で、ここで詰まる。
まずは何か部品を置きたいわけだが、ここからどう操作すればよいのか分からなくて詰まった。正解は右クリック。
この記事で行う操作はすべて右クリックのメニューから始めることになる。ここでは部品を置くためにDraft
→Component
と進める。
操作メニュー
すると部品を検索するウィンドウが開く。入力欄があるのでそこにLED
と入力すと次のように表示される。
LEDを探索
OK
をクリックすると部品検索ウィンドウが閉じてもとのウィンドウに戻る。するとマウスポインタにくっつく形でLEDのアイコンが表示されているはずなので、LEDを置きたいところで左クリックする。
二つめのLEDを置きたければ適当な場所で左クリックを繰り返すと連続で置くこともできる。ここでは一つだけでよいのでESCを押すか右クリックで解除する。このようにメニューから選んだ操作を連続して実行できる状態になることがLTspiceでは少なくない。右クリックで解除を覚えておく。
置いたばかりのLEDアイコンを右クリックするとLEDのパラメータを入力できそうなウィンドウが表示される。しかし、ここでできるのはあらかじめ登録されているリストの中から選択することだけ。
LEDのパラメータを編集したいが……
Pic New Diode
をクリックし、表示されたリストの中から選択する。絞り込みなどはできないようなので目視で選ぶ。
LEDを選択する
Type
をクリックすると種別ごとにまとまるのでLEDの中から適当なものを選ぶ。ここではNSCW100
を選択した。続けて抵抗(Rやresで絞り込める)、電源(volで絞り込める)を置く。(このウィンドウに表示されているSPICE .model
というのがネットリストを構成するSPICE言語による部品の定義である。)
部品を配置
次に部品同士を接続する。ただしこのままでは接続しにくいので部品の向きを変えておく。
右クリックからEdit
→Drag
と進めてLEDアイコンをクリックする。マウスを少し動かすとウィンドウ上部にヘルプメッセージが表示されるので、それに従ってCtrl-R
をタイプすると時計まわりに90度回転する。抵抗も同様にしておく。ついでに位置も調整しておく。
部品の調整を終えたら右クリックで解除。続けてメニューからDraft
→Wires
と進める。
クリックするごとに接続線が描かれるので各部品の端子を通るように四角を描く。端子同士を個別に接続する必要はない。
結線する
これで回路が完成、ではなくて、アースを配置する。それと抵抗や電源のパラメータの入力を忘れていたのでそれも行う。
アースはDraft
→Net Name
で表示されるウィンドウでGND
を選んでOK
をクリック。適当な場所に配置してDraft
→Wires
で先程描いた配線に接続する。
抵抗や電源のパラメータは、LEDの製品を選んだときと同じようにアイコン上で右クリックする。LEDとは違ってフォームに入力できるのでそれぞれ適当な値を入れる。
回路の完成
今度こそ完成。作成した回路でシミュレートを行い、どこにどのような電圧がかかるのか、電流が流れるのを見てみたい。
シミュレートもやはりメニューから。Draft
→SPICE directive
と進めて.tran 0 2 1
と入力し、OK
をクリックする。
するとLEDなどと同様に配置を求められるので適当なところに置いておく。その状態でメニューからRun
を選ぶ。回路に問題がなければ新しくウィンドウが表示される。
シミュレーション開始
最初は何も表示されていないが回路ウィンドウのほうで参照したいポイントをクリックしていくと対応したものがプロットされる。
たとえば電源(V1の+)と抵抗(R1)の間、抵抗(R1)とLED(D1)の間、LED(D1)を順にクリックすると以下のような表示となる。
抵抗の前後の電圧とLEDの電流を見る
V(n002)、V(n001)はクリックした位置での電圧、I(D1)はLEDを流れる電流である。
また、これら結果はSPICE directive
で入力した内容に従っている。.tran 0 2 1
は0〜2秒間、1秒ごとの値を取得するという意味になる。
.tran
以外にもコマンドがあって、たとえば.op
と.step
を使うと特定のパラメータを変えた場合の変化を見ることができる。
ここではLEDに影響を与える要素の一つである抵抗値を変化させたときの様子を見ることにする。まず抵抗R1の値を{R}
に変更する。次に.tran 〜
となっているのを以下の内容に変更する。いずれも右クリックで表示されるウィンドウで行う。
.op
.step param R 10 200 5
これは抵抗R1の値を10〜200まで5きざみで変化させる指定となる。再びメニューからRun
を選択すると表示が以下のようになる。
抵抗を変化させたときの電圧・電流
LEDを流れる電流が分かるので、LEDの仕様もとにすれば使用できる抵抗値の範囲をある程度把握することができそうな気がする。(合ってる?)
最後に、実際の回路で使用するLEDのパラメータでシミュレーションしたい。
(※ここまでの部分は他の解説記事などからの切り貼りできちんと理解しているとは言い難いのだが、ここから先はさらにあやふやで、これで良いのかどうかよく分かっていない。実験をして確認できればと思っている。)
サンプルとして秋月電子通商の5mm赤色LED 625nm 7cd60度を使用することにする。同ページおよびデータシートの記述から以下のことが分かる。
- Electrical-Optical Caracteristicsより
- 標準電流(IF) 20mA
- そのときの電圧(VF) 2.1V
- Absolute Maximum Ratingより
- 電流(IF)の上限 50mA
- 電力(PD)の上限 130mW
- 逆電圧(VR)の上限 5V
これをもとにSPICE directive
に一行足して以下のようにする。
.model MYLED D(Ron=2.1/0.02 Vrev=5 type=LED)
.op
.step param R 10 200 5
.model
は部品を定義するためのコマンドで、ここではMYLED
という名前のダイオードを定義している。D(...)
の部分がLEDの定義となる。
次にLEDアイコン近くのNSCW100
の部分を右クリックしMYLED
に変更し、再びRun
する。
LEDのパラメータを変えてシミュレーション
このままでは分かりにくいので表示を調整する。まず右側の電流軸上で右クリックして上端100mA、下端0mA、間隔10mAに変更する。次にView
→Grid
でグリッドを表示する。
プロットの軸を調整
LEDの消費電力もプロットしてみる。メニューからAdd Traces
を選択するか、ウィンドウ上部の左から三番目のボタンをクリックする。表示されたウィンドウにV(n001)*I(D1)
と入力する。これもそのままでは分かりにくいので上限の少し上の150mWまでにすると以下のような表示となる。
消費電力を計算してプロットする
マウスポインタを動かすとその位置での各値がウィンドウ上部に表示される。50mAあたりを読むとだいたい98Ωのようである。ここから抵抗R1は98Ω以上でなければLED D1が破損するおそれがあると言える、のだと思う。
最終的な回路図は以下となった。
回路図