使用預構建的解決方案,快速部署飛時測距技術

作者:Stephen Evanczuk

資料提供者:DigiKey 北美編輯群

從消費性產品到工業設備,許多應用領域越來越常使用飛時測距 (ToF) 技術,藉此進行距離量測與接近感測。單晶片 ToF 處理 IC 的問世,有助於簡化這些解決方案的實作,但開發人員依然要面對一些關鍵性工作,例如找到合適的發射器與光電二極體並進行最佳化,以及將這些元件與 ToF 處理器進行整合。若使用整合度更高的方法,可大幅簡化此程序並節省時間。

為了解決此問題,Digilent 開發了一款預構建的 ToF 附加電路板。此板件結合高效能系統板與相關的軟體資料庫後,可提供完整的硬體 ToF 解決方案。現在,開發人員能立即開始開發 ToF 應用的原型,或以這款硬體和軟體作為基礎,來設計客製化的 ToF 硬體和軟體。

本文將簡短說明 ToF 感測器的運作方式。接著會介紹 Digilent 的 Pmod ToF 板,並說明此板件如何和 Digilent 的 Zybo Z7-20 開發板搭配使用,以評估 ToF 技術並在自己的設計中快速部署光學距離感測。

ToF 感測器的運作方式

ToF 感測器在越來越多應用中扮演重要的角色。在汽車與工業設備中,當操作人員進行停車或近距離操作時,這些感測器有助於為操作人員提供障礙物警示。在消費性應用中,這些元件能在行動產品或居家自動化系統中,提供接近感測功能。在上述應用和其他應用中,光學 ToF 系統運用不同的方法,計算與外物或障礙物的距離。而外物反射光與原發射光之間的某些差異,就是這些方法所仰賴的基礎。

RenesasISL29501 ToF 型訊號處理 IC 等進階 ToF 元件,可測量外部 LED 或雷射所發射光線和光電二極體所接收光線之間的移相,以此方式來計算距離。當 ISL29501 以特定的頻率 fm,發出經方波調變的光線 (Tx) 時,物體的反射光學訊號 (Rx) 會以衰減的振幅 R 返回至 ISL29501,並帶有某種移相 j (圖 1)。

Renesas 的 ISL29501 等進階 ToF 元件示意圖圖 1:Renesas 的 ISL29501 等進階 ToF 元件,可使用內部數位訊號處理能力,根據發射光與反射光之間的移相 j,來計算與物體的距離。(圖片來源:Renesas)

藉著測量此移相,元件可計算出距離 D:

方程式 1 方程式 1

其中:

D = 與目標的距離

c = 光速

fm = 調變頻率

φ = 相位角 (弧度)

由於已經知道調變的頻率訊號 fm 和光速 c,因此只要找出剩餘的因數相位角 φ,就能計算出距離。這個因數可透過傳統的正交訊號處理技術計算得出。在這裡,同相 (I) 和正交 (Q) 訊號分量是由個別的 I 和 Q 訊號路徑產生,這些路徑包含解調器、低通濾波器 (LPF) 和類比數位轉換器 (ADC) (圖 2)。

Renesas 的 ISL29501 解調、濾波並轉換同相的示意圖圖 2:為了獲得距離計算所需的相位角 φ,Renesas 的 ISL29501 會對輸入訊號 (VIN) 的同相 (I) 和正交 (Q) 訊號分量,執行解調、濾波和轉換操作。(圖片來源:Renesas)

ISL29501 在內部將位於解調管線前方的綜合訊號路徑,和類比前端 (AFE) 訊號調整階段進行整合;後者包含轉阻放大器(TIA) 和低雜訊放大器 (LNA)。ISL29501 的輸入訊號路徑位於類比前端之後,含有一條可變增益 (Av)、自動增益控制 (AGC) 迴路,此迴路可使用內建的演算法來最佳化訊噪比。

在輸出端,ISL29501 整合有晶片上發射器驅動器鏈,其能以 4.5 MHz 的調變頻率為合適的發射器提供方波脈衝,以及高達 255 mA 的驅動電流。內部數位訊號處理器 (DSP) 會處理必要的運算,以從相位、振幅與頻率資料來產生距離結果,讓這個功能架構趨於完整 (圖 3)。

Renesas 的 ISL29501 結合訊號路徑,用以驅動發射器和處理光電二極體輸入的示意圖圖 3:Renesas 的 ISL29501 結合訊號路徑和內部數位訊號處理器;這些路徑用於驅動發射器和處理光電二極體輸入,處理器則會執行演算法,以從相位、振幅和頻率資料計算出距離。(圖片來源:Renesas)

選擇發射器與光電二極體

ISL29501 整合光電二極體輸入、發射器輸出與處理能力,為打造 ToF 距離感測解決方案提供彈性的硬體基礎。為了支援廣泛的發射器與光電二極體,該產品特別設計出一些特點,例如輸入端的 AFE 和 AGC 迴路,以及輸出端的可編程發射器驅動器。同時,仔細選擇和配置發射器與光電二極體,對一個完整 ToF 解決方案是否有效非常重要。

以發射器為例,ISL29501 相當有彈性,開發人員能從許多種紅外線 (IR) LED、垂直共振腔面射型雷射 (VCSEL),或其他具有相容電壓、電流與頻率規格的雷射元件中做選擇。事實上,典型的 ToF 解決方案對發射器類型較不敏感。儘管如此,還是建議使用近紅外線 (NIR) 或中波長紅外線 (MWIR) 元件,減少環境光源的干擾。選好元件後,開發人員需要決定最佳的發射器脈衝驅動電流,以及可能需要使用的任何 DC 電流分量。接下來,開發人員必須對元件進行編程,以透過發射器驅動器輸出鏈中整合的個別內部數位類比轉換器 (DAC),來供應脈衝與選配的 DC 電流。

同樣地,ISL29501 也能支援多種光電二極體,但對於決定最佳選擇而言,應用與發射器的選擇將會至關重要。和發射器一樣,以 NIR 或 MWIR 波長運作的光電二極體,也能協助減少環境光干擾。理想上來說,光電二極體的光譜響應曲線應盡可能窄,並且峰值位於發射器峰值波長的中央,以便最佳化訊噪比 (SNR)。雖然光電二極體需要最大限度地提升所能收集的光量,但增加光電二極體面積也會增加電容量 (包含接面電容量和離散電容量),這可能影響到光電二極體的響應時間,以及追蹤發射器上升和下降時間的能力。因此,開發人員需要在光電二極體面積和內部電容量之間找到最佳平衡,以便在不影響效能的情況下,獲得最大的訊號振幅。

整合式 ToF 解決方案

Digilent 的 Pmod ToF 板件專為加速 ToF 應用的開發而設計,可提供現成的 ToF 解決方案,其在一片小型規格板件中,結合有 Renesas 的 ISL29501 ToF IC、Microchip TechnologyAT24C04D EEPROM、IR LED 及光電二極體,並含有六引腳 Pmod 主機和直通連接器,以增加額外的 Pmod 擴充板 (圖 4)。

Digilent 的 Pmod ToF 板圖片圖 4:Digilent 的 Pmod ToF 板提供完整的 ToF 感測器解決方案,可藉由 Pmod 連接器連至系統板。(圖片來源:Digilent)

對於光源與光偵測器,該板件將 OSRAM Opto Semiconductors 的高功率 SFH 4550 860 nm LED,與 OSRAM 的 SFH 213 FA 光電二極體配對使用。此二極體具有快速的切換時間、750 至 1100 nm 的光譜靈敏度,以及 900 nm 的峰值靈敏度。

Renesas 的 ISL29501 雖然不需要針對相關的 LED 和光電二極體元件來使用額外的元件,但需要分別為三個電源域提供適當的 2.7 V 至 3.3 V 電源,並由類比電壓來源 (AVCC)、數位電壓來源 (DVCC) 和發射器驅動器電壓 (EVCC) 的個別引腳來供應。儘管這些電源域都能由相同的來源進行供應,但 Renesas 建議隔離這三個電源。如 Digilent 的 Pmod ToF 線路圖所示,Digilent 為每個電源使用 Murata ElectronicsBLM15BD471SN1D 鐵氧體磁珠和電容,藉此實現 ToF 板的這種隔離 (圖 5)。

Digilent 的 Pmod ToF 板示意圖圖 5:Digilent 的 Pmod ToF 板既提供立即可用的硬體解決方案來加速原型開發,又為客製化 ToF 系統提供公版設計。(圖片來源:Digilent)

開發環境

Digilent 透過以 Digilent Zybo Z7-20 板為基礎的開發環境,來協助加速 ToF 應用的實作。該板件以 Xilinx 的 Zynq XC7Z020 全可編程式 SoC (APSoC) 為基礎,構建出一個高效能的作業環境。這個 APSoC 整合了雙核心 Arm® Cortex®-A9 處理器,與廣大的可編程結構,其中包括支援 53,200 個查找表 (LUT)、106,400 個正反器,以及 630 KB 的區塊隨機存取記憶體 (RAM)。除了 Xilinx 的 Zynq XC7Z020 APSoC,Zybo Z7-20 板還包含 1 GB 的 RAM、16 MB 的四 SPI 快閃記憶體、多重介面、連接器與六個 Pmod 擴充埠。

Digilent 的 ZyboZ7-20 PmodToF-Demo 軟體發行版,是專為在 Zybo Z7-20 板上執行而設計,當中包含用於 Pmod ToF 階層區塊軟體資料庫的軟體開發套件 (SDK)。該資料庫為開發人員提供直覺的應用程式開發介面 (API),以根據 Xilinx SDK 內或 Digilent 針對 Pmod ToF 板提供的驅動器和支援模組,來打造應用 (圖 6)。

Digilent 的 Pmod ToF 階層區塊軟體資料庫圖片圖 6:藉由用於 Renesas 的 ISL29501 感測器、EEPROM 和 Pmod ToF 服務的模組,Digilent 的 Pmod ToF 階層區塊軟體資料庫強化了 Xilinx SDK 中的低階介面驅動器。(圖片來源:Digilent)

Digilent 資料庫結合 Xilinx SDK 的低階驅動器 (用於 I2C、GPIO 和 UART 通訊) 和一些模組,並且後者針對 Digilent 的 Pmod ToF 板 EEPROM 和 Renesas 的 ISL29501 元件,實作了暫存器層級作業。例如,ISL29501 模組提供了一個函數,能透過 ISL29501 來測量距離。由於 ISL29501 內部實作了此量測所需具備的詳細作業序列,因此在測量距離時,只需進行某些初始設定及一系列的暫存器讀寫。Digilent 資料庫的 ISL29501 模組所提供的函數,可實作特定的 ISL29501 作業,包括用於測量距離的作業 (清單 1)。

複製
double PmodToF_perform_distance_measurement()
{
    /* WRITE REG */
    u8 reg0x13_data = 0x7D;
    u8 reg0x60_data = 0x01;
    /* READ REG */
    u8 unused;
    u8 DistanceMSB;
    u8 DistanceLSB;
 
    double distance = 1;
    ISL29501_WriteIIC(&myToFDevice, 0x13, &reg0x13_data, 1);
    ISL29501_WriteIIC(&myToFDevice, 0x60, &reg0x60_data, 1);
    ISL29501_ReadIIC(&myToFDevice, 0x69, &unused, 1);
    CALIB_initiate_calibration_measurement();
       //waits for IRQ
    while((XGpio_DiscreteRead(&gpio, GPIO_CHANNEL) & GPIO_DATA_RDY_MSK) != 0 );
    ISL29501_ReadIIC(&myToFDevice, 0xD1, &DistanceMSB, 1);
    ISL29501_ReadIIC(&myToFDevice, 0xD2, &DistanceLSB, 1);
    distance =(((double)DistanceMSB * 256 + (double)DistanceLSB)/65536) * 33.31;
    return  distance;
}

清單 1:Digilent 資料庫的 ISL29501 模組中所含的軟體函數,會實作一些暫存器層級的作業,例如此處所示的距離量測。(程式碼來源:Digilent)

Digilent 資料庫的 PmodToF 模組可根據較低階模組來打造高階服務。例如,要執行並顯示某個測量,PmodToF 模組的 PmodToFCMD_MeasureCmd() 函數,會重複調用 ISL29501 模組的暫存器層級 PmodToF_perform_distance_measurement() 函數,並顯示結果的平均值 (清單 2)。

複製
/***   PmodToFCMD_MeasureCmd
**
**     Parameters:
**     none
**
**     Return Value:
**          ERRVAL_SUCCESS              0       // success
**
**     Description:
**            This function displays over UART the distance measured by the device.**            Before calling this function, it is important that a manual calibration was made or the calibration
**            was imported(calibration stored by the user in EEPROM user area )/restored from EEPROM(factory calibration).*/
void PmodToFCMD_MeasureCmd()
{
       int N = 100, sum = 0;
       int distance_val, distance_val_avg;
       // 100 distance values that are measure will be averaged into a final distance value
       for(int j=0;j<N;j++)
       {
              distance_val = 1000 * PmodToF_perform_distance_measurement(); // the distance value is in millimeters
              sum = sum + distance_val;
       }
       distance_val_avg = sum/N;
    sprintf(szMsg, "Distance measured D = %d mm.", distance_val_avg);
    ERRORS_GetPrefixedMessageString(ERRVAL_SUCCESS, "", szMsg);
    UART_PutString(szMsg);
}

清單 2:Digilent 資料庫的 Pmod ToF 模組中包含軟體函數,可提供一些應用層級服務,例如顯示多個距離量測的平均值,如此處所示。(程式碼來源:Digilent)

開發人員可以使用 Digilent 的 Pmod ToF 階層區塊軟體資料庫中的全套模組,也可以根據自己的應用,使用數量最少的一組模組。但對於每個應用,開發人員都需要執行強度、串音和距離校正,以確保準確度。雖然強度屬於內部校正,其他兩項則需要進行某些設定。對於串音校正,開發人員只需要使用板件隨附的一塊泡棉來阻擋光學元件,再執行校正即可。對於距離校正,開發人員在擺放 ToF 板件上,要讓光學元件和 IR 反射性較高的目標保持一段已知的距離,之後才執行校正。雖然 ISL29501 並未包含非揮發性記憶體,但開發人員可將新的校正值儲存在 Pmod ToF 板的 EEPROM 中,並在軟體初始化程序中載入這些數值。

這種現成的硬體與軟體結合,為建立光學 ToF 應用提供了即用型基礎。要快速進行原型開發,開發人員能透過 Digilent 的 Pmod ToF 和 Zybo Z7-20 板,立即執行資料庫發行版的範例軟體。對於客製化開發,Pmod ToF 板所代表的硬體公版設計,以及 Digilent 資料庫發行版中提供的軟體程式碼,皆可做為開發人員的建構基礎。

結論

雖然單晶片 ToF 處理 IC,可協助許多應用簡化 ToF 解決方案的實作,但開發人員還是要找出適當的發射器和光電二極體進行整合。如本文所述,預構建的 ToF 附加電路板搭配高效能的系統板,可提供更容易取得的解決方案,兩者一同提供完整的硬體 ToF 解決方案。透過結合此硬體解決方案與相關的軟體資料庫,開發人員能立即開始開發 ToF 應用的原型,或以這款硬體和軟體作為基礎,來設計客製化的 ToF 硬體和軟體。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk 撰寫電子產業的相關資訊已有超過二十年的經驗,涉及的主題多元,涵蓋硬體、軟體、系統以及包含 IoT 在內的應用。他以神經元網路為研究主題,取得神經科學博士學位,並且在航太產業,針對廣泛運用的安全系統和演算法加速方法進行研究。目前,在撰寫科技和工程文章之餘,他投入辨識和推薦系統的深度學習應用。

關於出版者

DigiKey 北美編輯群