距離を正確に測る その1 赤外線VL6180X
電子工作で使う距離センサは、古くはシャープ製測距モジュールGP2Y0A21YKなどを利用していました。赤外線をパルスで照射して、反射光の強度を読み取ります。新しいI2C出力のGP2Y0E03なども同じく赤外線を使いますが、斜めに照射して三角法で距離を求めます。
ST Microelectronicsの距離を測るセンサは公称データはありませんが、分解能が高いようにみえます。VL6180Xは赤外線を照射し、反射までの時間差から距離を計算します。VL53L0X とVL53L1Xはレーザーを使うので、真正面に反射物体があると正確に測れます。
| VL6180X | VL53L0X | VL53L1X | |
|---|---|---|---|
| 手段 | 赤外線 | レーザー | レーザー |
| 分解能 | 20cmでは1mm、60cmでは3mm | - | - |
| 最大測定距離 | 100mm | 2m(反射面白色) | 4m |
| インターフェース | I2C | I2C(最大400kHz) | I2C(最大1MHz) |
| 動作電圧[V] | 2.7~3.0 | 2.6~3.5 | 2.8V |
| モジュール動作電圧[V] | 2.7~5.5(Pololu) | 3.3~5V(秋月電子通商) 2.6~5.5V(Pololu) |
3.3V |
| モジュール | Pololu、Adafruit、 | 秋月電子通商、スイッチサイエンス、Pololu、Adafruit | ST Microelectronics |
| ライブラリ | Arduino用Pololu、Adafruitあり | Arduino用Pololu、Adafruitあり | NUCLEO用 |
●POLOLUのVL6180XモジュールはArduinoライブラリがある
Arduino IDEのライブラリで検索するとVL6180Xのライブラリは複数見つかります。今回スイッチサイエンスで入手した「VL6180X 赤外線近接距離センサモジュール」はPOLOLU製でした。POLOLUのドライバはGitHubにソースがあります。このST Microelectronicsのセンサはマイコンが内蔵されていて、たくさんのレジスタを設定しなければなりません。VL6180Xはラズパイで利用しましたが、レジスタ類の働きを理解するのに1週間、データシートとサンプル・プログラムとをにらめっこしました。
●VL6180Xモジュールのおもなスペック
動作電圧は、モジュールにレギュレータが搭載されているので、2.7~5.5Vの範囲で使えます。反射条件が良ければ、測定範囲は255mmまでですが、おおよそ100mmが限界のようです。
I2Cインターフェースの電圧レベル変換回路が入っているので、Arduino UNOの5V系もそのままつなげられます。I2C信号には10kΩのプルアップ抵抗が入っています。複数のVL6180Xを利用するときのGPIOピンもモジュールに出ています。
別途、電圧レギュレータをオンラインで購入する場合はアールエスコンポーネンツが便利です。規格ごとに検索ソートがかけられ商品選択がしやすく、業者価格での部品購入が可能です。
●接続
●ライブラリの導入
https://github.com/pololu/vl6180x-arduinoからZIPファイルでライブラリをダウンロードします。
Web EditorのLibrariesのCustomタブにあるZipファイルのアップロードをクリックします。
ダウンロード・フォルダに入っているvl6180x-arduino-master.zipを指定して、アップロードを完了させます。
●スケッチ
サンプル・スケッチの中からRangeSingleShotを選び、実行しました。
Monitorを開くと、問題なく計測しているようです。
●実測
赤外線を反射するのはアルミニウムの放熱器です。黒色ではなく塗装のないアルマイトの金属面です。グレーがかっています。センサに垂直になるようにしながら距離をずらしましたが、角度が付くと表示値も変わります。読み取っている値もばらつきがあります。反射面がわずかに凸凹がある金属面なのが影響しているかもしれません。
| 距離[mm] | 表示値 |
|---|---|
| 10 | 9~12 |
| 20 | 20~23 |
| 30 | 30~33 |
| 40 | 40~43 |
| 50 | 49~52 |
| 60 | 59~61 |
| 70 | 66~69 |
| 80 | 74~77 |
| 90 | 84~87 |
| 100 | 94~99 |
| 110 | 107~110 |
| 120 | 117~120 |
| 130 | 126~130 |
| 140 | 135~140 |
| 150 | 145~152 |
| 160 | 157~160 |
| 170 | 168~170 |
| 180 | 176~182 |
| 190 | 187~190 |
| 200 | 196~200 |
(2019/10/24)レギュレータの入手情報を追加しました。