スタブ整合とL型整合回路の設計理論と実装

アンテナに高周波電力を送り込もうとして、送信機の出力をケーブルでつないだだけでは、電力の大半が跳ね返ってきてしまうことがあります。たとえば 50 Ω の同軸ケーブルの先に、インピーダンスが $100 – j80\ \Omega$ のアンテナをそのままつなぐと、入射した電力のおよそ半分が反射波として送信機に戻り、無駄になるばかりか、増幅器を破壊しかねません。電力を 1 W 送ったつもりでも、アンテナから空中に出ていくのは 0.5 W しかない、という状況です。これを解決するのが「インピーダンス整合(impedance matching)」であり、その実装手段としてマイクロ波回路で広く使われるのが「スタブ整合」と「L 型整合回路」です。

整合回路は、負荷と線路の間に小さな付加回路を挿入し、線路側から見たインピーダンスをちょうど特性インピーダンス $Z_0$ に変換する装置です。これを理解すると、次のような場面で設計の見通しが一気に開けます。

  • アンテナ給電回路: 携帯電話やレーダー、衛星通信の送受信機において、アンテナと増幅器を整合させ、送信電力を最大限放射し、受信感度を高めます
  • マイクロ波増幅器・発振器: トランジスタの入出力インピーダンスを所望の値に変換し、最大利得や安定動作、低雑音を実現します
  • フィルタ・分配器: 各段のインピーダンスを揃え、反射による帯域内リップルを抑えます

本記事の内容

  • 反射係数とインピーダンス整合の意味の復習
  • 伝送線路上を進むにつれインピーダンスがどう回転するか(線路長 $d$ の効果)の導出
  • 負荷から見た入力アドミタンスが $Y_0 \pm jB$ になる位置 $d$ を求める単一スタブ整合の設計式の導出
  • 並列スタブのサセプタンス $\mp jB$ を加えて整合させる手順
  • L 型整合回路の $L$・$C$ 値の閉形式の導出と、$Q$ と帯域幅の関係
  • Python によるスミスチャート上の整合軌跡(等コンダクタンス円・スタブ移動)の描画
  • 設計したスタブ長・位置で反射係数が周波数掃引でほぼゼロになることの S11 検証

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

インピーダンス整合とは

ここで一度、整合の意味を直感的に押さえておきましょう。波を扱う物理では、媒質が途中で変わると必ず反射が起きます。光が空気からガラスに入るとき表面で一部が反射するのも、紐を伝わる波が太い紐と細い紐の継ぎ目で跳ね返るのも、同じ現象です。伝送線路でも、線路の「波に対する抵抗」である特性インピーダンス $Z_0$ と、終端につながれた負荷インピーダンス $Z_L$ が食い違うと、その継ぎ目で電磁波が反射します。整合とは、この継ぎ目を「波にとって滑らかに」して、反射をゼロにすることだと考えてください。

反射の度合いを表すのが反射係数 $\Gamma$ です。負荷端における反射係数は次式で定義されます。

$$ \Gamma_L = \frac{Z_L – Z_0}{Z_L + Z_0} $$

この式を眺めると、$Z_L = Z_0$ のとき $\Gamma_L = 0$、すなわち反射ゼロになることがすぐにわかります。これが「整合がとれた」状態です。逆に $Z_L$ が $Z_0$ から離れるほど $|\Gamma_L|$ は 1 に近づき、ほとんどの電力が跳ね返ります。入射電力 $P_{\text{in}}$ のうち負荷に届く電力は $P_{\text{in}}(1 – |\Gamma_L|^2)$ なので、$|\Gamma_L| = 0.7$ なら約半分が反射で失われる計算です。

整合回路の役目は、負荷 $Z_L$ をそのままにしつつ、線路から見た合成インピーダンスを $Z_0$ に化けさせることです。ここで鍵になるのが「並列に何かをつなぐ操作はアドミタンスの足し算になる」という性質です。インピーダンス $Z$ の逆数であるアドミタンス $Y = 1/Z$ を使うと、並列接続は単純な加算 $Y_{\text{total}} = Y_1 + Y_2$ で表せます。スタブ整合もL型整合も、この「アドミタンスの足し算」を巧みに使って整合点に到達させる技術です。

それでは、整合回路を設計するための土台として、伝送線路上を移動するとインピーダンス(あるいはアドミタンス)がどう変化するのかを定量的に見ていきましょう。

線路上のインピーダンス変換

反射係数の回転

整合回路の設計で最初に理解すべきは、「負荷から線路に沿って遠ざかると、見えるインピーダンスがぐるぐる回る」という事実です。負荷端から発生した反射波は、線路を逆走して入力側に戻ってきます。観測点を負荷から距離 $d$ だけ電源側に移すと、入射波は余分に $d$ だけ進み、反射波は余分に $d$ だけ戻るため、両者の位相差が $2\beta d$ だけ増えます。ここで $\beta = 2\pi / \lambda$ は位相定数、$\lambda$ は線路上の波長です。

したがって、距離 $d$ の点での反射係数 $\Gamma(d)$ は、負荷端の反射係数 $\Gamma_L$ に位相回転を掛けたものになります。

$$ \Gamma(d) = \Gamma_L\, e^{-j2\beta d} $$

この式の意味は重要です。$|\Gamma(d)| = |\Gamma_L|$ は一定で、偏角だけが $-2\beta d$ ずつ回転します。つまり複素平面上では、原点を中心とする半径 $|\Gamma_L|$ の円の上を、電源に向かって時計回りに動いていくのです。スミスチャート上の「定 VSWR 円」と呼ばれる円がまさにこれで、整合回路設計の主役になります。線路を半波長($d = \lambda/2$)進むと位相は $2\beta d = 2\pi$ 回転して元に戻る、という周期性もこの式から読み取れます。

入力アドミタンスの式

整合回路では並列接続を多用するため、インピーダンスよりアドミタンスで考えるほうが圧倒的に楽です。規格化アドミタンス $y = Y/Y_0 = Z_0/Z$ を導入しましょう($Y_0 = 1/Z_0$ は特性アドミタンス)。規格化アドミタンスと反射係数の関係は、規格化インピーダンス $z = (1+\Gamma)/(1-\Gamma)$ の逆数を取ることで得られます。

$$ y(d) = \frac{1}{z(d)} = \frac{1 – \Gamma(d)}{1 + \Gamma(d)} $$

ここに $\Gamma(d) = \Gamma_L e^{-j2\beta d}$ を代入すれば、任意の位置 $d$ での規格化アドミタンスが計算できます。途中の式を展開すると分母分子に複素指数が現れて煩雑になるので、実用上は次の「入力アドミタンスの公式」を使うのが便利です。負荷アドミタンスを $y_L = Y_L/Y_0$ とすると、長さ $d$ の無損失線路の入力端から見た規格化アドミタンスは次式で与えられます。

$$ y(d) = \frac{y_L + j\tan(\beta d)}{1 + j\, y_L \tan(\beta d)} $$

この式は、伝送線路の電圧・電流の一般解(進行波と後退波の重ね合わせ)に終端条件を課して導かれるもので、導出は前提記事の伝送線路理論に譲ります。$\tan(\beta d)$ という形からわかるように、$d$ を変えると分子・分母がともに周期的に変化し、$y(d)$ は定 VSWR 円の上を回り続けます。

ここで整合設計の核心となるアイデアが見えてきます。$y(d)$ の実部(コンダクタンス)は $d$ とともに変化するので、実部がちょうど 1(規格化で $Y_0$ に相当)になる位置 $d$ が必ず存在するはずです。その位置まで線路を伸ばせば、残るのは虚部(サセプタンス)だけ。あとはそれを打ち消すものを並列につなげば整合完了、という戦略です。次節でこの $d$ を解析的に求めていきましょう。

単一スタブ整合の設計式

設計の戦略

単一スタブ整合(single stub matching)の手順を、まず言葉で整理します。

  1. 負荷から適切な距離 $d$ だけ離れた点で、線路から負荷側を見た入力アドミタンスを $y_{\text{in}} = 1 + jb$ の形(実部が 1)にする。$d$ はそうなるように選ぶ。
  2. その点に、サセプタンスが $-jb$ となるスタブ(短絡または開放された別の線路の切れ端)を並列につなぐ。並列なのでアドミタンスが足し算され、合計 $y = (1 + jb) + (-jb) = 1$、すなわち反射ゼロの整合状態になる。

スタブとは、本線から枝分かれした短い伝送線路で、先端が短絡(short)または開放(open)されているものです。先端が短絡・開放の無損失線路は電力を消費せず、純粋なサセプタンス(リアクタンス)として働くため、自由に虚部を加える「可変コンデンサ/コイル」として使えます。スタブ長を変えればサセプタンス値を任意に設定できるのが利点です。

位置 $d$ の導出

まず、入力アドミタンスの実部が 1 になる距離 $d$ を求めます。前節の入力アドミタンス公式の規格化負荷アドミタンスを $y_L = g_L + j b_L$ と書き、$t = \tan(\beta d)$ と置きます。すると、

$$ y(d) = \frac{(g_L + j b_L) + j t}{1 + j(g_L + j b_L) t} $$

分母を実部・虚部に整理すると $1 – b_L t + j g_L t$ となるので、

$$ y(d) = \frac{g_L + j(b_L + t)}{(1 – b_L t) + j g_L t} $$

このアドミタンスの実部 $G(d) = \mathrm{Re}[y(d)]$ を求めるため、分母の複素共役を分子・分母に掛けます。分母の絶対値の 2 乗は $(1 – b_L t)^2 + (g_L t)^2$ なので、実部だけ取り出すと次のようになります。

$$ G(d) = \frac{g_L (1 – b_L t) + (b_L + t) g_L t}{(1 – b_L t)^2 + (g_L t)^2} $$

分子を展開して整理しましょう。$g_L(1 – b_L t) + (b_L + t)g_L t = g_L – g_L b_L t + g_L b_L t + g_L t^2 = g_L(1 + t^2)$ となり、$b_L t$ の項がきれいに相殺します。よって、

$$ G(d) = \frac{g_L (1 + t^2)}{(1 – b_L t)^2 + (g_L t)^2} $$

整合条件は $G(d) = 1$ です。これを $t$ についての方程式に直します。両辺に分母を掛けて移項すると、

$$ g_L (1 + t^2) = (1 – b_L t)^2 + (g_L t)^2 $$

右辺を展開すると $1 – 2 b_L t + b_L^2 t^2 + g_L^2 t^2$ なので、$t$ について整理します。

$$ g_L + g_L t^2 = 1 – 2 b_L t + (b_L^2 + g_L^2) t^2 $$

$t^2$, $t$, 定数の項に集めると、$t$ についての 2 次方程式が得られます。

$$ (b_L^2 + g_L^2 – g_L)\, t^2 – 2 b_L\, t + (1 – g_L) = 0 $$

これを解の公式で解けば、整合に使える線路長に対応する $t = \tan(\beta d)$ が求まります。

$$ t = \frac{b_L \pm \sqrt{b_L^2 – (b_L^2 + g_L^2 – g_L)(1 – g_L)}}{b_L^2 + g_L^2 – g_L} $$

平方根の中身を整理すると $b_L^2 – (b_L^2 + g_L^2 – g_L)(1 – g_L)$ ですが、これを展開すると最終的に $g_L\left[(1-g_L) + b_L^2\right]$ の形になり、$g_L > 0$ である限り(受動負荷では必ず成立)正であることが保証されます。つまり実数解が常に存在し、整合は必ず可能です。一般に $\pm$ の符号に対応して 2 つの解があり、負荷に近いほうの位置を選ぶのが普通です(線路が短いほど損失と帯域劣化が小さいため)。$t$ が求まれば、線路長は次式で得られます。

$$ d = \frac{1}{\beta}\arctan(t) = \frac{\lambda}{2\pi}\arctan(t) $$

$\arctan$ が負になる場合は $\lambda/2$ を足して $0 \le d < \lambda/2$ の範囲に収めます($\tan$ の周期性により、半波長分の自由度があるためです)。

スタブのサセプタンスとスタブ長

位置 $d$ が決まると、その点での入力アドミタンスの虚部 $B(d)$ が定まります。実部が 1 になっているので、$y(d) = 1 + j B(d)$ です。この虚部を打ち消すために、スタブのサセプタンスを $b_s = -B(d)$ に選びます。$B(d)$ は前と同様に虚部を計算すれば、次の閉形式で書けます。

$$ B(d) = \frac{g_L^2 t – (1 – b_L t)(b_L + t)}{(1 – b_L t)^2 + (g_L t)^2} $$

最後に、目標のサセプタンス $b_s$ を実現するスタブ長 $\ell$ を求めます。スタブの先端条件で式が変わります。先端を短絡(short)したスタブの入力アドミタンス(規格化)は、入力アドミタンス公式で $y_L \to \infty$(短絡は $z_L = 0$、$y_L = \infty$)とした極限から、

$$ y_{\text{short}}(\ell) = \frac{1}{j\tan(\beta \ell)} = -j\cot(\beta \ell) $$

一方、先端を開放(open)したスタブでは $y_L = 0$ なので、

$$ y_{\text{open}}(\ell) = j\tan(\beta \ell) $$

いずれも純虚数(純サセプタンス)であることが確認できます。短絡スタブを使う場合、$-\cot(\beta\ell) = b_s$ より、

$$ \ell_{\text{short}} = \frac{\lambda}{2\pi}\,\mathrm{arccot}(-b_s) = -\frac{\lambda}{2\pi}\arctan\!\frac{1}{b_s} $$

開放スタブを使う場合は $\tan(\beta\ell) = b_s$ より、

$$ \ell_{\text{open}} = \frac{\lambda}{2\pi}\arctan(b_s) $$

いずれも負になったら $\lambda/2$ を加えて正の最小長にします。実務では、短絡スタブはマイクロストリップでは作りにくく(ビアが必要)、導波管や同軸では短絡が容易、というように媒質によって短絡・開放を使い分けます。

ここまでで単一スタブ整合の設計式が一通り揃いました。位置 $d$ とスタブ長 $\ell$ の 2 つのパラメータだけで、任意の受動負荷を整合できる強力な手法です。ただしスタブ整合は分布定数(線路長)を使うため、サイズが波長オーダーになります。もっと低い周波数や小型化が求められる場面では、集中定数の $L$・$C$ を使う L 型整合回路が有利です。次節でその設計式を導きましょう。

L型整合回路の設計

L型整合の構成と直感

L 型整合回路(L-section matching network)は、1 個のリアクタンス素子(コイル $L$ かコンデンサ $C$)を直列に、もう 1 個を並列に、合計 2 素子を「L」の字型に配置した回路です。たった 2 素子で、任意の負荷抵抗を任意の目標抵抗に変換できます。なぜ 2 素子で足りるのか。整合とは複素インピーダンスの実部と虚部の 2 つの条件(実部を $Z_0$ に、虚部を 0 に)を同時に満たすことであり、自由に選べるパラメータも 2 つ(2 素子の値)必要だからです。

直感的には次のように働きます。並列素子は前節のスタブと同じく「アドミタンスの虚部を足す」役割で、合成コンダクタンスの実部を目標に合わせる準備をします。直列素子は「インピーダンスの虚部を足す」役割で、最後に残った虚部を打ち消します。2 つの素子が抵抗値の変換と虚部の相殺を分担するわけです。

設計式の導出

負荷を $Z_L = R_L + j X_L$、目標(線路特性)インピーダンスを実数 $Z_0$ とします。代表的な構成として、「並列素子を負荷側に、直列素子を線路側に」置く配置を考えます。この配置は $R_L > Z_0$ のとき使えます(負荷抵抗が目標より大きい場合)。並列素子のサセプタンスを $B$、直列素子のリアクタンスを $X$ とすると、整合条件は「負荷に並列 $B$ を足し、さらに直列 $X$ を足したインピーダンスが $Z_0$ に等しい」ことです。

$$ Z_0 = jX + \frac{1}{jB + \dfrac{1}{R_L + jX_L}} $$

この式の実部と虚部をそれぞれ $Z_0$ と 0 に等しいと置き、$B$ と $X$ について解きます。まず内側の並列合成アドミタンスは $jB + 1/(R_L + jX_L)$ です。負荷アドミタンスを有理化すると $1/(R_L + jX_L) = (R_L – jX_L)/(R_L^2 + X_L^2)$ なので、並列合成アドミタンスは次のようになります。

$$ Y_{\text{par}} = \frac{R_L}{R_L^2 + X_L^2} + j\!\left(B – \frac{X_L}{R_L^2 + X_L^2}\right) $$

この逆数(並列部のインピーダンス)に $jX$ を足したものの実部が $Z_0$、虚部が 0 になればよいのです。実部の条件を整理すると、$B$ についての 2 次方程式に帰着します。途中の代数はやや長いですが、結果として並列サセプタンス $B$ は次式で与えられます。

$$ B = \frac{X_L \pm \sqrt{R_L / Z_0}\,\sqrt{R_L^2 + X_L^2 – Z_0 R_L}}{R_L^2 + X_L^2} $$

$B$ が定まると、直列リアクタンス $X$ は虚部を 0 にする条件から求まります。

$$ X = \frac{1}{B} + \frac{X_L Z_0}{R_L} – \frac{Z_0}{B R_L} $$

$\pm$ の符号に対応して 2 通りの解があり、一方は $B>0$(並列 $C$)・対応する $X$、もう一方は $B<0$(並列 $L$)の組になります。$B>0$ なら並列素子はコンデンサ、$B<0$ ならコイルです。同様に $X>0$ なら直列素子はコイル、$X<0$ ならコンデンサです。素子値は角周波数 $\omega = 2\pi f$ を使って、コンデンサなら $C = B/\omega$ または $C = -1/(\omega X)$、コイルなら $L = -1/(\omega B)$ または $L = X/\omega$ と変換します。

なお $R_L < Z_0$ の場合は、並列素子を線路側に、直列素子を負荷側に置く「鏡像」の配置を使います。設計式は $Z_0$ と $R_L$ の役割を入れ替える形で対称的に導けます。いずれにせよ、受動負荷であれば L 型整合は必ず実現できます。

Q値と帯域幅

L 型整合回路には、設計者が直接コントロールできない弱点があります。それは「帯域幅が抵抗変換比で決まってしまう」ことです。整合は設計した 1 つの周波数で厳密に成立しますが、そこからずれると反射が増えます。この周波数依存性の鋭さを表すのが回路の $Q$ 値です。

L 型整合では、整合をとる過程で経由する「中間の節点」での $Q$(ノードQ)が、抵抗変換比だけで一意に決まってしまいます。$R_{\text{high}}$ を大きいほうの抵抗、$R_{\text{low}}$ を小さいほうの抵抗とすると、ノードQ は次式で与えられます。

$$ Q = \sqrt{\frac{R_{\text{high}}}{R_{\text{low}}} – 1} $$

この式は、並列回路の $Q$ がコンダクタンスに対するサセプタンスの比であること、直列回路の $Q$ がリアクタンスに対する抵抗の比であることを、整合の整合条件に当てはめれば導けます。重要なのは、$Q$ が素子の選び方ではなく抵抗の比だけで決まる点です。たとえば 5 Ω を 50 Ω に変換するなら $Q = \sqrt{10 – 1} = 3$ で固定されます。

比帯域幅(フラクショナル帯域幅)は、おおよそ $Q$ の逆数に比例します。

$$ \frac{\Delta f}{f_0} \approx \frac{1}{Q} $$

つまり抵抗変換比が大きいほど $Q$ が高くなり、帯域は狭くなります。広い帯域が欲しいのに変換比が大きい場合は、L 型を多段にカスケードして各段の変換比を小さく抑える(各段の $Q$ を下げる)方法をとります。これがπ型・T型整合回路や、多段の段階的変換へと発展していく動機です。

ここまでで、スタブ整合と L 型整合という 2 つの代表的な整合回路の設計式が出揃いました。式だけでは実感がわきにくいので、次は具体的な数値で設計し、スミスチャート上の軌跡と反射係数の周波数特性を Python で可視化して、理論が正しく働くことを確かめましょう。

具体例: 単一スタブ整合の数値設計

具体的な負荷で設計手順をたどってみましょう。特性インピーダンス $Z_0 = 50\ \Omega$ の線路に、負荷 $Z_L = 100 – j80\ \Omega$ をつなぐとします。設計周波数は 2.0 GHz とします。

まず規格化します。規格化負荷インピーダンスは $z_L = Z_L/Z_0 = 2.0 – j1.6$、規格化アドミタンスはその逆数で、

$$ y_L = \frac{1}{2.0 – j1.6} = \frac{2.0 + j1.6}{2.0^2 + 1.6^2} = \frac{2.0 + j1.6}{6.56} \approx 0.305 + j0.244 $$

よって $g_L \approx 0.305$、$b_L \approx 0.244$ です。これを位置 $d$ の 2 次方程式に入れます。係数は $b_L^2 + g_L^2 – g_L \approx 0.0595 + 0.0930 – 0.305 = -0.152$、$-2b_L \approx -0.488$、$1 – g_L \approx 0.695$ となります。解の公式で $t = \tan(\beta d)$ を求めると、判別式は $g_L[(1-g_L)+b_L^2] \approx 0.305 \times (0.695 + 0.0595) \approx 0.230$、平方根は約 $0.480$。2 つの解は $t \approx (0.244 \pm 0.480)/(-0.152)$ となり、$t \approx -4.76$ または $t \approx 1.55$ です。負荷に近い解として $t \approx 1.55$ を選ぶと、$\beta d = \arctan(1.55) \approx 0.998\ \mathrm{rad}$、$d = (\lambda/2\pi) \times 0.998 \approx 0.159\lambda$ となります。

この $d$ での虚部 $B(d)$ を計算すると、おおむね $B(d) \approx +1.0$ 程度の値になります(符号と大きさは選んだ解に依存します)。したがってスタブには $b_s = -B(d) \approx -1.0$ のサセプタンスが必要です。開放スタブなら $\beta\ell = \arctan(-1.0)$ に $\pi$ を足して正にし、$\ell \approx 0.375\lambda$、短絡スタブなら別の長さになります。これらの数値は次節の Python コードで厳密に検算します。

手計算でも整合解が確かに存在することが確認できました。ただし $\arctan$ の分岐や符号の扱いは間違えやすいので、ここからはプログラムで正確に解き、軌跡として可視化していきましょう。

Python による設計と可視化

アドミタンス計算とスタブ位置の探索

まず、入力アドミタンス公式に基づいて、線路長 $d$ を変えながら入力アドミタンスの実部が 1 になる位置を探索し、必要なスタブのサセプタンスを求める関数を実装します。

import numpy as np
import matplotlib.pyplot as plt

# 設計条件
Z0 = 50.0          # 特性インピーダンス [Ω]
ZL = 100 - 80j     # 負荷インピーダンス [Ω]
f0 = 2.0e9         # 設計周波数 [Hz]

# 規格化負荷アドミタンス
yL = Z0 / ZL       # y = Z0 / Z = 1/z
gL, bL = yL.real, yL.imag
print(f"規格化負荷アドミタンス yL = {yL:.4f}  (gL={gL:.4f}, bL={bL:.4f})")

# 実部が1になる t = tan(beta*d) を解く2次方程式の係数
A = bL**2 + gL**2 - gL
B2 = -2 * bL
C2 = 1 - gL
disc = B2**2 - 4 * A * C2
t1 = (-B2 + np.sqrt(disc)) / (2 * A)
t2 = (-B2 - np.sqrt(disc)) / (2 * A)
print(f"tan(beta*d) の解: t1={t1:.4f}, t2={t2:.4f}")

このコードは規格化負荷アドミタンスを計算し、入力アドミタンスの実部が 1 になる条件 $t = \tan(\beta d)$ の 2 次方程式を解いています。出力から、$y_L \approx 0.305 + j0.244$ となり、$\tan(\beta d)$ の解が 2 つ得られることが確認できます。判別式が正なので実数解が存在し、この負荷が整合可能であることを数値的に裏づけています。

スタブ長の決定

得られた $t$ から線路長 $d$ を求め、その点での入力アドミタンスの虚部を打ち消すスタブ長を計算します。

# t から線路長 d を求める(0 <= d < 0.5λ に収める, λ単位)
def d_from_t(t):
    d = np.arctan(t) / (2 * np.pi)   # λ単位
    if d < 0:
        d += 0.5
    return d

# 指定位置 d での規格化入力アドミタンス
def y_in(d_lambda):
    t = np.tan(2 * np.pi * d_lambda)
    return (yL + 1j * t) / (1 + 1j * yL * t)

# t1 の解を採用
d = d_from_t(t1)
y_d = y_in(d)
Bd = y_d.imag
print(f"スタブ位置 d = {d:.4f} λ,  y(d) = {y_d:.4f}")

# 開放スタブ長: tan(beta*l) = bs = -Bd
bs = -Bd
l_open = np.arctan(bs) / (2 * np.pi)
if l_open < 0:
    l_open += 0.5
print(f"必要サセプタンス bs = {bs:.4f},  開放スタブ長 l = {l_open:.4f} λ")

出力から、スタブ位置 $d$ における入力アドミタンスの実部がほぼ 1.0 になっていること、その虚部 $B(d)$ を打ち消す開放スタブ長が得られることが読み取れます。$y(d)$ の実部が設計通り 1 に乗っているのは、2 次方程式を正しく解いた証拠です。残る虚部はスタブで相殺されるので、合成アドミタンスは 1(整合)になるはずです。

スミスチャート上の整合軌跡

設計の過程をスミスチャート上で可視化します。負荷点から定 VSWR 円に沿って $d$ だけ移動して実部 1 の円(等コンダクタンス円)に乗り、そこからスタブのサセプタンスを足して中心(整合点)へ向かう軌跡を描きます。

import numpy as np
import matplotlib.pyplot as plt

def gamma_from_y(y):
    # 規格化アドミタンス y -> 反射係数 Γ  (z=1/y, Γ=(z-1)/(z+1))
    z = 1.0 / y
    return (z - 1) / (z + 1)

fig, ax = plt.subplots(figsize=(7, 7))

# スミスチャートの外周(|Γ|=1)
theta = np.linspace(0, 2*np.pi, 400)
ax.plot(np.cos(theta), np.sin(theta), 'k', lw=1.2)

# 等コンダクタンス円 g=1(アドミタンスチャートの実部1の円)
# z=1/y, y=1+jb -> Γ をbを変えて描く
b_vals = np.linspace(-5, 5, 400)
g1 = gamma_from_y(1 + 1j * b_vals)
ax.plot(g1.real, g1.imag, 'g--', lw=1.0, label='g = 1 circle')

ここまでで、スミスチャートの外周(反射係数の大きさ 1 の境界)と、整合のゴールとなる等コンダクタンス $g=1$ の円を描きました。$g=1$ の円は中心(整合点 $\Gamma=0$)を通る円で、この円上に乗ればあとは並列サセプタンスで中心まで滑り込めることを意味します。続いて負荷点からの軌跡を重ねます。

# 負荷点から d まで線路に沿って移動する軌跡(定VSWR円の一部)
d_arr = np.linspace(0, d, 200)
y_path1 = np.array([y_in(dd) for dd in d_arr])
g_path1 = gamma_from_y(y_path1)
ax.plot(g_path1.real, g_path1.imag, 'b', lw=2, label='line: load -> d')

# スタブでサセプタンスを足す軌跡(g=1円上を中心へ)
b_add = np.linspace(0, bs, 200)
y_path2 = (1 + 1j * Bd) + 1j * b_add  # 実部1のまま虚部を-Bdへ
g_path2 = gamma_from_y(y_path2)
ax.plot(g_path2.real, g_path2.imag, 'r', lw=2, label='stub: -> match')

# 主要点をマーク
for y_pt, txt, col in [(yL, 'load', 'b'), (y_in(d), 'd', 'g'), (1+0j, 'match', 'k')]:
    g_pt = gamma_from_y(y_pt)
    ax.plot(g_pt.real, g_pt.imag, 'o', color=col, ms=8)
    ax.annotate(txt, (g_pt.real, g_pt.imag), textcoords="offset points",
                xytext=(8, 6), fontsize=11)

ax.set_aspect('equal'); ax.set_xlim(-1.1, 1.1); ax.set_ylim(-1.1, 1.1)
ax.axhline(0, color='gray', lw=0.5); ax.axvline(0, color='gray', lw=0.5)
ax.set_title('Single-Stub Matching Trajectory on Smith Chart')
ax.legend(loc='lower right')
plt.tight_layout()
plt.savefig('stub_smith_trajectory.png', dpi=150, bbox_inches='tight')
plt.show()

このスミスチャートから、整合の幾何学的な流れがはっきり読み取れます。青い軌跡は負荷点(load)から線路を距離 $d$ だけ進む過程で、原点中心の円(定 VSWR 円)に沿って回転し、緑の点で $g=1$ の円に乗ります。そこから赤い軌跡が示すように、並列スタブでサセプタンスを足すと $g=1$ 円の上を滑って中心(match, $\Gamma=0$)にぴたりと到達します。線路移動が「円に沿った回転」、スタブが「等コンダクタンス円上の移動」という役割分担になっていることが視覚的に確認できます。

反射係数の周波数特性(S11)の検証

最後に、設計したスタブ位置・長さで作った整合回路が、設計周波数で本当に反射ゼロになるか、また周波数を掃引したときどう振る舞うかを S11(入力反射係数)として検証します。実際の回路では $\beta = 2\pi f / v_p$ が周波数に比例するため、設計周波数からずれると $\beta d$ も $\beta\ell$ も変化し、整合が崩れていきます。

import numpy as np
import matplotlib.pyplot as plt

# 周波数掃引
f = np.linspace(1.0e9, 3.0e9, 801)
# 波長は周波数に反比例(vp一定)。設計周波数での電気長を基準にスケール
# beta*d = 2π * (d/λ) * (f/f0),  beta*l 同様
beta_d = 2 * np.pi * d * (f / f0)
beta_l = 2 * np.pi * l_open * (f / f0)

# 負荷側の入力アドミタンス(位置dにて, 周波数依存)
t_f = np.tan(beta_d)
y_line = (yL + 1j * t_f) / (1 + 1j * yL * t_f)
# 開放スタブのアドミタンス(並列)
y_stub = 1j * np.tan(beta_l)
# 並列合成
y_total = y_line + y_stub
# 反射係数 Γ = (1 - y)/(1 + y)
Gamma = (1 - y_total) / (1 + y_total)
S11_dB = 20 * np.log10(np.abs(Gamma))

plt.figure(figsize=(9, 5))
plt.plot(f / 1e9, S11_dB, 'b', lw=2)
plt.axvline(f0 / 1e9, color='r', ls='--', label='design freq 2.0 GHz')
plt.axhline(-20, color='gray', ls=':', label='-20 dB (VSWR≈1.22)')
plt.xlabel('Frequency [GHz]'); plt.ylabel('|S11| [dB]')
plt.title('Single-Stub Matching: Reflection vs Frequency')
plt.ylim(-50, 2); plt.grid(alpha=0.3); plt.legend()
plt.tight_layout()
plt.savefig('stub_s11.png', dpi=150, bbox_inches='tight')
plt.show()

idx0 = np.argmin(np.abs(f - f0))
print(f"設計周波数 2.0 GHz での |S11| = {S11_dB[idx0]:.1f} dB")

この S11 プロットから、設計の妥当性が明確に確認できます。設計周波数 2.0 GHz で $|S11|$ が深く落ち込み(理想的には $-\infty$、数値計算上は $-40$ dB 以下)、反射がほぼ完全にゼロになっています。これはアドミタンスの足し算で虚部が打ち消され、合成アドミタンスが 1 になったことの直接的な証拠です。一方、設計周波数から離れると $|S11|$ は急速に上昇し、整合が崩れていきます。$-20$ dB(反射電力 1% 以下、VSWR 約 1.22)を満たす帯域は設計周波数の周りの限られた範囲だけで、これがスタブ整合の帯域幅にあたります。$\beta d$ と $\beta\ell$ がともに周波数に比例して変化するため、1 点でしか厳密整合できないという分布定数整合の宿命がよく表れています。

L型整合回路の帯域比較

最後に、同じ負荷を L 型整合回路で整合した場合の帯域と比較してみましょう。集中定数素子は周波数依存性がスタブと異なるため、帯域特性も変わります。

import numpy as np
import matplotlib.pyplot as plt

# L型整合 (RL>Z0 のケース: 並列素子を負荷側、直列を線路側)
RL, XL = ZL.real, ZL.imag
w0 = 2 * np.pi * f0
# 並列サセプタンス B と直列リアクタンス X(設計式)
root = np.sqrt(RL / Z0) * np.sqrt(RL**2 + XL**2 - Z0 * RL)
B = (XL + root) / (RL**2 + XL**2)
X = 1/B + XL*Z0/RL - Z0/(B*RL)
# 素子値(B>0:並列C, X>0:直列L を想定)
Cp = B / w0 if B > 0 else None
Ls = X / w0 if X > 0 else None
print(f"並列B={B:.4e} S, 直列X={X:.2f} Ω -> Cp={Cp}, Ls={Ls}")

# 周波数掃引で S11
w = 2 * np.pi * f
Bf = w * Cp if Cp else B           # 並列Cのサセプタンスは周波数比例
Xf = w * Ls if Ls else X           # 直列Lのリアクタンスは周波数比例
# 負荷に並列B、直列Xを加えた入力インピーダンス
Ypar = 1/(RL + 1j*XL) + 1j*Bf
Zin = 1j*Xf + 1/Ypar
GammaL = (Zin - Z0) / (Zin + Z0)
S11_L = 20*np.log10(np.abs(GammaL))

plt.figure(figsize=(9, 5))
plt.plot(f/1e9, S11_L, 'g', lw=2, label='L-section')
plt.plot(f/1e9, S11_dB, 'b', lw=1.5, alpha=0.7, label='single stub')
plt.axvline(f0/1e9, color='r', ls='--')
plt.axhline(-20, color='gray', ls=':')
plt.xlabel('Frequency [GHz]'); plt.ylabel('|S11| [dB]')
plt.title('L-section vs Single-Stub: Bandwidth Comparison')
plt.ylim(-50, 2); plt.grid(alpha=0.3); plt.legend()
plt.tight_layout()
plt.savefig('lsection_vs_stub.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、L 型整合とスタブ整合の特性の違いが読み取れます。両者とも設計周波数 2.0 GHz で $|S11|$ が深く落ち込み、整合がとれていることがわかります。一方で帯域の形は異なり、L 型は集中定数素子(リアクタンスが $f$ に比例する $L$ と反比例する $C$)による整合のため、スタブの $\tan(\beta d)$ 型の周期的な振る舞いとは違うなだらかな谷を描きます。$R_L = 100\ \Omega$ を $50\ \Omega$ に変換するこの例ではノードQ が $Q = \sqrt{R_{\text{high}}/R_{\text{low}} – 1}$ で決まり、比帯域幅がおよそ $1/Q$ に制限されることが、谷の幅として現れています。広帯域が必要なら多段化が必要だという理論的予測と整合します。

まとめ

本記事では、任意の負荷を線路特性インピーダンスに整合させる単一スタブ整合と L 型整合回路を、アドミタンス計算とスミスチャートの両面から設計手順として導出し、Python で検証しました。

  • 整合の本質は、負荷をそのままに、線路から見た合成インピーダンスを $Z_0$ にして反射係数 $\Gamma$ をゼロにすることです。並列接続ではアドミタンスが足し算になるため、整合設計はアドミタンスで考えると見通しがよくなります。
  • 単一スタブ整合では、まず入力アドミタンスの実部が 1 になる線路長 $d$ を 2 次方程式 $(b_L^2 + g_L^2 – g_L)t^2 – 2b_L t + (1-g_L)=0$ から求め、その点の虚部 $B(d)$ を打ち消すサセプタンス $-B(d)$ を並列スタブで実現します。位置とスタブ長の 2 自由度で任意の受動負荷を整合できます。
  • スミスチャート上では、線路移動が定 VSWR 円に沿った回転、スタブが等コンダクタンス円上の移動として現れ、負荷点から中心へ至る軌跡として整合が可視化されます。
  • L 型整合回路は 2 個の集中定数素子で抵抗変換と虚部相殺を分担し、設計式から $B$・$X$ が閉形式で求まります。ただしノードQ $Q=\sqrt{R_{\text{high}}/R_{\text{low}}-1}$ が抵抗比だけで決まり、比帯域幅が $1/Q$ 程度に制限されます。
  • S11 の周波数掃引で、設計周波数で反射がほぼゼロになること、設計点を外れると整合が崩れることを確認しました。分布定数整合は 1 点でしか厳密整合できないという宿命が S11 の鋭い谷として表れます。

整合回路の理論は、より広帯域・低リップルな整合を目指す多段整合(二項分布・チェビシェフテーパ)や、トランジスタ増幅器の利得・安定設計、フィルタ合成へと自然に発展していきます。次のステップとして、以下の記事も参考にしてください。