共振回路の理論 — RLC直列・並列共振とQ値の設計

ラジオのダイヤルを回して放送局を選ぶとき、ある特定の周波数だけが「くっきり」と聞こえます。数多くの電波が同時に飛び交っている中から、たった一つの放送局だけを拾い上げる — この魔法のような選択性を実現しているのが 共振回路 です。

ブランコを漕ぐ場面を思い浮かべてください。ブランコの揺れに合わせたタイミングで力を加えると、小さな力でも大きな振幅が得られます。これが「共振」の本質です。電気回路でも、インダクタ(L)とキャパシタ(C)のエネルギー交換がちょうど釣り合う周波数で、回路は特別な振る舞いを見せます。

共振回路を理解すると、以下のような幅広い応用に直結します。

  • 無線受信機の同調回路 — 特定の周波数の電波だけを選択して受信する。AM/FMラジオ、テレビのチューナー
  • フィルタ設計 — 帯域通過フィルタ(BPF)や帯域阻止フィルタ(BEF/ノッチフィルタ)の基本素子
  • 発振回路 — LC発振器やクリスタル発振器は共振現象を利用して安定な正弦波を生成する
  • 電力系統 — 力率改善のためのキャパシタバンクは、系統のインダクタンスとの共振を避ける設計が必要

本記事の内容

  • RLC直列共振の理論: 共振周波数、インピーダンス特性、Q値
  • RLC並列共振の理論: 反共振、インピーダンス最大
  • Q値(品質係数)の定義と物理的意味
  • 帯域幅とQ値の関係: $BW = f_0 / Q$
  • 周波数応答の導出(振幅特性と位相特性)
  • Python実装: 共振特性のボード線図、Q値による選択度の比較

前提知識

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

関連記事:

RLC直列回路のインピーダンス

回路の構成

まず、最も基本的な共振回路として RLC直列回路 を考えます。抵抗 $R$、インダクタ $L$、キャパシタ $C$ が直列に接続され、交流電圧源 $v(t) = V_0 \cos(\omega t)$ で駆動される回路です。

各素子のインピーダンスは次の通りです。

  • 抵抗: $Z_R = R$
  • インダクタ: $Z_L = j\omega L$(周波数が高いほどインピーダンスが大きい)
  • キャパシタ: $Z_C = 1 / (j\omega C) = -j / (\omega C)$(周波数が高いほどインピーダンスが小さい)

直列接続なので、全体のインピーダンスは各素子の和になります。

$$ Z(\omega) = R + j\omega L + \frac{1}{j\omega C} = R + j\left(\omega L – \frac{1}{\omega C}\right) $$

この式をじっくり観察してみましょう。実部は $R$ で周波数によらず一定です。虚部は $\omega L – 1/(\omega C)$ で、誘導性リアクタンス $\omega L$(周波数とともに増加)と 容量性リアクタンス $1/(\omega C)$(周波数とともに減少)の差です。

低周波では $1/(\omega C) \gg \omega L$ なのでインピーダンスの虚部は負(容量性)です。高周波では $\omega L \gg 1/(\omega C)$ なので虚部は正(誘導性)です。そして、両者がちょうど打ち消し合う周波数が存在します。この特別な周波数が 共振周波数 です。

共振の物理的意味

共振では、インダクタとキャパシタの間でエネルギーが往復します。インダクタの磁気エネルギー $E_L = \frac{1}{2}LI^2$ とキャパシタの電気エネルギー $E_C = \frac{1}{2}CV^2$ が交互に変換され、エネルギーの総量は保存されます。抵抗 $R$ だけが実際にエネルギーを散逸します。

ブランコのアナロジーでいえば、L が慣性(運動エネルギーを蓄える)、C がバネの復元力(位置エネルギーを蓄える)、R が空気抵抗(エネルギーを散逸する)に対応します。

この直感を踏まえた上で、共振周波数を数式で求めましょう。

RLC直列共振

共振周波数の導出

共振はインピーダンスの虚部がゼロになる条件で定義されます。

$$ \omega L – \frac{1}{\omega C} = 0 $$

この方程式を $\omega$ について解きます。両辺に $\omega$ を掛けると

$$ \omega^2 L = \frac{1}{C} $$

$\omega^2$ について整理すると

$$ \omega^2 = \frac{1}{LC} $$

したがって、共振角周波数 $\omega_0$ は

$$ \omega_0 = \frac{1}{\sqrt{LC}} $$

周波数 $f_0$ [Hz] に変換すると

$$ \begin{equation} f_0 = \frac{1}{2\pi\sqrt{LC}} \end{equation} $$

が得られます。これが トムソンの共振公式 です。共振周波数は $L$ と $C$ の積の平方根の逆数で決まり、抵抗 $R$ には依存しないことに注目してください。$R$ は共振の「鋭さ」(後述するQ値)に影響しますが、共振周波数そのものは $L$ と $C$ だけで決まります。

共振時のインピーダンス

共振周波数 $\omega = \omega_0$ では虚部がゼロになるので

$$ Z(\omega_0) = R $$

すなわち、共振時のインピーダンスは純抵抗 $R$ のみ です。これは直列回路のインピーダンスの最小値であり、このとき回路に流れる電流は最大になります。

$$ I_{\max} = \frac{V_0}{R} $$

共振時の各素子の電圧

共振時に各素子にかかる電圧を調べてみましょう。電流 $I_0 = V_0 / R$ が流れるとき

$$ V_R = I_0 R = V_0 $$

$$ V_L = I_0 \cdot j\omega_0 L = j \frac{V_0}{R} \cdot \omega_0 L = jV_0 \cdot \frac{\omega_0 L}{R} $$

$$ V_C = I_0 \cdot \frac{1}{j\omega_0 C} = -j \frac{V_0}{R} \cdot \frac{1}{\omega_0 C} = -jV_0 \cdot \frac{1}{\omega_0 CR} $$

ここで、$\omega_0 L / R$ という無次元量が現れました。これが後述する Q値(品質係数) です。$Q = \omega_0 L / R$ とおくと

$$ |V_L| = |V_C| = Q \cdot V_0 $$

つまり、共振時にはインダクタとキャパシタの電圧振幅が入力電圧の $Q$ 倍になります。$Q$ が大きいほど素子電圧は大きくなり、$Q = 100$ なら入力の100倍の電圧がL, Cにかかります。これは「電圧共振」とも呼ばれ、高電圧が発生するため素子の耐圧に注意が必要です。

なお、$V_L$ と $V_C$ は互いに逆位相($+j$ と $-j$)なので、その和はゼロとなり、回路全体では $V_R = V_0$ だけが残ります。これは共振条件そのものです。

ここでQ値という重要な概念が登場しました。次にQ値の定義と物理的意味を詳しく見ていきましょう。

Q値(品質係数)

Q値の定義

Q値(Quality Factor)は、共振回路の「鋭さ」を表す無次元パラメータです。いくつかの等価な定義があります。

定義1: エネルギー比による定義

$$ \begin{equation} Q = 2\pi \times \frac{\text{蓄積エネルギー}}{\text{1周期あたりの散逸エネルギー}} \end{equation} $$

この定義が最も物理的な意味が明快です。Q値が大きいほど、蓄積エネルギーに対して散逸が少なく、共振が長く持続します。

定義2: 回路パラメータによる定義(RLC直列回路)

$$ Q = \frac{\omega_0 L}{R} = \frac{1}{\omega_0 C R} = \frac{1}{R}\sqrt{\frac{L}{C}} $$

3つの式は $\omega_0 = 1/\sqrt{LC}$ を使えば全て等価です。

定義3: 帯域幅による定義

$$ Q = \frac{f_0}{BW} $$

ここで $BW$ は半電力帯域幅(-3 dB帯域幅)です。この関係は次のセクションで導出します。

エネルギー比によるQ値の導出

定義1から定義2を導出してみましょう。共振時の電流を $i(t) = I_0 \cos(\omega_0 t)$ とします。

インダクタに蓄積される最大エネルギーは

$$ E_L = \frac{1}{2}L I_0^2 $$

キャパシタに蓄積される最大エネルギーは、共振時には $E_C = E_L = \frac{1}{2}L I_0^2$ です(エネルギーが完全に交換されるため)。したがって、系に蓄積される最大エネルギーは

$$ E_{\text{stored}} = E_L = \frac{1}{2}L I_0^2 $$

1周期あたりの散逸エネルギーは、抵抗での消費電力 $P = \frac{1}{2}R I_0^2$ に周期 $T_0 = 2\pi/\omega_0$ を掛けて

$$ E_{\text{dissipated}} = P \cdot T_0 = \frac{1}{2}R I_0^2 \cdot \frac{2\pi}{\omega_0} $$

定義1に代入すると

$$ Q = 2\pi \cdot \frac{\frac{1}{2}L I_0^2}{\frac{1}{2}R I_0^2 \cdot \frac{2\pi}{\omega_0}} = \frac{2\pi \cdot L}{\frac{2\pi R}{\omega_0}} = \frac{\omega_0 L}{R} $$

確かに定義2と一致しました。

Q値の物理的意味

Q値は以下のように直感的に理解できます。

  • Q値が大きい($Q \gg 1$): 散逸が小さく、共振が鋭い。周波数選択性が高い。自由振動が長く持続する(減衰が遅い)
  • Q値が小さい($Q \sim 1$): 散逸が大きく、共振がなだらか。周波数選択性が低い。自由振動がすぐ減衰する

典型的なQ値の例を挙げると:

共振器 典型的なQ値
LC回路(コイル+コンデンサ) 10 ~ 300
水晶振動子 10,000 ~ 100,000
マイクロ波空洞共振器 1,000 ~ 50,000
光共振器(ファブリペロー) $10^6$ ~ $10^{10}$

水晶振動子のQ値が桁違いに高いのは、機械的振動の損失が極めて小さいためです。これが水晶発振器の高い周波数安定度の源です。

Q値と共振の鋭さの関係を定量的に理解するには、帯域幅との関係を導出する必要があります。

帯域幅とQ値の関係

半電力帯域幅の導出

RLC直列回路の周波数応答から、帯域幅を求めましょう。回路に流れる電流の大きさは

$$ |I(\omega)| = \frac{V_0}{|Z(\omega)|} = \frac{V_0}{\sqrt{R^2 + \left(\omega L – \frac{1}{\omega C}\right)^2}} $$

です。共振時の電流 $I_0 = V_0 / R$ に対して、電力が半分(-3 dB)になる周波数を求めます。電力は電流の二乗に比例するので、半電力の条件は $|I| = I_0 / \sqrt{2}$ です。

$$ \frac{V_0}{\sqrt{R^2 + \left(\omega L – \frac{1}{\omega C}\right)^2}} = \frac{V_0}{\sqrt{2} R} $$

両辺を二乗して整理すると

$$ R^2 + \left(\omega L – \frac{1}{\omega C}\right)^2 = 2R^2 $$

したがって

$$ \left(\omega L – \frac{1}{\omega C}\right)^2 = R^2 $$

平方根をとると

$$ \omega L – \frac{1}{\omega C} = \pm R $$

$\omega$ について解くために、両辺に $\omega / L$ を掛けると

$$ \omega^2 – \frac{1}{LC} = \pm \frac{R}{L} \omega $$

$\omega_0^2 = 1/(LC)$ を使うと

$$ \omega^2 \mp \frac{R}{L}\omega – \omega_0^2 = 0 $$

+符号の場合(上側半電力周波数 $\omega_H$):

二次方程式の解の公式より($\omega > 0$ の解のみ)

$$ \omega_H = \frac{R}{2L} + \sqrt{\left(\frac{R}{2L}\right)^2 + \omega_0^2} $$

-符号の場合(下側半電力周波数 $\omega_L$):

$$ \omega_L = -\frac{R}{2L} + \sqrt{\left(\frac{R}{2L}\right)^2 + \omega_0^2} $$

帯域幅は

$$ BW_\omega = \omega_H – \omega_L = \frac{R}{L} \quad [\text{rad/s}] $$

Hz単位では

$$ BW = \frac{BW_\omega}{2\pi} = \frac{R}{2\pi L} \quad [\text{Hz}] $$

ここで $Q = \omega_0 L / R$ から $R / L = \omega_0 / Q$ なので

$$ BW_\omega = \frac{\omega_0}{Q} $$

Hz単位では

$$ \begin{equation} BW = \frac{f_0}{Q} \end{equation} $$

が得られます。これが Q値と帯域幅の関係 です。Q値が大きいほど帯域幅が狭くなり、周波数選択性が高くなります。

数値例

$f_0 = 1$ MHz, $Q = 100$ の場合:

$$ BW = \frac{1 \times 10^6}{100} = 10 \text{ kHz} $$

つまり、中心周波数1 MHzの信号を受信する場合、$\pm 5$ kHzの範囲だけを通過させ、それ以外の周波数を減衰させることができます。AM放送の帯域幅は約10 kHzなので、この共振回路は隣接する放送局を分離するのに十分な選択性を持ちます。

直列共振回路はインピーダンスが最小になる共振でした。では、インピーダンスが最大になる共振はどうでしょうか? それが並列共振です。

RLC並列共振

並列回路のアドミタンス

RLC並列回路では、$R$, $L$, $C$ が並列に接続されています。並列回路では アドミタンス $Y = 1/Z$ で考えると計算が楽です。

$$ Y(\omega) = \frac{1}{R} + \frac{1}{j\omega L} + j\omega C = \frac{1}{R} + j\left(\omega C – \frac{1}{\omega L}\right) $$

直列回路と見比べると、インピーダンスとアドミタンスで $L$ と $C$ の役割が入れ替わっていることが分かります。

並列共振周波数

アドミタンスの虚部がゼロになる条件から

$$ \omega C – \frac{1}{\omega L} = 0 $$

この式を解くと

$$ \omega_0 = \frac{1}{\sqrt{LC}} $$

直列共振と同じ共振周波数が得られます。共振周波数は回路のトポロジー(直列か並列か)に依存せず、$L$ と $C$ の値だけで決まるのです。

並列共振時のインピーダンス

共振時にはアドミタンスの虚部がゼロになるので

$$ Y(\omega_0) = \frac{1}{R} $$

$$ Z(\omega_0) = R $$

直列共振ではインピーダンスが最小($= R$)になるのに対し、並列共振ではインピーダンスが最大($= R$)になります。ただし、ここでの $R$ の意味が異なることに注意してください。

  • 直列回路の $R$: 素子の直列抵抗(損失を表し、小さいほうが望ましい)
  • 並列回路の $R$: 素子の並列抵抗(大きいほうが損失が小さい)

実際の並列共振回路では、損失は主にインダクタの直列抵抗 $r_s$ で生じます。この場合、共振時の等価並列抵抗は

$$ R_p \approx \frac{(\omega_0 L)^2}{r_s} = Q^2 r_s $$

です。Q値が高いほど等価並列抵抗が大きく(損失が小さく)なります。

並列回路のQ値

理想的なRLC並列回路のQ値は

$$ Q = \frac{R}{\omega_0 L} = \omega_0 C R = R\sqrt{\frac{C}{L}} $$

です。直列回路の場合($Q = \omega_0 L / R$)と比較すると、分子と分母が入れ替わっています。

直列回路では $R$ が小さいほどQ値が高く、並列回路では $R$ が大きいほどQ値が高い。これは、直列回路の $R$ は損失要素(小さいほど良い)であるのに対し、並列回路の $R$ は閉じ込め要素(大きいほど電流が外に漏れにくい)であるためです。

帯域幅との関係は直列回路と同じ形です:

$$ BW = \frac{f_0}{Q} $$

反共振

並列共振は 反共振(antiresonance) とも呼ばれます。直列共振では回路が信号を最もよく通す(インピーダンス最小 → 電流最大)のに対し、並列共振では回路が信号を最もよく遮断する(インピーダンス最大 → 電流最小)からです。

この性質の違いにより、応用が異なります。

  • 直列共振帯域通過フィルタ(BPF) として動作。共振周波数を選択的に通す
  • 並列共振帯域阻止フィルタ(BEF/ノッチフィルタ) として動作。共振周波数を選択的に阻止する

直列・並列の両方の共振特性を把握できました。次に、共振回路の周波数応答を統一的に導出し、Q値が特性に与える影響を詳しく解析しましょう。

周波数応答の導出

RLC直列回路の伝達関数

RLC直列回路で、入力電圧 $V_{in}$ に対する抵抗 $R$ の電圧 $V_R$ の比(伝達関数)を求めます。これは帯域通過フィルタの特性に相当します。

$$ H(\omega) = \frac{V_R}{V_{in}} = \frac{R}{R + j\omega L + \frac{1}{j\omega C}} = \frac{R}{R + j\left(\omega L – \frac{1}{\omega C}\right)} $$

正規化周波数 $u = \omega / \omega_0$ を導入して整理します。$\omega L = u \cdot \omega_0 L$ であり、$1/(\omega C) = 1/(u \omega_0 C)$ です。$Q = \omega_0 L / R$ を使うと

$$ \omega L – \frac{1}{\omega C} = \omega_0 L\left(u – \frac{1}{u}\right) = RQ\left(u – \frac{1}{u}\right) $$

したがって

$$ H(u) = \frac{R}{R + jRQ\left(u – \frac{1}{u}\right)} = \frac{1}{1 + jQ\left(u – \frac{1}{u}\right)} $$

振幅特性

伝達関数の大きさ(振幅応答)は

$$ |H(u)| = \frac{1}{\sqrt{1 + Q^2\left(u – \frac{1}{u}\right)^2}} $$

dB表記では

$$ |H(u)|_{\text{dB}} = -10\log_{10}\left[1 + Q^2\left(u – \frac{1}{u}\right)^2\right] $$

共振時($u = 1$, すなわち $\omega = \omega_0$)では $|H| = 1$(0 dB)です。

位相特性

位相応答は

$$ \angle H(u) = -\arctan\left[Q\left(u – \frac{1}{u}\right)\right] $$

  • $u < 1$(共振周波数以下): $u - 1/u < 0$ → 位相は正(出力が入力より進んでいる)
  • $u = 1$(共振周波数): 位相 $= 0$
  • $u > 1$(共振周波数以上): $u – 1/u > 0$ → 位相は負(出力が入力より遅れている)

Q値が大きいほど、共振周波数付近で位相が急激に変化します。$Q \to \infty$ では、共振周波数を境にステップ関数的に $+90^\circ$ から $-90^\circ$ へ遷移します。

共振近傍の近似

共振周波数の近傍($\omega \approx \omega_0$)では、$u = 1 + \delta$($|\delta| \ll 1$)として

$$ u – \frac{1}{u} = (1 + \delta) – \frac{1}{1 + \delta} \approx (1 + \delta) – (1 – \delta) = 2\delta $$

と近似できます。$\delta = (\omega – \omega_0) / \omega_0 = \Delta\omega / \omega_0$ なので

$$ |H(\omega)| \approx \frac{1}{\sqrt{1 + 4Q^2\left(\frac{\Delta\omega}{\omega_0}\right)^2}} = \frac{1}{\sqrt{1 + \left(\frac{2Q\Delta f}{f_0}\right)^2}} $$

これは ローレンツ関数 の形をしており、共振ピークの形状がローレンツ分布(物理学でよく現れる共鳴線形)と同じであることが分かります。

理論的な周波数応答が得られました。それでは Python で可視化して、Q値が共振特性に与える影響を直感的に確認しましょう。

Python による共振特性の可視化

直列共振のインピーダンス特性

まず、RLC直列回路のインピーダンスの周波数依存性を可視化します。

import numpy as np
import matplotlib.pyplot as plt

# 回路パラメータ
L = 1e-3     # 1 mH
C = 1e-9     # 1 nF
R_values = [10, 50, 200]  # 異なるR値 [Ohm]

# 共振周波数
f0 = 1 / (2 * np.pi * np.sqrt(L * C))
print(f"共振周波数: f0 = {f0/1e3:.2f} kHz")

# 周波数範囲
f = np.logspace(4, 6.5, 2000)  # 10 kHz ~ 3.16 MHz
omega = 2 * np.pi * f

fig, axes = plt.subplots(2, 1, figsize=(10, 8))

for R in R_values:
    Q = 2 * np.pi * f0 * L / R
    # インピーダンス
    Z = R + 1j * (omega * L - 1 / (omega * C))
    Z_mag = np.abs(Z)
    Z_phase = np.angle(Z, deg=True)

    axes[0].plot(f / 1e3, Z_mag, linewidth=2,
                 label=f'R = {R} $\\Omega$ (Q = {Q:.0f})')
    axes[1].plot(f / 1e3, Z_phase, linewidth=2,
                 label=f'R = {R} $\\Omega$')

# 振幅特性
axes[0].axvline(x=f0 / 1e3, color='gray', linestyle=':', alpha=0.5)
axes[0].set_xscale('log')
axes[0].set_yscale('log')
axes[0].set_ylabel('|Z| [$\\Omega$]', fontsize=12)
axes[0].set_title('RLC Series Circuit Impedance', fontsize=13)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3, which='both')

# 位相特性
axes[1].axvline(x=f0 / 1e3, color='gray', linestyle=':', alpha=0.5)
axes[1].axhline(y=0, color='gray', linestyle='--', alpha=0.3)
axes[1].set_xscale('log')
axes[1].set_xlabel('Frequency [kHz]', fontsize=12)
axes[1].set_ylabel('Phase [deg]', fontsize=12)
axes[1].set_ylim(-95, 95)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3, which='both')

plt.tight_layout()
plt.show()

上のグラフから、RLC直列回路のインピーダンス特性が明確に読み取れます。

  1. 振幅特性(上段) — 全てのR値で、共振周波数 $f_0 \approx 159$ kHz付近でインピーダンスが最小になっています。$R$ が小さいほど(Q値が高いほど)谷が深くなり、共振から離れた周波数でのインピーダンスとの差が大きくなります。$R = 10 \, \Omega$($Q = 100$)では共振時と非共振時でインピーダンスが2桁以上異なります。
  2. 位相特性(下段) — 共振周波数以下では位相が $-90°$ 付近(容量性)、共振周波数以上では $+90°$ 付近(誘導性)です。共振周波数を境に位相が切り替わり、Q値が高いほど遷移が急峻です。$R = 10 \, \Omega$ のカーブは、共振周波数のごく近傍で $-90°$ から $+90°$ へ急激に変化しています。

Q値による選択度の比較(ボード線図)

帯域通過フィルタとしての伝達関数をボード線図で描き、Q値が選択度に与える影響を比較します。

import numpy as np
import matplotlib.pyplot as plt

# Q値の異なる複数の回路
Q_values = [5, 10, 30, 100]

# 正規化周波数
u = np.logspace(-1, 1, 5000)  # 0.1 ~ 10 (f/f0)

fig, axes = plt.subplots(2, 1, figsize=(10, 8))

for Q in Q_values:
    # 伝達関数 H(u) = 1 / (1 + jQ(u - 1/u))
    H = 1 / (1 + 1j * Q * (u - 1 / u))
    H_mag_dB = 20 * np.log10(np.abs(H))
    H_phase = np.angle(H, deg=True)

    axes[0].plot(u, H_mag_dB, linewidth=2, label=f'Q = {Q}')
    axes[1].plot(u, H_phase, linewidth=2, label=f'Q = {Q}')

# 振幅特性
axes[0].axhline(y=-3, color='red', linestyle='--', alpha=0.5, label='-3 dB')
axes[0].set_xscale('log')
axes[0].set_ylabel('|H| [dB]', fontsize=12)
axes[0].set_title('Series RLC Bandpass Response (Bode Plot)', fontsize=13)
axes[0].set_ylim(-40, 3)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3, which='both')

# 位相特性
axes[1].axhline(y=0, color='gray', linestyle='--', alpha=0.3)
axes[1].set_xscale('log')
axes[1].set_xlabel('Normalized Frequency $f / f_0$', fontsize=12)
axes[1].set_ylabel('Phase [deg]', fontsize=12)
axes[1].set_ylim(-95, 95)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3, which='both')

plt.tight_layout()
plt.show()

ボード線図から、Q値が共振回路の選択度に与える決定的な影響が見えます。

  1. 振幅特性(上段) — Q値が大きいほどピークが鋭く、帯域幅が狭くなっています。$Q = 5$ では -3 dB帯域幅が比較的広く、共振周波数の約20%に及びます。一方 $Q = 100$ では帯域幅がわずか1%で、非常に選択的です。赤い破線(-3 dB)との交点が半電力帯域幅を定義しており、$BW = f_0 / Q$ の関係が視覚的に確認できます。
  2. 位相特性(下段) — Q値が大きいほど、位相遷移が急峻になります。$Q = 100$ では共振周波数のごく近傍で $+90°$ から $-90°$ へ急激に切り替わるのに対し、$Q = 5$ ではなだらかに変化します。この位相特性は PLL(位相同期回路)の位相比較器としても利用されます。

リニアスケールでの共振ピーク

対数スケールでは見えにくい共振ピークの形状を、リニアスケールで詳しく見てみましょう。

import numpy as np
import matplotlib.pyplot as plt

# 具体的な回路パラメータ
f0 = 1e6  # 1 MHz
Q_values = [10, 30, 100]

# リニアスケールの周波数範囲(共振周波数近傍)
f = np.linspace(0.8e6, 1.2e6, 2000)
u = f / f0

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

for Q in Q_values:
    H = 1 / (1 + 1j * Q * (u - 1 / u))
    H_mag = np.abs(H)

    BW = f0 / Q
    axes[0].plot(f / 1e6, H_mag, linewidth=2,
                 label=f'Q = {Q}, BW = {BW/1e3:.0f} kHz')

    # 半電力帯域幅を矢印で表示
    half_power = 1 / np.sqrt(2)
    f_low = f0 * (-1/(2*Q) + np.sqrt(1/(2*Q)**2 + 1))
    f_high = f0 * (1/(2*Q) + np.sqrt(1/(2*Q)**2 + 1))

# -3 dBライン
axes[0].axhline(y=1/np.sqrt(2), color='red', linestyle='--', alpha=0.5,
                label='$1/\\sqrt{2}$ (-3 dB)')
axes[0].set_xlabel('Frequency [MHz]', fontsize=12)
axes[0].set_ylabel('|H(f)|', fontsize=12)
axes[0].set_title('Resonance Peak Shape (Linear Scale)', fontsize=13)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3)
axes[0].set_ylim(0, 1.1)

# 電力応答
for Q in Q_values:
    H = 1 / (1 + 1j * Q * (u - 1 / u))
    P = np.abs(H)**2  # 電力は振幅の二乗

    axes[1].plot(f / 1e6, P, linewidth=2, label=f'Q = {Q}')

axes[1].axhline(y=0.5, color='red', linestyle='--', alpha=0.5, label='Half-power (-3 dB)')
axes[1].set_xlabel('Frequency [MHz]', fontsize=12)
axes[1].set_ylabel('$|H(f)|^2$ (Power)', fontsize=12)
axes[1].set_title('Power Response', fontsize=13)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3)
axes[1].set_ylim(0, 1.1)

plt.tight_layout()
plt.show()

リニアスケールのグラフから、共振ピークの形状がQ値によってどう変わるかが直感的に把握できます。

  1. 振幅応答(左) — 全てのQ値で共振周波数1 MHzにピーク($|H| = 1$)がありますが、ピークの幅が大きく異なります。$Q = 10$ は帯域幅100 kHzで広い裾野を持ち、$Q = 100$ は帯域幅10 kHzで鋭いピークを形成しています。ラジオの同調回路として$Q = 100$ を使えば、10 kHz間隔のAM放送局を分離できます。
  2. 電力応答(右) — 電力は振幅の二乗なので、ピークの鋭さがさらに強調されます。赤い破線(半電力 = 0.5)との交点が -3 dB帯域幅を定義します。$Q = 100$ のカーブは共振周波数以外でほぼゼロに近く、極めて高い選択性を持つことが確認できます。

並列共振回路のインピーダンス

並列共振回路のインピーダンス特性も可視化してみましょう。直列共振とは逆の振る舞い(共振でインピーダンス最大)を確認します。

import numpy as np
import matplotlib.pyplot as plt

# 回路パラメータ
L = 1e-3     # 1 mH
C = 1e-9     # 1 nF
f0 = 1 / (2 * np.pi * np.sqrt(L * C))

# 並列抵抗(異なるQ値に対応)
R_values = [10e3, 50e3, 200e3]  # [Ohm]

f = np.logspace(4, 6.5, 2000)
omega = 2 * np.pi * f

fig, axes = plt.subplots(2, 1, figsize=(10, 8))

for R in R_values:
    Q = R / (2 * np.pi * f0 * L)
    # 並列アドミタンス
    Y = 1/R + 1/(1j * omega * L) + 1j * omega * C
    Z = 1 / Y
    Z_mag = np.abs(Z)
    Z_phase = np.angle(Z, deg=True)

    axes[0].plot(f / 1e3, Z_mag / 1e3, linewidth=2,
                 label=f'R = {R/1e3:.0f} k$\\Omega$ (Q = {Q:.0f})')
    axes[1].plot(f / 1e3, Z_phase, linewidth=2,
                 label=f'R = {R/1e3:.0f} k$\\Omega$')

# 振幅特性
axes[0].axvline(x=f0 / 1e3, color='gray', linestyle=':', alpha=0.5)
axes[0].set_xscale('log')
axes[0].set_yscale('log')
axes[0].set_ylabel('|Z| [k$\\Omega$]', fontsize=12)
axes[0].set_title('RLC Parallel Circuit Impedance (Antiresonance)', fontsize=13)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3, which='both')

# 位相特性
axes[1].axvline(x=f0 / 1e3, color='gray', linestyle=':', alpha=0.5)
axes[1].axhline(y=0, color='gray', linestyle='--', alpha=0.3)
axes[1].set_xscale('log')
axes[1].set_xlabel('Frequency [kHz]', fontsize=12)
axes[1].set_ylabel('Phase [deg]', fontsize=12)
axes[1].set_ylim(-95, 95)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3, which='both')

plt.tight_layout()
plt.show()

並列共振のインピーダンス特性から、直列共振との明確な対比が読み取れます。

  1. 振幅特性(上段) — 共振周波数でインピーダンスが 最大 になっています。直列共振の「谷」と対照的な「山」の形状です。$R$ が大きいほど(Q値が高いほど)ピークが高く鋭くなります。$R = 200 \, \text{k}\Omega$($Q = 200$)では共振時に約200 k$\Omega$ のインピーダンスを示し、非共振時と比べて2桁以上の差があります。
  2. 位相特性(下段) — 直列共振とは位相の変化方向が逆です。低周波では $+90°$(誘導性:インダクタのインピーダンスが低く電流が主にインダクタを流れる)、高周波では $-90°$(容量性:キャパシタのインピーダンスが低く電流が主にキャパシタを流れる)、共振周波数で $0°$(純抵抗)です。

直列共振と並列共振の比較

最後に、直列共振と並列共振の特性を同じスケールで並べて比較しましょう。

import numpy as np
import matplotlib.pyplot as plt

L = 1e-3     # 1 mH
C = 1e-9     # 1 nF
f0 = 1 / (2 * np.pi * np.sqrt(L * C))

# 直列用R, 並列用R(同じQ=50を実現)
Q = 50
R_series = 2 * np.pi * f0 * L / Q      # 直列: R = omega_0 * L / Q
R_parallel = Q * 2 * np.pi * f0 * L    # 並列: R = Q * omega_0 * L

f = np.logspace(4, 6.5, 3000)
omega = 2 * np.pi * f

# 直列インピーダンス
Z_series = R_series + 1j * (omega * L - 1 / (omega * C))

# 並列インピーダンス
Y_parallel = 1/R_parallel + 1/(1j * omega * L) + 1j * omega * C
Z_parallel = 1 / Y_parallel

# 正規化(各々の共振時インピーダンスで割る)
Z_series_norm = np.abs(Z_series) / R_series
Z_parallel_norm = np.abs(Z_parallel) / R_parallel

fig, ax = plt.subplots(figsize=(10, 6))

ax.plot(f / f0, Z_series_norm, 'b-', linewidth=2.5,
        label=f'Series RLC (Q = {Q})')
ax.plot(f / f0, Z_parallel_norm, 'r-', linewidth=2.5,
        label=f'Parallel RLC (Q = {Q})')

ax.axvline(x=1.0, color='gray', linestyle=':', alpha=0.5, label='$f = f_0$')
ax.axhline(y=1.0, color='gray', linestyle='--', alpha=0.3)
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlabel('Normalized Frequency $f / f_0$', fontsize=12)
ax.set_ylabel('Normalized Impedance $|Z| / Z_{res}$', fontsize=12)
ax.set_title(f'Series vs Parallel Resonance (Q = {Q})', fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3, which='both')

plt.tight_layout()
plt.show()

この比較グラフから、直列共振と並列共振の本質的な違いが一目で理解できます。

  1. 対称性 — 両者は共振周波数を中心に「鏡像」の関係にあります。直列共振のインピーダンスは共振で最小($|Z|/Z_{res} = 1$)になり離れると増加するのに対し、並列共振は共振で最大($|Z|/Z_{res} = 1$)になり離れると減少します。
  2. 遠方の振る舞い — 共振周波数から十分離れた領域では、直列回路のインピーダンスはL(高周波)またはC(低周波)で支配され、並列回路のインピーダンスはC(高周波)またはL(低周波)で支配されます。低周波・高周波の役割が入れ替わっています。
  3. 設計への示唆 — 特定周波数の信号を「通したい」なら直列共振(インピーダンス最小)、「止めたい」なら並列共振(インピーダンス最大)を使うという設計指針が、このグラフから自然に導かれます。

応用: 無線受信機の同調回路

AM受信機のフロントエンド

共振回路の最も古典的かつ重要な応用は、無線受信機の 同調回路(tuned circuit) です。AMラジオ受信機のフロントエンドでは、アンテナで受信した多数の放送局の信号から、聞きたい局だけを選択する必要があります。

並列共振回路をアンテナ回路に接続し、可変キャパシタ(バリコン)で $C$ を変えることで共振周波数を調整します。AM放送の周波数帯(531 ~ 1602 kHz)をカバーするには

$$ \frac{f_{\max}}{f_{\min}} = \frac{1602}{531} \approx 3.02 $$

共振周波数は $f_0 \propto 1/\sqrt{C}$ なので、必要なキャパシタの可変範囲は

$$ \frac{C_{\max}}{C_{\min}} = \left(\frac{f_{\max}}{f_{\min}}\right)^2 \approx 9.1 $$

例えば $C_{\min} = 20$ pF, $C_{\max} = 180$ pF の可変キャパシタと $L \approx 180 \, \mu$H のコイルで実現できます。

選択度の限界と多段同調

単一の共振回路で得られる選択度には限界があります。隣接チャネルの減衰量は、1段の共振回路では $-20\log_{10}(1 + Q^2 \delta^2)$ 程度($\delta$ は正規化離調量)です。

より高い選択度が必要な場合は、複数の共振回路を 縦続接続 します。$n$ 段の同調回路の総合特性は、各段の特性の積(dBでは和)になります。ただし、段数を増やすと通過帯域の形状が尖りすぎて、信号の歪みが生じる場合があります。

実用的なスーパーヘテロダイン受信機では、RF同調回路($Q \approx 50$)でおおまかに周波数を選択し、IF(中間周波数)フィルタ($Q \approx 100$ ~ 200 の多段構成)で精密な選択を行う2段階の方式が採用されています。

フィルタ設計との関係

共振回路は最も単純な 帯域通過フィルタ(BPF) です。より高度なフィルタ設計では、バタワースフィルタ、チェビシェフフィルタ、楕円フィルタなどが使われますが、いずれも基本的にはLC共振回路の組み合わせです。

ディジタル信号処理の発達により、現代の多くのフィルタはソフトウェア(FIR/IIRフィルタ)で実装されますが、高周波回路ではアナログLC共振回路が依然として不可欠です。GHz帯の信号をリアルタイムでフィルタリングするには、ディジタル処理ではサンプリングレートが追いつかないためです。

共振回路の過渡応答

自由振動と減衰

共振回路に定常的な交流を印加する場合だけでなく、スイッチの開閉やパルス信号による過渡応答も重要です。RLC直列回路の自由振動(電源なしの場合)は2階微分方程式

$$ L\frac{d^2 q}{dt^2} + R\frac{dq}{dt} + \frac{q}{C} = 0 $$

で記述されます($q$ は電荷)。この特性方程式の根は

$$ s_{1,2} = -\frac{R}{2L} \pm \sqrt{\left(\frac{R}{2L}\right)^2 – \frac{1}{LC}} $$

です。ここで $\alpha = R / (2L)$(減衰係数)と $\omega_0 = 1/\sqrt{LC}$(共振角周波数)を定義すると

$$ s_{1,2} = -\alpha \pm \sqrt{\alpha^2 – \omega_0^2} $$

となります。$\alpha$ と $\omega_0$ の大小関係に応じて3つのケースが生じます。

不足減衰($\alpha < \omega_0$, すなわち $Q > 1/2$): 解は減衰振動

$$ q(t) = Q_0 e^{-\alpha t} \cos(\omega_d t + \phi) $$

ここで $\omega_d = \sqrt{\omega_0^2 – \alpha^2}$ は減衰振動の角周波数です。Q値を使うと $\alpha = \omega_0 / (2Q)$ なので

$$ \omega_d = \omega_0\sqrt{1 – \frac{1}{4Q^2}} $$

$Q \gg 1$ では $\omega_d \approx \omega_0$ であり、振動周波数はほぼ共振周波数に等しくなります。

振動の包絡線は $e^{-\alpha t} = e^{-\omega_0 t/(2Q)}$ で減衰し、$Q$ が大きいほど減衰が遅い(振動が長く持続する)ことが確認できます。1周期あたりの振幅減少率は

$$ e^{-\alpha T_0} = e^{-\pi / Q} $$

例えば $Q = 100$ では1周期あたり約3.1%の振幅減少に過ぎず、$Q = 10$ では約27%の減少です。

臨界減衰($\alpha = \omega_0$, $Q = 1/2$): 振動なしで最速の収束

過減衰($\alpha > \omega_0$, $Q < 1/2$): 振動なしだが収束が遅い

ほとんどの共振回路の応用では $Q \gg 1$ であり、不足減衰が支配的です。

過渡応答の理論を Python で可視化して、Q値と減衰の関係を確認しましょう。

import numpy as np
import matplotlib.pyplot as plt

# 共振周波数
f0 = 100e3    # 100 kHz
omega0 = 2 * np.pi * f0

# Q値の異なるケース
Q_values = [5, 20, 100]

# 時間軸
t = np.linspace(0, 200e-6, 5000)  # 200 us

plt.figure(figsize=(10, 6))

for Q in Q_values:
    alpha = omega0 / (2 * Q)
    omega_d = omega0 * np.sqrt(1 - 1/(4*Q**2))

    # 減衰振動(初期電荷1で開始)
    q = np.exp(-alpha * t) * np.cos(omega_d * t)

    # 包絡線
    envelope = np.exp(-alpha * t)

    plt.plot(t * 1e6, q, linewidth=1.5, label=f'Q = {Q}')
    plt.plot(t * 1e6, envelope, '--', linewidth=0.8, alpha=0.5,
             color=plt.gca().lines[-1].get_color())

plt.xlabel('Time [$\\mu$s]', fontsize=12)
plt.ylabel('Normalized Charge $q(t) / q(0)$', fontsize=12)
plt.title(f'RLC Free Oscillation (Damped Response, $f_0$ = {f0/1e3:.0f} kHz)',
          fontsize=13)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.axhline(y=0, color='gray', linewidth=0.5)
plt.tight_layout()
plt.show()

自由振動のグラフから、Q値と減衰の関係が明確に観察できます。

  1. $Q = 5$ — 減衰が速く、数周期で振動がほぼ消失します。包絡線(破線)が急速に低下しており、蓄えたエネルギーがすぐに抵抗で散逸することを示しています。
  2. $Q = 20$ — 中程度の減衰で、20周期程度は明確な振動が持続します。
  3. $Q = 100$ — 200 $\mu$s(= 20周期)が経過しても振幅がほとんど減衰していません。Q値100は「100/(2$\pi$) $\approx$ 16周期で振幅が $1/e$ に減衰する」ことを意味し、20周期ではまだ十分な振幅が残っています。水晶振動子($Q \sim 10^4$)の場合、電源を切っても数秒間振動が持続するのはこの原理です。

実用的なQ値の制約

コイルのQ値

実際の共振回路では、Q値を制限するのは主に インダクタ(コイル)の損失 です。コイルの等価直列抵抗 $R_s$ には以下の要因が含まれます。

  • 導体抵抗: ワイヤの直流抵抗。周波数が高くなると 表皮効果 により実効抵抗が $\propto \sqrt{f}$ で増加
  • 近接効果: 隣接する巻線間の渦電流損失
  • コア損失: フェライトコアを使用する場合のヒステリシス損と渦電流損

周波数が高くなるにつれて損失が増加するため、Q値には周波数依存性があります。一般的なルールとして

コイルの種類 典型的なQ値 周波数範囲
空芯ソレノイド 50 ~ 200 1 ~ 100 MHz
フェライトコア 30 ~ 150 100 kHz ~ 10 MHz
トロイダルコア 50 ~ 300 100 kHz ~ 50 MHz
マイクロストリップ共振器 100 ~ 500 1 ~ 30 GHz

キャパシタのQ値

キャパシタの損失はコイルに比べて一般に小さいですが、無視できない場合もあります。キャパシタの損失は 誘電正接 $\tan\delta$ で表され

$$ Q_C = \frac{1}{\tan\delta} $$

です。高品質なセラミックキャパシタ(C0G/NP0)は $\tan\delta < 0.001$($Q_C > 1000$)であり、共振回路のQ値にはほとんど影響しません。

回路全体のQ値

インダクタのQ値 $Q_L$ とキャパシタのQ値 $Q_C$ を持つ回路全体のQ値は

$$ \frac{1}{Q} = \frac{1}{Q_L} + \frac{1}{Q_C} $$

で与えられます。$Q_C \gg Q_L$ の場合(通常)、$Q \approx Q_L$ となり、回路のQ値はコイルの品質で律速されます。

まとめ

本記事では、共振回路の理論について解説しました。

  • 共振周波数 — RLC回路の共振周波数は $f_0 = 1/(2\pi\sqrt{LC})$ で、L と C のみで決まり R には依存しない
  • 直列共振 — 共振時にインピーダンスが最小($= R$)になり、電流が最大になる。帯域通過フィルタとして動作
  • 並列共振(反共振) — 共振時にインピーダンスが最大($= R$)になり、電流が最小になる。帯域阻止フィルタとして動作
  • Q値(品質係数) — エネルギーの蓄積と散逸の比率を表す。直列回路では $Q = \omega_0 L / R$、並列回路では $Q = R / (\omega_0 L)$
  • 帯域幅との関係 — $BW = f_0 / Q$ であり、Q値が大きいほど帯域幅が狭く選択度が高い
  • 共振時の電圧増倍 — 直列共振ではL, Cの素子電圧が入力の $Q$ 倍になる(電圧共振)
  • 過渡応答 — 自由振動は $Q > 1/2$ で減衰振動、減衰の時定数は $2Q / \omega_0$
  • 交流回路への拡張 — 共役整合 $Z_L = Z_{th}^*$ により最大電力伝送が実現

共振回路は、無線通信からフィルタ設計、発振回路、電力系統まで、電気・電子工学のあらゆる分野の基盤となる概念です。ディジタル信号処理が発達した現代でも、高周波回路ではアナログ共振回路が不可欠であり、その設計にはQ値と帯域幅の関係を正しく理解することが求められます。

次のステップとして、以下の記事も参考にしてください。