2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« PIC24Fでレーザー距離センサVL53L0Xを使う(その2) | トップページ | 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う »

2022年4月13日 (水)

PIC24Fでレーザー距離センサVL53L0Xを使う(その3)

花岡ちゃんのウィークエンド:

 

まずVL53L0Xの測定モードの説明です。次の二つのモードがあります。

1:コンテニュアス

デバイスは連続的に測定を繰り返し、読み出しコマンドを実行するとレジスタにある直近の測定値を返します。使いやすいモードで、僕はもっぱらこれを使っています。デフォルトでは30msごとに測定をおこなっているようです。このモードでは、デバイスは常に20mA程度(実測値)の電流を消費しています。

プロジェクトではCONTINUOUSモードを選択(デフォルト)すると、50msごとに直近の測定結果を表示します。

2:シングル

読み出しコマンドを実行すると、測定プロセスをスタートさせ、レジスタにある前回の測定結果を返します。注意すべきなのは、コマンド発行時点の測定値を知りたい場合は、測定時間経過後にもう1度読み出しコマンドを発行しなければならないことです。最初のコマンドの時読み出されるのは「前回の」測定結果だからです。このモードはたとえば3秒毎の測定で十分な場合など、測定時以外はデバイスを低消費状態(実測で350uA程度)に置けるので、消費電力を倹約することができます。

プロジェクトではSINGLEモードを選択すると、3秒おきにセンサを起動し、測定時間を空けて2回読み込むことでそのときの測定結果を表示します。

 

次にプロジェクトでモードを切り替える方法です。

モードの切り替えはmain.cの35行からの「プログラムスイッチ」で#defineを有効にしたりコメントアウトして無効にしたりして行います。ソースコードを読んでもらえばやり方はわかると思います。

HIGH_SPEEDやHIGH_ACCURACY、LONG_RANGEなどのセンサの感度調整はSINGLEモードでのみ使えるようになっていますが、実際はコンテニュアスでも使えます。643行のstartContinuous(0);の前にsetHighAccracyVL53();などを挿入すると、その設定で測定を繰り返します。ただし、測定時間もそれに応じて変わるので、setHighAccracyVL53();ならば200ms周期での結果更新になります。50ms毎に読み出しても、4回は同じ値が入ってくる勘定になります。その際は読み出し周期を設定に合わせて調整する必要があります。

 

最後にプロジェクトの構成です。

VL53L0X.cがドライバのソースコードです。そのヘッダファイルがVL53L0X.hです。main.cではこれをインクルードしています。main.cはプログラムの本体でI2Cや液晶用のドライバなどもこれに記述されてます。I2C関係の関数と、呼ばれると起動後からの時間をmsで返す関数millis();を定義したmain.hがあり、VL53L0X.cはこれをインクルードしている構成になっています。

簡単なプロジェクトなら、main.cを改造して作ることができると思います。


次回はセンサを使う上での注意点などを解説します。

« PIC24Fでレーザー距離センサVL53L0Xを使う(その2) | トップページ | 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う »

花岡ちゃんのウィークエンド」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« PIC24Fでレーザー距離センサVL53L0Xを使う(その2) | トップページ | 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う »