使用 PCR 模組快速開發高準確度的低功率雷達式感測器

作者:Stephen Evanczuk

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

從以手勢為基礎的使用者介面到汽車駕駛輔助系統 (ADAS),高解析度 3D 感測器技術已成為眾多應用的關鍵功能。在 3D 感測器替代方案中,雷達技術提供的許多功能與效能特點,是一般傳統做法所無法提供的。但是要維持高準確度並兼顧低功耗,對開發人員來說仍是一大難題,而且要學會部署雷達感測器系統並不容易。

Acconeer 採用一項名為同調脈衝雷達 (PCR) 的先進技術開發出整合式雷達感測器,可為智慧型產品以及其他新興應用提供所需的高準確度和低功耗。

本文將介紹 Acconeer 的 PCR 方法,然後介紹雷達模組以及以其技術作為基礎的相關開發平台。本文還會展示如何使用該平台,為各種系統設計精密的雷達感測器技術,包括以電池供電的智慧型產品。

為何要使用雷達?

雷達式感測技術能夠在高更新頻率下提供毫米級解析度,因此能提供多種應用所需的高準確度距離和動作資料,進行精確的物體偵測、距離測量以及位置追蹤等作業。但是在將雷達技術整合到智慧型產品設計時,開發人員常常不得不在低功率或高準確度中進行取捨。隨著開發人員希望在功率預算有限的設計中採用這項技術,應用需求越來越要求設計即便在低功率下,也依然能保持高準確度。

先進的雷達技術

相較於傳統的雷達設計,新的替代方案結合了精密同調雷達方法的準確度,以及脈衝雷達系統對功率要求低的特點。脈衝雷達設計會在兩次脈衝之間關閉發射器,雖然能減少功耗,但準確度也較低。相比之下,同調雷達系統會持續發射一系列脈衝,利用回波訊號的精準相位測量,提供高準確度測量結果,但代價是功耗很高。

Acconeer 將這些方法整合在 A111 雷達感測器所用的 PCR 技術中。PCR 技術會在兩次發射之間關閉無線電,這點和脈衝雷達很類似,但發射的型態卻與同調系統中的一樣,是一系列具有已知起始相位的脈衝 (即掃描) (圖 1)。

Acconeer 的 A111 同調脈衝雷達裝置圖形

圖 1:Acconeer 的 A111 同調脈衝雷達裝置能夠在低功耗條件下達到高準確度,其原理是發射長小波或短小波,並精確控制脈衝重複頻率 (PRF)、中心頻率 (fRF) 以及脈衝持續時間 (tpulse)。(圖片來源:Acconeer)

透過調整脈衝持續時間 (tpulse) 等參數,開發人員能夠對不同的應用進行訊號最佳化。例如,在手勢控制的使用者介面應用中,開發人員可以減少 tpulse 值,以產生所需的短小波來解析每根手指的小幅移動。而在汽車自動停車應用中,開發人員可以增加 tpulse 值,以產生所需的高能量長小波來解析障礙物。

雖然 PCR 的技術優勢很有吸引力,但若沒有精深的雷達技術專長,很少有開發人員能抽出大量時間自行實作這項技術。除了在設計高效率毫米波 (mmWave) 前端級時所碰到的難題外,開發人員在將所採集的雷達反射訊號振幅及相位資料,轉換為實用的距離及動作測量結果時,也會碰到相當多困難。

Acconeer 以 PCR 為基礎的 A111 雷達裝置及相關的軟體開發套件 (SDK),專為克服這些難題而設計。此套件會抽象化雷達訊號處理的低階細節,以更易於應用程式使用的形式提供資料。

整合式 PCR 前端簡化開發

Acconeer 的 A111 提供完整的雷達感測器,在 5.2 x 5.5 x 0.88 mm 的覆晶晶片尺寸封裝 (fcCSP) 中整合毫米波雷達前端以及封裝天線 (AIP),簡化了 PCR 技術實作的硬體層面 (圖 2)。

Acconeer 的 A111 整合毫米波無線電示意圖

圖 2:Acconeer 的 A111 整合了毫米波無線電、數位子系統、時序和電源管理,為使用同調脈衝雷達技術的雷達感測提供完整的前端解決方案。(圖片來源:Acconeer)

除了毫米波射頻 (RF) 子系統之外,A111 中還有數位子系統,使用專用記憶體區域來儲存程式與資料,以管理毫米波無線電子系統。各個子系統均提供鎖相迴路 (PLL) 時序與電源管理功能,包括開機重置 (PoR),以及將獨立的低壓降 (LDO) 穩壓器用於裝置的多個電源域。

該裝置具有皮秒級時間解析度,通常能夠以毫米級準確度在長達兩公尺的範圍內測量距離。同時,其低功耗特性能讓開發人員將其用於以電池供電裝置中。由於 A111 感測器的整合度很高,因此除了主機微控制器之外,開發人員只需要使用一些額外的元件,就能在設計當中實作雷達感測功能 (圖 3)。此外,A111 無需雷達訊號孔眼便能運作,因此開發人員能夠在智慧型產品中直接整合此裝置,而不會影響現有的侵入防護要求。

Acconeer 的 A111 微控制器示意圖

圖 3:A111 整合有雷達前端所需要的所有射頻與數位子系統,因此除了主機微控制器之外,開發人員只需要使用一些額外的元件,就能實作雷達感測功能。(圖片來源:Acconeer)

A111 的功能類似於傳統的序列周邊裝置介面 (SPI) 裝置,且具有序列資料輸入 (MOSI)、序列輸出 (MISO)、時脈 (SPI_CLK) 以及從屬選擇訊號 (SS) 連接埠。開發人員可藉由 A111 的致能引腳 (ENABLE),使用微控制器對裝置進行上電或斷電,並藉由中斷引腳 (INTERRUPT),使用 A111 通知微控制器已準備好進行測量。

透過使用致能引腳 (ENABLE) 在兩次脈衝掃描發射之間關閉 A111,開發人員可將 A111 的功耗降低到 66 µA (典型值)。而在 A111 執行一系列掃描和測量時,開發人員可使用 Arm® Cortex®-M 型處理器提供的等待中斷 (WFI) 指令,讓主機微控制器進入低功率睡眠狀態,並在 A111 完成操作且發出中斷時喚醒微控制器。

設計人員可加入自己的高精密時脈來源,也可以仰賴裝置的內部時脈電路;該電路只需要一個外部石英振盪器,例如 EPSONTSX-3225。該裝置採用單個 1.8 V 電源為 RF (VIO_1 和 VIO_2) 以及數位 (VIO_3) 子系統供電。另外,開發人員也可以使用獨立的電源為需要更高功率的應用供電。圖 3 顯示的 VIO_Na 以及 VIO_Nb 引腳已在裝置內部建立連接,而 Acconeer 建議,也應在 PC 板上對這些引腳進行外部連接。

A111 只是作為雷達前端裝置使用,本身不會永久儲存韌體,而是仰賴於主機微控制器來上傳所有感測器軟體,以及處理 A111 感測器的啟動、設定、掃描採集和訊號處理。因此,選擇所搭載的微控制器是一項很重要的設計決策。Acconeer 指出,以 Arm Cortex-M4 為架構的微控制器 (例如 STMicroelectronicsSTM32L476Nordic SemiconductorNRF52840),通常便足以處理距離測量或基本動作偵測等相對靜態的作業。對於呼吸動作偵測或物體追蹤等較為動態的應用,Acconeer 建議使用以 Arm Cortex-M7 為架構的微控制器,例如 Microchip TechnologyATSAME70。因此,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),以編程方式控制雷達測量。若想使用 A111,RSS API 是唯一的軟體界面。由於設計、校正以及處理要求極為複雜,Acconeer 不支援透過典型的 SPI 交易來存取 A111 暫存器。相反地,所有作業都會透過 RSS 進行,藉此提供 A111 偵測器功能。這些偵測器又透過 API 構建低層服務,繼而從 A111 存取不同類型的預處理資料。這些服務包含:

  • Envelope 服務 - 提供有關感測器資料的振幅資訊
  • Power Bin 服務 - 提供預定義範圍間隔 (分檔) 內的振幅資訊
  • IQ 服務 - 提供 IQ 調變資料,允許使用相位與振幅測量技術,讓測量結果比僅有振幅資訊的 Envelope 和 Power Bin 服務所能提供的結果更準確

在這些服務當中,開發人員可利用一些特殊功能進行電源管理、範圍增強,以及自我校正等等。

對於電源管理,開發人員可以將裝置置於四種功率模式之一,透過降低感測器的更新頻率來減少功耗。範圍增強功能則可讓開發人員執行長距離掃描,在某些條件下,能將測量範圍延伸到長達 7 m。最後,自我校正功能可讓開發人員降低裝置啟動時的校正週期所產生的功耗。例如,在以電池供電的 IoT 設計中,裝置可經常進入睡眠模式,甚至在長時間不活動時關機。

在許多情況下,在每個喚醒週期開始時執行自我校正是不必要的,只是在浪費電力而已。替代方式是開發人員可以將初始校正週期的值,儲存在非揮發性記憶體中,並在稍後的喚醒週期中,使用這些值可靠地進行測量。

對於生產程式碼開發,工程師可以下載整套的軟體發行套件,此套件提供應用程式範例原始碼和 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) 進行實例化,此結構體可保存感測器與機板的屬性,以及記憶體分配、旗號等執行階段處理程序的指標。
  • 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() 等 RSS 常式處理低層細節,如本程式碼片段所示。(程式碼來源:Acconeer)

開發人員可以使用具有類似設計模式的服務呼叫來實作自己的偵測器,以進行初始化、RSS 啟用、配置建立以及服務實例化。例如,要使用 Envelope 服務,開發人員可呼叫 acc_service_envelope_configuration_create() 來建立必要的配置,並以該配置為參數調用 acc_service_create(),對服務物件進行實例化。

只需仔細研究這個 C 語言範例程式碼,開發人員便可快速累積相關經驗,知道如何使用 RSS API 打造包含自訂偵測器的專業雷達應用。為了幫助開發人員在整體上更快熟悉雷達型感測,尤其是 RSS 服務,Acconeer 還在其 Python Exploration Kit 軟體儲存庫中提供範例程式碼。

Python Exploration Kit 可與 Acconeer SDK 以及 XM112 等評估套件搭配使用,能協助開發人員在使用 RSS 服務與偵測器上充分發揮 Python 的生產力優勢。除了基本範例之外,該套件還提供能實作高複雜性測量應用的範例程式碼,包括偵測睡眠者的呼吸模式、使用相位資訊追蹤相對移動,以及偵測接近中的障礙物等等。

結論

雷達感測技術可以為距離和動作應用提供相當準確的測量。然而,為了達到高準確度,這項技術可能會消耗大量功率,設計過程通常也很複雜。透過實作 PCR,Acconeer 的 A111 整合式雷達感測器為智慧型產品以及其他新興應用提供所需的高準確度和低功耗特性。而配套的軟體開發套件 (SDK) 可將雷達訊號處理的複雜性抽象化,在應用層級提供所需的更高階資料。

只需配合使用 SDK 和以 A111 為基礎的開發板,工程師可以快速取得雷達感測技術方面的經驗,並能快速實作複雜的應用,以毫米解析度識別物體並追蹤移動情況。

DigiKey logo

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

關於作者

Image of Stephen Evanczuk

Stephen Evanczuk

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

關於出版者

DigiKey 北美編輯群