Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

フィードバック アンプの設計

この例では、Control System Toolbox™ を使用した非反転フィードバック アンプ回路の設計を示します。この設計では、電気フィードバック回路の標準的な基本構成であるオペ アンプ (op amp) を作成します。

この例では、Control System Toolbox で提供されるツールを使用して、実際の電気システムを設計し、モデル化し、解析する方法を示します。

オペ アンプの説明

電気フィードバック回路の標準的な基本構成としては、一般的に 1e5 ~ 1e7 の範囲においてきわめて高い dc ゲインをもつように設計された差動電圧アンプである、オペ アンプ (op amp) があります。

オペ アンプの電気記号は次のとおりです。

この例では、2 つの極 (周波数 w1 および w2) と高 dc ゲイン (a0) をもつ非補償型オペ アンプを使用することを前提としています。このオペ アンプが (飽和モードではなく) 線形モードで作動していると仮定すると、オペ アンプの開ループ伝達関数は、線形時不変 (LTI) システムとして表現できます (上記を参照)。

物理的なオペ アンプには高次極が存在しますが、この例では、振幅が 1 を十分に下回っている周波数範囲にこれらの極が存在していることが前提となっています。

このオペ アンプの開ループ伝達関数は以下のとおりです。

a(s)=a0(1+s/ω1)(1+s/ω2)

この例では、次の伝達関数のパラメーターを想定します。

a0=1e5

ω1=1e4

ω2=1e6

a0 = 1e5;
w1 = 1e4;
w2 = 1e6;

Control System Toolbox LTI モデルを使用して、このシステムの伝達関数モデルを作成します。

まず、tf コマンドを使用して、ラプラス変数 s を定義します。次に、s を使用して、開ループ伝達関数 a を作成します。

s = tf('s');          
a = a0/(1+s/w1)/(1+s/w2)
a =
 
           1e15
  ----------------------
  s^2 + 1.01e06 s + 1e10
 
Continuous-time transfer function.

このシステムの周波数応答を表示します。

h = bodeplot(a,'r');

setoptions(h, ...
    'FreqUnits','rad/s', ...
    'MagUnits','dB', ...
    'PhaseUnits','deg',...
    'YLimMode','Manual', ...
    'YLim',{[0,110],[-180,0]});

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents a. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents a.

stepplot コマンドと dcgain コマンドを使用して、a の正規化されたステップ応答を表示します。

a_norm = a / dcgain(a);
stepplot(a_norm,'r')

title('Normalized Open-Loop Step Response')
ylabel('Normalized Amplitude')

Figure contains an axes object. The axes object contains an object of type line. This object represents a\_norm.

プロットを右クリックし、[特性]、[整定時間] を選択して、整定時間を表示します。整定時間マーカーの上にマウスを置いたままにすると、整定時間の正確な値が表示されます。

フィードバック アンプ

ここでは、抵抗性フィードバック ネットワークを追加して、システムを非反転アンプとして接続します。

このフィードバック ネットワーク b は、入力 Vo と出力 Vn をもつ分圧器です。比率 Vn/Vo を求めると、b の伝達関数が得られます。

     b  =  Vn / Vo  =  R1 / (R1 + R2) 

このシステムのブロック線図表現は次のようになります。

比率 Vo/Vp を求めると、閉ループ ゲイン A が得られます。

     A  =  Vo / Vp  =  a / (1 + ab)

ab の積が十分に大きい (>>1) 場合、A は次のように近似できます。

     A  =  1 / b

dc ゲイン (Vo/Vp) 10 のアンプを設計する必要があり、R1 が 10 kΩで固定されていると仮定します。R2 を求めます。

A0 = 10;
b = 1 / A0;    % approximation for ab>>1
R1 = 10000;
R2 = R1 * (1/b - 1)
R2 = 90000

feedback コマンドを使用して、閉ループ システムを作成します。

A = feedback(a,b);

bodemag コマンドを使用して、aA の周波数応答を一緒にプロットします。

bodemag(a,'r',A,'b');

legend('Open-Loop Gain (a)','Closed-Loop Gain (A)')
ylim([0,110]);

% Annotations
opampdemo_annotate(1)

Figure contains an axes object. The axes object with ylabel Magnitude (dB) contains 8 objects of type line, patch, text. These objects represent Open-Loop Gain (a), Closed-Loop Gain (A).

負のフィードバックを使用して低周波数 (LF) ゲインを低減したことにより、それに対応するシステム帯域幅の増加が生じています (ゲインが最大値より 3 dB 低下する周波数として定義)。

このゲインと帯域幅のトレードオフは、フィードバック アンプ回路の設計における強力なツールです。

ゲインはフィードバック ネットワークによって支配されるようになったため、オペ アンプの自然な (開ループ) ゲインの変動に対するこのゲインの感度がどの程度であるかを考慮すると効果的です。

ただし、システム感度を導出する前に、信号がループ内を移動する過程で得るゲインの合計値、ループ ゲイン L を定義しておくと便利です。

L = a * b;

この値は、システム感度と安定余裕を評価するために使用します。

システム感度 S は、a の変動に対する A の感度を表します。

S=δA/Aδa/a=11+a(s)b(s)=11+L(s)

SL の間の逆相関関係は、"ゲインの感度抑制" という、負のフィードバックがもたらすもう 1 つのメリットを表しています。

S = 1 / (1 + L);

S は、フィードバック方程式と形式が同じであるため、より堅牢な feedback コマンドを使用して作成できます。

S = feedback(1,L);

SA の振幅は、bodemag コマンドを使用して同時にプロットできます。

bodemag(A,'b',S,'g')
legend('Closed-Loop Gain(A)','System Sensitivity(S)', ...
    'Location','SouthEast')

Figure contains an axes object. The axes object with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Closed-Loop Gain(A), System Sensitivity(S).

低周波数感度 (約 -80 dB) が非常に小さいことは、閉ループ ゲインが開ループ ゲインの変動の影響を最小限にしか受けない設計であることを示しています。このような a の変動は、製造のばらつきや温度変化などを原因としてよく起こります。

stepplot コマンドを使用すると、A のステップ応答をチェックできます。

stepplot(A)

% Annotation
opampdemo_annotate(2)

Figure contains an axes object. The axes object contains 2 objects of type line, text. This object represents A.

フィードバックの使用によって整定時間が大きく (約 98%) 短縮されました。ただし、ステップ応答には、安定余裕が少ないことを意味する大量のリンギングが示されています。

安定余裕を解析するには、margin コマンドを使用してループ ゲイン L をプロットします。

margin(L)

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents L. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents L.

結果として生成されるプロットに、位相余裕が 6 度未満であることが示されます。このアンプを補償して、位相余裕を許容可能なレベル (通常は 45 度以上) まで引き上げることによって、過剰なオーバーシュートやリンギングを低減する必要があります。

フィードバック リード補償器

"フィードバック リード補償器" は、この種類の回路で一般的に使用される補償方法です。この手法では、コンデンサ C をフィードバック抵抗器 R2 と並列させて追加することによって、b(s) が変更されます。

コンデンサの値を選択する際は、交差周波数の近傍の b に位相進みを加えることで、アンプの位相余裕を大きくすることを考慮できます。

新しいフィードバック伝達関数は次のようになります。

L の 0 dB 交差周波数にゼロの b を挿入することによって C の値を近似できます。

[Gm,Pm,Wcg,Wcp] = margin(L);
C = 1/(R2*Wcp)
C = 1.1139e-12

アンプの応答に対する C の影響を調べるには、初期推定に基づいて、いくつかの C の値に関する b の LTI モデル配列を作成します。

K = R1/(R1+R2);
C = [1:.2:3]*1e-12;
for n = 1:length(C)
    b_array(:,:,n) = tf([K*R2*C(n) K],[K*R2*C(n) 1]);
end

AL の LTI 配列を作成できます。

A_array = feedback(a,b_array);
L_array = a*b_array;

stepplot コマンドを使用して、LTI 配列 A_array 内のすべてのモデルのステップ応答を A のステップ応答と共にプロットできます。

stepplot(A,'b:',A_array,'b',[0:.005:1]*1.5e-6)
title('Closed-Loop Step Response (Compensated)')
        
% Plot Annotations
opampdemo_annotate(3)

Figure contains an axes object. The axes object contains 18 objects of type line, patch, text. These objects represent A, A\_array.

ループ ゲイン配列 L_array の位相余裕は、 margin コマンドを使用して見つけることができます。

[Gm,Pm,Wcg,Wcp] = margin(L_array);

位相余裕を C の関数としてプロットできるようになりました。

plot(C*1e12,Pm,'g')
ax = gca;
xlim([0.8 3.6])
ylim([45 60])
ax.Box = 'on';
xlabel('Compensation Capacitor, C (pF)')
ylabel('Phase Margin (deg)')

% Plot Annotations
opampdemo_annotate(4)

Figure contains an axes object. The axes object with xlabel Compensation Capacitor, C (pF), ylabel Phase Margin (deg) contains 2 objects of type line, text.

C = 2 pF (2e-12) の場合は、58 度の最大位相余裕が取得されます。

C = 2 pF に対応するモデルは、LTI 配列 b_array 内の 6 番目のモデルです。このモデルの閉ループ システムのステップ応答をプロットするには、LTI 配列 A_array のインデックス 6 を選択します。

A_comp = A_array(:,:,6);
stepplot(A,'b:',A_comp,'b')
legend('Uncompensated (0 pF)','Compensated (2 pF)')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Uncompensated (0 pF), Compensated (2 pF).

整定時間がさらに (85%) 短縮されました。

bode コマンドを使用すると、3 つのすべてのモデル (開ループ、閉ループ、補償済み閉ループ) の周波数応答を重ね合わせることができます。

bodeplot(a,'r',A,'b:',A_comp,'b')
legend('a(s)','A(s)','A\_comp(s)')

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 3 objects of type line. These objects represent a(s), A(s), A\\_comp(s). Axes object 2 with ylabel Phase (deg) contains 3 objects of type line. These objects represent a(s), A(s), A\\_comp(s).

補償コンデンサを追加することによって、閉ループ ゲインにおけるピーキングが解消されるとともに、位相余裕が大きく拡大されました。

まとめ

非反転フィードバック アンプ回路の設計におけるコンポーネント値の選択を簡潔にまとめると、次のようになります。

  • 最終コンポーネント値: R1 = 10 kΩ、R2 = 90 kΩ、C = 2 pF

  • 抵抗性フィードバック ネットワーク (R1,R2) は、10 (20 dB) の広帯域アンプ ゲインを生成するために選択されました。

  • フィードバック リード補償器は、交差周波数の近傍でループ ゲインを調整するために使用されました。補償コンデンサー C の値は、約 58 度の最大位相余裕を提供するように最適化されました。