Comments
Description
Transcript
公開 - 高知工科大学
卒 業 研 題 目 究 半導体レーザの波長安定化システム 報 指 平 者 1070347 本 翔 山 岩 告 導 下 教 克 太 員 教授 成 19 年 2 月 20 日 高知工科大学工学部 電子・光システム工学科 目次 序論 .................................................................................................................... 3 第1章 1.1 研究背景................................................................................................................. 3 1.2 研究目的................................................................................................................. 4 1.3 論文の構成 ............................................................................................................. 4 PID制御.............................................................................................................. 5 第2章 2.1 PID制御とは .......................................................................................................... 5 2.2 P制御(比例制御) ................................................................................................ 5 2.3 PI制御(比例+積分制御)..................................................................................... 6 2.4 PID制御(比例+積分+微分制御) ........................................................................ 9 実験機材の概要 ................................................................................................ 11 第3章 3.1 AD/DAコンバータ ............................................................................................... 11 3.2 サーミスタ ........................................................................................................... 12 3.2.1 サーミスタの種類 ......................................................................................... 12 3.2.2 サーミスタの温度特性 .................................................................................. 13 3.3 ペルチェ素子 ....................................................................................................... 14 3.3.1 ペルチェ素子の原理 ..................................................................................... 14 3.4 圧電ブザー ........................................................................................................... 15 3.5 光ファイバブラッググレーティング(FBG) .................................................... 16 3.5.1 光ファイバブラッググレーティングの原理 ................................................. 16 3.6 光サーキュレータについて .................................................................................. 17 3.7 半導体レーザ ....................................................................................................... 18 3.7.1 光の発光のしくみ ......................................................................................... 18 3.7.2 レーザの発振の原理 ..................................................................................... 19 3.7.3 ファブリ・ペロー型半導体レーザ ................................................................ 20 3.7.4 DFB半導体レーザ ........................................................................................ 21 第4章 波長安定化システムの構成 .............................................................................. 22 4.1 波長安定化システム全体の構成 ........................................................................... 22 4.2 温度制御の原理・構成 ......................................................................................... 23 4.3 波長誤差検出回路を製作する際に試したこと ..................................................... 27 4.4 波長制御の原理.................................................................................................... 28 4.5 波長制御の構成.................................................................................................... 29 4.6 波長安定化の手順................................................................................................. 30 第5章 実験結果 ........................................................................................................... 31 5.1 サーミスタの抵抗値と温度の関係 ....................................................................... 31 5.2 ペルチェ素子の電圧に対する電流変化 ................................................................ 32 1 5.3 半導体レーザの電流変化に伴う光パワーの変化 ................................................. 33 5.4 半導体レーザの波長と温度の関係 ....................................................................... 34 5.5 半導体レーザの波長と電流の関係 ....................................................................... 35 5.6 光ファイバブラッググレーティングの反射特性 ................................................. 36 5.7 温度制御における比例ゲインの変化.................................................................... 37 5.8 波長制御における比例ゲインの変化.................................................................... 38 5.9 波長安定化システムの制御範囲 ........................................................................... 39 5.10 温度制御と波長制御を同時に行った結果 ......................................................... 40 第6章 まとめ............................................................................................................... 41 謝辞 .................................................................................................................................... 42 参考文献 ............................................................................................................................. 43 付録 .................................................................................................................................... 44 1. 2. 使用した機材の性能 ................................................................................................ 44 (1) AD/DAコンバータ ........................................................................................ 44 (2) サーミスタ .................................................................................................... 45 (3) ペルチェ素子 ................................................................................................ 46 (4) 圧電ブザー .................................................................................................... 47 波長安定化システムプログラム............................................................................... 48 2 第1章 序論 1.1 研究背景 現在、光ファイバ通信によるインターネットの急速な普及により、高速かつ大容量で の通信が可能となっている。その中で、1本の光ファイバで複数の異なる波長を同時 に伝送することができ、大容量伝送を可能にする波長分割多重(Wavelength Division Multiplexing :WDM )伝送方式の技術が用いられている。 WDM伝送方式 の敷設は光 ファイバケーブルを新設するのではなく、これまで使用していた光ファイバケーブル を使用して、送信と受信側の設備をWDMに対応したものに変更するという簡単な作 業で済み、低コストであるため現在需要が高まっている。 近年では、従来の WDM伝送方式 の波長間隔である 0.8[nm]( 100[GHz] )をさらに高 密度化し、周波数間隔を0.4[nm]( 50[GHz] )、または、 0.2[nm](25[GHz)) とした高密 度波長分割多重(Dense Wavelength Division Multiplexing : DWDM )が開発されて いる。また、光学系部品が低コストで波長間隔は20[nm]と広い多重化方式の低密度波 長分割多重(Coarse Wavelength Division Multiplexing : CWDM )も開発されている [2] 。 このように、 WDM伝送方式 のような隣り合う信号同士の波長間隔が狭い 伝送 方式 では、信号同士が重なり合わないようにしなければならない。そのためには、半導体 レーザの波長を一定に保つ必要があり、そのシステムには高い精度の安定が求められ ている。 3 1.2 研究目的 半導体レーザは周囲の温度の影響を受けて、発振波長が変化する。複数の信号を同 時に伝送するWDM伝送方式 では信号同士の波長間隔が 0.8[nm] しかないため、半導体 レーザの温度が変化すれば波長が変化し、信号同士が重なり合う混信などの障害が起 るという問題が発生してしまう。この問題を解決するために波長安定化システムが用 いられている。 本研究は、 半導体レーザの温度と波長を制御し、 WDM 伝送方式に対応できる波長安 定化システムを製作する ことを目的とする。温 度制御 においては半導体レーザの温度を ±0.1[℃]以内に安定させることを目標とする。波長制御において、±1[pm](100[MHz]) の精度で半導体レーザの波長を安定させることが目標である。 1.3 論文の構成 本論文の 第 2 章 では、今回の波長安定化を行う際に用いた制御方式である PID 制御 について、P (比例)動作、 I (積分)動作、 D (微分)動作がそれぞれどのような役 割をするのかについて述べる。第 3 章では、本研究で使用したそれぞれの機材につい て述べる。第 4 章では、まず、波長安定システムの全体構成について述べる。そして、 温度制御 の原理と構成、波長制御の原理と構成について述べる。 第 5 章 では、実験結 果について述べる。第 6 章では、本研究のまとめを述べる。 4 第2章 PID 制御 本章では、 PID 制御のP制御、I制御、D制御についてそれらがどのような動作を するかについて述べる。そして、P 制御と I 制御の動作を組み合わせた PI 制御、さらに そこにD 制御を組み合わせた PID 制御がどのような動作をするかについて述べる。 2.1 PID 制御とは PID 制御とは、目標としている設定値と測定値の偏差に対して比例( P 動作)、積分 (I 動作)、微分( D 動作)の三つの動作を組み合わせて演算を行うフィードバック制 御のことである。PID 制御は現在でも制御全体の 90 %以上に用いられており、ディジ タル制御化が進む現在でも広く利用されている [1] 。 PID 制御が広く用いられている理 由として、PID制御は容易な構造でありながら、さまざまな場合の制御に対して用い ることができ、制御のしくみを理解しやすいからであると考えられる。PID制御の使 用例として自動車、発電所などの工業装置、エアコン、電気洗濯機などの家電製品な どが挙げられ、私たちの身の回りに多く用いられていることがわかる。 2.2 P 制御(比例制御) P 制御( Proportional Action : 比例制御)とは、入力値を出力値と設定値のズレであ る偏差に比例させて値を変え、出力値の修正を行うP(比例)動作を用いた制御のこと である。ここで、出力を y 、比例ゲインを K P 、設定値から出力値を引いた値である 偏差を e 、偏差 e がゼロのときの出力の大きさを x とし、P制御を数式で表すと式 (2.1)のようになる。 y = K p × e + x ⋅ ⋅ ⋅ ⋅ ⋅ (2.1) 偏差 e が加わった場合の出力 y がどのようになるのかを図 2-1 に示す [1] 。 P 制御の 場合は出力 y が偏差 e の大きさに比例して増減し、出力値と設定値が同じとなったと き偏差 e がゼロとなるので式( 2.1 )より、 値 y は一定となる。 5 x の値のみが出力されることになり、出力 図 2-1 2.3 P 制御の出力 PI 制御(比例 + 積分制御) P 制御だけでは、設定値と出力値との間にオフセット(定常偏差:制御をおこなって も定常的に残る偏差)が残り出力値を設定値と全く同じにすることができない。そこで、 P 制御に I 制御( Integral Action : 積分制御)を加えて行い、オフセットを取り除く。 P 制御において、P 制御の式 (2.1 )の偏差 e がゼロになるときの出力の大きさ x は、固 定された値であり変化することはなかった。しかし、オフセットを取り除くためには オフセットがゼロになるまで x の値を変更し、設定し直す必要がある。一定の時間間 隔 ⊿t で偏差 e をゼロにする、偏差 e に比例して出力を増減し続けると、 P制御では 一定だった x が偏差の積分値に比例して増減していることを表すと次のようになる。 ここで、積分ゲインを K I 、 x の初期値を x 0 とすると式(2.2)となる[1] x = k I × e1 × ⊿t + k I × e2 × ⊿t + ⋅ ⋅ ⋅ + k I × en × ⊿t + x0 = k I (e1 + e2 ⋅ ⋅ ⋅ +en ) × ⊿t + x0 n = k I ∑ e i × ⊿t + x0 i =1 6 = k I ∫ edt + x0 ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.2) となる。このように、 I 動作とは、ある時間内の偏差の平均を取る動作のことであると 言える。この偏差の平均をオフセットに加え続けていくことで消去することができる。 そして、式( 2.2 )を式( 2.1 )に代入すると次のように表される。 y = K P × e + k I ∫ edt + x0 ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.3) 式(2.3 )のように P (比例)の偏差に比例ゲインを掛け、偏差の値を小さくする動 作と、I(積分)の偏差 e の値をゼロになるまで積分を行う動作を組み合わせることで、 設定値に出力値を近づけていくことができる。このようにI動作を加えることによって オフセットを取り除くことは可能となるが、I動作のみで制御を行うのではなく、必ず P 動作と I 動作を組み合わせた PI 制御として用いられている。 ここで、図 2-2 に示すように偏差 e1 が加わったとき、 I 制御の出力が P 制御の出力と 同じ値になるまでの時間を積分時間 T1 ( Integral time )、 P 制御の出力を y 1 、 I制御 の出力を y 2 とすると [1] 。 y1 = K p × e1 ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.4) y 2 = K I ∫ e0 dt = K I × e1 × TI ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.5) となる。 図 2-2 より時間 T1 のとき y1 と y 2 の値は同じであることから、 K I は次のようになる。 KI = KP ⋅ ⋅ ⋅ ⋅ ⋅ (2.6) TI 式( 2.6 )を式( 2.3 )に代入し、 K P を用いて PI 制御の式を表すと式( 2.7 )のように なる。 ⎛ ⎞ 1 y = K P ⎜⎜ e + ∫ edt ⎟⎟ + x0 ⋅ ⋅ ⋅ ⋅ ⋅ (2.7) TI ⎝ ⎠ 7 図 2-2 PI 制御の関係 PI 制御において、偏差にステップ状の変化を与えた偏差 e0 の出力の変化を図 2-3 に 示す [1] 。 P 制御の出力は偏差 e0 に比例して増加するため、増加しない偏差 e0 を加えた 場合の出力値は変わらない。これに対し、I制御の出力は偏差 e 0 の時間 T1 内の積分を 行い、オフセットが除去されるまでその値を加え続けるので、出力値は増加する。 図 2-3 ステップ偏差に対する PI 制御の出力 8 2.4 PID 制御(比例 + 積分 + 微分制御) PI 制御は偏差に対して比例、積分の動作を繰り返し行うことで出力値を変化させ、 設定値に近づける働きをするということを前節で述べた。しかし、ここで問題があり、 I動作が出力値を設定値に近づける働きをするためにはある程度の時間が必要となる。 よって、ここにD 制御( Derivative Action : 微分制御)を加えることにより、偏差の微 分に比例して入力値を変化させ、P + I 制御では補えない急激な出力値の変化に対応し、 短時間での対応ができるようになる。これがD制御の働きである。 偏差 e の微分の大きさに比例して出力を変化させていく D 制御の式を、 D 制御の出 力を y D 、微分ゲイン K D を用いて表すと [1] yD = K D de ⋅ ⋅ ⋅ ⋅ ⋅ (2.8) dt となる。ここで、偏差 e の変化していく速度が大きくなるほど、出力 y D の値は大き くなり、偏差 e が時間的に変化していないとき出力 y D の値はゼロとなる。つまり、 D制御では、変化の傾きを得ることができる。また、 D制御も単独ではその役割を果 たさないので、PD 制御または PID 制御として用いられる。式( 2.1 )と式( 2.8 )を用 いてPD制御の関係式を表すと yD = K P × e + K D de ⋅ ⋅ ⋅ ⋅ ⋅ (2.9) dt となる。ここで、 K D を K P を用いて表すために図 2-4 のように P 制御の出力と D 制御 の出力が同じ値となる時間を TD 、偏差の傾きを Z とし、 P 制御の出力 y1 、 D 制御の 出力 y 2 は次式のようになる。 y1 = K P × Z × TD ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.10) y2 = K D × Z ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.11) 図 2-4 より時間 TD のとき y1 と y 2 の値は同じであることから、 K D は次のようになる。 K D = K P × TD ⋅ ⋅ ⋅ ⋅ ⋅ (2.12) 9 式( 2.12 )を式( 2.9 )に代入すると PD 制御の式は次のように表すことができる。 y = K P × e + K P × TD de ⋅ ⋅ ⋅ ⋅ ⋅ (2.13) dt そして、 PD 制御の式に I 動作を加えて表すと式( 2.14 )のようになる。 ⎛ 1 y = K P ⎜⎜ e + TI ⎝ 図 2-4 ∫ edt + TD de ⎞ ⎟ ⋅ ⋅ ⋅ ⋅ ⋅ ( 2.14) dt ⎟⎠ PD 制御の関係 PID 制御と P 制御、 I 制御、 PD制御の関係を表すと図 2-5 となる [1] 。 図 2-5 PID 制御 10 第3章 実験機材の概要 本章では、本研究で使用したそれぞれの機材の概要を述べる。 3.1 AD/DA コンバータ 図 3-1 で示した AD/DA コンバータは一枚で AD 変換と DA 変換の役割をするものを使 用した。4.2節で述べる温度制御では 、サーミスタを用いた 直列 回路からの情報を 取 得する ため 、4.5節で述べる波長制御では、ch.1 とch.2 の信号を取得するためにAD コ ンバータを使用した。また、波長の情報と温度の情報をパソコン内で処理し、処理結 果 を出力するために DA コンバータを用いた。本研究で用いた AD/DA コンバータは図 に示すInterface 社製 PIC - 3523A であり、パソコンの内部に取り付けて使用するボー ド状の製品である。AD コンバータ、 DA コンバータは供に分解能は 12[bit] で、最高サ ンプリング速度は100[kSPS] 、バイポーラ :±10[V] である。その他の性能を付録に示す。 図 3-1 AD/DA コンバータ 11 3.2 サーミスタ サーミスタ( thermistor : thermally sensitive resistor を省略してできた言葉)とは、 半導体の温度が上昇すれば抵抗が下がるという特徴を利用した温度センサであり、自 身の周囲の温度変化に対して抵抗値を変える素子のことである [4] 。サーミスタは、温 度センサとしてエアコン、冷蔵庫などの家電製品や産業機器に用いられている。本研 究では 図 3-2 に示す NTC サーミスタを使用した。温度 25[℃] におけるサーミスタの抵 抗は10[KΩ]である。性能は付録に示す。 図 3-2 3.2.1 サーミスタ サーミスタの種類 サーミスタは NTC( negative temperature coefficient )サーミスタ、 PTC(positive temperature coefficient )サーミスタ、 CTR ( critical temperature resistor )サーミ スタの3 種類がある [4] 。 [a] NTCサーミスタ NTC サーミスタは、 Mn(マンガン)、 Co( コバルト ) 、 Ni( ニッケル ) などの酸化物を 焼結したもので、温度が上昇すると抵抗値が下がる特徴をもつサーミスタである。一 般にサーミスタと呼ばれるものはこのNTCサーミスタのことを意味している。 [b] PTCサーミスタ PTC サーミスタは NTC サーミスタと逆の動作し、温度が上昇すると抵抗値が上が る特徴をもつサーミスタである。 12 [c] CTRサーミスタ CTR サーミスタは特定の温度に達すると抵抗値が急激に減少する特徴をもつサーミ スタである 3.2.2 サーミスタの温度特性 サーミスタの抵抗値を温度変化の関係式を、絶対温度 T1 のときのサーミスタの抵抗 値を R1 、絶対温度 T2 のときのサーミスタの抵抗値 R2 、サーミスタの特性を示す定数 であるサーミスタ定数 B を用いて表すと式(3.1 )のようになる [4] 。 ⎧ ⎛ 1 1 ⎞⎫ R1 = R2 exp⎨ B ⎜⎜ − ⎟⎟ ⎬ ⋅ ⋅ ⋅ ⋅ ⋅ (3.1) ⎩ ⎝ T1 T2 ⎠ ⎭ サーミスタ定数とは、サーミスタの抵抗と温度の変化の関係よりある 2 点より導き 出した抵抗値の変化の大きさを示す定数のことである。このサーミスタ定数は式(3.1) より式(3.2)のように表される。 B= ln R1 − ln R2 ⋅ ⋅ ⋅ ⋅ ⋅ ( 3.2) 1 1 − T1 T2 13 3.3 ペルチェ素子 ペルチェ素子とは、 2 枚の異なる金属板からなる冷却効果を持つ半導体素子のこと である。その2枚の金属板の接合部分に電圧をかけると片側の温度が下がり、もう一 方の温度が上がる。このようにペルチェ素子は、金属板の一方が放熱し、もう一方が 吸熱するというペルチェ効果を利用したものである [6] 。冷蔵庫やエアコンなどの家電 製品、コンピュータの内部などに用いられている。そして、半導体レーザの温度制御 に用いる場合には、半導体レーザに直接触れて放熱と吸熱の動作を繰り返し行うこと により、半導体レーザの温度を一定に保ち、波長を制御する重要な役割をしている。 本研究で使用したペルチェ素子を図 3-3 に示す。性能は付録に示す。 図 3-3 3.3.1 ペルチェ素子 ペルチェ素子の原理 ペルチェ素子はP型とN型の熱電半導体を銅電極に取り付けた 図 3-4 のような構造 になっている [6] 。 N 型からP型方向に電流が流れた場合、上側で吸熱が起こり、外側 で発熱が起こる。P型からN型方向に電流が流れた場合は先ほどとは逆に、下側で吸 熱が起こり、上側で発熱が起こる [7] 。 図 3-4 ペルチェ素子の構造 14 3.4 圧電ブザー 本研究では、 図 3-5 に示す自身で発振回路は持たず外部の発振器から信号を与える ことで音を出力するブザーを使用した。本実験の波長の制御を行う上で必要な波長誤 差検出回路において周波数を指定しなければならなかったので、周波数を自由に変え ることのできる圧電ブザーを使用した。また、FBGに接触する場合には、図 3-6 のよ うに内部の音を発振する部分を取り出して実験を行った。 図 3-5 図 3-6 圧電ブザー 内部を取り出した圧電ブザー 15 3.5 光ファイバブラッググレーティング( FBG ) 光ファイバブラッググレーティング( Fiber Bragg grating : FBG )は、ゲルマニア ( GeO2 )をドープした光ファイバのコアに、紫外光(波長250[nm]前後)を照射し屈 折率を変化させ、光誘起屈折率変化により光ファイバのコアの中に長手方向に周期的 屈折率変化である回折格子を形成し、光フィルタとしての機能を持たせた光ファイバ 型デバイスである。FBGの利点として、回折格子を光ファイバ中に非破壊的に直接形 成できるため、低損失・小型・高信頼性・伝送用光ファイバとの整合性などがある。 図 3-7 に FBG の構造と動作を示す [3] 。図より FBG は光ファイバのコアの中に周期的 な屈折率変化により、特定の波長であるブラッグ波長のみ反射し、反射光として光を 入射した方向から出力する。その他の波長は透過光として光ファイバを通過し出力さ れるという持つ特徴を持つことがわかる。 図 3-7 3.5.1 FBG の構造と動作 光ファイバブラッググレーティングの原理 図 3-7 のような周期的な屈折率変化のある回折格子の構造部分に光を入射すると、 ある一定の波長だけ反射され戻り光として出力される。これをブラッグ波長という。 ここで、ブラッグ波長を λB 、回折格子の周期を Λ 、光ファイバの屈折率を n とする と λB=2nΛ ⋅ ⋅ ⋅ ⋅ ⋅ (3.3) と表される [2] 。本実験では λ B = 1.549 [μm] 、 Λ = 0.53 [μm] 、 n = 1.45 の FBG を使 用した。 16 3.6 光サーキュレータについて 光サーキュレータとは、図 3-8 のように3つのポートを持ち、光を分けることのでき るデバイスである。1つ目のポートは光を入射するものであり、2つ目は入射した光 が透過し出力されるポート、3つ目は戻り光を出力するポートである [2] 。光サーキュ レータは、磁界により光の偏光状態が回転するファラデー効果の原理を用いたものであ る [6] 。本実験では、この光サーキュレータはFBGに光を入射し、その戻り光と透過光 を分けるために使用した。 図 3-8 光サーキュレータ 17 3.7 半導体レーザ 本節では、半導体レーザの発光、発振のしくみについて述べる。そして、半導体レ ーザの例として、ファブリ・ペロー型半導体レーザと本研究で使用したDBF半導体レ ーザについて述べる。 3.7.1 光の発光のしくみ 図 3-9 のように電子の基底状態のエネルギー準位: E1 と、 E1 よりも上にある励起 光準位: E 2 とします。電子は通常であれば、 E1 のところに原子が存在する。 図 3-9 電子の遷移と光の発生の過程 このとき、光子が入射されると以下の式( 3.4 )が成立する [5] 。 hf =| E 2 − E1 | ⋅ ⋅ ⋅ ⋅ ⋅ ( 3.4) ここで、光の周波数を f 、プランク定数 h (=6.6262× 10 −34 [J ・ sec]) とする。 18 式(3.4)を満たすとき、図 3-9 (a)のように電子がエネルギー準位の高い E 2 のとこ ろに存在する場合には、光が入射されなくとも電子がエネルギー準位の低い E1 へ遷移 するときに光子を放出する。これを自然放出という。 また、式( 3.4)を満たす場合に、図 3-9 (b) のように光子が入射されたとき電子があ る確立で光子を吸収し、エネルギー準位 E1 にあった電子がエネルギー準位 E 2 へ遷移 する。これを吸収という。このように電子が低いエネルギー準位から高いエネルギー 準位に上がることを励起またはポンピングという。 図 3-9 ( c )のように高いエネルギー準位に電子が存在する場合に、式( 3.4 )を満 たす光子が入射されると、電子は入射された光子と同じ位相、同じ周波数の光子を放 出し、エネルギー準位 E 2 に遷移する。これを誘導放出という。レーザではこの誘導 放出の原理を利用している [2] 。 3.7.2 レーザの発振の原理 レーザの発振の原理は光の反射による光増幅である。図 3-10 はファブリ・ペロー光 共振器と呼ばれる2枚の鏡を向かい合わせにし、内部に半導体を閉じ込めた光共振器 である [5] 。 図 3-10 ファブリ・ペロー光共振器 19 ファブリ・ペロー光共振器において光が安定して出力されるには、共振器内で出力 の方向に向かう前進する波と、鏡によって反射された出力の方向とは逆に向かう後退 する波によって定在波ができていて、その定在波の節が鏡の位置になければ光は出力 されない。また、このとき光共振器の長さである2枚の鏡の間の距離:Lは、定在波 の節の距離の整数倍(N倍)となっていなくてはならない。ここで、波長の半分の距離 が定在波の節の距離となるので、光共振器内の屈折率をnとすると、式(3.5)と表すこと ができる。 L= 3.7.3 λ 2n N ⋅ ⋅ ⋅ ⋅ ⋅ ( 3.5) ファブリ・ペロー型半導体レーザ 半導体レーザは図 3-11 のように、異なる材料の接合したヘテロ接合を両側に用いた ダブルへテロ(Double Hetero)構造なっている。半導体レーザの材料の例として、活 性層にはGaAs (ガリウム・ヒ素)が用いられ、その両側に AlGaAs (アルミニウム・ ガリウム・ヒ素)が用いられているものがある。ダブルへテロ構造を取ることで活性層 であるGaAs のところに電子を閉じ込めることができ、 GaAs と AlGaAs が光導波路で のコアとクラッドの関係となり活性層に光を閉じ込めることができる。この電子と光 を活性層に閉じ込めるという動作を行うことで光を発振することができる。また、こ のとき半導体レーザは前節で説明したファブリ・ペロー共振器の原理を用いて光を増 幅する。これがファブリ・ペロー型半導体レーザであり、その構造を図 3-12 に示す [2] 。 図 3-11 ダブルへテロ構造 20 図 3-12 3.7.4 ファブリ・ペロー型半導体レーザの構造 DFB 半導体レーザ 前節で説明したファブリ・ペロー型半導体レーザは、多モード発振を行う半導体レ ーザである。しかし、大容量光ファイバ通信を行うためには半導体レーザは単一モー ド発振でなければならない。そのため、光ファイバ通信には図 3-13 に示す単一モード 発振が可能な分布帰還型(Distributed FeedBack:DFB)半導体レーザが用いられてい る。DFB半導体レーザはに示すように活性層の近くに周期的な屈折率変化の構造を持 ち、これが回折格子の役割を果たす。この回折格子によりブラッグ波長のみ反射され て、内部で光が増幅されて出力されることにより、安定した単一モード発振を行うこ とが可能となる [2] 。 図 3-13 DFB 半導体レーザの構造 図 3-13 に 示す半導体レーザの長さ L が温度変化により増減する。 3.7.2 節で 述べ た ようにLが定在波の節の距離の整数倍となっていなければ、光は発振できない。この ため、常に安定した状態で通信を行うためには、半導体レーザの温度と安定させ、L を常に一定の長さに保っていなければならない。 21 第4章 波長安定化システムの構成 本章では、波長安定化システムの全体構成について述べる。そして、温度制御と波 長制御のそれぞれの原理・構成について述べる。 4.1 波長安定化システム全体の構成 図 4-1 は波長安定化システム全体構成を示す。温度検出回路は、サーミスタを用 いて半導体レーザの温度を検出する。この温度検出回路と、サーミスタ、PID制御、 ペルチェ素子を用いて温度制御を行う。波長誤差検出回路は、半導体レーザの設定す べき波長からの誤差を検出する。この波長検出回路、PID制御、ペルチェ素子を用い て波長制御を行う。これら温度制御と波長制御を組み合わせて行うことで半導体レーザ の温度と波長を一定に保つことができる。それぞれの制御の原理・構成については以 下で述べる。 図 4-1 波長安定化システム全体構成図 22 4.2 温度制御 の原理・構成 温度制御の 構成を図 4-2 に示す。温度制御は、サーミスタを用いた温度検出回路、 PID制御、ペルチェ素子から構成されている。 図 4-2 温度制御 の構成図 図 4-2に示すサーミスタと抵抗 (10[KΩ]) の直列回路が温度検出回路である。この回路 により、サーミスタの抵抗値変化に伴う、抵抗の電圧変化である偏差が検出できる。 ここでの偏差は、目標とする抵抗の電圧から測定した抵抗の電圧を引いた値を指す。ま た、電源電圧を V 0 、電流を I 、サーミスタの電圧を V E 、抵抗 値を RE とし、抵抗の 電圧を V 、抵抗値を R と して、電源電圧 V0 を電流 I と抵抗 RE 、 R を用いて表すと 式 ( 4.1 ) 、(4.2)とな る。 V0 = V E + V = I (R E + R ) ⋅ ⋅ ⋅ ⋅ ⋅ ( 4.1) I = V0 ⋅ ⋅ ⋅ ⋅ ⋅ ( 4.2) RE + R 23 式(4.1)、(4.2)より 電圧 V は式( 4.3 ) となる。 V = IR = V0 R ⋅ ⋅ ⋅ ⋅ ⋅ (4.3) RE + R 先ほど述べた偏差をもとにPID制御の比例、積分、微分のそれぞれの動作を行い、そ の結果をペルチェ素子に渡し、半導体レーザの温度を一定に保つ。これが温度制御の 原理である。 PID 制御のそれぞれの働きについて述べる。比例動作では、まず目標温度にするた めに必要な抵抗の電圧 V をサーミスタの温度特性の式( 3.2 )より求める。次に、その 目標とする抵抗の電圧 V と現在の抵抗の電圧 V との差である偏差を求める。そして、 その偏差を増幅して出力する動作を行った。積分とは、決められた区間の平均を取る ことなので、自らで決めた回数だけ電圧値 V を取得し、その平均を求めることで積分 動作を行った。微分とは出力電圧の変化の傾きを得る動作なので、自ら設定した時間 内において出力電圧がどれだけ増減したかを考え、それより傾きを求めた。これらの 動作を組み合わせてPID制御とした。 図 4-2 に示したサーミスタとペルチェ素子は、本来、 図 4-3のように半導体レーザの 内部に組み込まれている [2] 。 図 4-3 半導体レーザの構造 24 そこで、内部に組み込まれた素子を用いて温度制御を試す前に、サーミスタとペルチ ェ素子のみを用いて、サーミスタの温度制御を行った。その際、サーミスタとペルチェ 素子は図 4-4 のように配置した。 図 4-4 サーミスタとペルチェ素子の配置 本研究では、温度制御の制度の目標を±0.1[℃]以内とした。その場合における電圧 V の電圧変化を取得するために必要な AD/DA コンバータの分解能を次のように求めた。 式(3.1)より、 ⎧ ⎛ T − T2 R1 = R 2 ⋅ exp ⎨ B ⎜⎜ 1 ⎩ ⎝ T1 ⋅ T 2 ⎞⎫ ⎟⎟ ⎬ ⋅ ⋅ ⋅ ⋅ ⋅ (4.4) ⎠⎭ とできる。AD/DA コンバータのステップ幅: ΔV AD は次式より求めることができる。 ΔV AD = V AD ⋅ ⋅ ⋅ ⋅ ⋅ (4.5) 2n −1 ここで、 V AD [V]は最大入力レンジ、 n [bit]は量子化ビット数とする。 25 また、温度が変化したときの電圧変化量を ΔV とすると、ステップ幅との関係は次式と ならなければならない。 ΔV > V AD ⋅ ⋅ ⋅ ⋅ ⋅ (4.6) 式(4.6)となることで、温度が変化したときの電圧変化を AD/DA コンバータで取得する ことができる。 また、式(4.6)より、 ⎛V ⎞ log ⎜ AD + 1 ⎟ ⎝ ΔV ⎠ ⋅⋅⋅⋅⋅ n> (4.7) log 2 式(4.7)と表すことができる。これより、必要な量子化ビット数を求めることができる。 ここで、温度が 25[℃]から 0.1[℃]変化した時の分解能を求める。R2 =10[KΩ]、B = 3555、T1 =25.1+273=298.1、T2 =25+273=298 とすると、式(4.4)より R1 =10.04[K Ω]となる。 V 0 =10[V]、 RE = R1 = 10.04[KΩ]の場合の電圧 V を V1 とすると、式(4.3) より V1 =4.99[V]となる。 V 0 =10[V]、 RE = R2 = 10[KΩ]の場合の電圧 V を V2 とする と、 V2 =5.0[V]となる。よって、温度が 0.1[℃]変化したときの電圧変化量 ΔV は、 ΔV = | V1 − V2 |=9.98×10^-3[V]となる。最大入力レンジは 20[V]のものを用いるので、 V AD =20[V]とすると、式(4.7)より n >10.97 となる。これより、分解能は整数なので、 必要な分解能は 11[bit]以上であることがわかる。しかし、分解能を 11[bit]とした場合、 ΔV AD =9.77×10^-3[V]となり、ステップ幅と電圧変化量の値が近いので、分解能を上 げる必要がある。よって、本研究では、分解能が 12[bit]の AD/DA コンバータを使用し た。 26 4.3 波長誤差検出 回路を製作する際に試したこと 波長制御を構成する波長誤差検出回路において、当初は発振器からの信号を直接半 導体レーザに入れて変調を行っていたが、発振器による強度変調がかかり過ぎてしま い、出力信号が読み取れなかった。そこで、この問題を解決するために次のことを試 した。 [1] ブラッグ波長の幅を急峻にする フィルタをかけることで光ファイバグレーティングのブラッグ波長の幅を狭くしよ うと考えた。しかし、ブラッグ波長を急峻にすると、レーザの波長をブラッグ波長に合 わせることが難しくなることから今回は採用しなかった。 [2] 半導体レーザを外部の位相変調器(LN変調器)で位相変調を行う 位相変調器は高価であり、実験の回路が複雑になることから今回は採用しなかった。 [3] ブラッグ波長を動かす 光ファイバグレーティングに圧電ブザーを当て、一定の振動を与えることでブラッ グ波長を移動させる。実験系もそれほど変更することなく、簡単に半導体レーザの波 長の変化を検出することができたので、今回はこの方法を取り入れた。 27 4.4 波長制御 の原理 波長制御の原理について述べる。図 4-5 のように発振器を用いて光フィルタを振動させ、 半導体レーザからの信号に変調をかけた。発振器の信号を Cosωt とすると、半導体レ ーザの波長が 中心 波長より短 い 場合は、発振器の信号と逆相となり赤で囲んだ − Cosωt として出力される。そして、 発振器の信号である Cosωt と、光フィルタを 通過して出力されたの − Cosωt を掛け算、積分する ことで偏差を求めることができる。 また、同じように長波長側の場合の偏差を求めると波長と偏差信号の関係は 図 4-5 の ようになる。このように、光フィルタの中心波長の左右では、偏差の極性が変化する ことがわかる。これにより、半導体レーザの波長が光フィルタの中心波長からずれた ことを判別でき る 。波長制御は、図 4-5 に示す波長引込み範囲内でのみ制御が行える。 範囲外では、半導体レーザからの信号がないため、偏差がゼロとなり制御は行えない。 図 4-5 振動を受けたFBG の反射特性と 偏差の極性変化 28 4.5 波長制御 の構成 波長制御の構成を 図 4-6に示す。本研究では、先ほど述べた光フィルタには 図 4-6に 示すように、FBGを用いた。また、FBGに変調を与えるために圧電ブザーを用いた。 波長誤差検出回路では、発振器からの信号を 2 つに分け、一方を ch.1 とし、もう一方は、 圧電ブザーに接続し、図 4-7 のように圧電ブザーが FBG のグレーティング部分に直接触れ るように設置し て 波長基準として用いる FBG の変調に用いた。安定化するレーザの光を FBG に入射し、戻り光を受光した信号を ch.2 とした。この 2 つの信号を掛け合わせて、平 均化し、目標とする信号と測定した信号の位相差である偏差を求め、PID制御を行う。こ れが波長制御の原理である。 そして、波長制御におけるPID制御は、4.2 節で述べた温度制御を行う場合の PID 制御 の場合と同じように、比例動作では、先ほど述べた偏差に比例ゲインを与えて増幅する 動作を行った。積分動作では、自らで決めた回数だけ偏差を取得し、その平均を求め ることで積分とした。微分動作では、自ら設定した時間内において偏差がどれだけ増 減したかを考え、その変化量を傾きとした。 図 4-6 波長制御の構成 29 図 4-7 4.6 FBG のグレーティング部分に圧電ブザーを当てた状態 波長安定化の手順 これまで述べた波長安定化システムの手順について述べる。波長安定化を行うには、 まず、温度制御により、波長制御が行える波長引き込み範囲内に半導体レーザの波長を 設定する。その後、波長制御により、半導体レーザの温度を FBG のブラッグ波長 に安定させる。波長制御を行うには、温度制御を用いて半導体レーザの波長をブラッグ 波長付近の波長に設定する必要がある。 30 第5章 実験結果 本章では、サーミスタ、ペルチェ素子、半導体レーザ、FBGについて実験を行った 結果について述べる。また、温度制御、波長制御において比例ゲインを変化させた場合 どのような変化があるかについて述べる。また、波長安定化システムの制御範囲につい て述べる。そして、温度制御と波長制御を組み合わせた波長安定化システムの測定結果 について述べる。 5.1 サーミスタの抵抗値と温度の関係 測定より求めた温度変化に対するサーミスタの抵抗値の変化を 図 5-1 に示す。これ より、サーミスタの抵抗値は温度が上昇すれば減少し、温度が低下すれば増加するこ とがわかる。このように、サーミスタの抵抗値より温度を求めることができる。サー ミスタはこの特徴を活かして、温度センサとして広く用いられている。近似線よりサ ーミスタ定数を求めると、B=3750[K]となった。 図 5-1 温度変化におけるサーミタの抵抗値の変化 31 5.2 ペルチェ素子の電圧に対する電流変化 測定より求めたペルチェ素子の電圧変化に対する電流変化を 図 5-2 に示す。これよ り、ペルチェ素子は電圧に比例して電流が増加していくことがわかる。電圧が 1[V]上 がると、電流は約 164[mA]上がる。 図 5-2 ペルチェ素子の電圧に対する電流変化 32 5.3 半導体レーザの電流変化に伴う光パワーの変化 図 5-3 は、半導体レーザの温度を 20[℃]と 30[℃]の場合の 半導体レーザの電流変化 に伴い、出力光パワーがどのように変化するかを示したものである。20[℃]と 30[℃] の場合を比べたとき、半導体レーザの温度が低い方が、光パワーが強いことがわかる。 半導体レーザの温度が 20[℃]の とき、電流が 1[mA]上昇する と、 光 パワーは約0.04 [mW]上昇し た。 半導体レーザの温度が 30[℃]の とき、電流が 1[mA]上昇する と、光 パワーは約 0.03 [mW]上昇し た。 0.7 レーザのパワー(温度20[℃]) 0.6 レーザのパワー(温度30[℃]) 光パワー[mW] 0.5 0.4 0.3 0.2 0.1 0 -0.1 0 5 10 15 20 電流[mA] 図 5-3 半導体レーザの電流変化に伴うパワーの変化 33 25 5.4 半導体レーザの波長と温度の関係 半導体レーザに加える電流を 15[mA] に固定し、既存の温度コントローラを用いて、 温度変化による半導体レーザの波長変化の測定結果を 図 5-4 に示す。このとき、温度 が1[℃] 上昇すると、半導体レーザの波長は 約 0.082[nm] だけ長波長側にシフトした。 図 5-4 半導体レーザの波長と温度の関係 34 5.5 半導体レーザの波長と電流の関係 半導体レーザの温度を既存の温度コントローラによって 20[℃] に固定し、電流を変 化させたとき半導体レーザの波長変化の測定結果を 図 5-5 に示す。このとき、電流が 1[mA] 上昇すると、半導体レーザの波長は 約 4.8[pm] だけ長波長側にシフトした。 図 5-5 波長と電流の関係 35 光ファイバブラッググレーティングの反射特性 5.6 図 5-6 に 本実験で使用したブラッグ波長が 1549[nm] のFBGが圧電ブザーによる振 動を受けた場合の反射特性を示す。 振動していない場合 と振動している場合のFBG の 反射特性と比べたとき、大きな変化は見られなかった。これは、圧電ブザーの振動により ブラッグ波長が振れた幅が、スペクトルアナライザの分解能の 0.1[nm]以下であったためだ と考えられる。FBGの半値全幅は、約±0.2[nm]であった。反射特性の 測定 はSLD を使用 して行った。SLDは広範囲の波長を発振する光源である。 5 0 振動させたFBGの戻り光 -5 反射率[dB] -10 -15 -20 -25 -30 -35 -40 1548 1548.2 1548.4 図 5-6 1548.6 1548.8 波長[nm] 1549 1549.2 FBGを振動させた場合 の反射特性 36 1549.4 5.7 温度制御における比例ゲインの変化 図 5-7 に温度制御にお いてPID 制御の比例ゲインを変化させた場合、どのような違 いがあるのかを示す。このとき目標とする温度は31[℃]とした。比例ゲインが2、4、 6 のときを比べたとき、 2 の場合が 偏差の変動が最も少なく、6 の場合が偏差の変動が 最も大きい 。 ここで、比例ゲイン 2 の場合 と 4 の場合 を比べたとき、4 の場合は変動が 大きいが、偏差が2 の場合に比べて目標とした温度である 31[℃] に早く収束しているこ とがわかる 。よって、比例ゲインは 4 のほうがよいと考えた。また、 比例ゲイン 4 の場 合と6 の場合を比べたとき、 6 の場合のほうが偏差の変動が大きくなっている。しかし、 目標の温度に収束していく時間に違いはほとんどない。測定を始めるときの半導体レ ーザの温度と目標の温度に差があるとそれだけ出力が大きくなってしまう。よって、 比例ゲインが4の場合のほうが6と比べて出力の変動が小さく、設定できる目標の温 度の範囲が広くなるので、比例ゲインは4とした。 33 比例ゲイン2 比例ゲイン4 比例ゲイン6 32.5 32 温度[℃] 31.5 31 30.5 30 29.5 29 0 5 10 15 20 25 時間[秒] 図 5-7 比例ゲイン2 、4、6 を比べた場合 37 30 35 5.8 波長制御における比例ゲインの変化 波長制御を行うために用いた PID 制御の比例ゲインを変えたさせた場合の変化を 図 5-8 に示す。比例ゲインを 40 から 80 に変えたとき、縦の振れ幅にそれほど違いは見ら れなかった。よって、比例ゲインは 60 とした。 本研究において、 式( 2.14 ) に示すPID制御の成分である 積分時間 T1 は偏差の取得件 数と同じにした。また、微分時間 TD は毎回 2 件の偏差において微分を行ったので TD = 1 と考えPID制御を行った。 図 5-8 比例ゲイン 40 と 60 を比べた場合 38 5.9 波長安定化システムの制御範囲 図 5-9 は FBGの反射特性と 波長誤差検出回路における偏差の波長依存性の関係を 示したものである。 図 5-9 に示す制御を行える波長引込み範囲内では、偏差に極性が 見られる。これより、ブラッグ波長の左右で偏差の極性が変わることがわか る 。 図 5-9 に示す①は、半導体レーザの温度が FBGの ブラッグ波長となる温度よりも低い状 態なので、ペルチェ素子に半導体レーザを温める動作をさせる。また、②は、半導体 レーザの温度がブラッグ波長となる温度よりも高い状態なので、ペルチェ素子に半導 体レーザを冷やす動作をさせる。ブラッグ波長約±0.2[nm]以内で引込みが可能で あ る。しかし、温度制御による目標温度の設定をこの範囲外とすると、偏差がゼロとな り制御を行うことができない。 図 5-9 FBGの反射特性と波長安定化システムの制御範囲 39 5.10 温度制御と波長制御を同時に行った結果 目標温度を 29、31、33[℃] と設定して温度制御を行った後に、波長制御を行った結果を図 5-10 に示す。まず、温度制御によりそれぞれの設定温度に収束し、次に、波長制御により、 半導体レーザが FBG のブラッグ波長を発振できる温度に落ち着いていることがわかる。こ こで、図 5-4より、半導体レーザの温度が 30.7[℃]の波長は約 1548.78[nm]となる。ま た、図 5-6より、波長が 1548.78[nm]付近の場合ブラッグ波長となるので、ブラッグ波 長の範囲内で波長制御が行われていることがわかる。 製作した温度制御の精度は、約± 0.05[℃](500MHz) で、波長制御の精度は、約± 3pm[300MHz]であった。本研究では、波長制御の目標精度を±1[pm](100MHz)とした が、目標まで達しなかった。これは、サーミスタの分解能が低いため測定精度が上がら なかったと考えられる。よって、測定精度を上げるには、サーミスタからの信号を増幅 し、分解能を上げる必要がある。 図 5-10 温度制御と波長制御を同時に行った結果 40 第6章 まとめ 本研究では、温度変化に伴い、発振信号の波長が変化してしまう半導体レーザの温 度と波長を制御することで、波長を安定させるシステムの製作に取り組んだ。温度制 御では、半導体レーザの内部に取り付けられているサーミスタを用いることで半導体 レーザの温度情報を得て、それをもとにPID 制御を行った。波長制御では、 FBG を用 いることで、半導体レーザの温度変化に伴う波長誤差の情報を得ることができ、それ をもとにPID制御を行った。この結果をペルチェ素子に渡し、半導体レーザの温度を 操作することで、波長を一定に保つことができた。そして、2つの制御を組み合わせ ることで、半導体レーザを温度と波長の面から制御することができ、波長安定化シス テムを製作することができた。 本研究で製作したシステムにおける温度制御の精度は約±0.05[℃](500MHz)であった ので、目標であった±0.1[℃]以内に制御することができた。また、波長制御の精度は約 ±3[pm](300MHz)であり、目標の±1[pm](100MHz)以内の精度は実現できなかった。 これは、サーミスタの分解能が低いため測定精度が上がらなかったと考えられる。よっ て、現在以上の制度を実現するためには、サーミスタからの信号を増幅して、分解能を 上げる必要がある。 41 謝辞 本研究に取り組むに際して、常日頃から高知工科大学工学部電子・光システム工学科 岩下克教授には、多大なるご指導と助言を頂き深く感謝致します。 また、岩下研究室の先輩方である中島公亮氏、島村卓嗣氏、多岐勝彦氏、恒安宏一氏 にも多くのご指導をして頂き深く感謝しております。 そして、日頃から意見を交わしてきた岩下研究室の井上優人、木岡裕一郎、後藤智史、 塩見勝樹、中妻宏太、速水佑治氏には本研究に取り組む際にさまざまな助言をして頂 き深く感謝しております。 2007 年 2 月 山本 翔太 42 参考文献 [1] 広井 和男、宮田 朗、 “PID 制御 / ディジタル制御技術を基礎から学ぶ、シミュレー ションで学ぶ自動制御技術入門” 、 CQ 出版社 [2] 山下 真司、 “ 光ファイバ通信のしくみがわかる本 ” 、技術評論社 [3] 日立電線株式会社ホームページ http://www.hitachi-cable.co.jp/sensor/FBG.stm [4] 雨宮 好文、 “ センサ入門 ” 、オーム社 [5] 末松 安晴、伊賀 健一、 “ 光ファイバ通信入門 ” 、オーム社 [6] 森本 晃弘、中野 吉信、 “ ペルチェ素子の使い方とその駆動回路、トランジスタ技術 (2003 月 11 号) ” 、 CQ 出版 [7] 日本テクモ ペルチェ素子原理・使い方のページ http://www.n-tecmo.co.jp/custama/per_gen.htm 43 付録 1. 使用した機材の性能 (1) AD/DA コンバータ 図 . 1 実験に用いた AD/DA コンバータ 表1 AD コンバータの仕様 44 表 2 DAコンバータの仕様 (2) サーミスタ 図 . 2 実験に用いたサーミスタ 表3 サーミスタの仕様 45 (3) ペルチェ素子 図. 3 実験に用いたペルチェ素子 表4 ペルチェ素子の仕様 46 (4) 圧電ブザー 図. 4 実験に用いた圧電ブザー 表5 圧電ブザーの仕様 47 2. 波長安定化システムプログラム 波長安定化システムプログラムのフロ-チャートを図. 5に示す。 図. 5 波長安定化システムプログラムのフローチャート 以下に波長安定化システムプログラムを示す。 '************************************ 全体での宣言 ****************************** Dim SmplChInf As ADSMPLCHREQ 'ADSMPLCHREQ 構造体 Dim SmpData(4096) As Integer 'AD からの入力値 Dim PID As Double 'PID 動作の出力 Dim PIDA As Integer 'DA からの出力値 Dim PIDAbox(1024) As Double '出力を表示するための数値をためる配列 Dim dwLength As Long ' データ数 Dim a, j As Long ' 繰り返し用変数 48 Dim nResolution As Long ' 分解能 '*******************************温度制御での宣言********************************* Dim siguma As Double '電圧の総和 Dim szDisp(1024) As Double 'サンプリングした値を電圧変換した値 Dim ondosekibun As Double '積分動作 Dim ondohirei(1024) As Double '比例動作 Dim Box(1024) As Double '平均を取るために値をためる配列 Dim ondosmp As Integer '温度を取得して判定 Dim ondoDisp As Double '温度を取得してサンプリングして値を電圧変換した値 Dim n As Integer '平均を計算するときに用いる値 Dim kosu As Integer 'ループの回数 Dim nCount As Integer 'プログラムすべてのループの値 Dim v As Double '設定値の電圧 Dim V0 As Double '微分のときに用いる値 Dim VE(1024) As Double 'サーミスタの電圧 Dim Logn(1024) As Double 'サーミスタの温度特性の式に用いる配列 Dim B As Double 'サーミスタ定数 Dim T1 As Double 'R1 のときの温度 Dim T2 As Double '設定したい温度 Dim seteiT As Double '設定したい温度の絶対値 Dim sokuteiT(1024) As Double 'サーミスタの抵抗から測定した温度 Dim R1 As Double 'T1 のときの抵抗値 Dim R2 As Double '目標とする抵抗値 Dim RE(1024) As Double 'サーミスタの抵抗値 Dim ondoGain As Integer '温度の比例ゲイン '***************************** 波 長 制 御 で の 宣 言 ************************** Dim hatyoSmpData(4096) As Integer 'AD からの入力値 Dim hatyohirei(1024) As Double '比例動作 Dim Siguma1 As Double '平均を計算するための変数 Dim Siguma2 As Double '電圧の総和 Dim Kakezan(1024) As Double '2つの信号の掛け算を入れる変数 Dim SmpData2 As Double 'データ格納用変数 2 Dim hatyosekibun As Double '積分動作 49 Dim Box1(1024) As Double '平均を取るために値をためる配列 1 Dim Box2(1024) As Double '平均を取るために値をためる配列 2 Dim i As Integer 'ループの値 Dim Y As Integer '温度の平均取得のためのループの値 Dim X As Integer '波長の平均取得のためのループの値 Dim Z As Integer '一番大きいのループの値 Dim hatyoGain As Integer '波長の比例ゲイン Dim nCount2 As Integer 'プログラムすべてのループの値 Dim HsokuteiT(1024) As Double '波長制御におけるサーミスタの抵抗から測 定した温度 Dim HVE(1024) As Double '波長制御におけるサーミスタの電圧 Dim HRE(1024) As Double '波長制御におけるサーミスタの抵抗値 Dim HLogn(1024) As Double '波長制御におけるサーミスタの温度特 性の式に用いる値 Dim HszDisp(1024) As Double '波長制御におけるサンプリングした値 を電圧変換した値 Dim hatyon As Integer '波長制御において平均を求めるための値 Dim hatyokosu As Integer '波長制御のループの回数 '******************************************************************************* nResolution = 2 ^ gInfoAD.ulResolution - 1 'ボード情報取得 StopSmp = True Dim Flag1 As Boolean '温度において kosu 回目まで終了したら Ture Flag1 = False Dim Flag2 As Boolean 'V0 に値が入れば Ture Flag2 = False Dim Flag3 As Boolean '温度において kosu 回目まで終了したら Ture Flag3 = False Dim Flag4 As Boolean '初期化終了なら Ture Flag4 = False Dim Flag5 As Boolean '初期化終了したら Ture Flag5 = False 50 '********************** 温 度 制 御 に お け る 条 件 設 定 ********************* n = 1024 '件数 kosu = 1024 '件数 Y=0 'Y の初期値 siguma = 0 '温度制御のシグマの初期値 j=0 'j の初期値 ondoGain = 4 '温度制御の増幅率 hatyoGain = 60 '波長制御の増幅率 Siguma1 = 0 '波長制御のシグマの初期値 '***************************** 温 度 制 御 ******************************* 'R1、T2 の値 R1 = 10 T1 = 298 'サーミスタ定数 B = 3555 '設定したい温度を決める(設定したい温度+絶対温度) T2 = InputBox("ここに目標とする温度を入力してください") If T2 > 35 Or T2 < 20 Then MsgBox ("Out of range T") Exit Sub Else seteiT = T2 + 273 End If '抵抗 R2 R2 = R1 * 2.7183 ^ ((B / seteiT) - (B / T1)) '抵抗の目標電圧を決める(電源 10V) v = (10 * 10) / (R2 + 10) 51 MsgBox "目標電圧は" & v & "V です。" ' サンプリング条件設定 gConfigAD.ulChCount = 1 gConfigAD.SmplChReq(0).ulChNo = 3 gConfigAD.SmplChReq(0).ulRange = AD_10V gConfigAD.fSmplFreq = 10000 gConfigAD.ulSmplNum = 1024 gConfigAD.ulTrigMode = AD_ETERNITY nRetAD = AdSetSamplingConfig(hDeviceHandleAD, gConfigAD) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリング条件設定に失敗しました 1" + Hex(nRetAD) Exit Sub End If ' サンプリングデータを取得します dwLength = 1024 ' 連続サンプリングを開始します nRetAD = AdStartSampling(hDeviceHandleAD, FLAG_ASYNC) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリングに失敗しました" + Hex(nRetAD) Exit Sub End If 'DA ボードの出力チャンネル ConfigDA.ulChNo = 2 ConfigDA.ulRange = DA_10V '制御開始時間の表示 Label1.Caption = Format$(Time, "制御開始時間" + Chr(13) + " AM/PMhh 時 mm 分 ss 秒") 'AM/PM,時,分,秒 'ここから温度制御のループ For Z = 0 To 1 52 If Flag5 = False Then For nCount = 0 To 500 If Flag1 = False Then 'Flag1 を False にする 'kosu 回目までの AD サンプリング 'サンプリング時間を与える For a = 0 To 10000000 Next a nRetAD = AdGetSamplingData(hDeviceHandleAD, SmpData(0), dwLength) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリングデータ取得に失敗しました 1" + Hex(nRetAD) Exit Sub End If For Y = 0 To kosu - 1 '抵抗の電圧を取得する szDisp(Y) = Format((20 / 4095) * SmpData(Y) - 10, "#0.00000") '偏差を求める動作 1 ondohirei(Y) = szDisp(Y) - v '積分の計算を行う Box(Y) = ondohirei(Y) If Y = kosu - 1 Then For i = 0 To kosu - 1 siguma = siguma + Box(i) Next i ondosekibun = siguma / n If Flag2 = True Then 'PID 動作 PID = ondoGain * (ondohirei(Y) + (ondosekibun / n) + (szDisp(Y) - V0)) 53 V0 = szDisp(Y) 'DA 出力 PIDA = (PID + 10) * (4095 / 20) '出力が 4096 以上 0 以下になれば停止 If PIDA > 4096 Or PIDA < 0 Then PIDA = 0 MsgBox ("Out of range1-1") Exit Sub End If nRetDA = DaOutputDA(hDeviceHandleDA, 1, ConfigDA, PIDA) If nRetDA <> DA_ERROR_SUCCESS Then MsgBox "アナログ出力に失敗しました" + Hex(nRetDA) End If End If End If '微分の計算のために szDisp(Y)を V0 に入れる If Flag2 = False Then V0 = szDisp(Y) Flag2 = True End If Next Y Flag1 = True End If 'kosu+1 回目からの AD サンプリング 'サンプリング時間を与える For a = 0 To 10000000 54 Next a nRetAD = AdGetSamplingData(hDeviceHandleAD, SmpData(0), dwLength) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリングデータ取得に失敗しました 2" + Hex(nRetAD) Exit Sub End If For Y = 0 To kosu - 1 ''抵抗の電圧を取得する szDisp(Y) = Format((20 / 4096) * SmpData(Y) - 10, "#0.00000") '偏差を求める動作 2 ondohirei(Y) = szDisp(Y) - v '温度確認ための計算 VE(Y) = 10 - szDisp(Y) RE(Y) = (VE(Y) * 10) / (10 - VE(Y)) Logn(Y) = Log(RE(Y) / R1) sokuteiT(Y) = (B / (Logn(Y) + B / T1)) - 273 '積分の計算を行う Box(Y) = ondohirei(Y) siguma = siguma + Box(Y) ondosekibun = siguma / n 'PID 動作 PID = ondoGain * (ondohirei(Y) + (ondosekibun / n) + (szDisp(Y) - V0)) V0 = szDisp(Y) 'szDisp の値を V0 に入れる 'DA 出力 PIDA = Format((PID + 10) * (4096 / 20), "#0") PIDAbox(Y) = PIDA '出力が 4096 以上 0 以下になれば停止 If PIDA > 4096 Or PIDA < 0 Then 55 PIDA = 0 MsgBox ("Out of range1-2") Exit Sub End If nRetDA = DaOutputDA(hDeviceHandleDA, 1, ConfigDA, PIDA) If nRetDA <> DA_ERROR_SUCCESS Then MsgBox "アナログ出力に失敗しました 1" + Hex(nRetDA) End If Next Y hairetu(nCount) = sokuteiT(nCount) '温度制御のファイル出力 Next nCount nRetAD = AdStopSampling(hDeviceHandleAD) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリング終了に失敗しました 1" + Hex(nRetAD) Exit Sub End If End If 'Flag5 の End If If Flag4 = False Then '温度制御終了時間の表示 Label3.Caption = Format$(Time, "温度制御終了時間" + Chr(13) + " AM/PMhh 時 mm 分 ss 秒") End If '****************************** 波 長 制 御 ' サンプリング条件設定 gConfigAD.ulChCount = 3 gConfigAD.SmplChReq(0).ulChNo = 1 gConfigAD.SmplChReq(1).ulChNo = 2 56 ******************************* gConfigAD.SmplChReq(2).ulChNo = 3 gConfigAD.SmplChReq(0).ulRange = AD_10V gConfigAD.SmplChReq(1).ulRange = AD_10V gConfigAD.SmplChReq(2).ulRange = AD_10V gConfigAD.fSmplFreq = 5000 gConfigAD.ulSmplNum = 1024 gConfigAD.ulTrigMode = AD_ETERNITY nRetAD = AdSetSamplingConfig(hDeviceHandleAD, gConfigAD) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリング条件設定に失敗しました 1" + Hex(nRetAD) Exit Sub End If ' 連続サンプリングを開始(同期) nRetAD = AdStartSampling(hDeviceHandleAD, FLAG_ASYNC) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリングに失敗しました" + Hex(nRetAD) Exit Sub End If hatyon = 1024 'nの件数 hatyokosu = 1024 'kosu の件数 dwLength = 1024 '取得件数 'DA ボードの出力チャンネル ConfigDA.ulChNo = 2 ConfigDA.ulRange = DA_10V For nCount2 = 0 To 200 If Flag3 = False Then 'Flag3 を False にする 'hatyokosu 回目までの AD サンプリング 'サンプリング時間を与える For a = 0 To 10000000 57 Next a nRetAD = AdGetSamplingData(hDeviceHandleAD, SmpData(0), dwLength) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリングデータ取得に失敗しました 1" + Hex(nRetAD) Exit Sub End If For X = 0 To hatyokosu - 1 '位相差を求める動作 1 Kakezan(X) = ((SmpData(X * 3) - 2048) / 4096) * ((SmpData(X * 3 + 1) - 2048) / 4096) If Kakezan(X) > (1 / 2) Or Kakezan(X) < (-1 / 2) Then Kakezan(X) = 0 MsgBox ("Out of range1") Exit Sub End If Box1(X) = Kakezan(X) Siguma1 = 0 If X = kosu - 1 Then For i = 0 To hatyokosu - 2 Siguma1 = Siguma1 + Box1(i) '平均を取るために Kakezan(X)をためる Next i SmpData2 = Siguma1 / hatyon '位相差の平均を取ることで偏差を求める End If '比例動作1 hatyohirei(X) = SmpData2 '積分の計算 Box2(X) = SmpData2 If X = kosu - 1 Then For i = 0 To hatyokosu - 1 Siguma2 = Siguma2 + Box2(i) Next i 58 hatyosekibun = Siguma2 / hatyon 'PID 動作 PID = hatyoGain * (hatyohirei(X) + (hatyosekibun / hatyon) + SmpData2) End If PIDA = (PID + 10) * (4095 / 20) '出力が 4096 以上 0 以下になれば停止 If PIDA > 4096 Or PIDA < 0 Then PIDA = 0 MsgBox ("Out of range2-1") Exit Sub End If nRetDA = DaOutputDA(hDeviceHandleDA, 1, ConfigDA, PIDA) If nRetDA <> DA_ERROR_SUCCESS Then MsgBox "アナログ出力に失敗しました1" + Hex(nRetDA) End If Next X Flag3 = True End If 'hatyokosu+1 回目 AD サンプリング 'サンプリング時間を与える For a = 0 To 10000000 Next a nRetAD = AdGetSamplingData(hDeviceHandleAD, SmpData(0), dwLength) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリングデータ取得に失敗しました 2" + Hex(nRetAD) 59 Exit Sub End If For X = 0 To hatyokosu - 1 '温度を求めるための計算 HszDisp(X) = Format((20 / 4095) * SmpData(X * 3 + 2) - 10, "#0.00000") HVE(X) = 10 - HszDisp(X) HRE(X) = (HVE(X) * 10) / (10 - HVE(X)) HLogn(X) = Log(HRE(X) / R1) HsokuteiT(X) = (B / (HLogn(X) + B / T1)) - 273 '位相差を求める動作 2 Kakezan(X) = ((SmpData(3 * X) - 2048) / 4096) * ((SmpData(3 * X + 1) - 2048) / 4096) If Kakezan(X) > (1 / 2) Or Kakezan(X) < (-1 / 2) Then Kakezan(X) = 0 MsgBox ("Out of range1") Exit Sub End If Box1(X) = Kakezan(X) Siguma1 = 0 For i = 0 To hatyokosu - 1 Siguma1 = Siguma1 + Box1(i) Next i SmpData2 = Siguma1 / hatyon '比例動作2 hatyohirei(X) = SmpData2 '積分の計算 Box2(X) = SmpData2 If X = hatyokosu - 1 Then For i = 0 To hatyokosu - 1 Siguma2 = Siguma2 + Box2(i) Next i hatyosekibun = Siguma2 / hatyon 60 'PID 動作 PID = hatyoGain * (hatyohirei(X) + (hatyosekibun / hatyon) + SmpData2) 'DA 出力 PIDA = Format((PID + 10) * (4096 / 20), "#0") PIDAbox(X) = PIDA '出力が 4096 以上 0 以下になれば停止 If PIDA > 4096 Or PIDA < 0 Then PIDA = 0 MsgBox ("Out of range2-2") Exit Sub End If nRetDA = DaOutputDA(hDeviceHandleDA, 1, ConfigDA, PIDA) If nRetDA <> DA_ERROR_SUCCESS Then MsgBox "アナログ出力に失敗しました 1" + Hex(nRetDA) End If End If Next X hairetu2(nCount2) = HsokuteiT(nCount2) 'ファイル出力 Next nCount2 nRetAD = AdStopSampling(hDeviceHandleAD) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "サンプリング終了に失敗しました 2" + Hex(nRetAD) Exit Sub End If '****************************** 温 度 確 認 動 作 ******************************* ' サンプリング条件設定 SmplChInf.ulChNo = 3 SmplChInf.ulRange = AD_10V 'サンプリング 61 nRetAD = AdInputAD(hDeviceHandleAD, 1, gConfigAD.ulSingleDiff, SmplChInf, ondosmp) If nRetAD <> AD_ERROR_SUCCESS Then MsgBox "アナログ入力に失敗しました" + Hex(nRetDA) Exit Sub Else '温度確認のための抵抗の電圧取得 ondoDisp = Format((20 / 4096) * ondosmp - 10, "#0.00000") If ondoDisp > 5.8 Or ondoDisp < 4.5 Then If PIDA > 4096 Or PIDA < 0 Then PIDA = 0 MsgBox ("Out of range2-2") Exit Sub End If MsgBox ("温度が範囲外です") Flag4 = False Flag5 = False Else Flag4 = True Flag5 = True End If End If Next Z PIDA = 2048 nRetDA = DaOutputDA(hDeviceHandleDA, 1, ConfigDA, PIDA) If nRetDA <> DA_ERROR_SUCCESS Then MsgBox "アナログ出力に失敗しました" + Hex(nRetDA) End If 'すべての制御終了時間の表示 Label2.Caption = Format$(Time, "すべての制御終了時間" + Chr(13) + " AM/PMhh 時 mm 分 ss 秒") 62