マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > PCRモジュールを使用し高精度低電力レーダベースセンサを迅速に開発

PCRモジュールを使用し高精度低電力レーダベースセンサを迅速に開発

著者 Stephen Evanczuk 氏
Digi-Keyの北米担当編集者 提供
2019-05-14
マルツ掲載日:2019-08-13


 高分解能3Dセンサ技術は、ジェスチャに基づいたユーザーインターフェースや車載用ドライバ支援システム(ADAS)などのアプリケーションにおける重要な機能として登場しました。とりわけレーダ技術は、3Dセンサの代替技術の中でも従来のアプローチでは得られない機能と性能特性を提供します。少なからぬ開発者が、高い精度と低消費電力を同時に維持するのは困難だと感じていますが、レーダセンサシステムの導入は習得が容易です。

 Acconeerでは、パルスコヒーレントレーダ(PCR)と呼ばれる高度な技術を使用することにより、スマート製品や他の新しいアプリケーションに必要な高い精度と低消費電力を両立する統合レーダセンサを開発しました。

 この記事では、最初にAcconeerのPCRアプローチについて説明して、この技術に基づくレーダモジュールと関連する開発プラットフォームを紹介します。さらに、このプラットフォームを使用して、電池駆動のスマート製品を含む幅広いシステムに、洗練されたレーダセンサ技術を組み込む方法も説明します。

なぜレーダなのか?

 レーダベースのセンシング技術は高い更新周波数でミリメートル単位の分解能を提供できるため、高精度の物体検出、距離測定、位置トラッキングなどのアプリケーションで求められる高度に正確な距離およびモーションデータを生成できます。ただし、レーダ技術をスマート製品の設計に組み込むことにより、一般に開発者は低消費電力と精度のどちらを選択するかを迫られます。開発者は限られた電力バジェットでこの技術を設計に適用する方法を求めているため、アプリケーション要件では消費電力を低減しつつ精度を維持するというニーズが高まっています。

高度なレーダ技術

 従来のレーダ設計の代替アプローチは、洗練されたコヒーレントレーダ方式の精度とパルスレーダシステムの低減された電力要件を組み合わせるソリューションを提供します。パルスレーダ設計はパルス間のトランスミッタをシャットダウンし、低消費電力を実現しますが、精度が落ちてしまいます。対照的に、コヒーレントレーダシステムは、帰還信号の高精度な位相測定を使用して継続的に一連のパルスを送信し、高精度の測定を提供します。ただし、消費電力が増加してしまいます。

 Acconeerは、A111レーダセンサで使用されるPCR技術で、これらの技術を組み合わせています。PCR技術は、パルスレーダのように伝送間の無線をオフのままにしますが、伝送は、コヒーレントシステムのように、既知の開始位相を持つバーストパルス(またはスイープ)です(図1)。


図1:AcconeerのA111パルスコヒーレントレーダデバイスは、注意深く制御されたパルス繰り返し周波数(PRF)、中心周波数(fRF)、およびパルス幅(tpulse)で長短のウェーブレットを伝送することにより、低い消費電力で高い精度を実現します。(画像提供:Acconeer)

 パルス幅(tpulse)などのパラメータをチューニングすることにより、開発者は異なるアプリケーションの信号を最適化できます。たとえば、開発者は tpulse を低減して、ジェスチャ制御ユーザーインターフェースアプリケーションで、個々の指の小さな動きを分解するのに必要なより短いウェーブレットを生成できます。逆に、tpulse を増加させ、車載用自動駐車アプリケーションで障害物を分解するのに必要な高エネルギーの長いウェーブレットを生成することもできます。

 PCRの技術的な利点に魅力があるにもかかわらず、レーダ技術の特別な専門知識を持たない多くの開発者は、自力でこの技術を実装するのに必要な時間が取れません。効率的なミリ波フロントエンド段を設計するという課題に加え、取得した振幅と反射したレーダ信号の位相データを、有用な距離とモーションの測定値に変換するという課題にも直面します。

 AcconeerのPCRベースA111レーダデバイスおよび関連するソフトウェア開発キット(SDK)は、これらの課題に対処するために設計され、レーダ信号処理の低レベルな詳細を概念化します。これにより、アプリケーションがより簡単に使用できる形式でデータを提供します。

統合PCRフロントエンドによる開発の簡素化

 PCR技術実装のハードウェア面を簡素化することにより、AcconeerのA111はミリ波レーダフロントエンドを、5.2mm×5.5mm×0.88mmのフリップチップチップスケールパッケージ(fcCSP)で、アンテナインパッケージ(AIP)と統合する完全なレーダセンサを提供します(図2)。


図2:AcconeerのA111は、ミリ波無線、デジタルサブシステム、タイミング、および電源管理を統合し、パルスコヒーレントレーダ技術を使用して、レーダセンシングの完全なフロントエンドソリューションを提供します。(画像提供:Acconeer)

 ミリ波無線周波数(RF)サブシステムに加え、A111には、ミリ波無線サブシステムを管理するために、プログラムおよびデータ専用のメモリ領域を持つデジタルサブシステムも含まれます。別個のサブシステムが、位相ロックループ(PLL)のタイミング、パワーオンリセット(PoR)およびデバイスの複数パワー ドメイン用の別個の低ドロップアウト(LDO)レギュレータを含む電源管理機能を提供します。

 このデバイスは、ピコ秒単位の時間分解能を備えており、通常は最大2m圏でmm単位の精度で距離を測定することができます。同時に、その低い消費電力機能により、開発者は電池駆動デバイスでも使用できます。A111センサの高レベルな統合により、開発者がレーダセンシングを設計に実装するためには、ホストマイクロコントローラ以外に、いくつかの追加コンポーネントしか必要としません(図3)。A111はレーダ信号用の開口部なしでも動作可能であるため、開発者は既存の侵入保護要件を妥協せずにA111をスマート製品に組み込むことができます。


図3A111はレーダフロントエンドに必要なすべての無線周波数とデジタルサブシステムを統合しているため、ホストマイクロコントローラ以外に数個のコンポーネントを追加するだけでレーダセンシングを実装できます。(画像提供:Acconeer)

 A111は、シリアルデータ入力(MOSI)、シリアル出力(MISO)、クロック(SPI_CLK)、およびスレーブセレクト信号(SS)ポートを備えた従来のシリアルペリフェラルインターフェース(SPI)デバイスとして機能します。A111のENABLEピンにより、開発者はマイクロコントローラを使用してデバイスのパワーアップおよびパワーダウンができます。また、INTERRUPTピンにより、開発者はA111を使用して測定値の準備ができたことをマイクロコントローラに通知できます。

 ENABLEを使用してパルススイープ伝送間でA111をオフにすることにより、開発者はA111の電力消費を66μA(標準)に低減できます。逆に、A111が一連のスイープおよび測定を実行している間は、ホストマイクロコントローラを低電力スリープ状態にすることができます。これには、Arm Cortex-Mベースのプロセッサで利用できるWFI(wait-for-interrupt)命令を使用し、A111が動作を完了して割り込みを発行するとマイクロコントローラをウェイクします。

 設計者は独自の高精度なクロックソースを追加するか、デバイスの内部クロック回路に頼ることができます。これには、EPSONのTSX-3225のような外部水晶発振器のみを必要とします。デバイスは、RF(VIO_1およびVIO_2)およびデジタル(VIO_3)の単一1.8V電源で動作します。また、開発者はより電力集約型なアプリケーションに対して別個の電源を使用することもできます。図3に示すVIO_NaおよびVIO_Nbピンはデバイス内で接続されていますが、Acconeerはプリント基板の外部に接続することも推奨しています。

 純粋なレーダフロントエンドデバイスとして開発されたA111は、それ自体に永久的なファームウェアを保存しません。その代わりに、ホストマイクロコントローラに依存して、すべてのセンサソフトウェアをアップロードしたり、A111センサの起動、設定、スイープの取得、および信号処理を実行したりします。

 その結果、同時に使用するマイクロコントローラの選択は設計上の重要な決定事項になります。Acconeerは、STMicroelectronicsのSTM32L476またはNordic SemiconductorのNRF52840のようなArm Cortex-M4ベースのマイクロコントローラが、距離測定または基本的なモーション検出のような比較的スタティックな動作の処理には通常十分であるとしています。

 ブリージングモーション検出または物体トラッキングのようなよりダイナミックなアプリケーションについては、AcconeerはMicrochip TechnologyのATSAME70などのArm Cortex-M7ベースのマイクロコントローラを推奨しています。そのため、AcconeerはA111 PCRデバイスを同社のXM112レーダモジュール内でATSAME70と組み合わせています。

 AcconeerのXM112モジュールは、A111レーダセンサをMicrochip TechnologyのATSAME70マイクロコントローラと組み合わせて、完全なレーダサブシステムを提供します。開発者は、XM112XB112ブレイクアウトボードと併用することにより、A111の評価とPCRベースのソフトウェアアプリケーションの構築をすぐに開始できます。

 また、開発者は30ピン24mm×16mmモジュールを独自のPCBに接続して、自己完結型PCRサブシステムをカスタム設計に追加することもできます。レーダセンシングを実行するために、開発者は開発システムとのシリアル接続を介してXM112モジュールを制御できます。または、XM112のホストATSAME70マイクロコントローラ上でソフトウェアを直接実行できます。

ソフトウェアインターフェース

 ハードウェアシステム構成に関係なく、レーダ測定はAcconeerレーダシステムソフトウェア(RSS)のアプリケーションプログラミングインターフェース(API)を使用して、プログラムにより制御します。RSS APIは、A111と連携するための単一ソフトウェアインターフェースとして機能します。

 Acconeerは、設計、較正、処理要件の複雑さを理由として、一般的なSPIトランザクションを介したA111レジスタへのアクセスをサポートしません。代わりに、すべての動作はA111の検出器機能を提供するRSS経由で実行されます。次いで、これらの検出器は低レベルのサービス上にAPI経由で構築され、A111から前処理されたさまざまなタイプのデータにアクセスします。これらのサービスには次のものが含まれます。

・センサデータの振幅に関する情報を提供するEnvelopeサービス
・定義済みの距離間隔(ビン)で振幅情報を提供するPower Binサービス
・IQ変調データを提供するIQサービス(位相や振幅の測定を使用して、EnvelopeやPower Binサービスの振幅よりも高精度の測定値を生成することが可能)

 これらのサービス内で、開発者は電源管理、範囲強化、および自己較正などの特長を活用できます。

 電源管理では、開発者はセンサのアップデートレートを減らすことで電力消費を低減する4つの電源モードの1つにデバイスを設定できます。範囲強化機能により、開発者は測定範囲を一部の条件下で最大7m拡張するロングスイープを実行できます。最後に、自己較正機能により、開発者はデバイスの起動時に毎回発生する較正サイクルに関連した電力消費を低減できます。たとえば、IoTの電池駆動設計では、デバイスは周期的にスリープモードに移行されたり、非アクティビティの期間が延長されるとオフにされたりします。

 多くの場合、各ウェイクサイクルの初めに自己較正を実行する必要はなく、電力の無駄になるだけです。代わりに、開発者は不揮発性メモリの初期較正サイクルからの値を保存し、それらの値を使用して、以降のウェイク期間中に確実に測定を実行できます。

 本番のコード開発では、AcconeerのSDKに加えて、サンプルアプリケーションソースコードを提供する完全なソフトウェアディストリビューションパッケージをダウンロードできます。SDKにはヘッダファイルに加え、Arm Cortex-M4とArm Cortex-M7マイクロコントローラ用のコンパイル済みRSSライブラリが含まれています(マイクロコントローラの種類により別個のディストリビューションで提供)。

 SDKのC言語コードサンプルは、RSS APIを使用して本番アプリケーションでレーダ測定を実行するための基本設計パターンを示しています。どのタイプの測定においても、この設計パターンは最初に、順番に次の3つのルーチンを呼び出して、システムとRSSを初期化します。

・基板とGPIOを初期化するacc_driver_hal_init()
・C構造acc_hal_tのインスタンスを作成するacc_driver_hal_get_implementation()。これは、センサと基板プロパティに加え、メモリ割り当てやセマフォ用のランタイムハンドラへのポインタを保持します。
・レーダシステムサービス(RSS)ユーティリティ自体をアクティブ化するacc_rss_activate_with_hal()

 ここからは、一般的な測定では構成と呼ばれるオブジェクトの作成が必要となります。これには、センサや特定の測定に関連したパラメータが含まれます。次に、その構成は、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()測定ルーチンをループに配置し、測定を100回実行するまでdetection_runsカウントを減少させます。

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)は、レーダ信号処理の複雑さを概念化し、アプリケーションレベルで求められるより高レベルのデータを提供します。

 A111ベースの開発ボードとSDKを使用することにより、開発者はレーダセンシング技術における経験を素早く得ることができ、ミリメートル分解能で物体を識別し動作をトラッキングする洗練されたアプリケーションを迅速に実装できます。


免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。


 

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   


Digi-Key社の全製品は 1個からマルツオンラインで購入できます

※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ