Arduino lesson – VL53L0X 飛行時間型(ToF)距離測定センサー

Byfrank

Arduino lesson – VL53L0X 飛行時間型(ToF)距離測定センサー

本センサはST’s
VL53L0Xレザー距離測定システムを搭載されるキャリア/ブレイクアウト基板で、最大測定距離は
2 mに達します。VL53L0Xは赤外線パルスの飛行時間測定原理を使って、測定のターゲットの表面や色の影響せず、測距機能を実現しますて、測定値はデジタル I²Cインターフェースで読み込めます。本基板にの2.8Vリニアレギュレータとレベルシフタが入力電圧2.6V-5.5Vで作動するのは可能になります。0.1のピン間隔もブレッドボードや0.1のパーフボードに使用しやすくなります。

紹介

VL53L0X飛行時間型「ToF」距離測定センサーはVL53L0Xに基づいて、より高速、高精度、高測定距離のセンサーです。

VL53L0Xは新世代の飛行時間距離測定モジュールです。従来の伝統技術と違い、現在市場で最も小さいToF測距センサで、ターゲットの反射率を問わず、精確で距離を測定でき、最大測定値が2mに達するため、新たな測距性能の基準を設定して、また新たなアプリケーションの可能性を拓きます。

VL53L0XはSPAD(Single Photon Avalanche Diode単一光子アバランシェ・ダイオード)検出器のアレイを集積し、ST’s二世代のFlightSenseTM特許技術を採用しています。

VL53L0Xの5.6×10-7m VCSEL (VerticalCavity Surface-Emitting Laser垂直共振器面発光レーザー)はアイセーフ・クラス1のため人眼にとって完全に不可視の光線で、内部の光学干渉フィルと合わせて、より遠い距離、よりよい環境光イミュニティや光学クロストークが実現できます。

ハードウェアの概要

まず、処理している  VL53L1X sensor の特徴を見ましょう。それでボードの特性が把握できます。

特性 範囲
 動作電圧 2.6V-3.5V
 消費電力 20mW @10Hz
 測定範囲 ~0.04m  4m
 インターフェースタイプ I²C (TWI)
 光源 クラス 1、5.6×10-7 VCSEL
 I2C アドレス 0x29
 視野角度 15° – 27°
 読み取り率 50Hz

仕様

  • サイズ: 0.5″ × 0.7″ × 0.085″ (13 mm × 18 mm × 2 mm)
  • 重量(ヘッダーピンなし): 0.5 g (0.02 oz)
  • 動作電圧: 2.6 V to 5.5 V
  • 供給: 10 mA (立ち上げ時の平均値) 。配置、対象物や環境に違って、ピーク電量は40 mAに達します。
  • 出力型式 (I²C): 16-bit (ミリメートル)
  • 測距範囲: 最大 2 m ()
      •  配置、対象物、環境に違って、測定範囲も異なります。
      • 最小範囲はないですが、経験と実験によって、最小測定値はおよそ0.03mです。

    Pinの説明

    PIN 説明
    VDD 安定化2.8Vの電源を出力し、おおよそ150mAで外部コンポーネントに給電できます(もし内部のレギュレータをバイパスしたい場合、本ピンを2.8V入力端子として使って、VINを断路にしてください)。
    VIN 2.6V-5.5Vの主電源連続です。SCLSDAのレベルシフタはI2Cラインをこのレベルに引き上げます。
    GND 電源の接地(0V)連続に充てます。I2C制御装置も必ず本ボードと同じ接地端子を共用してください。
    SDA レベルシフトI2Cデータライン、HiVIN LOW-0V。
    SCL レベルシフトI2Cクロックライン、HiVIN LOW-0V。
    XSHUT アクティブローシャットの入力端子。ボードではVDD と繋がって、デフォルトでセンサーを作動させます。端子をLOWにさせたらセンサーがハードウェアスタンバイモードになります。端子はレベルシフタ機能がありません。
    GPIO1 コーディングで出力を中断することが可能で、このピンはレベルシフトをしません。

    回路図

    上記の回路図で基板に採用したコンポがVL53L0がさらに使いやすくなるのが分かりました。基板が2.6 V ー5.5 Vで供給できレベルシフタもVINと同じロジックでI²Cと通信できます。回路図はダウンロードできます downloadable PDF (110k pdf)。

    用途

        • パソコン/ノートパソコン/タブレットとIoTの検知(省エネ)
        • ロボット(障害物検出)
        • 白物家電 (自動水栓、ソープディスペンサーなどの感知)
        • 1D ジェスチャー感知
        • レザー補助オートフォーカス。カメラのオートフォーカス性能を高めて(特に悪環境「低光量、低コントラスト」および動態ビデオモード)。

    VL53L0X入門

    入門課程では、私たちは一緒にVL53L0Xセンサとarduinoの連続方法を勉強しましょう。VL53L0XはI2Cセンサのため、多数のマイクロコントローラと同じ二つのデータ/クロックラインを使えて、アドレス衝突がなければ、他のセンサとピンもシェアできます。VL53L0Xは飛行時間(ToF)距離センサのため、他のセンサと違って、小さい不可視レザー光源とマッチングセンサを内蔵しています。では、早速始めましょう。

     

    Step1: ハードウェアの準備

        • Arduino ボード
        • VL53L0x モデル
        • ジャンパー線

    Step2: 連続

        • Vinと電源を連続してください、3~5Vでよいです。マイクロコントロールと同じ電圧を使用してください。Arduinosなら、多数は5Vです。
        • GNDと共通電源/テータグランドを連続してください。
        • SCL とArduinoのI2C クロックSCLpin を連続してください。 UNO &‘328 ベース Arduinoではこれを「A5」にも言います。Megaでは「digital 21」、Leonardo/Microでは 「digital 3」と言います。
        • SDAとArduinoのI2CデータSDA pinを連続してください。UNO &‘328ベース Arduino,では「A4」にも言います。 Megaでは 「digital 20、Leonardo/Microでは「digital 2」と言います。

    下記のように

    Adafruit_VL53L0Xダウンロード

    センサーデータを読み取るならAdafruit_VL53L0XLibraryをインストール必要があります。最も簡単な方法はArduino IDEでManageLibraries…を開きます。

     

    adafruit_products_managelib.png

    Adafruit VL53L0X を検索して Install/インストールをクリックします。

    adafruit_products_vl53.png



    デモ

    下記のように File->Examples->Adafruit_VL53L0X->vl53l0x を開いてからセンサーと連続しているArduinoにアップロードします。

    adafruit_products_demo.png

    そう !それから115200の速度でターミナルを開いて、テストを始めましょう。

    adafruit_products_ranging.png


    手を上下に動いてセンサーのデータを読み取ります。何も検知されない場合に、読み取り値オーバーと表示することを注意してください。

    使用する前にセンサーから保護カバーを取り外すのは忘れないでください。

    複数のセンサーと連続

    I2Cで個々のデバイスは1つのアドレスがあるしかありません。各I2Cデバイスは唯一のアドレスがあることを確報してください。VL53L0Xのデフォルトアドレスは 0x29 ですが、ソフトウェアではこれを変更することもできます。

    新しいアドレスを設置する方法が二つあります。1つは初期化中にlox.begin()をlox.begin(0x30)に変更させていきます。それにいつでもlox.begin(0x30)を設定するのもよろしいです。

    アドレスの再設定は簡単ですが、各センサーをシャットダウン状態にしなければなりません。各センサーのシャットダウンは XSHUT
    ピンとマイクロコントローラーピンを連続することで実現できたから、 上記のような擬似コードが実行できます。

    1. 全てのXSHUTピンをdelay(10)に設定し、ピンをlowになります、またXSHUTピンをhighに設定してから、全てのセンサーをリセットできます。
    2. センサー#1のXSHUTピンを「high」のままで、#1を立ち上げます。
    3. 他のセンサーのXSHUTピンを「low」にして、他のセンサーをシャットダウンします。
    4. lox.begin(new_i2c_address)では0x29以外の数字(<0x7F、0x30ー0x3Fがいい)を入力してください。
    5. #1を立ち上げ状態で、#2のXSHUTピンを「high」にして、リセット状態から離れます。
    6. lox.begin(new_i2c_address)では0x29と#1以外の数字を入力してセンサー#1を初期化します
    7. 上記の操作を繰り返して、各センサーを唯一のアドレスを設定します。

    注意アドレスは常設ではなく、電源を入れるたびに上記の操作を繰り返す必要があります。

     

About the Author

frank editor

You must be logged in to post a comment