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            

カテゴリー

ブログパーツ

無料ブログはココログ

« 【昔語り10】電子工作の「伝道師」泉弘志さんのこと | トップページ | 昔の深夜放送をラジオで聴くには »

2022年5月 1日 (日)

レーザー距離センサVL53L0Xを複数使うには

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

以前の投稿で、PIC24FでのVL53L0Xの使い方について説明しました。この時はI2CバスにVL53L0X一つだけを接続する使い方でしたが、今回は一つのI2Cバスに複数のVL53L0Xを接続する方法を解説します。以前の投稿のプログラムをベースにしてますので、こちらから始まる一連の投稿に目を通してから読んでください。

VL53L0XはI2C接続されるのでデフォルトのアドレスは0x29(7bit)となっています。このデバイスにはEEPメモリのようなアドレスを変更するピンはないので、起動時には全て0x29となってしまいます。その代わり、アドレスを変更するコマンドがあり、これで任意のアドレスを割り当てられるようになっています。ただし、割り当てたアドレスは電源を切ると初期値(0x29)に戻ってしまうので、起動時に毎回設定してやる必要があります。

接続はこの回路図のようにします。A,B二つのVL53L0Xを一つのI2Cバスに接続し、各デバイスのXSHUTピンをそれぞれマイコンのGPIOに接続します。

ダウンロード - hanaoka_vl53l0x_multi.pdf

XSHUTはリセットと同様に働く入力ピンで、これをLにするとVL53L0Xはデゼーブルになり、I2Cにも反応しなくなります。これを利用し、一つのVL53L0Xだけを有効にし、アドレスを設定していきます。

2個のVL53L0Xを使用する場合のプロジェクトを公開します。以前公開したものをベースにマルチ化したものですが、コンテニュアスモードだけがマルチに対応しています。シングルモードでは使えません。この点、注意してください。(作業を簡素化したためです。もちろんシングルモードでも複数のセンサを扱うことができます。)

ダウンロード - pic24f_vl53l0x_multi.x.zip

669行からがA,B二つのセンサに0x2A,0x2Bのアドレスを割り付け、コンテニュアスモードで初期化する部分です。測定値の読み出しかたは、690行あたりを見てください。VL53L0XのAPI(readRangeContinuousMillimeters()など)の実行前に、それぞれに割り当てたアドレスの指定が追加されています。

このようにA,Bセンサの値を読み出せます。

アドレスの割り当ては、次のような手順で行なっています。

1・全てのXSHUTをLにしてデゼーブルに

2・最初の一つのXSHUTをH、デフォルトアドレス(0x29)でアドレス変更APIを実行

3・次のXSHUTをH、デフォルトアドレス(0x29)でアドレス変更APIを実行

このように一つずつVL53L0Xをイネーブルにしてアドレスを変更する作業を、全てのVL53L0Xについて行えばよいわけです。

 

 

 

« 【昔語り10】電子工作の「伝道師」泉弘志さんのこと | トップページ | 昔の深夜放送をラジオで聴くには »

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

コメント

コメントを書く

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

« 【昔語り10】電子工作の「伝道師」泉弘志さんのこと | トップページ | 昔の深夜放送をラジオで聴くには »