VL53LOX使用レーザー測距センサモジュール(ToF)(秋月電子通商)をPICで制御しました。PIC用のファームウェアは、新 ソフト屋さんのひとりごと...で公表されているもの(VL53L0X.CとVL53L0X.H)をもとに作成しました(VL53L0X.Cはリンク切れなので、以前にダウンロードしていたVL53L0X.zipを参照)。このセンサーを自由落下させると、時間と高さ(距離)の関係から重力加速度を大まかに求めることができます。
回路図と実際のPIC回路を以下に示します。VL53L0XとPIC18F25K50の間はI2Cでインターフェースしています。PIC回路はUSB-仮想CDC機器となります。
1.MPLAB Code Configurator(Classic)をインストールしていない場合はMPLAB Code Configurator(Classic)の導入を参照ください。
2.PICに書き込むファームウェアは25K50_VL53L0X_cdc.X.zipです。これを解凍して出てくる25K50_VL53L0X_cdc.XフォルダーをMPLABXProjectsフォルダー(私の場合はC:\Users\yts\MPLABXProjects)の中に入れ、PIC18F25K50に書き込みます。3.Windows10(21H2)では、CDC用標準デバイスドライバ(Usbser.sys)を使用するようです。つまり、PIC基板とPCをUSBケーブルで接続すると自動的にこのドライバーが組み込まれまれるようです(別途ドライバーを組み込む必要がない)。デバイスドライバが組み込まれると以下のような画面がしばらく表示されます。画面からポート番号はCOM3ということが分かります。
4.PC上でTera Termを起動して、メニューから”設定->シリアルポート”を選択すると、シリアルポート設定画面が以下の様に現れるので、ポート番号(今の場合COM3)、ボーレートを 115200 bps(など適当)、データビットを8ビット、 パリティはなし, ストップビットを1、フロー・コントロールはなし、と設定してください。 設定が終わったら、シリアルポート設定画面を閉じ、メニューから”設定->設定の保存”を選択して、シリアルポート設定内容をファイルに保存しておくと、次回の接続時には、自動的に保存した設定内容が反映されます。
5.VL53L0Xから離れたところに手を置いて、PCのキーボードの適当なキーを押すと、以下の図のように、一列目にTimer0のカウンタ値、二列目に手までの距離([mm]単位)が現れます。なお、Timer0のカウンタ値は、距離計測が終了した時点での値で、Tera Termではこれを2の補数値として表示しています。
Timer0を16ビットモードでフリーランさせていて、レジスタTMR0LとTMR0HをPICに読み込むことでTimer0のカウンタ値を得ています。なお、システムクロックの1/4(12 MHz)をプリスケーラーで1/256して、これをカウンタに入力(12 /256 MHz:周期約21.3 μsec)しています。2の16乗は1665536なので、21.3* 1665536 μsec= 1.4 secの時間の間、21.3 μsecの精度で相対時刻を決定することができます。