光プローブ励振およびシアフォース検出システムの高速化


[目的]  私たちの研究目的は光プローブと試料との距離をリアルタイムに測定することです。以前はロックインアンプを用いてシアフォースの検出を行っていましたが、シアフォースを検出した時にデータを読み出す時間が遅く、光プローブの制御に時間がかかりすぎ、リアルタイムでの測定が不可能なのでシアフォース検出をさらに高速化する回路を作りました。
 私たちはこの回路を用いて正弦波電圧を出力し、バイモルフをゆらし、実際のゆれをモニターし比較することで位相のズレを検出します。


 光プローブをバイモルフによって振動させながら試料に近づけていくと、試料と光プローブとの間に引力や分子間力などによる摩擦力が生じ、この力によって光プローブの振動が制限されるという現象が起こります。(右上)この光プローブの横揺れの力を光プローブの先端と試料との間に起こる縦向きの力によって制限させる力をシアフォース(せん断応力)と呼んでいます。光プローブが試料に近づけば近づくほどシアフォースが大きくなり、振動が制限されやすくなるので、試料と光プローブの距離は振動の大きさによって知ることが出来ます。この振動の大きさをリアルタイムに計測することによって光プローブの位置を正確に読み取ることが出来ます。
 光プローブをゆらす方法として、バイモルフを用います。バイモルフの両端に付いているピエゾ素子に電圧を与えると伸び縮みするのでこの性質を利用してバイモルフをゆらします。同時に実際にはどれだけゆれているかを測るために距離モニタを用いてゆれを観測します。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 まずコンピュータに光プローブを振動させたい周波数データを入力します。この周波数データをパラレルポートを用いて波形発生器ICに入力します。ここで入力された周波数データはデジタルからアナログへ変換されて出力されます。
 しかしこのままでは電圧が大きすぎ、また直流成分もあるのでバイモルフが折れてしまう恐れがあるので波形整形回路を用いて電圧を十分に小さくし、直流成分をカットしてからバイモルフに入力して光プローブを振動させます。
 次に振動しているバイモルフから距離モニターを用いて実際にゆれている振動数を電流値で読み取ります。電圧でゆらしたものを電流で測定するのはゆらす前の周波数と実際にゆれている周波数との間にノイズがのるのを避けるためです。この読み取った電流値をI/V変換回路を用いて電圧値に直し、またこのままでは電圧が十分に大きくないので増幅して位相ズレ検出器に入力します。
 ここで先ほどのバイモルフをゆらす前の波形と比較する事により、揺らそうとしている波形と実際にゆれている波形から位相のズレを検出します。
 このデータをコンピュータを使って制御するために、AD変換ボードを用いてアナログからデジタルに変換し、その値をコンピュータに返すことによって、バイモルフの位置を測定します。





 私たちは波形発生器ICにAD9850というIC付きのボードを使用しました。AD9850 はサイン波発生器とコンパレータを含むICであり、80MHzの水晶振動子を使用することができる為、出力する周波数選択を行っても高速に応答することが出来ます。これを利用することによって光プローブ制御を高速に行い、正確な波形を出力することが出来ます。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 PCに入力した周波数データを8ビットごとに5回に分けてプリンターポートを使ってAD9850ボードに送ります。送られてきた周波数データと制御信号は、一旦それぞれの外部バッファーに書き込まれ、制御信号であるstrobe信号によって、AD9850内にある8ビットバッファーにデータが移ります。そして制御信号WCLKによりAD9850内にある40ビットレジスタにデータが移ります。5回に分けられていたデータは5進カウンターによって並べ替えられ、ここでひとつの周波数データに戻ります。





 この40ビットレジスタに書きこまれたデータは制御信号FQUDによって、まず上位8bitだけが加算器とレジスタから構成されている32ビットアキュミレータに書き込まれます。加算器はアキュミレータに書き込まれたデータに40ビットレジスタの下位32ビットを次々と加算し、その値をアキュミレータに上書きしていきます。アキュミレータ内にデータがくると、アキュミレータ内のデータの上位14ビットがデコーダ内の1周期分を1024個に分けられた周波数データのポインタとして周波数データを呼出しD/Aコンバータに送ります。もし桁溢れがなく上位14ビットに変化がない時はポインタはデコーダの同じ場所を指します。これを繰り返しD/Aコンバータに送ることによってアナログの周波数を得ることが出来ます。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 従来はPC98のプログラムを実行させることにより動作させていたのですが、PC98ではCPUなどの処理速度に限界があり速度アップは望めず、実験に使用する様なサンプルプログラムが多くあることと、理解しやすいのではないかと言うことでVisualBasicにプログラムを移植しました。





 まず初めに初期段階のBasicのプログラムを実行したときの波形図を図6に示しました。図6(a)は、プログラムをコンパイルせずにフォーム上から実行したものです。WCLK間の時間は約50msです。
 図6(b)は、コンパイルして実行したときの波形図です。この(b)のWCLK間の時間は約50μsで、コンパイルなしのほうに比べて約1000倍早くなることがわかりました。この原因として、コンパイルを先に行い機械語に変換しておくことで実行時にこの動作が省かれることによって、速度が格段に向上したと考えられます。
 図6(b)には2つのコンパイルした2つの状態を示しています。原因は全くわかりませんが、速度が約80μs異なる波形が交互に発生していることがわかりました。これについては、今後検討する必要があると考えられます。
 これまでの作業でもう限界だと思われていたのですが、プログラム中の一度におろしたり上げたりしてもよい制御信号を、まとめて変化させることで約25%から30%速度が向上しました。
 上の波形図でクロストークが発生しているのは、計測器LA400の構造上(測定のプローブが大変接近している)の問題で、ストローブの線を走っている信号の磁場による影響を受け、電磁誘導が生じて発生したものだと考えられ、実際にボード上に回路を組みシールドされたコードを使用することによって解消されるものと考えています。
 現在のところ、WCLKの幅が145μsのものが最速ですが、さらに速度を向上させるためにはVisual Cのプログラムの移植が有効だと考えられます。

画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 まず、バイモルフを振動させるバイモルフ励振用正弦波を、AD9850の出力波形から作成する図8に示す波形整形回路を作成しました。
 バイモルフを単振動させるために、まず図9(a)のような波形発生器AD9850が出力する振動振幅1.0V,オフセット0.5Vの正弦波を、回路にコンデンサを直列に入れることで直流成分をカットし、次に、バイモルフ・光プローブの破損を防ぐために振動振幅50mV以下にアッテネータでアッテネートしています。また、バイモルフがコンデンサでり発信することから、それを防ぐ発信防止回路を作成しました。この回路を通して出力されたのが図9(b)の波形で、これをバイモルフに印加しバイモルフを振動させることになります。





 この回路は、位相のズレを利用して光プローブの位置制御を行おうということから、位相のズレを検出するための回路です。波形整形回路で作成した励振波形をバイモルフにかけ、バイモルフの振動を電流で読みとりI/V変換回路で電圧にしたバイモルフモニター出力と、波形発生器AD9850が出力する正弦波の位相のズレをEX-ORの出力として検出します。
 比較する2つの波形は正弦波であり、アナログのままでは位相のズレが出力に比例しないため、図10(a)のようにコンパレータを用いて正弦波から方形波に変換し、これをEX-ORに入力して図10(b)に示すようにズレ分がHigh出力になるようにしました。位相が180度ずれるとEX-OR出力はすべてHigh出力を示します。OPアンプを使用しているのは、バイモルフモニター正弦波が約10mVと大変小さい事から、コンパレータが変換できるような入力まで増幅させるためです。
 位相のズレはEX-ORのHigh部分の面積で表されており、このHigh,Lowで表された波形では位相のズレが検出できないために、次にこのEX-OR波形を平均しその平均電圧から位相のズレを検出する、平均電圧を求める回路を作成しました。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 この回路は前述の位相ズレ検出器のEX-OR出力波形を平均して、位相検波出力を平均電圧として出力する回路です。
 EX-OR出力の平均時間は、Identity Comparatorに接続しているディップスイッチで変更可能で、励振用波形のコンパレータ出力の個数で決定します。ここではちょうどコンパレータ10個分のEX-OR出力を平均する例を示しました。
 まずコンパレータ波形10個分をカウンターでカウントし、それを元にしてIdentity Comparator波形を1つ出力し、それをMonostable Moultivibraterに入力して制御信号であるSample,Integrate,Resetの3つの波形を作り出します。
 コンパレータ波形10個分のEX-OR波形を、積分器を有効に使用するためOPアンプを通して振動振幅5.0V,オフセット0.0Vの方形波にします。それをIntegrate信号で積分器IVCで積分し、Sample信号でSample&Hold回路で積分電圧(平均電圧)を読み出し、次の平均電圧データで更新されるまで同じ電圧(位相検波出力)を出力する(平均される間だけ待つ)ようにしました。各波形を図12に示す。これをPCからA/D変換ボードを通して(ここではコンパレータ波形10個分の約0.3ms間隔で)位相検波出力を読みだし、このデータを元にしてピエゾ素子を変形させ、光プローブの位置制御をPCでリアルタイムに行います。





 我々が作成した波形整形回路、位相ズレ検出器、平均電圧出力回路を図のように実際にバイモルフに接続し、位相検波出力を検出しようとしました。我々の作成した回路のみでは正常に動作していたのですが、テスト用の装置に接続すると位相検波出力は得られませんでした。考えられる原因は、バイモルフ単体でテストを行うと図12(b)の様にグランドが静止していない波形が出力されるため、昨年作成されたテスト用装置であったために光りプローブがおれているか、図12(a)の波形からI/V変換回路が発信しているためだと考えられます。対策として、コンデンサを挿入して直流成分をカットするのと、発振を止める回路を追加する必要があります。そこで方法では、位相検波出力が得られないため、次のようにして測定しました。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 位相検波出力を求めるために、図に示すようにバイモルフモニター出力の代わりにファンクションジェネレータからバイモルフモニター出力正弦波のSampleを作り、PCからカスタムPCIボードに周波数データを送信し正弦波を出力させ、その正弦波の位相をずらして位相検波出力を測定しました。実際はバイモルフモニター出力の波形がずれるのですが、今回はバイモルフが利用できないためこの様な方法で測定しました。
 位相を90度ずらして測定を行うと、図13のような我々が求めていた位相検波出力(平均電圧)が得られました。階段状の位相検出力になっているのは、コンパレータ10個分のEX-OR波形(コンパレータ波形の2倍の個数)を積分(平均)しているためで、いくつかの位相がずれているためです。いくつずれているかは検波出力の電圧の比から求めることもできます。応答速度は、コンパレータ波形10個分を平均しているために約0.3msになっていますが、励振波形の周波数を増加させることで応答速度を上げることができます。また、このテストでのSampleモニター波形にはノイズが非常に少なく位相検波出力が図13のように大変きれいですが、実際のバイモルフモニター出力にはノイズが多く加わると考えられますので、位相検波出力がどのようになるのか今後測定する必要があります。