3D超音波センサ評価キットのFPGAに実装されている遅延加算処理の原理について説明します。
2つのセンサ素子が一軸上に並んでいるとします。
そのセンサの正面(角度0°)には、ある物体が存在するものとします。
物体から反射されて返ってきた音波は、2つのセンサ素子に同時に到着するため、2つのセンサ素子の出力信号は、全く同じ信号が得られます。
この2つの信号を加算すれば、時間的ずれのない、振幅も位相も同じ信号を足し合わせるため、もとの信号の倍の振幅を得ることになります。


ところが、物体がセンサの真正面にはなく、左θ°方向(図における)に存在したとすると、2つのセンサ素子の出力信号には、時間的ずれが生じます。
この2つの信号をそのまま加算すれば、振幅も位相も同じですが、時間的ずれがあるため、振幅はそれほど大きくなりません。


このように、加算信号の振幅が大きければ、その方向(この場合、センサの真正面)に物体が存在すると判断できます。別の言い方で表現すると、上記2つの例はセンサの真正面(角度0)に物体が存在するかどうかを調べたことになります。
物体が左θ°方向(図における)に存在するかどうか調べるには、反射波が各センサ素子に同時に到着するよう、センサ素子を傾けます。
そうすれば、2つのセンサ素子の出力信号には、時間的ずれがなくなるため、この2つの信号を加算すれば、もとの信号の倍の振幅を得ることになります。


しかし、実際はセンサを傾けることは出来ないため、計算の上でセンサを傾けたのと同じことを行うのが、遅延加算処理です。
傾けた素子の出力信号と、傾けていない素子の出力信号との違いは、時間的ずれのみです。このことから、傾けた角度に合った時間的ずれが計算できれば、計算上センサを傾けることができます。
時間的ずれは相対的なものであり、基準を必要とします。
基準にすべきセンサ素子は通常、反射波が最初に到達する素子を選びます。
今回の例では、センサ素子Aが基準となります。
基準センサ素子Aからセンサ素子Bまでの素子間隔(LB)は、固定値であり、角度θ方向を調べる場合の、センサ素子Bに対する遅延距離(DB)は、
遅延距離(DB) = 素子間隔(LB) × sinθ
となります。

これより、遅延時間(tB)は、音速が340m/secであることから、
遅延時間(tB) = 遅延距離(DB) ÷ 340
となります。
以上から、センサ素子Bの角度θにおける時間的ずれは遅延時間(tB)であり、センサ素子Bの出力信号をtB分早めて扱えば、物体がθ方向に存在するかどうかを調べたことに相当します。
角度θを、例えば45°~-45°までスキャンし、各々の加算信号の最大振幅値をプロットしていけば、90°の広がりを持つ空間に対しての物体の存在を調べるレーダーのような動きを実現することができます。