0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

光ファイバーはなぜガラスなのに光が漏れないのか。全反射と開口数NAをJavaScriptで計算

0
Posted at

「光ファイバーって、ガラスなのに光が漏れないの?」

そう思ったこと、ありませんか?実はこれ、全反射という物理現象のおかげなんです。でも、教科書の「臨界角」とか「開口数」って言葉、なんだか難しそうですよね。

今日は、ブラウザ上で動く光ファイバー通信シミュレーターを使って、NA(開口数)や減衰、パルス広がりの仕組みを、コードを書きながら本質まで理解していきましょう。

▶ 今回のシミュレーター: 光ファイバー通信シミュレーター (ブラウザで動作・登録不要)


導入「え、光って曲がるの?」

光は基本的に直進します。でも、光ファイバーの中ではジグザグに進みながら、何十キロも先まで届くんです。

例えば、海底ケーブル。太平洋の底に敷かれた光ファイバーは、1万キロ以上の距離を、ほぼ損失なく光を伝えます。もし光が漏れていたら、数キロで消えてしまうはず。なぜ漏れないのか?

答えは、コアとクラッドの屈折率の差。このわずかな差が、光を閉じ込める「壁」の役割を果たしているんです。


ざっくり本質「ピンポン玉が跳ね返るイメージ」

光ファイバーの断面を想像してください。中心のコア(屈折率 $n_1$)と、その周りのクラッド(屈折率 $n_2$、 $n_1 > n_2$)。

光がコアの中を進むとき、クラッドとの境界にぶつかると、ある条件で全反射が起こります。これはまるで、ピンポン玉が壁に跳ね返るように、光がジグザグに進むイメージ。

「光は、コアとクラッドの境界でピンポン玉みたいに跳ね返り続けるんだ」

この「跳ね返る最小の角度」が臨界角。これより浅い角度で入射すると、光はクラッド側に漏れ出してしまいます。


数式で理解する「NAって何?なんで重要?」

ここからが本番。光ファイバーの性能を決める最重要パラメータ、開口数(NA: Numerical Aperture) を数式で理解しましょう。

まず、コアとクラッドの屈折率を $n_1$、$n_2$ とすると、NAは次のように定義されます。

NA = \sqrt{n_1^2 - n_2^2}

このNAが何を表すかというと、「ファイバーがどのくらい広い角度から光を受け入れられるか」 の指標です。具体的には、NAが大きいほど、ファイバーに入射できる光の角度範囲が広がります。

次に、光がファイバー内を伝搬するときの減衰。伝送距離 $L$(km)後の光パワー $P(L)$ は、損失係数 $\alpha$(dB/km)を使ってこう表せます。

P(L) = P_0 \cdot 10^{-\alpha L/10}

ここで $P_0$ は入射光パワー。例えば $\alpha = 0.2$ dB/km なら、10kmで約 $10^{-0.2} \approx 0.63$倍、つまり約37%減衰します。

さらに、パルス広がり(モード分散)。シングルモードとマルチモードの違いは、このパルス広がりに直結します。NAが大きいと高次モードが励起され、各モードの経路長差が大きくなるため、パルスが時間的に広がりやすくなるんです。


コードで実装する「シミュレーターの計算ロジックを再現」

ここがこの記事の核心。シミュレーターが裏でやっている計算を、JavaScriptで20行程度で再現してみましょう。

// 光ファイバー通信のコア計算(ブラウザで動く)
function opticalFiberSim(n1, n2, L, alpha, P0) {
    // 1. 開口数 NA の計算
    const NA = Math.sqrt(n1 * n1 - n2 * n2);
    
    // 2. 臨界角(ラジアン)の計算:θc = arcsin(n2/n1)
    const criticalAngleRad = Math.asin(n2 / n1);
    const criticalAngleDeg = criticalAngleRad * 180 / Math.PI;
    
    // 3. 減衰後の光パワー P(L) = P0 * 10^(-αL/10)
    const PL = P0 * Math.pow(10, -alpha * L / 10);
    
    // 4. パルス広がりの簡易モデル(モード分散を考慮)
    // 経路長差による時間広がり Δt ≈ (L * NA^2) / (2 * n1 * c)
    const c = 3e8; // 光速 [m/s]
    const deltaT = (L * 1000 * NA * NA) / (2 * n1 * c); // 秒単位
    
    return {
        NA: NA.toFixed(4),
        criticalAngleDeg: criticalAngleDeg.toFixed(2),
        powerAfter: PL.toFixed(4),
        pulseSpread: (deltaT * 1e9).toFixed(2) // ナノ秒に変換
    };
}

// 実際のパラメータでテスト(シングルモードファイバーを想定)
const result = opticalFiberSim(
    1.468,  // n1: コア屈折率(シリカガラス)
    1.464,  // n2: クラッド屈折率
    50,     // L: 伝送距離 [km]
    0.2,    // alpha: 損失係数 [dB/km]
    1.0     // P0: 入射光パワー [mW]
);

console.log('NA:', result.NA);
console.log('臨界角:', result.criticalAngleDeg, '度');
console.log('減衰後パワー:', result.powerAfter, 'mW');
console.log('パルス広がり:', result.pulseSpread, 'ns');

このコードをブラウザの開発者ツール(F12)のコンソールに貼り付ければ、すぐに実行できます。シミュレーターのスライダーを動かしたときの計算が、まさにこれです。

ポイント解説:

  • Math.asin(n2/n1) で臨界角を計算。$n_1 > n_2$ でないとエラーになるので注意。
  • 減衰は対数スケール。10^(-αL/10) は、dBの定義そのもの。
  • パルス広がりは簡易モデル。実際には材料分散や波長分散も考慮する必要がありますが、モード分散の影響をざっくり捉えられます。

数値例で確かめる「現実の値を入れてみる」

それでは、具体的な数値で計算してみましょう。

条件:

  • シングルモードファイバー:$n_1 = 1.468$、$n_2 = 1.464$
  • 伝送距離 $L = 50$ km
  • 損失係数 $\alpha = 0.2$ dB/km
  • 入射パワー $P_0 = 1.0$ mW

計算ステップ:

  1. NAの計算:
    $NA = \sqrt{1.468^2 - 1.464^2} = \sqrt{2.155 - 2.143} = \sqrt{0.012} \approx 0.1095$

  2. 臨界角:
    $\theta_c = \arcsin(1.464 / 1.468) \approx \arcsin(0.9973) \approx 85.7^\circ$
    つまり、コアとクラッドの境界に対してほぼ平行に近い角度で跳ね返る。

  3. 減衰後パワー:
    $P(50) = 1.0 \times 10^{-0.2 \times 50 / 10} = 1.0 \times 10^{-1} = 0.1$ mW
    50kmで90%減衰。でも、受光器の感度が十分なら通信可能。

  4. パルス広がり:
    $\Delta t \approx \frac{50 \times 1000 \times 0.012}{2 \times 1.468 \times 3 \times 10^8} \approx \frac{600}{8.808 \times 10^8} \approx 6.81 \times 10^{-7}$ 秒 ≈ 0.68 μs

このパルス広がりが、高速通信(例:10 Gbps = 0.1 ns/ビット)だと致命的になります。だからこそ、長距離ではシングルモードファイバーが必須なんです。

先ほどのコードを実行すると、ほぼ同じ値が得られます(計算誤差の範囲で一致)。


シミュレーターで遊ぶ「パラメータを動かして実験」

それでは、実際にシミュレーターを操作してみましょう。

実験1:NAを変えると何が起きる?

  1. コア屈折率 $n_1$ を 1.50 に、クラッド屈折率 $n_2$ を 1.45 に設定。
  2. NAの値が 0.384 に跳ね上がるのを確認。
  3. 光線のアニメーションを見ると、ジグザグの角度が急峻になり、より多くの光線が全反射されている。

なぜ? → $n_1$ と $n_2$ の差が大きくなると、臨界角が小さくなり、より広い入射角で光を受け入れられるから。でも、パルス広がりのグラフが大きくなっていることにも注目。

実験2:距離を伸ばすとパルスがどうなる?

  1. 伝送距離 $L$ を 10 km から 100 km にスライド。
  2. 減衰グラフが指数関数的に減少。
  3. パルス広がりの波形が、なまって広がる様子がリアルタイムで表示される。

ポイント:パルス広がりは距離に比例して増加。100kmでは、10kmの10倍の広がりに。

実験3:シングルモード vs マルチモード

  1. シングルモード条件($n_1=1.468$, $n_2=1.464$, NA小)でパルス広がりを確認。
  2. マルチモード条件($n_1=1.50$, $n_2=1.45$, NA大)に変更。
  3. 同じ距離でも、マルチモードのパルス広がりが数倍〜数十倍大きい。

これが、「NAが大きい=必ずしも良いわけではない」 理由です。


現場でハマるポイント「教科書通りにいかない現実」

1. NAが大きいとモード分散がヤバい

「NAを大きくすれば光をたくさん集められる!」と喜ぶのは早計です。確かに結合効率は上がりますが、その代償として高次モードが励起され、経路長の差が大きくなります。

例えば、NA=0.3のマルチモードファイバーで1km伝送した場合、パルス広がりはNA=0.2のファイバーに比べて約2倍になります。短距離(<100m)なら問題なくても、10km級の伝送では信号品質が著しく劣化します。

2. 損失係数を現実離れした値にしない

シミュレーターで$\alpha = 0$ dB/kmに設定すると、どんなに距離を伸ばしても減衰しない「夢のファイバー」になります。でも現実にはありえません。

実用的な目安:

  • シングルモードファイバー:0.2〜0.4 dB/km(1.55μm帯で最小)
  • マルチモードファイバー:2〜4 dB/km(0.85μm帯)

「100km伝送で信号強度がどれだけ減るか」を、この範囲で体感してみましょう。

3. 「シングルモード」と「マルチモード」はコア径だけじゃない

よくある誤解:「コア径が太い=マルチモード、細い=シングルモード」

実は、使用する波長も決定的に重要です。同じコア径(例:10μm)でも、波長1.55μmではシングルモードでも、波長0.85μmではマルチモードになることがあります。

これはVパラメータ(規格化周波数) で決まります:

V = \frac{2\pi a}{\lambda} \cdot NA

$a$ がコア半径、$\lambda$ が波長。$V < 2.405$ でシングルモードになります。つまり、波長、コア径、屈折率差の三者関係を常に意識する必要があるんです。


まとめ「3つの要点」

  1. NAは「光を受け入れられる角度の広さ」。大きいと結合効率は上がるが、モード分散も大きくなるトレードオフ。
  2. 減衰とパルス広がりは距離に依存。シングルモードは長距離向け、マルチモードは短距離・大容量向け。
  3. シミュレーターでパラメータを動かして体感。数式だけではわからない「変化の様子」が、理解の鍵。

光ファイバーの奥深さ、少し伝わりましたか?「全反射」という単純な現象が、実は高度なエンジニアリングの土台になっている。そんな面白さを、ぜひ実際のシミュレーターで体験してみてください。

▶ 光ファイバー通信シミュレーター — ブラウザで即動作、登録不要

NovaSolverでは1,600以上の工学シミュレーターを無料公開中 👉 一覧はこちら

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?