LTspiceにより、LEDドライバのボーデ線図を生成する
概要
制御ループの位相とゲインを正しく測定するには(高価な)装置が必要です。また、そうした装置を使いこなし、適切に作業を実施できる専門家も必要になります。しかし、そうした装置や専門家を常に確保できるとは限りません。本稿では、そうしたケースに活用できる便利な手法を紹介します。
はじめに
スイッチング・レギュレータを使用する際には、その制御ループの安定性を評価する必要があります。そのためによく使われるのが、クローズドループのゲインと位相の値をプロットしたボーデ線図です。ただ、ゲインと位相を正確に測定するには、高価なネットワーク・アナライザが必要です。また、そうした測定手法に精通した人材も必要になります。
スイッチング・レギュレータのボーデ線図を取得する際には、図1(a)に示すように、制御ループの一部に変更を加えてノイズを注入できるようにします。周波数を掃引した信号をノイズとして注入し、その結果として生じるゲインと位相の値を計測するということです。一方、LEDドライバ回路については、図1(a)の測定方法が使われることはほとんどありません。一般的なスイッチング・レギュレータ(DC/DCコンバータ)の場合、抵抗分圧器からグラウンドへのパスの部分でノイズの注入と測定を行います。それに対し、LEDドライバの測定には、図1(b)に示すような異なるアプローチが必要になります。
いずれにせよ、安定性を保証するためには、実験室でループの位相とゲインを測定するのが最良の方法です。しかし、すべての技術者の手元に必要な装置が存在するわけではありません。また、経験豊富なアプリケーション・チームに、いつでも測定を依頼できるわけでもありません。では、この問題にはどのように対処すればよいのでしょうか。
1つの方法は、LEDドライバ回路を実際に使用し、トランジェントに対する応答を観察することです。これであれば、ボード線図を取得する場合とは異なり、アプリケーション・ボードとベンチトップ型のより一般的な装置を使用するだけで済みます。もちろん、この方法では、周波数に対するゲインと位相の値を取得することはできません。つまり、安定性を保証するための確認は行えません。しかし、制御ループの速度と安定性についてある程度の確認は行えます。例えば、振幅の大きいトランジェントを使用すると、絶対偏差やシステムの応答時間を把握することができます。また、トランジェント(外乱)に対する応答を、位相とゲインのマージンの評価に利用することも可能です。つまり、一般的なループの安定性を把握するために利用できるということです。例えば、臨界減衰の応答が現れているなら、45°~60°の位相マージンが確保できていると考えられます。一方、トランジェントの期間中に大きなスパイクが生じていたら、出力コンデンサの値を大きくしたり、より高速なループを構成したりする必要があるはずです。あるいは、セトリングまでに長い時間を要しているなら、ループの帯域幅(およびクロスオーバー周波数)を広げなければならないでしょう。このように、スイッチング・レギュレータの制御ループについて比較的簡単な確認を行うだけでも、ある程度の効果が得られます。しかし、より詳細な解析を実施するには、ゲインと位相をプロットしたボーデ線図が必要です。
もう1つの方法は、LTspice®を使ってシミュレーションを実施するというものです。その場合、スイッチング・レギュレータ回路を実際に構築することなく、出力トランジェントやボーデ線図を確認することができます。つまり、制御ループの安定性を大まかに把握できるということです。これは、補償用の各種コンポーネントを選択したり、出力コンデンサの値を決定したりするための出発点になります。ボーデ線図の取得方法としては、1975年に発表されたミドルブルック法がよく知られています。それに基づいて、LTspiceでシミュレーションを実施する方法を記した記事「LTspice: Basic Steps in Generating a Bode Plot of SMPS」(LTspice:スイッチング電源のボーデ線図を生成するための基本的なステップ)も公開されています1。なお、実際の回路を使用した評価において、ミドルブルック法で説明されているとおりの位置に信号が注入されることは少なくなってきました。長年にわたり調整が行われた結果、図1(a)に示した注入ポイントが一般的に使用されるようになっています。
LEDドライバ回路の場合、ハイサイドの検出抵抗に加え、複雑なAC抵抗として振る舞うLEDが負荷として存在します。そのため、ミドルブルック法に示された注入ポイントとも、現在よく使われている帰還パス内の注入ポイントとも異なる位置を選択しなければなりません。以下に示す方法では、従来LTspiceによるシミュレーションでも使われてこなかった注入ポイントを採用しています。それにより、LEDドライバにおける電流検出用の帰還ループを対象としてボーデ線図を取得することができます。この方法は、LTspiceによるシミュレーションだけでなく、実験室で行う評価にも適用できます。
制御ループのボーデ線図を取得する方法
スイッチング・レギュレータの標準的な制御ループを対象としてボーデ線図を取得すると、以下に示す3つの重要な測定値が得られます。
- 位相マージン
- クロスオーバー周波数(帯域幅)
- ゲイン・マージン
これらは、安定性と速度の評価に使用できます。一般に、システムの安定性を確保するには、45°~60°の位相マージンが必要になります。また、ゲイン・マージンについては、-10dBという値を確保しなければなりません。制御ループの速度については、クロスオーバー周波数が指標になります。これらの値は、ネットワーク・アナライザを使用して取得します。その際には、図1に示した構成を使用します。

図1. ボーデ線図の取得方法。(a)はスイッチング・レギュレータ、(b)はLEDドライバを対象としています。ネットワーク・アナライザを使って測定を行う場合には、制御ループに変更を加えてインピーダンスの高いパスに正弦波信号を注入します。その状態で制御ループのゲインと位相を測定することにより、定量的に安定性を評価することができます。
LTspiceによって制御ループのシミュレーションを実施する場合も、図1の構成を使用できます。ここでは、LEDドライバICとして「LT3950」を例にとることにします。同ICを使って構成したシミュレーション用のLEDドライバ回路を図2に示しました。ご覧のように、シミュレーションでは、周波数fの理想的な正弦波を帰還パス(Isnピンにつながる負側の検出ライン)に直接注入します。測定ポイントとしてはA、B、Cの3つのノードを使用し、注入した信号の周波数におけるゲイン(dB)と位相(°)を算出します。制御ループ全体のボーデ線図を取得するには、周波数を掃引しながら測定を繰り返します。注入する信号の最高周波数は、LEDドライバICのスイッチング周波数の1/2であるfSW/2に設定することにします。

図2. LTspiceによるシミュレーション用の回路。LT3950のデモ用ボード「DC2788A」で使われている回路をベースとしています。制御ループの部分に、ノイズの注入と測定を行うための変更を加えました。
図2のポイントA、B、Cで測定を行うことにより、注入する信号の周波数fにおける制御ループのゲインと位相を求めることができます。周波数fが変化すると、ゲインと位相の値も変化します。この測定方法について理解するために、まずは何らかの固定周波数を選択し、A‐C間とB‐C間のゲインと位相を測定してみてもよいでしょう。その場合、ボーデ線図で言えば、その周波数に対応するポイントが1つだけ得られることになります。図3(a)、(b)に、10kHz/±10mVのAC信号を注入した場合の応答を示しました。図中に示した計算により、ゲインと位相の値を求めることができます。図3(c)、(d)には、40kHz/±10mVのAC信号を注入した場合の例を示しました。
クローズドループのボーデ線図を取得するには、周波数を掃引しながらA‐C間、B‐C間のゲインと位相を測定します。先述したように、本来、このような測定は実験室で高価なネットワーク・アナライザを使用して実施します。その際に使用する周波数掃引の手法をLTspiceにも適用するということです。その結果として、図4のようなボーデ線図を得ることができます。最終的には、このようなシミュレーション結果とネットワーク・アナライザによる実測結果を比較して確認を行うことになるでしょう(後述)。

図3. ポイントA、B、Cにおける測定結果。(a)、(b)は10kHz/±10mVのAC信号を注入した場合の応答です。(c)、(d)には40kHz/±10mVのAC信号を注入した場合の応答を示しました。図中に示した計算式によってゲインと位相の値を求めます。

図4. LTspiceによって取得したボーデ線図。LT3950と対象としてシミュレーションを実施し、ゲイン(実線)と位相(破線)をプロットしました。
シミュレーション内容の詳細
ここでは、LTspiceによってボーデ線図を取得するための手順を詳細に説明します。周波数掃引を行ってゲインと位相の値を取得し、それらのプロットを生成します。
【ステップ1】周波数掃引を行うためのAC信号源を追加する
まず、LTspice上で回路に変更を加えます。具体的には、図2に示したように、±10mVのAC信号を注入するための電圧源と抵抗を追加します。また、測定の対象となるノードにA、B、Cというラベルを付加します。そして、電圧源にはSINE(0 10m {Freq})と設定します。これにより、10mVのピーク電圧で周波数掃引が行われることになります。なお、正弦波のピーク値は1mV~20mVの範囲で設定できます。多くの場合、LEDドライバの検出電圧は250mVまたは100mVです。注入するノイズの振幅が大きすぎると、LEDに流れる電流にレギュレーション誤差が生じる可能性があります。
【ステップ2】計算式を追加する
回路図に、.sp(SPICE)ディレクティブとして.measure文を追加します。それにより、フーリエ変換を実行し、LEDドライバ回路におけるオープンループの複素ゲインと位相を計算することができます。ゲインと位相の単位はそれぞれ「dB」と「°」です。
必要なディレクティブを以下に示します。
- .measure Aavg avg V(a)-V(c)
- .measure Bavg avg V(b)-V(c)
- .measure Are avg (V(a)-V(c)-Aavg)*cos(360*time*Freq)
- .measure Aim avg -(V(b)-V(c)-Aavg)*sin(360*time*Freq)
- .measure Bre avg (V(b)-V(c)-Bavg)*cos(360*time*Freq)
- .measure Bim avg -(V(b)-V(c)-Bavg)*sin(360*time*Freq)
- .measure GainMag param 20*log10(hypot(Are,Aim) / hypot(Bre,Bim))
- .measure GainPhi param mod(atan2(Aim, Are) - atan2(Bim, Bre)+180,360)-180
【ステップ3】測定用のパラメータを設定する
適切な結果を得るためには、もう少しディレクティブを追加する必要があります。まず、シミュレーションは回路が定常状態(起動済み)に達している状態で行わなければなりません。つまり、測定の開始時刻(t0)と停止時刻の調整が必要です。適切な開始時刻は、シミュレーションの実行を開始して回路が起動するまでの時間を観察することによって推定することができます。一方、停止時刻はt0 + 10/freqと設定することにしましょう。つまり、定常状態に達してから10周期分に相当する時間が経過したら停止するということです。そうすると、各周波数に対して10周期分の計測が行われることになります。10周期分の結果の平均をとることで、誤差を低減することができます。
追加するディレクティブを以下に示します。
- .param t0=0.2m
- .tran 0 {t0+10/freq} {t0} startup
- .step oct param freq 1K 1M 3
【ステップ4】周波数の分解能と範囲を設定する
.stepコマンドを使えば、解析に使用する信号の周波数分解能と周波数範囲を設定することができます。上記のディレクティブにより、このシミュレーションは1オクターブ当たり3ポイントの分解能、1kHzから1MHzまでの範囲で実行されます。ボーデ線図にはスイッチング周波数の1/2までの測定値をプロットするので、周波数の上限値としてはfSW/2に相当する値を設定します。なお、ポイント数を増やせば分解能は向上しますが、それに応じてシミュレーション時間が長くなります。1オクターブ当たり3ポイントというのは、分解能としては最低限の値です。ただ、このように設定すれば、シミュレーション時間を節約することができます。とはいえ、設計サイクル全体について考えてみると、シミュレーション時間が5分ほどかかったとしても決して長すぎるとは言えません。プリント回路基板の設計、組立、テストに比べればはるかに短い時間で済みます。したがって、より完全な結果が得られるよう、1オクターブ当たり5ポイント以上といった具合に、より高い分解能を設定する方がよいかもしれません。
【ステップ5】シミュレーションを実行する
ここまでの準備が整ったら、「Run the Simulation」によってシミュレーションを実行します。ただ、それだけでボーデ線図が得られるわけではありません。そうではなく、通常どおり電圧と電流の測定値が表示されます。ボーデ線図の生成には、次に示すステップが必要になります。
【ステップ6】ボーデ線図を生成する
まず、回路図のウィンドウを右クリックし、「SPICE Error Log」を開きます。そして「Plot .step'ed .meas data」を選択します。続いて、「Plot Settings」メニューから「Visible Traces」を選び、「Gain」を選択してデータをプロットします。オプションになりますが、「File」をクリックして「Export Data as Text」を選択すると、ボーデ線図用のデータを格納したCSV(Comma Separated Value)ファイルが生成されます。このようにすれば、データをエクスポートすることができます。
ネットワーク・アナライザによるボーデ線図の取得
シミュレーションによって得られた結果は、必ずしも信頼性の高いものだとは言えません。ループの安定性とマージンを完全に保証するためにシミュレーションを使用するのは不適切です。設計プロセスのどこかの段階で、実測による確認を必ず行わなければなりません。つまり、実際に回路を構築し、ネットワーク・アナライザを使用して制御ループの検証を行う必要があるということです。
ネットワーク・アナライザによってボーデ線図を取得する際には、シミュレーションと同様のことを行います。つまり、帰還ループにノイズを注入し、A‐B間、A‐C間のゲインと位相を測定することによってボーデ線図を取得します。図5に示したのは、実測に使用する回路です。図6、図7には、ネットワーク・アナライザの外観と測定を行っている様子を示しました。

図5. 測定の対象となるLEDドライバ回路。ネットワーク・アナライザを使用して測定を行い、制御ループのボーデ線図を取得します。

図6. 測定に使用した年代物のネットワーク・アナライザ(Venable Instrumentsの「5060A」)。ハイサイドへのフローティング・ノイズの注入と測定に使用しました。

図7. 測定を行っている様子。ノイズの注入ポイントと測定ポイントを拡大して示しました。

図8. LT3950を使用して構成したLEDドライバ回路のボーデ線図。デモ用ボード(DC2788A)とネットワーク・アナライザを使用して取得した実測結果を緑色で示しました。青色で示したのがLTspiceによるシミュレーション結果です。
設定 | クロスオーバー周波数〔kHz〕 | ゲイン・マージン〔dB〕 | 位相マージン〔°〕 |
実測結果、VINは 8V | 16.75 | 17.47 | 83.96 |
LTspiceで取得した結果、VINは 8V | 15.8 | 13.79 | 71.23 |
実測結果、VINは 12V | 30.41 | 18.71 | 83.73 |
LTspiceで取得した結果、VINは 12V | 47.36 | 5.04 | 62.29 |
図8と表1をご覧ください。これらは、LTspiceによるシミュレーション結果とネットワーク・アナライザで取得した実測結果を比較したものです。これらを見ると、両者には強い相関があることがわかります。言い換えれば、LTspiceはLEDドライバ回路の設計に役立つツールであるということです。シミュレーションを実行すれば大まかな基準値が得られるので、コンポーネントの選択肢を絞り込むことが可能になります。なお、シミュレーション結果を見ると、低い周波数領域では実測結果により近い値が得られています。一方、高い周波数領域では両者の差が大きくなっています。このことから、シミュレーションについては、高い周波数領域における極、ゼロ、寄生インダクタンス、容量、等価直列抵抗のモデルに課題があることがわかります。
まとめ
LTspiceを使用すれば、LEDドライバ回路の制御ループにおけるゲインと位相の値を算出し、ボーデ線図を取得することができます。そのシミュレーションの精度は、使用するSPICEモデルの精度に依存します。実際の振る舞いを踏まえて各コンポーネントのモデリングを慎重に実施すれば精度は向上します。その一方で、シミュレーション時間は長くなってしまいます。LEDドライバ回路の設計という目標に向けては、おそらくコンポーネントのモデリングに完璧さを求める必要はないでしょう。迅速に部品の選択肢を絞り込み、一般的な回路の動作を確認できればそれで十分でしょう。シミュレーションをうまく活用すれば、ハードウェアの実装に移行する前に設計に関する指針を得ることができます。その結果、設計時間を短縮することが可能になります。コンポーネントを大まかに選定することができれば、実際にボードを製作し、ネットワーク・アナライザを使って評価を実施することができます。シミュレーション結果と実測結果の相関を確認すれば、開発中のハードウェアを検証する手段としてシミュレーションを利用することも可能になります。
著者について
この記事に関して
製品カテゴリ
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}