高分辨率 3D 傳感器技術已經成為各種應用的一大關鍵功能,從基于手勢的用戶界面到汽車駕駛員輔助系統 (ADAS) 等。在各種 3D 傳感器技術中,雷達技術具有大多數傳統方法所不具備的功能和性能特點。然而,開發人員發現保持高精度和低功耗具富挑戰性,部署雷達傳感器系統也具有陡峭的學習曲線。
Acconeer 使用被稱作相干脈沖雷達 (PCR) 的先進技術開發集成式雷達傳感器,為智能產品和其他新興應用同時提供了所需的高精度和低功耗。
本文首先介紹 Acconeer 的 PCR 方法,然后介紹一款雷達模塊以及基于該技術的相關開發平臺。此外,本文還將演示如何使用該平臺將復雜的雷達傳感器技術應用到各種系統設計中,包括電池供電的智能產品。
為什么要使用雷達?
在更新頻率較快的情況下,基于雷達的感應技術仍能夠提供毫米級分辨率,并為精確物體檢測、距離測量、定位跟蹤等各種應用提供所需的高精度距離和運動數據。但是,要在智能產品設計中采用雷達技術,開發人員通常必須在低功耗或高精度這兩者之間進行取舍。隨著開發人員將這項技術應用于功率預算有限的設計,越來越多的應用要求保持高精度,即使代價是降低功率水平。
先進的雷達技術
有別于傳統雷達設計的另一種方法提供了相應的解決方案,可將復雜相干雷達方法的高精度與脈沖雷達系統的低功耗要求結合在一起。脈沖雷達系統會在脈沖之間關閉發射器,從而實現低功耗,但精度也比較低。相反,相干雷達系統則可發射連續脈沖,使用對返回信號的精確相位測量來提供高精度測量,代價則是功耗較高。
Acconeer 的 A111 雷達傳感器中使用的 PCR 技術結合了這兩種技術。與脈沖雷達一樣,PCR 在脈沖發射之間也會關閉無線電,但與相干雷達系統一樣,發射的是脈沖串,即掃描,具有已知的起始相位(圖 1)。
?
?
圖 1:Acconeer 的 A111 相干脈沖雷達器件通過發射長短不同的小波,對脈沖重復頻率 (PRF)、中心頻率 (fRF)、脈沖持續時間 (tpulse) 進行精準控制,以低功耗實現高精度。(圖片來源:Acconeer)
通過調節脈沖持續時間 (tpulse) 等參數,開發人員能夠針對不同應用來優化信號。例如,在手勢控制的用戶界面應用中,開發人員可以縮短 tpulse 以生成時間較短的小波,來解析各手指的小幅運動。相反,在汽車自動停車應用中,他們可以延長 tpulse 以生成時間較長的高能量小波,來解析障礙物。
雖然 PCR 的技術優勢頗具吸引力,但若沒有雷達技術領域的豐富經驗,開發人員很少有時間能自行實現這項技術。除了在高效毫米波 (mmWave) 前端設計階段所面臨的挑戰外,開發人員還面臨著另一項嚴峻挑戰,即將所采集的反射雷達信號的幅值和相位數據轉換為實用的距離和運動測量數據。
Acconeer 基于 PCR 的 A111 雷達器件和相關軟件開發套件 (SDK) 專為應對這些挑戰而設計,可提取雷達信號處理的低級細節,并以應用易于處理的方式來提供數據。
集成式 PCR 前端簡化開發
Acconeer 的 A111 在硬件方面簡化了 PCR 技術實施,提供完整的雷達傳感器,將毫米波雷達前端與封裝天線 (AIP) 集成,采用 5.2 x 5.5 x 0.88 mm 的倒裝片芯片級封裝 (fcCSP)(圖 2)。
?
?
圖 2:Acconeer 的 A111 集成毫米波無線電、數字子系統、定時和電源管理模塊,為使用相干脈沖雷達技術的雷達檢測提供完整的前端解決方案。(圖片來源:Acconeer)
除了毫米波射頻 (RF) 子系統之外,A111 還包括數字子系統,為程序和數據提供專用存儲區域,用于管理毫米波無線電子系統。獨立子系統提供鎖相環 (PLL) 定時和電源管理功能,包括上電復位 (PoR) 和獨立低壓差 (LDO) 穩壓器,適用于器件的多個功率域。
憑借皮秒級的時間分辨率,在長達兩米的測量范圍內,該器件的測距精度通常能夠達到毫米級。同時,低功耗特性讓開發人員能夠將其用于電池供電的設備。由于 A111 傳感器高度集成,開發人員在主機微控制器之外只需其他少量元器件,即可在設計中實現雷達檢測(圖 3)。由于 A111 能夠在未合成孔徑雷達信號的情況下工作,因而開發人員能夠將其應用在智能產品中,而不影響現有的侵入防護要求。
?
?
圖 3:由于 A111 集成了雷達前端所需的全部射頻和數字子系統,因而開發人員在主機微控制器之外只需其他少量元器件,即可實現雷達檢測。(圖片來源:Acconeer)
A111 充當傳統的串行外設接口 (SPI) 器件,具有串行數據輸入 (MOSI)、串行輸出 (MISO)、時鐘 (SPI_CLK) 和從設備選擇信號 (SS) 端口。A111 的使能引腳 (ENABLE) 讓開發人員能夠使用微控制器為器件上電和斷電,而中斷引腳 (INTERRUPT) 讓開發人員能夠在測量就緒時使用 A111 通知微控制器。
通過在脈沖掃描發射之間利用使能引腳關閉 A111,開發人員能夠將 A111 功耗降低至 66 μA(典型值)。相反,在 A111 執行一系列掃描和測量時,開發人員可使用基于 Arm? Cortex?-M 的處理器所提供的等待中斷 (WFI) 指令,將主機微控制器置于低功耗休眠狀態,并在 A111 完成操作后發出中斷來喚醒微控制器。
設計人員可以自行添加高精度時鐘源,也可以依賴器件的內部時鐘電路,后者只需接入 EPSON 的 TSX-3225 等外部晶體振蕩器即可工作。該器件使用 1.8 V 單電源為射頻(VIO_1 和 VIO_2)和數字 (VIO_3) 端供電。或者,對于高能耗應用,開發人員可以使用獨立電源。圖 3 所示的 VIO_Na 和 VIO_Nb 引腳已在器件內部連接,Acconeer 建議在印刷電路板上對其進行外部連接。
A111 專門作為雷達前端器件而設計,因此本身并不具備任何永久性存儲的固件,而是依賴于主機微控制器來上傳所有傳感器軟件,處理 A111 傳感器啟動、配置、掃描采集和信號處理。因此,輔助微控制器的選擇是一項重要的設計決策。Acconeer 指出,STMicroelectronics 的 STM32L476 或 Nordic Semiconductor 的 NRF52840 等基于 Arm Cortex-M4 的微控制器,通常足以處理測距或基本運動檢測等相對靜態的操作。而對于呼吸運動檢測或對象跟蹤等更動態的應用,Acconeer 則推薦使用基于 Arm Cortex-M7 的微控制器,例如 Microchip Technology 的 ATSAME70。因此,Acconeer 在 XM112 雷達模塊中,將 A111 PCR 器件與 ATSAME70 配對使用。
Acconeer 的 XM112 模塊結合了 A111 雷達傳感器與 Microchip Technology 的 ATSAME70 微控制器,可提供完整的雷達子系統。開發人員可將 XM112 與 XB112 分線板結合使用,即可開始評估 A111,并構建基于 PCR 的軟件應用程序。或者,開發人員只需將這款 30 引腳 24 mm x 16 mm 模塊插入自己的 PCB,即可為定制設計添加自足式 PCR 子系統。為了執行雷達檢測,開發人員可以通過與開發系統串行連接來控制 XM112 模塊,或者直接在 XM112 主機 ATSAME70 微控制器上執行軟件。
軟件接口
無論硬件系統如何配置,開發人員都要使用 Acconeer 雷達系統軟件 (RSS) 應用編程接口 (API),以編程方式控制雷達測量。RSS API 是使用 A111 的唯一軟件接口。由于設計、校準和處理要求的復雜性,Acconeer 不支持通過典型 SPI 事務對 A111 寄存器進行訪問。相反,所有操作都通過 RSS 進行,以此提供 A111 檢測器功能。這些檢測器轉而通過 API 構建低級服務,以便訪問來自 A111 的不同類型預處理數據。這些服務包括:
Envelope 服務,提供有關傳感器數據的幅值信息
Power Bin 服務,提供預定義范圍間隔 (bin) 內的幅值信息
IQ 服務,提供 IQ 調制數據,可使用相位和幅值測量,生成的測量結果比使用僅幅值 Envelope 和 Power Bin 服務時更精確
在這些服務中,開發人員能夠充分利用電源管理、范圍增強、自校準等特殊功能。
在電源管理方面,開發人員能夠將器件設置于四種功率模式中的一種模式,通過降低傳感器更新速率來減少功耗。開發人員可借助范圍增強功能來執行長掃描,在某些條件下測量范圍可擴展至 7 米。最后,通過自校準功能,開發人員能夠降低每次器件啟動時因校準周期而產生的功耗。例如,在適用于物聯網的電池供電設計中,器件可能經常處于休眠模式,甚至因長期保持非活動狀態而關閉。
很多情況下,每個喚醒周期開始時都執行自校準實無必要,純粹只是增加功耗而已。相反,開發人員可將初始校準周期的數值存儲在非易失性存儲器中,并在后續的喚醒周期中使用這些值就能可靠地執行測量。
對于生產代碼開發,工程師可以下載完整的軟件分發包,該軟件包提供了樣例應用程序源代碼以及 Acconeer SDK。SDK 提供了頭文件,并在針對特定微控制器的分發軟件中,分別提供了適用于 Arm Cortex-M4 和 Arm Cortex-M7 微控制器的預編譯 RSS 庫。
SDK 的 C 語言代碼樣例闡示了在生產應用中使用 RSS API 執行雷達測量的基本設計模式。對于任何類型的測量,這種設計模式首先都要初始化系統和 RSS,按順序調用三個例程:
acc_driver_hal_init(),用于初始化電路板和 GPIO
acc_driver_hal_get_implementation(),用于實例化 C 結構 acc_hal_t,C 結構用于存儲傳感器和電路板屬性,以及存儲器分配和信號量等運行時間處理程序的指針。
acc_rss_activate_with_hal(),用于激活雷達系統服務 (RSS) 實用程序本身
此時,典型測量需要創建名為配置的對象,其中包含傳感器和特定測量的相關參數。然后使用該配置來調用 RSS API 函數,以構建所需的檢測器或服務。樣例代碼闡示了這種設計模式在 example_detector_distance_peak.c 模塊中的應用,以構建和使用距離峰值檢測器。在該模塊中,main() 例程(清單 1)首先執行初始化和 RSS 激活,然后創建配置 (acc_detector_distance_peak_configuration_create()),并使用該配置來構建峰值檢測器 (distance_peak_detect_with_blocking_calls())。
int main(void) { acc_detector_distance_peak_status_t detector_status;
printf(“Acconeer software version %s\n”, ACC_VERSION);
printf(“Acconeer RSS version %s\n”, acc_rss_version());
if (!acc_driver_hal_init())
{ return EXIT_FAILURE; } acc_hal_t hal = acc_driver_hal_get_implementation();
if (!acc_rss_activate_with_hal(&hal)) { return EXIT_FAILURE;
} //Create the detector configuration acc_detector_distance_peak_configuration_t distance_configuration = acc_detector_distance_peak_configuration_create();
if (distance_configuration == NULL)
{ fprintf(stderr, “\nacc_service_distance_configuration_create() failed”);
return EXIT_FAILURE; } //Run distance peak detection in blocking mode detector_status = distance_peak_detect_with_blocking_calls(distance_configuration);
if (detector_status != ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS) { fprintf(stderr, “Running distance peak detector in blocking mode failed”);
acc_detector_distance_peak_configuration_destroy(&distance_configuration);
acc_rss_deactivate(); return EXIT_FAILURE;
} detector_status = distance_peak_detect_with_blocking_calls_with_estimated_threshold(distance_configuration);
if (detector_status != ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{ fprintf(stderr, “Running distance peak detector in blocking mode with estimated threshold failed”);
acc_detector_distance_peak_configuration_destroy(&distance_configuration);
acc_rss_deactivate(); return EXIT_FAILURE;
} acc_detector_distance_peak_configuration_destroy(&distance_configuration);
acc_rss_deactivate(); return EXIT_SUCCESS; }
清單 1:Acconeer 軟件開發套件分發中包括的樣例代碼演示了使用 Acconeer 雷達系統服務 (RSS) 應用編程接口 (API),通過 Acconeer 的 A111 傳感器來執行測量的基本設計模式。(代碼來源:Acconeer)
在這個樣例應用程序中,實際的距離峰值測量在例程 distance_peak_detect_with_blocking_calls() 中執行。該例程轉而使用 RSS API 函數 acc_detector_distance_peak_get_next(),來檢索 A111 器件的實際測量數據(清單 2)。在本例中,代碼將 acc_detector_distance_peak_get_next() 測量例程置于循環中,遞減計數器 detection_runs,直至執行 100 次測量。
detector_status = acc_detector_distance_peak_activate(handle);
if (detector_status == ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{
uint_fast8_t detection_runs = 100;
while (detection_runs 》 0)
{ reflection_count = 10;
detector_status = acc_detector_distance_peak_get_next(handle,
reflections,
&reflection_count,
&result_info);
if (detector_status == ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{ printf(“Distance detector: Reflections: %u.Seq.nr: %u.(%u-%u mm): %s\n”,
(unsigned int)reflection_count,
(unsigned int)result_info.sequence_number,
(unsigned int)(start_m * 1000.0f),
(unsigned int)(end_m * 1000.0f),
format_distances(reflection_count, reflections, metadata.free_space_absolute_offset));
}
else
{
fprintf(stderr, “reflection data not properly retrieved\n”);
}
detection_runs--;
}
清單 2:在使用 Acconeer A111 傳感器執行測量的過程中,開發人員僅能使用 Acconeer 雷達系統服務 (RSS) 應用編程接口 (API),以調用 acc_detector_distance_peak_get_next() 等例程,用于處理低級細節,如本代碼片段所示。(代碼來源:Acconeer)
開發人員能夠在類似的設計模式中使用服務調用來進行初始化、RSS 激活、配置創建、服務實例化,從而實現自己的檢測器。例如,要使用 Envelope 服務,開發人員可以調用 acc_service_envelope_configuration_create() 來創建必需的配置,并在調用 acc_service_create() 時將該配置作為參數使用,以便實例化服務對象。
通過研究 C 語言樣例代碼,開發人員能夠使用 RSS API 來構建帶定制檢測器的專用雷達應用,從而快速獲取經驗。為了幫助開發人員更快熟悉基于雷達的感應,特別是 RSS 服務,Acconeer 還在 Python 探索套件軟件庫中提供了樣例代碼。
Python 探索套件旨在與 Acconeer SDK 和 XM112 等評估套件配合使用,幫助開發人員充分利用 Python 的工作效率優勢來構建 RSS 服務和檢測器。除了基本樣例之外,該套件還提供能實現復雜測量應用的樣例代碼,包括檢測睡眠對象的呼吸模式、使用相位信息來跟蹤相對運動、檢測正在接近的障礙物等。
總結
雷達檢測技術能夠為距離和運動測量應用提供高精度測量。但是,可能需要消耗大量功率才能實現高精度,設計過程通常也比較復雜。通過實現 PCR 技術,Acconeer 的 A111 集成式雷達傳感器為智能產品和其他新興應用同時提供了所需的高精度和低功耗。輔助軟件開發套件 (SDK) 可以對雷達信號處理的復雜度進行抽象化,提供應用級所需的更高級數據。
通過將 SDK 與基于 A111 的開發板配合使用,工程師能夠快速獲取雷達檢測技術方面的經驗,快速實現可識別對象和跟蹤運動的復雜應用,并達到毫米級分辨率。
評論
查看更多