您當前的位置:業界 >  >> 
如何快速啟動 3D 光學飛行時間感測設計

時間:2022-05-07 13:48:11    來源:電子工程網

來源:Digi-Key
作者:Stephen Evanczuk

在從工業感測到基于手勢的用戶界面等各種應用中,光學飛行時間 (ToF) 距離測量扮演著重要角色。隨著精確、高速多像素 ToF 傳感器的出現,開發人員可以實現這些應用中需要的更復雜的三維 (3D) 感測算法。然而,由于多像素光學感測子系統相當復雜,開發時間會較長。

本文將討論 ToF 的基本原理,然后介紹 Broadcom 的光學 ToF 評估套件,借助該套件,開發人員能夠快速進行精確的 1D 和 3D 距離測量應用原型設計,并可快速實現定制的光學 ToF 感測解決方案。

光學 ToF 技術基礎知識

光學 ToF 技術能夠根據光在空氣中傳播所需的時間做出測量,被廣泛用于多種應用以獲得所需的精確距離。執行這些測量時,具體計算通常依賴于兩種方法:直接和間接 ToF。在直接 ToF 法(也稱作“脈沖測距”)中,設備利用公式 1 測量 ToF 傳感器發射和接收特定光脈沖之間的間隔時間。

f1.jpg

公式 1

其中:

c0 = 真空中的光速

?T = 發射和接收的間隔時間

雖然概念很簡單,但要用這種方法實現精確測量,還面臨著許多挑戰,包括需要足夠強大的發射器和接收器、改善信噪比,以及精確的脈沖邊緣檢測。

相反,間接 ToF 法使用調制連續波,并根據公式 2 測量發射信號與接收信號之間的相位差:

f2.jpg

公式 2

其中:

c0 = 真空中的光速

fmod = 激光調制頻率

?φ = 確定的相位差

除了降低發射器和接收器的功率要求外,間接 ToF 法放寬了對脈沖整形的要求,簡化了執行 3D 測距和運動檢測的設計復雜程度。

直接法和間接法都需要仔細設計光學前端,并精確控制發射器和接收器的信號。多年來,開發人員已經能夠利用集成光學 ToF 傳感器的優勢,將發射裝置和接收傳感器組合在單一封裝中。然而,這類設備的前幾代通常要求開發人員在一些性能或操作特性(如功耗、量程、精度和速度)方面做出權衡。對于越來越多的工業感測應用,這種妥協已經成為主要障礙,因為這些應用需要在不超過 10 m 的中等距離內運行。

更先進的間接 ToF 傳感器模塊,如 Broadcom 的 AFBR-S50MV85G,則專門用于滿足在中等距離范圍內獲得高速、準確的結果,同時保持最小封裝尺寸和功耗這一日益增長的需求。基于這種傳感器,Broadcom 的 AFBR-S50MV85G-EK 評估套件及相關軟件開發套件 (SDK) 提供了一個多像素 ToF 傳感器開發平臺,使開發人員能夠快速實現 3D ToF 感測應用。

集成模塊如何簡化 ToF 距離測量

AFBR-S50MV85G 模塊專為工業感測應用而開發,在單一封裝中提供了完整的光學 ToF 感測解決方案。其集成元器件包括一個用于發射紅外光 (IR) 的 850 nm 垂直腔面發射激光器 (VCSEL)、一個 32 像素的六角形傳感器矩陣、用于 VCSEL 和傳感器光學器件的集成透鏡,以及一個專用集成電路 (ASIC)。

發射器相對于感測矩陣以固定對齊的方式定位,照射目標物體,從而使感測矩陣中的一些像素檢測到反射的紅外信號。在基本操作中,這使該模塊能夠支持從白色、黑色、彩色、金屬或反光表面進行精確的距離測量——即使在陽光直射下亦如此,這得益于其內置的環境光抑制功能。

隨著與物體的距離減小,可對視差進行自動補償,使得測量幾乎沒有距離下限。同時,紅外照射與感測矩陣相結合,可以獲得關于物體的更多信息,包括其運動、速度、傾斜角度或橫向對齊。因此,該模塊可以提供必要的數據,以確定經過或接近的目標物體的方向和速度(圖 1)。

1.jpg


圖 1:利用從 AFBR-S50MV85G 模塊的 8×4 像素感測矩陣獲得的數據,開發人員可以實現能夠測量物體運動特性的 3D 應用。(圖片來源:Broadcom)

該模塊的內置 ASIC 協調其 VCSEL 和感測矩陣的精確運行,提供驅動 VCSEL、從感測矩陣捕獲模擬信號以及進行數字信號調節所需的全部電路(圖 2)。

2.jpg


圖 2:AFBR-S50MV85G 模塊中集成的 ASIC 包括驅動該模塊的 VCSEL 光源、獲取來自感測矩陣的接收信號以及生成通過 SPI 總線傳輸的數字數據所需的全部電路。(圖片來源:Broadcom)

該 ASIC 集成了電源電路,使該模塊能夠在單一的 5 伏電源下運行,而其集成的經出廠校準和溫度補償的電阻電容 (RC) 振蕩器和數字鎖相環 (PLL) 則提供了所有需要的時鐘信號。由于這種集成,開發人員可以使用微控制器單元 (MCU) 和一些附加的外部元器件,輕松地將該模塊納入他們的設計。與 MCU 的接口只需要一個通用輸入/輸出 (GPIO) 引腳,用于接收來自模塊的數據就緒信號,以及一個通過模塊的數字串行外設接口 (SPI) 實現的連接(圖 3)。

3.jpg


圖 3:Broadcom 的 AFBR-S50MV85G 模塊只需要一個 MCU 和一些附加元器件即可實現完整的 ToF 感測系統。(圖片來源:Broadcom)

作為對這種簡單的硬件設計的補充,Broadcom 的 ToF 驅動軟件提供了實現距離測量所需的所有相關軟件功能。當該模塊處理距離測量應用的光學數據收集時,該公司提供的 AFBR-S50 SDK 中包含的 Broadcom ToF 驅動軟件會執行所有硬件配置、校準和測量步驟。在測量過程中,驅動軟件同時提取像素的距離和振幅值。

如何快速開發距離測量應用

Broadcom 的 AFBR-S50MV85G-EK 評估套件與 AFBR-S50 SDK 相結合,提供了適用于快速開發距離測量應用原型的綜合平臺。該套件附帶一塊包含 AFBR-S50MV85G 模塊的適配器板,NXP 基于 ArmCortex-M0+ MCU 的 FRDM-KL46Z 評估板,以及一條用于將評估板組件連接到筆記本電腦或其他嵌入式系統的迷你 USB 電纜(圖 4)。

4.jpg


圖 4:Broadcom 的 AFBR-S50MV85G-EK 評估套件及相關軟件提供了適用于 ToF 距離測量應用評估和原型開發的綜合平臺。(圖片來源:Broadcom)

使用評估套件進行 ToF 距離測量只需幾個步驟即可開始。下載 AFBR-S50 SDK 后,安裝向導會引導開發人員完成快速安裝程序。開發人員啟動 SDK 包中包含的 Broadcom AFBR-S50 Explorer 軟件應用程序后,該軟件通過 USB 接口連接到 AFBR-S50 評估板,通過在 NXP 板的 MCU 上運行的驅動軟件接收測量數據,并允許用戶以 1D 或 3D 曲線圖顯示結果(圖 5)。

5.jpg


圖 5:AFBR-S50 Explorer 軟件通過 3D 曲線圖顯示 ToF 傳感器矩陣中每個像素接收到的照射光振幅,簡化了 ToF 測量的評估。(圖片來源:Broadcom)

如圖 5 所示,3D 曲線圖顯示了每個像素的讀數,但軟件還提供了另一種視圖,允許開發人員僅查看被視為有效的測量像素。在此替代視圖中,不符合定義標準的像素將從曲線圖中刪除(圖 6)。

6.jpg


圖 6:借助 Broadcom 的 AFBR-S50 Explorer 軟件,開發人員可以查看精簡的 3D 測量曲線圖,刪掉不符合預定標準的像素。(圖片來源:Broadcom)

為了解不同應用場景的測量精度和性能,如照明、反射率和表面類型,開發人員可以查看不同感測配置的影響,例如對于增強型 3D 應用使用更多的像素;或對于需要更精確測量的 1D 應用使用更少的像素。在其原型中評估測量方法后,開發人員可以在 Broadcom 的 AFBR-S50 SDK 中包含的樣例軟件的基礎上,快速實現定制化 ToF 感測應用。

構建定制化 ToF 感測軟件應用

Broadcom 圍繞基于 AFBR-S50 核心庫的高效架構建立了對 ToF 感測應用的支持,該核心庫包括傳感器硬件專用代碼、應用編程接口 (API) 和硬件抽象層 (HAL)(圖 7)。

7.jpg


圖 7:在 Broadcom 的 ToF 工作環境中,ToF 驅動程序 API 提供的用戶應用代碼可訪問預編譯 ToF 驅動程序核心庫中的校準、測量和評估功能。(圖片來源:Broadcom)

作為 AFBR-S50 SDK 軟件包的一部分,Broadcom 將核心庫作為預編譯的 ANSI-C 庫文件提供,其中嵌入了運行 AFBR-S50MV85G 硬件所需的全部數據和算法。核心庫在距離測量系統的 MCU 上運行,具有校準、測量和評估等功能,能以最小的處理負荷或功耗進行距離測量。由于核心庫函數會處理所有的底層細節,開發人員看到的基本測量周期非常簡單(圖 8)。

8.jpg


圖 8:AFBR-S50 SDK ToF 軟件利用中斷和回調最大限度減少了處理器的工作負載。(圖片來源:Broadcom)

在每個測量周期的開始(通過周期性定時器中斷或 IRQ 啟動),MCU 啟動測量,隨后立即恢復空閑狀態(或繼續處理一些應用代碼)。測量完成后,AFBR-S50MV85G 模塊使用連接的 GPIO 線發出中斷信號,喚醒 MCU 以啟動 SPI 總線上的數據讀出,然后恢復之前的狀態。在數據讀出完成后(通過 SPI 完成的 IRQ 發出信號),MCU 執行代碼以評估獲得的 ToF 傳感器數據。

為防止丟失測量數據,核心庫會封鎖數據緩沖區直至調用評估例程,以防止啟動新的測量周期。因此,開發人員通常會加入一個用于原始數據的雙緩沖器,以允許交錯執行測量和評估任務。

對于應用軟件開發人員來說,核心庫例程屏蔽了校準、測量和評估的細節。事實上,開發人員可以將評估套件和 AFBR-S50 Explorer 應用程序作為一個完整的原型開發平臺,將測量數據傳遞至高級軟件應用代碼。

對于需要實現定制化應用軟件的開發人員來說,AFBR-S50 SDK 包將預編譯的核心庫模塊與幾個軟件樣例結合起來。由此,開發人員可以基于 SDK 中提供的樣例應用程序快速創建自己的 ToF 感測應用程序。開發人員可以通過調用 AFBR-S50 SDK API 中的函數以及為核心庫支持的各種回調指定自己的函數,在其應用特定的軟件代碼中訪問 AFBR-S50MV85G 硬件和 AFBR-S50 核心庫功能(仍然參見圖 7)。

Broadcom 提供了大量關于 API 和樣例軟件的文檔,使開發人員能夠迅速采取行動,根據自己的需要改寫軟件樣例或者從頭開始。事實上,基礎測量和評估周期非常簡單,只需將自定義函數和 API 調用與測量周期相匹配即可(仍然參見圖 8)。例如,前面討論的測量周期包括三個階段:ToF 設備集成、數據讀出和評估。啟動這三個階段所需的核心庫 API 調用包括:

· Argus_TriggerMeasurement(),異步觸發一個測量幀
· Argus_GetStatus(),在成功完成測量后返回 STATUS_OK
· Argus_EvaluateData(),評估原始測量數據中的有用信息

Broadcom 在 SDK 發行版包含的一個樣例應用程序中演示了該基礎測量循環,如列表 1 所示。


int main(void)
{
status_t status = STATUS_OK;

/* Initialize the platform hardware including the required peripherals
* for the API. */
hardware_init();

/* The API module handle that contains all data definitions that is
* required within the API module for the corresponding hardware device.
* Every call to an API function requires the passing of a pointer to this
* data structure. */
argus_hnd_t * hnd = Argus_CreateHandle();
handle_error(hnd ? STATUS_OK : ERROR_FAIL, "Argus_CreateHandle failed!");

/* Initialize the API with default values.
* This implicitly calls the initialization functions
* of the underlying API modules.
*
* The second parameter is stored and passed to all function calls
* to the S2PI module. This piece of information can be utilized in
* order to determine the addressed SPI slave and enabled the usage
* of multiple devices on a single SPI peripheral. */

status = Argus_Init(hnd, SPI_SLAVE);
handle_error(status, "Argus_Init failed!");

/* Print some information about current API and connected device. */
uint32_t value = Argus_GetAPIVersion();
uint8_t a = (value >>24) & 0xFFU;
uint8_t b = (value >>16) & 0xFFU;
uint8_t c = value & 0xFFFFU;
uint32_t id = Argus_GetChipID(hnd);
argus_module_version_t mv = Argus_GetModuleVersion(hnd);
print("\n##### AFBR-S50 API - Simple Example ##############\n"
" API Version: v%d.%d.%d\n"
" Chip ID: %d\n"
" Module: %s\n"
"##################################################\n",
a, b, c, id,
mv == AFBR_S50MV85G_V1 ? "AFBR-S50MV85G (v1)" :
mv == AFBR_S50MV85G_V2 ? "AFBR-S50MV85G (v2)" :
mv == AFBR_S50MV85G_V3 ? "AFBR-S50MV85G (v3)" :
mv == AFBR_S50LV85D_V1 ? "AFBR-S50LV85D (v1)" :
mv == AFBR_S50MV68B_V1 ? "AFBR-S50MV68B (v1)" :
mv == AFBR_S50MV85I_V1 ? "AFBR-S50MV85I (v1)" :
mv == AFBR_S50SV85K_V1 ? "AFBR-S50SV85K (v1)" :
"unknown");

/* Adjust some configuration parameters by invoking the dedicated API methods. */
status = Argus_SetConfigurationFrameTime( hnd, 100000 ); // 0.1 second = 10 Hz
handle_error(status, "Argus_SetConfigurationFrameTime failed!");

/* The program loop ... */
for (;;)
{
myData = 0;
/* Triggers a single measurement.
* Note that due to the laser safety algorithms, the method might refuse
* to restart a measurement when the appropriate time has not been elapsed
* right now. The function returns with status #STATUS_ARGUS_POWERLIMIT and
* the function must be called again later. Use the frame time configuration
* in order to adjust the timing between two measurement frames. */
Argus_TriggerMeasurement(hnd, measurement_ready_callback);
handle_error(status, "Argus_StartMeasurementTimer failed!");
STATUS_ARGUS_POWERLIMIT)
{
/* Not ready (due to laser safety) to restart the measurement yet.
* Come back later. */
continue;
}
else
{
/* Wait until measurement data is ready. */
do
{
status = Argus_GetStatus(hnd);
}
while (status == STATUS_BUSY);
handle_error(status, "Waiting for measurement data ready (Argus_GetStatus) failed!");
/* The measurement data structure. */
argus_results_t res;

/* Evaluate the raw measurement results. */
status = Argus_EvaluateData(hnd, &res, (void*) myData);
handle_error(status, "Argus_EvaluateData failed!");

/* Use the obtain results, e.g. print via UART. */
print_results(&res);
}
}
}

列表 1:Broadcom AFBR-S50 SDK 發行版中的樣例代碼演示了從 AFBR-S50MV85G 模塊獲取和評估 ToF 數據的基本設計模式。(代碼來源:Broadcom)

如列表所示,上述三個 API 函數調用構成了執行一個測量周期的骨干。通過研究 SDK 中的 API 文檔和其他樣例應用程序可以發現,該模塊能夠提供確定目標物體的速度、方向和傾斜角度等高級特性所需的數據,開發人員可以利用這種能力快速實現復雜的 3D 應用。

總結

光學 ToF 感測設備已經在需要精確距離測量的各種領域得以應用,但測量范圍、精度或可靠性方面的局限性阻礙了其向工業感測系統等應用的擴展,因為這類應用要求采用能夠在更遠的范圍內提供準確結果的低功耗設備。Broadcom 的集成光學 ToF 子系統滿足了新一代感測應用的這些新興要求。借助基于該設備的評估套件,開發人員可以在 1D 測距應用中快速實現精密測量系統,并可在 3D 應用中快速實現復雜物體運動跟蹤系統。

關鍵詞: 開發人員 距離測量 應用程序 測量數據 物體運動