レーザー距離計を使って数ヶ月。測定の応答速度に不満があって(ちょっと時間がかかる)、なにか別の機種が無いかと探していた。というか、なぜ遅いのかを考えていた。
建築系で使われているレーザー距離計はレーザーに150MHzとかの変調を加えて、往復したレーザーの位相差を検出しているようだ。ヘテロダインで変調して低周波にすると位相差も拡大されるのでそれで距離を計算しやすくするというのが内情のようだ。TOF方式のようなものではないようだ。
150MHzだと波長が2mなので、2m進むごとに波長が1つ変化してしまうので、2.4mなのか4.4mなのか識別ができなくなるはず。なのでおおよその距離を把握するもの、精密な距離を測定するもので少なくとも2つの周波数で測定しているはずだ。実際そのように書いてあるものもある。
測定の実装としては、例えば
・低分解能で測定 → 50.xxx [m] まで確定
・中分解能で測定 → 50.2xx [m]まで確定
・高分解能で測定 → 50.253 [m]で最終決定
というような処理をしているのでは無いだろうか。
距離レンジが長いほど、複数の分解能の測定が必要になるので測定にかかる時間が長くなるのではないだろうかと思った。だったら測定レンジが違うものを用意して比較したら良いだろう。
今回比較した2機種は、どちらもMILESEEYというブランドのもので、X5(一つ前の世代)の40mレンジ、X6(最新モデル)の60mレンジ。
気がついてしまったか、モデルと距離が違うので、直接の比較ができない・・・・
X5の40mのタイプはクーポンがあって1600円弱で購入できた。そして30mレンジのものと値段が一緒だったので40mにした。X6 60mは確か3000円弱で購入できて、とその時に適当に思ったことがあったんですね。
両者の違い(左がX5、右がX6)
世代:X5、X6
レンジ:40m、60m
レーザー波長:650nm、635nm(ともに1mW未満)
実際に連続測定モードにすると違いがよく分かって、X5のほうが更新速度が早い。応答も少しだけ早い。うーむ。X6の40mタイプを買わないといけないぞ。
ヘテロダインの位相検出について検証してみた。LTSpiceをUbuntuのWine上で動かしているので画面がWindows環境と少し違って見える。
発信回路100MHzで99MHzと乗算して1MHzの差周波を取り出すようなもの。B1とB2はビヘイビア電圧で、信号と局部発信の積を出力している(回路的に再現すると面倒なので計算で処理させているということ)。
100MHzの信号には1nsの位相差を入れてある(下記)
99MHzの信号との差分になる出力は下のようなものになり、100nsの位相差を生じていることがわかる。
入力の位相差の100倍に相当する。
周波数の差分として100MHzから1MHzへの変換を行うと位相差が保存されるので時間軸で100倍(周波数を下げた分の倍率)になって出てくることがわかる。なのでもともとは非常に小さな位相差であっても、ヘテロダイン回路を通すことで大きな差として検出が容易になるものと思う。
上記では100MHzと99MHzだが、100MHzと99.99MHzなら10kHzまで周波数が下がるので、時間差は10,000倍になり、10usまで広がる。10kHzレベルだとマイコンでも直接サンプリングと位相差把握はある程度現実的になってくるかと思う。
さて、1mmを光が進む時間は、ざっと3.3psなのでヘテロダイン回路を通して10,000倍に伸張しても33ns。。。オシロスコープなら見えるけどこれをあのコンパクトなボディーの中に入れるんだからすごいな。
ただ、今はソフトウェアラジオなどというものもあるくらいなので、相当高速なAD変換回路などは比較的ありふれているから実現できるのかもしれない。
でも周波数数測定とは違って時間の測定なので、変調周波数の起点からの時間をピコ秒の精度にしないと難しくない?
ヘテロダインするとなると局部発信の位相も正確に合わせないと。
かえって、変調波形の測定を、等価時間サンプリングオシロスコープのように、少しづつタイミングをずらして何度も測定する方が良くないかなぁ・・・?
それでも変調周期の波数の桁は、他の方法で求めないとだめですね。
まだ、原理が良くわかったいません。(;^_^A
HPの周波数カウンターも1秒ゲートで0.1mHzの桁まで表示する原理に使用しています。
つまりゲートが閉じてから入力信号がゼロクロスするまでの(余った)波形をTDCで時間測定して、入力波形の位相を1/10000の分解能で測定して実現しています。
時間分解能にして100p秒。
TDCの素子として、Time Memory Cell を使います。
高速動作のゲートが数万以上直列に並べた構造で、ゲートの遅延速度はピコセカンドオーダーみたいです。
入力信号が全ゲートの最後まで届く時間は容易に測定できる時間なので、その時間をゲート数で割れば、1ゲート当たりの時間キャリブレーションができます。
全ゲートにはD-FFで状態を読み取れるようになっていて、時間測定したいタイミングでゲートの状態を
読めば、ピコセカンドの分解能で時間計測ができます。
レーザー距離計も変調波形の発射タイミングから、反射された波形の受信タイミングをTDCで計ればミリメートルの計測ができそうです。
ただ、そんなものを某大陸が作れば、数千円で作れるのかという疑問があります。(;^_^A
この方式は昔から電波距離計で使われていたから、信号をそのまま光に変調をかけるだけで同じようなシステムでできますね。
波長2mなら、位相の1/2000の分解能があればmmが計れるわけか。
まだ完全に理解できていません。(^_^;)
波形のゼロクロスを検出するだけだからA/Dはいらないし。
変調周波数が150MHzなら、PLLかDDSで149.9625MHzのクロックで何度もサンプリングすれば1mm分解能になるんじゃないかな?
しらんけど。(by 大阪人)
なんだかんだでコストがネックになるので、あまり高いものが使えないのでヘテロダイン回路とかラジオで使われているような回路をうまく使っているんじゃないかなって思っています。
波長2mは往復で2mなので、波長の1/1000を検出できれば1mmの精度になります。でも波長の1/1000っていっても相当ですけどね。ヘテロダイン回路でどこまで時間スケールで伸張できているのかが気になりますね。
ヘテロダインの原理だと、波形から距離を出す方法が面倒になりませんか?
等価時間サンプリングの方式なら、PLLかDDSで15変調波形から少しずれたタイミングで等価時間サンプリングするだけです。
受信波形をサンプリングした時、高速コンパレーターで受信波形を繰り返しサンプリングして、ゼロクロス(1から0になるタイミング)するまでの波形の回数がそのまま距離(mm)とできますよね。
周期端数の問題は、変調周波数を下げてやれば長距離の概算値が求まります。
これならロジックICだけで処理でき、1チップ化しやすいんじゃないかと。
ゼロクロス検出でエラーの一番の原因となるのが、信号のオフセット値の変動ですが、バンドパス、あるいはハイパスフィルターで受信波形のオフセット値の変動を抑えればかなりの精度が出るのではないかと。
あとは、前回の測定値と大きく乖離した場合は再測定すればいいかな。
しらんけど。(^^;