SPICEの小瓶(5) 温度を変えてシミュレーション、ついでに物理定数

Joseph Halfmoon

本気?でSPICEかけるときには、温度を振ってシミュレーションすることが必須です。常温で「動いた」と思っても温度が高い時、低い時にうまく行かないことはままあります。ICの設計であればさらに製造バラツキも考慮にいれて多数の組み合わせを確認する必要もでてきます。今回は別件記事のΔVBEが温度依存だったので、温度を振って観察してみます。

※「SPICEの小瓶」投稿順インデックスはこちら

温度の掃引

そういうわけで温度を変えてシミュレーションするのは基本なので、簡単に設定できます(忘れてたのは誰だ?)

.TEMP 温度1 温度2 …

マニュアル読む限り、.STEP を使って以下のようにするのと同じことのようですが、上記の方がかんたん。

.STEP TEMP LIST 温度1 温度2 …

別件記事の「フローティング型電流源」の回路図に .TEMP を指定し、-20℃、27℃、75℃でシミュレーションしてみました。なお、LTspiceのデフォルト温度は、

27℃=300.15K

のようです。

circuit

なお、各温度でのΔVBEの実際の値を冒頭のアイキャッチ画像に示した式で計算したものを LTspice に計算してもらうために .meas 文を追加してみました。.meas文内では、

{boltz} ボルツマン定数
{kelvin} 絶対零度
{echarge} 電子の電荷

という記法で参照できるようでした。しかしグラフペインでは、ただ k と書けばボルツマン定数となるようです。記法が異なるだけでなく、参照する場所によって定数値も微妙に異なる、と。この辺のディープなところは、三共社さんの渋谷先生の以下の動画に詳しいです。

抵抗器の熱雑音 LTspice内でのボルツマン定数

さて、温度の掃引に戻ると、温度を変化させたときの上記のフローティング型電流源に流れる電流は以下のようになりました。

simTemperature

温度によって違うと言われていた通り。アカラサマであります。

上記のシミュレーション後、ログファイルを開くと、.meas(measure)で指定してあったΔVBEの値が求まっていました。本当は、シミュレーション時の温度を示す TEMP という変数から計算したかったのですが、どうも .meas の計算はシミュレーション完了後に行われるようで、TEMPには最後の値が入ったままみたいでした。うまい方法が分からなかったので、.meas 3行の中には即値で温度書き込んでしまいました。カッコ悪い。

上記の結果からすると、常温(ここでは27℃)で36mVくらいがΔVBEの値であるようです。

ΔVBEの確認ついでにR1のRをパラメータ掃引

ΔVBEは、Q4のエミッタ電位とQ5/Q6のエミッタ電位の差であるので、R1の両端で観察できる筈です。これを見るついでにR1についても3種類の値についてどうなるのだかシミュレーションしてみました。

paramR1circuit

まずフローティング型電流源に流れる電流値の様子が以下に。別件記事では、R1=500Ωの場合ばかりやっていましたが、R1を小さくすると急激に電流が大きくなることが分かります。調子に乗って小さくしすぎるとヤバイ感じ。

simParamR

一方、同じシミュレーションでのR1の両端の電位差、つまりはΔVBEは以下のようです。抵抗R1の差などお構いなしにフローティング型電流源にかかる電圧が0.8Vを超えたあたりからはほぼ一定。

deltaVBEparamR1

大体 36mVくらい。これって、さっき .meas で報告された値とほぼほぼ一緒ですな。予定どおりか、ホントにそれで良いのか。

SPICEの小瓶(4) SPICE NETLIST(テキスト)の読み込みと表示 へ戻る

SPICEの小瓶(6) 電圧源の波形の設定用にPythonスクリプト作成開始 へ進む