QDセンサによる位置検出

4分割フォトダイオードを使って光源の2次元変位を計測します。

ソースコードやプロジェクトファイルのダウンロードはこちら →qd.zip

ブロック図
プログラム
proc
{
    q0 = Ain( 0, 0, 1 );
    q1 = Ain( 1, 0, 1 );
    q2 = Ain( 2, 0, 1 );
    q3 = Ain( 3, 0, 1 );

    Z =  q0 + q1 + q2 + q3;         // 全光量
    X = (-q0 + q1 + q2 - q3 ) / Z;  // 変位 X
    Y = ( q0 + q1 - q2 - q3 ) / Z;  // 変位 Y

    Aout( 0, 0, 1, X );
    Aout( 1, 0, 1, Y );
    Aout( 2, 0, 1, Z );
}
説明

4つのフォトダイオードの発生する光電流をOpアンプで電圧に変換し、アナログ電圧として入力します。 これらの和と差を演算すれば、2次元の変位に比例した信号になります。
光量の変化の影響を低減するために全光量で割って正規化しています。

以下の関数、信号、パラメータを使っています。

関数
(予約語)
 Ain アナログ入力ポートの電圧を数値化する関数です。
 Aout アナログ出力ポートへ電圧を発生させます
信号 q0 受光量に比例した入力電圧を数値化したものです。
 q1
 q2
 q3
 XX方向の変位信号です
 YY方向の変位信号です
 Z全光量です