TOFまたは飛行時間は、超音波センサーなどのさまざまな距離測定センサーによって遠方の物体の距離を測定するために一般的に使用される方法です。粒子、波、または物体が媒体を通過するのにかかる時間の測定は、飛行時間 (TOF)と呼ばれ ます。次に、この測定値を使用して、速度またはパスの長さを計算できます。また、組成や流量などの媒体の粒子や特性について学習するためにも使用できます。移動物体は直接的または間接的に検出できます。
超音波距離測定装置は、飛行時間の原理を使用した最も初期の装置の1つです。これらのデバイスは超音波パルスを放出し、波がエミッターに跳ね返るのにかかる時間に基づいて固体材料までの距離を測定します。距離を測定するために、多くのアプリケーションで超音波センサーを使用しました 。
- Arduino&超音波センサーベースの距離測定
- RaspberryPiとHCSR04超音波センサーを使用して距離を測定する
- 2つの超音波センサー間の距離を測定する方法
飛行時間法は、電子移動度の推定にも使用できます。実際には、低導電性薄膜の測定用に設計され、後に一般的な半導体用に調整されました。この技術は、有機電界効果トランジスタや金属-誘電体-金属構造に使用されます。レーザーまたは電圧パルスの印加により、過剰な電荷が生成されます。
TOF原理は センサと対象物との距離を測定するために使用されます。信号が物体から反射してセンサーに戻るまでにかかる時間を測定し、距離の計算に使用します。TOFの原理により、音や光などのさまざまな種類の信号(キャリア)を使用できます。TOFを距離測定に使用すると、音ではなく光を発するときに非常に強力になります。超音波と比較して、軽量、小型、低消費電力の特性を維持しながら、より高速な読み取り、より高い精度、より広い範囲を提供します。
このチュートリアルでは、ArduinoでVL6180X TOFレンジファインダーセンサーを使用して、 センサーとオブジェクトの間の距離を計算します。このセンサーは、LUXの光強度値も示します。
VL6180X飛行時間(ToF)距離計センサー
VL6180は、他の距離センサーとは異なり、正確な時計を使用して、光が任意の表面から反射して戻るのにかかる時間を測定します。これにより、VL6180はより正確でノイズの影響を受けないため、他のセンサーよりも優れています。
VL6180は、IRエミッター、環境光センサー、および距離センサーを含む3-in-1パッケージです 。それは私を介して通信2 Cインタフェース。オンボードの2.8Vレギュレーターを備えています。したがって、2.8Vを超える電圧を接続しても、ボードに損傷を与えることなく自動的にシフトダウンされます。それは 25cmまでの範囲を測定します。2つのプログラム可能なGPIOが含まれています。
回路図
ここでは、 Nokia 5110LCD を使用して光のレベルと距離を表示しています。Nokia 5110 LCDは3.3Vで動作するため、ArduinoNanoデジタルピンに直接接続することはできません。したがって、データ信号と直列に10kの抵抗を追加して、3.3Vのラインを5Vのデジタルピンから保護します。ArduinoでNokia5110LCDを使用する方法の詳細をご覧ください 。
VL6180センサは、 直接のArduinoに接続することができます。VL6180とArduino間の通信はI2Cです。実際、I2C通信プロトコルはSPIとUARTの最高の機能を組み合わせています。ここでは、複数のスレーブを1つのマスターに接続し、複数のマスターで1つまたは複数のスレーブを制御できます。UART通信と同様に、I2CはSDA(シリアルデータ)とSCL(シリアルクロック)の通信に2本のワイヤを使用します。データラインとクロックラインです。
VL6180ToFレンジファインダーセンサーをArduinoに接続する ための回路図を 以下に示します。
- LCDのRSTピンを10K抵抗を介してArduinoのピン6に接続します。
- LCDのCEピンを10K抵抗を介してArduinoのピン7に接続します。
- LCDのDCピンを10K抵抗を介してArduinoのピン5に接続します。
- LCDのDINピンを10K抵抗を介してArduinoのピン4に接続します。
- LCDのCLKピンを10K抵抗を介してArduinoのピン3に接続します。
- LCDのVCCピンをArduinoの3.3Vピンに接続します。
- LCDのGNDピンをArduinoのGNDに接続します。
- VL6180のSCLピンをArduinoのA5ピンに接続します
- VL6180のSDAピンをArduinoのA4ピンに接続します
- VL6180のVCCピンをArduinoの5Vピンに接続します
- VL6180のGNDピンをArduinoのGNDピンに接続します
VL6180ToFセンサーに必要なライブラリの追加
VL6180センサーとArduinoのインターフェースには3つのライブラリが使用されます。
1. Adafruit_PCD8544
Adafruit_PCD8544は、モノクロNokia 5110LCDディスプレイ用のライブラリです。これらのディスプレイは、通信にSPIを使用します。このLCDのインターフェースには、4つまたは5つのピンが必要です。このライブラリをダウンロードするためのリンクを以下に示します。
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Arduino用のAdafruit_GFXライブラリは、LCDディスプレイのコアグラフィックライブラリであり、共通の構文とグラフィックプリミティブのセット(点、線、円など)を提供します。使用するディスプレイデバイスごとに、ハードウェア固有のライブラリとペアにする必要があります(下位レベルの機能を処理するため)。このライブラリをダウンロードするためのリンクを以下に示します。
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180は、VL6180センサーの基本機能を備えたArduinoライブラリです。VL6180は、I2Cインターフェイスを介して通信するIRエミッター、距離センサー、および環境光センサーで構成されています。このライブラリを使用すると、センサーからの距離と光の出力を読み取り、シリアル接続を介してデータを出力できます。このライブラリをダウンロードするためのリンクを以下に示します。
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
ArduinoIDEで[スケッチ] >> [ライブラリを含める] >> [。ZIPライブラリ を追加]に移動して、すべてのライブラリを1つずつ追加し ます 。次に、上記のリンクからダウンロードしたライブラリをアップロードします。
ワイヤーライブラリとSPIライブラリを追加する必要がない場合もありますが、エラーが発生した場合は、それらをダウンロードしてArduinoIDEに追加してください。
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
プログラミングと動作の説明
このチュートリアルの最後に、動作するビデオを含む完全なコードがあります。ここでは、プロジェクトの動作を理解するための完全なプログラムについて説明します。
このプログラムでは、パーツの大部分が追加したライブラリによって処理されるため、心配する必要はありません。
で セットアップ 部分sが115200としてボーレートを設定し、I2C用のワイヤライブラリを初期化します。次に、VL6180センサーが正しく機能しているかどうかを確認します。機能していない場合は、エラーメッセージを表示します。
次のパートでは、ディスプレイを設定します。ここでは、コントラストを希望の値に変更できます。ここでは、50に設定しています。
void setup() { Serial.begin(115200); // 115200bpsでシリアルを開始 Wire.begin(); // I2Cライブラリを開始 delay(100); //遅延。 if(sensor.VL6180xInit()!= 0){ Serial.println( "FAILED TO INITALIZE"); //デバイスを初期化し、エラーをチェックし ます}; sensor.VL6180xDefautSettings(); //デフォルト設定をロードして開始します。 delay(1000); // 1 秒 遅らせるdisplay.begin(); // init done //コントラストを変更して、表示を //最適 に調整できます。display.setContrast(50); display.display(); //スプラッシュ スクリーンを 表示display.clearDisplay (); }
では 、ボイドループ 部分の セットアップの手順は、LCD画面上の値を表示します。ここでは、2つの値を表示しています。1つは「ルクスでの周囲光レベル」(1ルクスは実際には1平方メートルあたり1ルーメン)、もう1つは「mmで測定された距離」です。 LCD画面に異なる値を表示するには、「display.setCursor(0,0);」を使用して、LCD画面に表示する各テキストの位置を定義します。
void loop() { display.clearDisplay(); //周囲光レベルを取得し、LUXでレポートします Serial.print( "Ambient Light Level(Lux)="); Serial.println(sensor.getAmbientLight(GAIN_1)); display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println( "Light Level"); display.setCursor(0,12); display.println(sensor.getAmbientLight(GAIN_1)); //距離を取得してmm 単位で レポートしますSerial.print( "測定された距離(mm)="); Serial.println(sensor.getDistance()); display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0、24); display.println( "Distance(mm)="); display.setCursor(0、36); b = sensor.getDistance(); display.println(b); display.display(); delay(500); }
プログラムをアップロードした後、シリアルモニターを開くと、以下のような出力が表示されます。
VL6180 TOFレンジファインダーは、スマートフォン、ポータブルタッチスクリーンデバイス、タブレット、ラップトップ、ゲームデバイス、および家庭用電化製品/産業用デバイスで使用されます。
ここでは、 周囲光レベルをルクスで、距離をmmで表示しています。
以下の完全なプログラムとデモンストレーションビデオを見つけてください 。また、超音波センサーを使用して距離を測定する方法と、BH1750環境光センサーを使用して光レベルを測定する方法を確認してください。