STMicroElectronics VL53L7CX 飛行時間多區域測距感測器

STMicroElectronics VL53L7CX 飛行時間多區域測距感測器

介紹

本用戶手冊的目的是解釋如何使用超精簡驅動程序 (ULD) API 處理 VL53L7CX 飛行時間 (ToF) 傳感器。 它描述了對設備進行編程的主要功能、校準和輸出結果。

VL53L7CX 飛行時間感測器專為需要超寬 FoV 的應用而設計,提供 90° 對角線 FoV。 VL53L7CX 基於意法半導體的 Flight Sense 技術,在雷射發射器上整合了高效的超表面透鏡 (DOE),可將 60° x 60° 方形 FoV 投影到場景上。

其多區域功能提供了一個 8×8 區域(64 個區域)的矩陣,並且可以在高達 60 厘米的快速 (350 Hz) 下工作。

由於具有可編程距離閾值的自主模式與超寬 FoV 相結合,VL53L7CX 非常適合任何需要低功耗用戶檢測的應用。 ST 的專利演算法和創新模組結構使 VL53L7CX 能夠在每個區域中檢測 FoV 內的多個物體,並具有深度理解。 STMicroElectronics 直方圖演算法可確保玻璃蓋板的串擾抗擾度超過 60 公分。

源自 VL53L5CX,兩個傳感器的引出線和驅動器是兼容的,這確保了從一個傳感器到另一個傳感器的簡單遷移。

與所有基於 ST Flight Sense 技術的飛行時間 (ToF) 感測器一樣,VL53L7CX 在每個區域記錄絕對距離,無論目標顏色和反射率如何。

VL53L7CX 採用集成了 SPAD 陣列的微型可回流封裝,可在各種環境照明條件下實現最佳測距性能,並適用於各種保護玻璃材料。

ST 的所有 ToF 傳感器都集成了一個 VCSEL,可發射完全不可見的 940 nm 紅外光,對眼睛完全安全(1 級認證)。

VL53L7CX 是任何需要超寬視野的應用的完美感測器,例如機器人、智慧揚聲器、視訊投影機、內容管理。多區域功能和 90° FoV 的結合可以增強新的用例,例如手勢識別、機器人 SLAM 以及智慧建築的低功耗系統活化。

圖 1. VL53L7CX感測器模組
介紹

縮略語

首字母縮略詞/縮寫 定義
美國能源部 衍射光學元件
視野 的領域 view
I²C 內部集成電路(串行總線)
Kcps/SPAD 每個 spad 每秒千計數(用於量化進入 SPAD 陣列的光子數量的單位)
記憶體 隨機存取記憶體
SCL 串行時鐘線
SDA 串行數據
SPAD 單光子雪崩二極管
飛行時間 飛行時間
貨櫃 超精簡驅動程序
垂直腔面發射雷射器 垂直腔表面發射二極管
超高壓 非常高的音量tage
Xtalk 相聲

功能說明

系統結束view

VL53L7CX系統由硬體模組和運行在主機上的ultra lite驅動軟體(VL53L7CX ULD)組成(見下圖)。硬體模組包含ToF感測器。 STMicroElectronics 提供軟體驅動程序,在本文檔中稱為「驅動程式」。本文檔描述了主機可以存取的驅動程式的功能。這些函數控制感測器並獲取測距數據。

圖 2. VL53L7CX系統結束view
功能說明
有效導向
該模塊在 Rx 孔徑上方包含一個鏡頭,可翻轉(水平和垂直)捕獲的目標圖像。 因此,SPAD 陣列左下角標識為區域 0 的區域被位於場景右上角的目標照亮。

圖 3. VL53L7CX有效定向
功能說明
原理圖和 I²C 配置

驅動程式和韌體之間的通訊由 I²C 處理,工作頻率高達 1 MHz。該實作需要在 SCL 和 SDA 線上上拉。有關更多信息,請參閱 VL53L7CX 數據表。 VL53L7CX 裝置的預設 I²C 位址為 0x52。但是,可以更改預設位址以避免與其他設備發生衝突,或方便在系統中添加多個 VL53L7CX 模組以獲得更大的系統 FoV。可以使用 vl53l7cx_set_i2c_address() 函數來變更 I²C 位址。

圖 4. I²C 總線上的多個感測器
功能說明

為了允許設備更改其 I2C 位址而不影響 I2C 總線上的其他設備,停用未更改設備的 I2C 通訊非常重要。程序如下:

  1. 正常啟動系統。
  2. 拉低不會更改其地址的設備的 LPn 引腳。
  3. 將 I²C 位址已更改的裝置的 LPn 引腳上拉。
  4. 使用 set_i2c_address() 函數將 IXNUMXC 位址編程到裝置。
  5. 上拉未重新編程的器件的 LPn 引腳。

所有設備現在都可以在 I²C 總線上使用。對系統中所有需要新 I²C 位址的 VL53L7CX 設備重複上述步驟。

包內容和數據流

驅動程序架構和內容

VL53L7CX ULD 套件由四個資料夾組成。驅動程式位於資料夾/

VL53L7CX_ULD_API。
驅動程序由強制和可選組成 file秒。 可選的 file是 plugins 用於擴展 ULD 功能。 每個插件都以“vl53l7cx_plugin”一詞開頭(例如 vl53l7cx_plugin_xtalk.h)。 如果用戶不想要建議的 plugins, 它們可以在不影響其他驅動程序功能的情況下被刪除。 下圖代表強制 files 和可選的 plugins.

圖5。驅動架構
包內容和數據流

用戶還需要實現兩個 file它位於 /Platform 文件夾中。 建議的平台是一個空殼,必須填充專用功能。

筆記: 平台。 H file 包含使用 ULD 的強制性宏。 所有 file 正確使用 ULD 所需的內容

標定流程

串擾 (Xtalk) 定義為 SPAD 陣列上接收到的訊號量,這是由於 VCSEL 光造成的
模組頂部添加的保護窗(蓋玻璃)內的反射。 VL53L7CX模組具有自校準功能,無需任何額外校準即可使用。

如果模組受玻璃蓋保護,則可能需要串擾校準。 VL53L7CX 不受
得益於直方圖演算法,串擾超過 60 公分。然而,在 60 公分以下的短距離內,Xtalk 可能會大於實際返回的訊號。這會產生錯誤的目標讀數或使目標看起來比實際距離更近。所有串擾校準功能都包含在 Xtalk 外掛程式(選購)中。用戶需要使用 file 'vl53l7cx_plugin_xtalk'。

串擾可以校準一次,並且可以儲存資料以便日後重複使用。需要一個固定距離且反射率已知的目標。所需的最小距離為 600 毫米,且目標必須覆蓋整個 FoV。根據設置,使用者可以修改設定以適應串擾校準,如下表所示。

表 1. 校準的可用設置

環境 最小 由意法半導體提出 最大限度
距離 [毫米] 600 600 3000
數量amp萊斯 1 4 16
反射率 [%] 1 3 99

筆記: 增加 s 的數量amples 提高了準確性,但也增加了校準時間。 時間相對於s的個數amples 是線性的,值遵循近似超時:

  • 1秒ample ≈ 1 秒
  • 4秒amples ≈ 2.5 秒
  • 16秒amples ≈ 8.5 秒

使用函數 vl53l7cx_calibrate_xtalk() 執行校準。該功能可以隨時使用。然而,必須先初始化感測器。下圖表示串擾校準流程。

圖 6. 串擾校準流程
包內容和數據流

測距流量

下圖表示用於獲取測量值的測距流程。 在開始測距會話之前,必須使用 Xtalk 校準和可選函數調用。 在測距會話期間不能使用獲取/設置功能,並且不支持“即時”編程。

圖 7. 使用 VL53L7CX 測距流量
包內容和數據流

可用功能

VL53L7CX ULD API 包括多種​​功能,可讓使用者根據使用案例調整感測器。以下部分描述了驅動程式可用的所有功能。

初始化

在使用 VL53L7CX 傳感器之前必須完成初始化。 此操作要求用戶:

  1. 打開傳感器電源(VDDIO、AVDD、LPn 引腳設置為高電平,引腳 I2C_RST 設置為 0)
  2. 呼叫函數vl53l7cx_init()。此函數將韌體(~84 KB)複製到模組。這是透過 I²C 介面載入程式碼並執行引導例程來完成初始化來完成的。

傳感器重置管理

要重置設備,需要切換以下引腳:

  1. 將引腳 VDDIO、AVDD 和 LPn 引腳設置為低電平。
  2. 等待 10 毫秒。
  3. 將 VDDIO、AVDD 和 LPn 引腳設定為高電平。

筆記: 僅切換 I2C_RST 引腳會重設 I²C 通訊。

解決

分辨率對應於可用區域的數量。 VL53L7CX 感測器有兩種可能的解析度:4×4(16 個區域)和 8×8(64 個區域)。預設情況下,感測器以 4×4 進行編程。函數 vl53l7cx_set_resolution() 允許使用者更改解析度。由於測距頻率取決於分辨率,因此必須在更新測距頻率之前使用此功能。此外,更改解析度還會增加讀取結果時 I²C 總線上的流量大小。

測距頻率

測距頻率可用於改變測量頻率。由於最大頻率不同
在4×4和8×8解析度之間,需要在選擇解析度後使用此功能。下表列出了允許的最小值和最大值。

表 2. 最小和最大測距頻率

解決 最小測距頻率 [Hz] 最大測距頻率 [Hz]
4×4 1 60
8×8 1 15

可以使用函數 vl53l7cx_set_ranging_frequency_hz() 更新測距頻率。 默認情況下,測距頻率設置為 1 Hz。

測距模式

測距模式允許用戶在高性能或低功耗測距之間進行選擇。 建議採用兩種模式:

  • 連續:設備以用戶定義的測距頻率連續抓取幀。 VCSEL 在所有測距期間都處於啟用狀態,因此最大測距距離和環境抗擾度更好。 建議將此模式用於快速測距測量或高性能。
  • 自主:這是預設模式。設備以一定的頻率連續抓取幀
    由使用者定義。 VCSEL 在使用者定義的時間段內使用函數 vl53l7cx_set_integration_time_ms() 啟用。由於 VCSEL 並不總是啟用,因此功耗會降低。隨著測距頻率的降低,好處更加明顯。建議低功耗應用使用此模式。

可以使用函數 vl53l7cx_set_ranging_mode() 更改測距模式。

積分時間

積分時間是僅在使用自主測距模式時才可用的功能(請參閱第 4.5 節:測距
模式)。它允許用戶在 VCSEL 啟用時更改時間。如果測距改變積分時間
模式設定為連續沒有效果。預設積分時間設定為 5 ms。積分時間的影響對於 4×4 和 8×8 解析度是不同的。 4×4解析度由8個積分時間組成,8×XNUMX解析度由XNUMX個積分時間組成。下圖表示兩種解析度的 VCSEL 發射。

圖 8. 4×4 自主的積分時間
可用功能

圖 9. 8×8 自主的積分時間
可用功能

所有積分時間的總和 + 1 ms 開銷必須低於測量週期。 否則,測距週期會自動增加以適應積分時間值。

電源模式

電源模式可用於在不使用設備時降低功耗。 VL53L7CX 可以在以下電源模式之一下運行:

  • 喚醒:設備設置在 HP idle(高功率),等待指令。
  • Sleep:設備被設置在LP idle(low power),即低功耗狀態。 除非設置為喚醒模式,否則無法使用該設備。 此模式保留固件和配置。

可以使用函數 vl53l7cx_set_power_mode() 來變更電源模式。預設模式是喚醒。
筆記: 如果用戶想要更改電源模式,設備不得處於測距狀態。

卷筆刀

從目標回傳的訊號不是具有尖銳邊緣的乾淨脈衝。邊緣傾斜並可能影響相鄰區域中報告的距離。銳化器用於消除遮光眩光引起的部分或全部訊號。

前任amp下圖中顯示的 le 表示 FoV 中心 100 mm 處的近距離目標,以及位於 500 mm 後方的另一個目標。 根據銳化器值,近距離目標可能出現在比真實目標更多的區域中。

圖 10. Examp使用多個銳化器值的場景文件
可用功能
可用功能
可用功能

可以使用函數 vl53l7cx_set_sharpener_percent() 來變更磨刀器。允許的值介於 0% 和 99% 之間。預設值為 5%。

目標訂單

VL53L7CX 可以測量每個區域的多個目標。由於直方圖處理,主機能夠
選擇報告目標的順序。有兩種選擇:

  • Closest:最近的目標是第一個報告的
  • 最強:最先報告的是最強的目標

可以使用函數 vl53l7cx_set_target_order() 來變更目標順序。預設順序是最強。前任amp下圖中的le表示檢測到兩個目標。 一個在 100 毫米處具有低反射率,一個在 700 毫米處具有高反射率。

圖 11. Examp具有兩個目標的直方圖文件
可用功能

每個區域多個目標

VL53L7CX 每個區域最多可以測量四個目標。 用戶可以配置傳感器返回的目標數量。

筆記: 兩個待偵測目標之間的最小距離為 600 毫米。驅動程式無法進行選擇;它必須在“平台”中完成。 H' file。巨集 VL53L7CX_NB_ TARGET_PER_ZONE 需要設定為 1 到 4 之間的值。第 4.9 節:目標順序中所述的目標順序直接影響偵測到的目標的順序。預設情況下,感測器每個區域最多僅輸出一個目標。

筆記: 每個區域的目標數量增加會增加所需的 RAM 大小。

Xtalk 餘量

Xtalk 餘量是一個附加功能,只能使用插件 Xtalk。 .c 和 .f file需要使用'vl53l7cx_plugin_xtalk'。

當感測器頂部存在蓋玻片時,此裕度用於更改偵測閾值。設定串擾校準資料後,可以增加閾值以確保永遠不會偵測到蓋玻片。對於前amp在該檔案中,使用者可以在一台裝置上執行串擾校準,並為所有其他裝置重複使用相同的校準資料。 Xtalk 餘裕可用於調整串擾校正。下圖代表了Xtalk的利潤率。

圖 12. Xtalk 餘量
可用功能

檢測閾值

除了常規的測距功能外,還可以對傳感器進行編程,以根據某些預定義的標準檢測物體。 使用插件“檢測閾值”可以使用此功能,該選項默認不包含在 API 中。 這 file需要使用名為「vl53l7cx_plugin_detection_thresholds」的函數。當滿足使用者定義的條件時,此功能可用於觸發引腳 A3 (INT) 的中斷。有三種可能的配置:

  • 解析度 4×4:每個區域使用一個閾值(總共 16 個閾值)
  • 解析度 4×4:每個區域使用兩個閾值(總共 32 個閾值)
  • 解析度 8×8:每個區域使用一個閾值(總共 64 個閾值)

無論使用何種配置,創建閾值的過程和 RAM 大小都是相同的。 對於每個閾值組合,需要填寫幾個字段:

  • 區域 id:所選區域的 id(請參閱第 2.2 節:有效方向)
  • 測量:要捕捉的測量(距離、信號、SPAD 數量……)
  • 類型:測量窗口(窗口內、窗口外、低於低閾值……)
  • 低門檻:觸發的低門檻用戶。 用戶無需設置格式,由API自動處理。
  • 高閾值:觸發的高閾值使用者。用戶無需設定格式;它由 API 自動處理。
  • 數學運算:僅用於每個區域的 4×4 – 2 個閾值組合。 用戶可以在一個區域中使用多個閾值來設置組合。

運動指示器

VL53L7CX 感測器具有嵌入式韌體功能,可在場景中進行運動偵測。議案
指標是在連續幀之間計算的。使用外掛程式“vl53l7cx_plugin_motion_indicator”可以使用此選項。

運動指示器使用 vl53l7cx_motion_indicator_init() 函數進行初始化。更換感測器
分辨率,使用專用函數更新運動指示器分辨率:vl53l7cx_motion_indicator_set_resolution()。

用戶還可以更改檢測運動的最小和最大距離。 最小和最大距離之差不能大於 1500 毫米。 默認情況下,距離初始化為 400 毫米到 1500 毫米之間的值。

結果儲存在“motion_indicator”欄位中。在此欄位中,數組「motion」給出的值包含
每個區域的運動強度。高值表示幀之間的高運動變化。典型的運動給出的值在 100 到 500 之間。此靈敏度取決於積分時間、目標距離和目標反射率。

低功耗應用的理想組合是使用具有自主測距模式的運動指示器以及針對運動編程的檢測閾值。 這允許以最小的功耗檢測 FoV 中的運動變化。

定期溫度補償

測距性能受溫度變化的影響。 VL53L7CX 感測器嵌入溫度
串流媒體開始時校準一次的補償。然而,如果溫度發生變化,
補償可能與新溫度不一致。為了避免此問題,客戶可以使用自動 VHV 運行定期溫度補償。定期溫度校準需要幾毫秒的時間來運作。使用者可以定義時間段。要使用此功能,客戶需要:

  • 呼叫函數 vl53l7cx_set_VHV_repeat_count()。
  • 然後,給出每個新校準之間的幀數作為參數。

如果參數為 0,則停用補償。

測距結果

可用數據
在測距活動期間可能會輸出大量目標和環境數據。 下表描述了用戶可用的參數。

表 3. 使用 VL53L7CX 傳感器的可用輸出

元素 Nb 字節 (RAM) 單元 描述
每個 SPAD 的環境 256 Kcps/SPAD 在 SPAD 陣列上執行環境速率測量,沒有主動光子發射,以測量由於噪聲引起的環境信號速率。
檢測到的目標數量 64 沒有任何 當前區域中檢測到的目標數。 該值應該是第一個檢查以了解測量有效性的值。
啟用的 SPAD 數量 256 沒有任何 當前測量啟用的 SPAD 數量。 遠或低的反射目標會激活更多 SPAD。
每個 SPAD 的信號 256 x nb 目標編程 Kcps/SPAD VCSEL 脈衝期間測得的光子數量。
範圍西格瑪 128 x nb 目標編程 毫米 報告的目標距離中噪聲的 Sigma 估計器。
距離 128 x nb 目標編程 毫米 目標距離
目標狀態 64 x nb 目標編程 沒有任何 測量有效性。 看 第 5.5 節:結果 解釋 了解更多。
反射率 64 x 編程目標數 百分比 以百分比表示的估計目標反射率
運動指示器 140 沒有任何 包含運動指示器結果的結構。 “運動”字段包含運動強度。

筆記: 對於多個元素(每個spad、sigma 等的訊號),如果使用者為每個區域編程了多個目標(請參閱第4.10 節:每個區域多個目標),則對資料的存取會有所不同。參見前amp文件代碼以獲取更多信息。

自定義輸出選擇

預設情況下,所有 VL53L7CX 輸出均啟用。如果需要,使用者可以停用某些感測器輸出。驅動程式上無法停用測量;它必須在“平台”中執行。 H' file. 用戶可以聲明以下宏來禁用輸出:

#定義 VL53L7CX_DISABLE_AMBIENT_PER_SPAD
#定義 VL53L7CX_DISABLE_NB_SPADS_ENABLED
#定義 VL53L7CX_DISABLE_NB_TARGET_DETECTED
#定義 VL53L7CX_DISABLE_SIGNAL_PER_SPAD
#定義 VL53L7CX_DISABLE_RANGE_SIGMA_MM
#定義 VL53L7CX_DISABLE_DISTANCE_MM
#定義VL53L7CX_DISABLE_TARGET_STATUS
#定義 VL53L7CX_DISABLE_REFLECTANCE_PERCENT
#定義 VL53L7CX_DISABLE_MOTION_INDICATOR

因此,這些欄位不會在結果結構中聲明,且資料不會傳輸到主機。 RAM 大小和 I²C 大小減少。為了確保資料一致性,ST始終建議保持「偵測到的目標數量」和「目標狀態」啟用。這會根據目標狀態過濾測量結果(請參閱第 5.5 節:結果解釋)。

獲取測距結果

在測距會話期間,有兩種方法可以知道是否有新的測距數據可用:

  • 輪詢模式:連續使用函數vl53l7cx_check_data_ready()。 它檢測傳感器返回的新流計數。
  • 中斷模式:等待引腳 A3 (GPIO1) 上引發的中斷。約 100 μs 後中斷自動清除。

當新資料準備好時,可以使用函數 vl53l7cx_get_ranging_data() 讀取結果。它傳回包含所有選定輸出的更新結構。由於設備是異步的,因此沒有需要清除的中斷來繼續測距會話。此功能適用於連續測距模式和自主測距模式。

使用原始固件格式

透過I²C傳輸測距資料後,韌體格式和主機格式之間會進行轉換。通常執行此操作以獲得以毫米為單位的測距距離作為感測器的預設輸出。如果使用者想使用韌體格式,則必須在平台中定義以下宏 file:VL53L7CX

#定義VL53L7CX_USE_RAW_FORMAT

結果解讀 

可以過濾 VL53L7CX 傳回的資料以考慮目標狀態。狀態指示測量有效性。完整狀態清單如下表所述。

表 4. 可用目標狀態列表

目標狀態 描述
0 測距數據未更新
1 SPAD 陣列上的信號速率太低
2 目標階段
3 Sigma 估計量太高
4 目標一致性失敗
5 範圍有效
6 未執行環繞(通常是第一個範圍)
7 速率一致性失敗
8 當前目標的信號速率太低
9 大脈衝有效範圍(可能是由於合併目標)
10 範圍有效,但在之前的範圍內未檢測到目標
11 測量一致性失敗
12 由於磨刀器,目標被另一個模糊
13 檢測到目標但數據不一致。 次要目標經常發生。
255 未檢測到目標(僅當啟用檢測到的目標數時)

為了獲得一致的數據,使用者需要過濾無效的目標狀態。為了給出置信度評級,狀態為 5 的目標被視為 100% 有效。狀態 6 或 9 可以視為信賴度值為 50%。所有其他狀態均低於 50% 置信水準。

驅動程式錯誤

當使用 VL53L7CX 感知器發生錯誤時,驅動程式會傳回特定錯誤。下表列出了可能出現的錯誤。

表 5. 使用驅動程式時出現的錯誤列表

目標狀態 描述
0 沒有錯誤
127 用戶編程了不正確的設置
(解析度未知、測距頻率太高…)
255 重大錯誤。通常是由於 I²C 錯誤而導致的逾時錯誤。
其他 上述多個錯誤的組合

筆記: 主機可以利用平台實現更多的錯誤碼 files.

修訂歷史

表 6. 文檔修訂歷史

日期 版本 變化
02 年 2022 月 XNUMX 日 1 初次發布
02 年 2022 月 XNUMX 日 2 已更新 章節介紹
新增了有關目標之間最小距離的註釋 第4.10節:多重 每個區域的目標
21 年 2024 月 XNUMX 日 3 添加了 VHV(非常高的體積tage) 到 第 1 節:首字母縮寫詞和縮寫詞。額外 第 4.14 節:定期溫度補償

客戶支援

重要通知 - 請仔細閱讀
STMicroElectronics NV 及其子公司(「ST」)保留隨時對 ST 產品和/或本文檔進行更改、更正、增強、修改和改進的權利,恕不另行通知。採購商在下單前應取得ST產品的最新相關資訊。 ST 產品依照訂單確認時的 ST 銷售條款和條件進行銷售。

購買者對 ST 產品的選擇、選擇和使用承擔全部責任,ST 對購買者產品的應用協助或設計不承擔任何責任。

ST 此處未授予任何知識產權明示或暗示的許可。

轉售條款與此處所列資訊不同的 ST 產品將使 ST 對該產品授予的任何保固失效。

ST 和 ST 標誌是 ST 的商標。有關 ST 商標的更多信息,請參閱 www.st.com/trademarks。所有其他產品或服務名稱均為其各自所有者的財產。

本文檔中的資訊取代並取代本文檔任何先前版本中先前提供的資訊。
© 2024 義法半導體 – 保留所有權利

標識

文件/資源

STMicroElectronics VL53L7CX 飛行時間多區域測距感測器 [pdf] 使用者指南
VL53L7CX 飛行時間多區域測距感測器,VL53L7CX,飛行時間多區域測距感測器,飛行多區域測距感測器,多區域測距感測器,測距感測器

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *