RLC 回路の伝達関数、閉ループ伝達関数、ナイキスト判別
今回は、大学や高専の学生さんのために初歩の回路解析方法をご紹介します。
インピーダンスによる電圧分割、並列のインピーダンス、テブナンの定理の利用、重ねの理の具体例、入出力伝達関数、 閉ループ伝達関数というのは何なのか、ナイキスト安定判別、、、、といった話題を取り上げてみようと思いますが、多すぎるかな? でも低周波ならばこれだけの武器で大抵のことはできてしまいます。
高周波になりますと回路の長さや太さが問題になりますが、ここではそれに踏み込みません。
キルヒホフは使いません。 シミュレータを開発される方には行列式に持ち込むためには必須でしょうが、 通常程度の回路の見通しを立てるには式の数が多くなりすぎると思いますので使わないことにします。
すべて交流の解析です。 直流は周波数が 0 になった交流と思ってください。 リアクタンス項が無くなるだけです。
お約束ですが、以下では ω は 2πf を表します(単位はラジアン/秒)。 Z、 R、 X はそれぞれインピーダンス、レジスタンス、リアクタンスを表します。 Z1 は インピーダンスを表すと同時に、Excel の式では Z1 セルの中にある R1+jX1 の複素数を表します。 // は2つのインピーダンスを並列接続したときの合成インピーダンスを計算する演算子です。
[インピーダンスの並列の計算]
左の図で、
Z1 が R1+jX1 のインピーダンスで、Z2 が R2+jX2 のインピーダンスを持った素子2つを並列に接続するとします。リアクタンス (X) の部分は、コイルならば ωL で、キャパシタならば -1/(ωC) です。
このとき合成されるインピーダンス Z3 はどうなるでしょうか。
計算方法としては、一度アドミタンスに置き直して、足し算をして、インピーダンスに戻す、という手ありますが、 過程が長くなって間違いやすくなります。
私がやっている方法は、単純な並列計算式をそのまま適用することです。 すなわち:
Z3 = Z1 // Z2
= 1 / ( 1/Z1 + 1/Z2)
= (Z1 * Z2) / (Z1 + Z2) ....(1)
の一番下の式です。 Excel では IMDIV( IMPRODUCT(Z1,Z2), IMSUM(Z1,Z2) ) とやります。 ImPara というマクロを作っておくと便利です(注1)。
手計算で行うときは、 (1) 式は分母に Z1、Z2 の虚数項が入ってきます。 ですから、そのままでは R3 と X3 に分離できません。 そういうときは、分母の共役複素数を分母と分子にかけてやります。 そうすると分母が実数になりますから、R3 と X3 に分離できるようになります。 (分母から虚数を追い出すことを 「分母を有理化する」 といいます)
[電圧分割]
左の図は電圧 E1 を
2つのインピーダンス Z1 と Z2 で分割する構図になっています。
Z は ω の関数ですから、E9 は E1 と ω の関数になります。で、 E9 = E1 * Z2/(Z1+Z2) ...(2) です。
Z1 も Z2 も複素数ですので、E9 も複素数になってしまいますが、振幅がほしいときは
√((実数部分の2乗)+(虚数部分の2乗))
という計算をしてやります。 Excel では IMABS という関数で一発で計算できます。
また、入力信号を基準としたときの E9 の移相(位相の進みや遅れ)を計算するには、 虚数項の実数項に対するアークタンジェントを取ってやればいいことになります。 エクセルの場合は複素数関数に IMARGUMENT というのがありますので便利に使えます.
(複素数の絶対値を求める Excel 関数 IMABS を使うには、あらかじめ「ツール」の「アドイン」 の「分析ツール」を組み込んでおく必要があります。)
これは2段のラダー回路です。
E9/E1 の伝達関数はどうなるでしょうか。こういうときは右側から計算して行きます。 理由はすぐに分かります。
E9 は E2 を Z3 と Z4 で電圧分割したものですから、上の式を適用します。
E9 = E2 * Z4/(Z3+Z4) ...(3)
E2 は E1 を電圧分割したものですが、下側の枝が Z2 と Z3+Z4 を並列接続したものですから少し込み入ってきます。 (ここで Z3+Z4 が必要になるのですが、上でもう計算していますから結果の再利用ができます。)
E2 = E1 * {Z2 // (Z3+Z4)} / {Z1 + Z2 // (Z3+Z4) } ...(4)
ですね。 Z2//(Z3+Z4) が下側のエレメントのインピーダンスです。 この E2 を (3) に代入して E9 を求めます。
3段以上になっても同様に計算しますが、右からやると Z1+Z2//(Z3+Z4) の様な複素計算値が順に再利用できていきます。
多段の LC フィルタもこうすれば Excel で計算できます。
[入出力伝達関数]
ここまででもうすでにお分かりと思いますが、E9/E1 が入力によって現れる出力の電圧比になります。 もちろん E1 の位相を0とした複素関数です。 この E9/E1 をそのネットワークの 「入出力伝達関数」 と呼びます。
[テブナンの定理の実際]
テブナンの定理 (Thevnin theorem) というのは、
何か分からない(リニアな回路でできている)ブラックボックスから2つの端子が出ていて、その2端子を解放して電圧を測ると
e ボルトで、かつその2端子から中をのぞき込んだときに見えるインピーダンスが
z であることが分かったら、その2端子をつないだときに流れる電流は e/z だという定理です。キルヒホフのネットワークループを作ると行列がめんどくさくなるようなときにうまくさばけます。

右の図で、トランジスタのベース電流を求めたい、とします。 あらかじめそのトランジスタの目的動作点での hie (交流入力抵抗)と、VBE-IB カーブ上で動作点の接線が電圧軸と交わる点 VBE0 を求めておきます。
ベースの入力で線を切断し、右と左の電圧と抵抗を計算します。
左側は電圧が R1 と R2 で電源電圧を分圧したもの、抵抗は R1 と R2 ;を並列にしたものです。
右側は電圧が VBE0 で 抵抗は hie です。
テブナンの定理を適用しますと、電圧 (e) が 左の電圧から右の電圧を引いた:
e = Vcc * R2/(R1+R2) - VBE0
で、インピーダンス(直流だから実数部分のみ)は:
z = R1//R2 + hie
になります。 従ってベース電流 IB は
IB = e/z = {Vcc * R2/(R1+R2) - VBE0 } / {R1//R2 + hie} ...(5)
で計算できます。
よく似たケースで、
左のようなブリッジの2点間の電流は、(いきなり書くと)i = {E1 * Z2/(Z1+Z2) - E1 * Z4/(Z3+Z4)} / (Z1//Z2 + Z3//Z4) ...(6)
で一挙に計算できてしまいます。
(この過程で、電圧源のインピーダンスは 0 であるという暗黙の了解が入っています。)
キルヒホフだとこう簡単にはいきません。
[重ね合わせの原理(重畳の理)の実際]
重ね合わせの原理(重畳(ちょうじょう)の理) (Principle of Superposition) というのは、1つ以上の電圧源から、 複数のルートを通って出力に至る回路があるとき、ひとつひとつのルートによってもたらされる出力電圧を別々に計算して、 最後に足し算をすればそれが総合した出力電圧だ、というものです。 このとき、計算中のルート以外のルートに与えられる電圧源は0ボルトとして計算していきます。

上の図の左端は Twin Tee と呼ばれる特殊な周波数特性を得るときに使う回路です。 入力から直ちに Z1 と Z4 に分かれた後、最後に合成されますので重ねの理の適用の模範例になります。
まず、Z4 の入力を 0V とし、Ein は Z1 だけに与えられたとして Eout を求めます (Eout1)。 それから Z1 の入力を グラウンドして、Z4 に Ein を与えて Eout を計算します(Eout2)。 最後にその2つを合算します。
Eout1 と Eout2 の計算は、2段階の電圧分割の式になっています。 上のラダー (4) で練習しましたね。
Eout1 = Ein * {Z2//(Z3+Z6+Z4//Z5)}/{Z1+Z2//(Z3+Z6+Z4//Z5)}
* {Z6+Z4//Z5}/{Z3+(Z6+Z4//Z5)}
Euot2 = Ein * {Z5//(Z6+Z3+Z1//Z2)}/{Z4+Z5//(Z6+Z3+Z1//Z2)}
* {Z3+Z1//Z2}/{Z6+(Z3+Z1//Z2)}
Eout = Eout1 + Eout2 ...(7)
簡単でしょう?
なお、この原理は「重ねの理」とか「重畳定理」とか Superposition Theorem とか呼ばれることもあります。
[閉ループ伝達関数]
左の様に、
フィードバックループを持った回路を一般化して考えます。 H は + 入力と - 入力の差を H 倍して Eout に送り出します。 Eout は G 倍して - 入力に戻ります。 これをそのまま式にしますと:
Eout = H * (Ein - Eout * G )
となります。 これを変形して入出力伝達関数 (Eout/Ein) にすると:
Eout/Ein = H / (1 + H * G) ...(8)
になりますが、これを 「閉ループ入出力伝達関数」 (Closed-loop Transfer Function) と呼びます。 それに対して、H の部分だけのこというときは「開ループ入出力伝達関数」とよびます。
実際の回路では入力につながる信号源インピーダンスによって G が変わる場合がありますから、 そのときは信号源インピーダンスを条件に入れる必要があります。 G の帰還をエミッタに入れ、Ein はベースにつないであるときなどです。

具体例を見てみましょう。
左の図の低域周波数を解析します。 オペアンプは一般的には高域でゲインが低下して行きますが、 ここでは低域の解析なので説明の単純化のためにそれを無視して、40dB のフラットなゲインがあるとします。
閉ループ伝達関数を求めますと:
Eout/Ein = 100/[1+100*{R2-j*1/(ω*C1)}/{R1+R2-j*1/(ω*C1)}] ...(9)
になります。 この絶対値と位相は Excel で簡単に計算できます。
[ナイキスト(Nyquist)の安定判別]
上の式 (8) の分母に現れる H*G の複素数を計算し、その実数部と虚数部を ω を変えながら複素平面(ガウス平面)にプロットしていったものを 「ナイキストの GH プレーンプロット」 と呼ぶことにします。 この値が -1 になると (8) 式の分母は 0 になって Eout は発散します。
G*H というのは、結局ループを一周する伝達関数ですね。
(9) 式の GH にあたる部分に R1= 10 kΩ、R2= 1 kΩ、C1= 1 uF という実際の値を入れてみると次のグラフになります:

この絵ではプロットカーブは常に原点より右にあります。 ですからどんな周波数でも -1 に近づく心配はありません。
また、ωが大きい値から下がっていくと、ナイキストのプロットは常に -1 から遠ざかっていく (単調増加)形になっています。 ということは (8) は単調減少ですから周波数特性にピークは見られません。
原点を中心に半径1の円を描いて、それがカーブと交わる点が180度より大きいと系は振動(発振)します。
また、特定の周波数で上下の周波数より -1 に近いとその周波数で特性にピークが出ます。
[余談1]
一般的にはオペアンプのゲインは 80 dB とか 100 dB ありますが、もし上のナイキストチャートを描こうとすると、 右の端が1万とか10万の桁になります。 そして、私たちが問題にしているのは -1 という小さい値の点です。
そうすると、グラフ自体が非常に見づらくなりますね。
大きい差異があるグラフを描くには対数を取る方法があります。
しかし、2つの問題があります。
1. 原点が表現できません。 0 ですから対数値がないのです。
2. Excel に、複素平面を対数表現して散布図を描かせる機能がありません。
前者については真ん中に穴を開けて平面ドーナツの形にすれば何とかなりますかね。 後者については自分で描画ソフトを作らなければなりません。
[余談2]
ナイキスト線図 (Nyquist chart) を紹介しましたが、閉ループ伝達関数 (8) の複素数の絶対値と位相を各ωで計算して、 横軸にωを取って2本のグラフを描くことができます。
この絶対値と位相の2つ一組の線を 「ボード線図」 (Bode chart)といいます。
これを見ると、ゲイン0dBになる周波数で位相遅れが π (180度)以上であると発振することが分かります。
ボード線図では絶対値の方を対数か dB で表すとナイキストの時に表現が難しかった大きな値も見ることができるようになります。 また Nyquist では周波数が分かりにくかったものがよく分かります。
ボード線図とナイキスト線図は基本思想は同じものです。 2本の線を使うか、1本の線ですませるかの違い位しかありません。
[注1]
Excel のマクロで、ImPara というユーザ関数を作りましたのでご紹介します。 目的はインピーダンスの並列計算です。 IMDIV(IMPRODUCT(A1,B1),IMSUM(A1,B1)) とやっていたところを ImPara(A1,B1) ですまそうとするものです。
Excel 2000 の時
1.Excel にあらかじめ /ツール/アドイン/ で「分析ツール」と「分析ツールVBA」を組み込んでおく。
2.シートを開き、/ツール/マクロ/VisualBasicEditor/ を開く。
3.Project ペインの 「atpisrc1.xls」 の+マークをクリックし、「標準モジュール」の下の 「VBA Functions and Subs」 を右クリックし「コードの表示」をクリックする。
4.コードの一番上に、下の5行をコピー/ペーストしてはりつける。
5.(Visual Basic の)「ファイル」の「ATPVBAEN.XLA の上書き保存」をクリックする。
Editor を閉じる。
一度これを行いますと、次回からエクセルを起動したときに自動的に ImPara は組み込まれています。 あとは、 通常の関数として使えます。 例えばセルの中に ImPara(A1,A2) の様に書き込むだけです。
'------------------------- >8 -------------------------
Function ImPara(inumber1 As Variant, inumber2 As Variant) As Variant
ImPara = Application.Run(GetMacroRegId("IMDIV"), _
Application.Run(GetMacroRegId("IMPRODUCT"), inumber1, inumber2), _
Application.Run(GetMacroRegId("IMSUM"), inumber1, inumber2))
End Function
'------------------------- >8 -------------------------


Excel 2007 以上の時
1.Excel の Microsoft Office ボタン を押し、Excelオプションのアドインの「分析ツール」と「分析ツール-VBA」を組み込んでおく。
2.Excelオプションの「基本設定」の「開発タブをリボンに表示する」にチェックを入れる。
3.「開発」「VisualBasic」を開き、標準モジュールを追加する。
4.コードの中に下の5行をコピー/ペーストする。
5.Book を保存するが、このときファイルの種類を「マクロ有効ブック(*.xlsm)」と指定する。
Excel2000 とは異なり、これは WorkBook ごとに記述する必要があります。
'------------------------- >8 -------------------------
Function ImPara(inumber1 As Variant, inumber2 As Variant) As Variant
ImPara = WorksheetFunction.ImDiv( _
WorksheetFunction.ImProduct(inumber1, inumber2), _
WorksheetFunction.ImSum(inumber1, inumber2))
End Function
'------------------------- >8 -------------------------
