2016.08.25
最大2メートルを1ミリ刻みで測れる小さな距離センサ
STマイクロ社の距離センサ”VL53L0X”を使いやすくまとめたPololuのモジュールが届いたので、紹介します。(筆者は発送が速い朱雀技研工房ストアより購入しました)
このセンサは赤外線を投射して、それが対象物に当たって跳ね返ってくるまでの時間を計測することで距離を測定します。デジカメで撮った上の写真を見ると、チップから赤外線が出ているのが見えますね。ふたつある穴のひとつが赤外線の出口、もうひとつが受光部です。
インタフェイスはI2C。基板上に電圧レギュレータが載っていて、2.6Vから5.5Vの電源電圧で動作します。Arduinoなどにつないで使うのはとても簡単。Pololuが提供しているライブラリを導入することで(Arduino IDEのライブラリマネージャでチップ型番を検索すると自動的にインストールできます)、すぐにサンプルスケッチを使って動作チェックが可能です。
ライブラリのサンプルは、SingleとContinuousの2種類ありますが、最初はSingleを使って動作特性を把握したほうがいいかもしれません。Singleのソースを見ると、精度優先、距離優先、スピード優先という3つの設定が用意されています。2メートルまで精度良く測定するには、精度優先の設定にする必要がありました。スピード優先の場合は1.2メートル程度が上限となります。
精度は動作環境や測定対象に依存します。赤外線の照射角が約25度となっていて、それをカバーする大きさの白い(反射率の高い)物体を測る場合の誤差が3%。デートシート上はこれがベストで、反射率の低い物体に対して使用すると精度は低下します。
最短測定可能距離をデータシートから読み取ることはできなかったのですが、Pololuの説明によると、経験上は30mm程度とのこと。筆者が精度優先モードで実験してみたところ(コピー用紙をセンサに近づけていき、どこまでそれらしいデータが得られるか見てみました)、14mmあたりが限界で、それより近づけると、値は逆に大きくなりました。
測定対象は屋内にある白い板状の物が理想的と思われます。筆者はユーザーインタフェイスとしての利用を考えていたので、もっと小さい不定形な物で実験中です。手の指やガラスのコップを置いて試したところ、至近距離であれば定規の目盛りに近い数値が得られました。