資料ライブラリ
AN-1543: ADuCM4050 での SensorStrobe と入力サンプリングによる時刻同期、センサー・データ・サンプリング
はじめに
このアプリケーション・ノートでは、低消費電力のセンサーによる一貫した同期データ・アクイジションを認識するメカニズムであるSensorStrobe™および入力サンプリングの機構について説明します。SensorStrobeおよび入力サンプリングの技法は、ADuCM4050で使用でき、デバイスに接続されたセンサーによる同期データ・サンプリングが可能になります。
正確なタイム・ベースに同期させたセンサーによる高精度なサンプリングは、様々なセンサー・ノード・アプリケーションで必要とされます。センサー・データのサンプリングを指示するのは、マイクロコントローラ・ユニット(MCU)です。従来の方法では、MCUに搭載されたソフトウェアが汎用入出力(GPIO)にパルスを生成し、特定の間隔でセンサーをトリガすることでデータを収集します。この方法では、ソフトウェアのオーバーヘッドが大きく、デバイスがほとんどの時間アクティブになるため、電流の消費量が増えます。パルスのトリガはソフトウェアに依存するため、時間と共にドリフトすることもあります。
ADuCM4050のSensorStrobeおよび入力サンプリング技術は、以下の機能によって従来のソフトウェア方式の問題に対処します。SensorStrobeおよび入力サンプリングは、休止モードで動作します。これは、ADuCM4050で最も低消費な電力モードであるため、消費電流を抑え、バッテリ寿命を延ばすことができます。SensorStrobeおよび入力サンプリングにソフトウェアが介在することはなく、パルスのトリガは実行中の他のソフトウェアから独立しているため、正確なパルス生成が可能です。
このアプリケーション・ノートでは、リード・スイッチをADuCM4050に接続した構成をセットアップ例として使用します。システム全体が最も低消費な電力モードの状態で、SensorStrobe機構がリード・スイッチを駆動し、入力サンプリングがデータ収集を実行します。SensorStrobeおよび入力サンプリングを使用しない従来の方法と比較して、明らかに消費電力を削減できます。
SensorStrobe
SensorStrobe技術は、MCUが介在することなく、高効率かつ低消費電力で、本質的に同期された方法でセンサーによるサンプリングを実行します。ADuCM4050はSensorStrobeをサポートし、アクティブ・モード、flexiモード、休止モードで使用できます。SensorStrobeを使用すると、センサーやデバイスが一定の間隔でデータを収集中に、ADuCM4050を休止モードに移行できます。
SensorStrobeは、ADuCM4050に搭載されたリアルタイム・クロック(RTC1)のアラーム機能で、GPIOピンを通じて外部のデバイスやセンサーに出力パルスを送信します。ADuCM4050のSensorStrobeチャンネルを1つまたは複数のセンサーに接続して、センシングや変換機能をアクティブ化または有効化できます。SensorStrobeのイベントは、RTCのリアルタイム・カウントを基準とする特定の目標時間でSensorStrobeのイベントをアクティブにするようCPUからRTC1に命令することにより、スケジュールされます。RTC1がイネーブルになると、CPUは休止モードに入ってイベントの発生に備え待機することができます。
ADuCM4050に搭載されたSensorStrobe機能の重要な特性を下記に示します。
- 3つの独立したSensorStrobeチャンネル。すべてのチャンネルは16ビットで、最も遅い出力パルスは0.5Hz(32.768kHzのRTCクロック使用時)です。出力パルスの粒度は1RTC(32.768kHzのRTCクロックで30.51μs)です。出力パルスのハイとローの時間(それぞれ16ビットで)は、すべてのチャンネルで設定可能です。
- 3つのSensorStrobeチャンネルそれぞれに、読出し可能な割込み源のスティッキー・ビットがあり、SensorStrobeのイベントが発生するとアクティブ(ハイに固定)になります。SensorStrobeのイベントは、出力チャンネルの立上がりエッジ、立下がりエッジ、または両エッジで発生します。この割込み源ビットは、プロセッサへの割込みをイネーブルできると共に、プロセッサを低消費電力モードからウェークアップさせることもできます。
- SensorStrobeチャンネルは、動作中に再設定やイネーブル/ディスエーブルが可能なため、再設定に関係のないチャンネルへの割込みをする必要がありません。
- ensorStrobeチャンネルの出力パルス極性は、他のSensorStrobeチャンネルへの割込みをすることなく動作中に変更できます。
- すべてのSensorStrobeチャンネルは、SensorStrobeイベントが発生したとき、全周期及び全デューティ・サイクルをハイ時間レジスタ(RTC1_SSxHIGHDUR)およびロー時間レジスタ(RTC1_SSxLOWDUR)からの自動再ローディングを有効化/無効化することで、微調整することが可能です。
- 3つのSensorStrobeチャンネル(RTC1_SSx)は、3本の異なるGPIOピンから3つの異なる信号を送信することができます。1つのSensorStrobeチャンネルのパルスは、他のSensorStrobeチャンネルに影響を与えません。
- 各SensorStrobeチャンネルは、専用の出力GPIOを備えています。出力されたパルス信号は、反転させることもできます。
表1にADuCM4050のSensorStrobe用のGPIOピン位置を示します。
Channel Name | GPIO Pin No. |
Pin Location on EV-GEAR-EXPANDER1Z1 |
RTC1_SS1 | P2_11 | P8-6 |
RTC1_SS2 | P1_12 | A5-10 |
RTC1_SS3 | P2_08 | A5-8 |
1 EV-GEAR-EXPANDER1ZをEV-COG-AD4050LZに接続することで、すべてのGPIOピンにアクセスできます。
ADXL362に接続して使用するSensorStrobe
SensorStrobeのメリットを実証するシステム例を図1に示します。このシステムは、ADuCM4050とADXL362を搭載したEV-COG-AD4050LZ開発ボードで構成されています。
ADuCM4050のSensorStrobeとADXL362の外部トリガ機能を組み合わせることで、システムの消費電力をできる限り抑えて加速度センサーのデータを収集します。SensorStrobeを使用することで、ADXL362が一定間隔でデータを収集しているときにADuCM4050を休止モードに移行できます。
ADXL362は超低消費電力の3軸マイクロマシン(MEMS)加速度センサーです。このデバイスには、センサー・データを保存するために、512サンプルの先入れ先出し(FIFO)バッファが内蔵されています。この大容量FIFOバッファにより、CPUの休止モードの時間を延長して多くの加速度センサー・データを保存することができるため、システム・レベルで消費電力が削減されます。また、ADXL362はINT2ピンで外部トリガ・モードにも対応します。
ADuCM4050は、RTC1_SS1チャンネルにトリガ・パルスを生成します。このチャンネルはEV-COG-AD4050LZ開発ボード上でADXL362のINT2ピンに接続されています。
ADuCM4050はADXL362を外部トリガ・モードに構成し、SensorStrobeを128Hzのトリガ・パルスが生成できるように構成します。構成が完了すると、ADuCM4050は休止モードに入り、ADXL362からFIFOウォーターマーク割込みが実行されるまで待機します。
SensorStrobeの各トリガ・パルス発生時に、ADXL362は加速度センサー・データをサンプリングしてFIFOバッファにデータを保存します。FIFOサンプル数がウォーターマークに到達すると、ADXL362はSYS_WAKE1(P1_00)ピン経由でADuCM4050に割込みを実行します。ADuCM4050は休止モードから復帰して割込みを処理します。ADXL362の読出しモード機能を使用して1回のコマンドでFIFO全体をドレインすることで、シリアル・ペリフェラル・インターフェース(SPI)プロトコルのオーバーヘッドを最小限に抑えます。ADuCM4050に搭載されたダイレクト・メモリ・アクセス(DMA)コントローラにより、ADXL362のFIFOバッファをドレインできます。DMAがアクティブになってデータ転送を実行すると、ADuCM4050はFlexiモードに入り、アクティブな時間とシステムの消費電力を更に低減します。
SensorStrobeのソフトウェア・フロー
ここでは、図2と図3に示すように、SensorStrobeのサンプル・システムにおけるソフトウェア・フローを説明します。
入力サンプリング
入力サンプリングは、ADuCM4050のSensorStrobeを対象としたモニタリング機能で、MCUは、デバイスまたはセンサーが危険あるいは重要な状態のために処理が必要となる場合にのみ、関与またはアクティブ化します。それ以外の場合、システムは低消費電力モードを維持します。
入力サンプリングを有効にすると、必要なSensorStrobeサンプリング周波数、および任意に設定されたサンプリング・ポイントで、外部デバイスまたはセンサーからの入力データをサンプリングします。設定可能なサンプリング・パターン条件の1つに一致する特定のシーケンスが外部デバイスから入力された場合、ADuCM4050のRTCは、MCUをウェークアップさせるかセンサー・データを処理するために、割込みを送信することもできます。センサー・データのサンプリング処理、および指定したサンプリング・パターン条件とのマッチングは、MCUが低消費電力モードのままで実行し続けます。これにより、システムの全アクティブ時間と消費電力を低減できます。
ADuCM4050に搭載された入力サンプリング機能の重要な特性を下記に示します。
- 入力サンプリングは、外部デバイス/センサーから定期的にデータの収集・検出を行います。SensorStrobeの出力パルスがサンプリング周波数です。
- 入力サンプリングには、全部で8本のGPIO入力ピンを使用可能で、その中から各入力サンプリング・チャンネルにつき最大3本(GPx_IN0、GPx_IN1、GPx_IN3)を選択/設定できます。選択/設定したすべてのGPIOピンは常に、出力パルスに関係なく適切な状態(例えばRTC1_SSxをハイまたはロー)にしなければなりません。ADuCM4050への入力として設定したGPIOは、決してフローティング状態にしないでください。表2に、入力サンプリング用GPIOピンの位置を示します。
SensorStrobe Channel |
Input Sampling GPIO Pins |
Pin Location on EV-GEAR-EXPANDER1Z1 |
RTC1_SS1 | P0_00 (GP1_IN0) | A5-5 |
P0_12 (GP1_IN1) | P8-7 | |
P1_02 (GP1_IN2) | P6-2 | |
RTC1_SS2 | P0_08 (GP2_IN0) | A4-1 |
P1_13 (GP2_IN1) | P6-9 | |
P0_09 (GP2_IN2) | A4-42 | |
RTC1_SS3 | P2_07 (GP3_IN0) | A2-5 |
P2_09 (GP3_IN1) | P6-10 |
1 EV-GEAR-EXPANDER1ZをEV-COG-AD4050LZに接続することで、すべてのGPIOピンにアクセスできます。
2 EV-COG-AD4050LZベースボードのジャンパを変更する必要があります。JP2ジャンパのピン2とJP2ジャンパのピン4を短絡します。
- 入力サンプリングでは、サンプリング・ポイントを設定することが可能で、入力は以下の状態のときにサンプリングできます。
- 立上がりエッジ前のサンプリング(BRES)
- 立上がりエッジ後のサンプリング(ARES)
- 立下がりエッジ前のサンプリング(BFES)
- 立下がりエッジ後のサンプリング(AFES)
- SensorStrobeの両エッジ、立下がりエッジでのサンプリング(FES)または立上がりエッジでのサンプリング(RES)。
- サンプリングされた値は、イネーブルされた各チャンネルのRTC1_SR7.SSxSMPレジスタ(xは入力サンプリング・チャンネルを表します)のリードバックとして入手できます。このレジスタは、次のサンプリング・ポイントに達すると更新されます。データの読み落としがないように、サンプリングされたデータは次のサンプリング・ポイントまでに読み出してください。
- 入力サンプリングは、オプションとして、RTC1_CR5SSS.SSxSMPENでイネーブルされたチャンネルごとの独立したサンプリング・パターンのマッチング条件に基づき、ADuCM4050に割込みを送信することもできます。この割込みによりMCUが関与して判断を下す必要が減り、MCUがセンサー・データの処理に使用されるのは、重要な状況が発生した場合のみになります。以下に、入力サンプリングから割込みを受信する可能性のあるサンプリング・パターンのマッチング条件を示します。
- マッチング条件1。現在のサンプル(SMPxt)がその前にサンプリングした値(SMPxt-1)と等しい。
- マッチング条件2。現在のサンプルがその前にサンプリングした値と異なる。
- マッチング条件3。現在のサンプルが予想サンプル値(EXP_SMPx)と一致する。
- マッチング条件4。現在のサンプルが予想サンプル値と一致しない。
- 各入力サンプリング・チャンネルには、個別の予想サンプル値レジスタ(RTC1_CR7SSS.SSxSMPEXP)があり、外部センサーの予想サンプル値、およびアプリケーションの観点から参照したい値をユーザ定義の値として保存できます。新しいサンプルはすべて予想サンプル値と比較され、RTC1_CR7SSS.SSxSMPPTRNレジスタで設定されたサンプリング・パターンのマッチング条件に応じて、ADuCM4050をトリガする割込みが生成されます。
- GPIOサンプリングにサンプリング・パターンと一致するイベントが発生すると、割込みステータスのスティッキー・ビットがセットされます。このビットは、1を書き込むとクリアできます。
- 1つのSensorStrobeチャンネルに対して入力サンプリングが有効化されると、このサンプリングとチャンネルは他のSensorStrobeチャンネルとは独立することになります。これにより、1つのSensorStrobeチャンネルを入力サンプリングとして設定し、他のチャンネルをSensorStrobeのみに使用したり、ディスエーブルにしたりできます。
入力サンプリングのアプリケーション実証例
リード・スイッチを使用したデータ・サンプリングの実証アプリケーションで、EV-COG-AD4050LZ開発ボードを用いてADuCM4050に備わっているSensorStrobeおよび入力サンプリング機能の使用方法を示します。
図4では、SensorStrobeピン(RTC1_SS1)を使用してリード・スイッチを駆動し、入力サンプリング用GPIO(GP1_IN1およびGP1_IN2、表2参照)を使用して入力データのサンプリングを行っています。プロペラ・シャフトの一端には棒磁石が取り付けられています。このプロペラ・シャフトのアセンブリが、水道管の内部に挿入されています。磁石はリード・スイッチのすぐ近くに配置します。リード・スイッチは、互いに45ºの角度で配置して位相差を生成することで水流の方向がわかるようにします。
システムのパワーオン・リセット(POR)の間に、ADuCM4050はSensorStrobe Channel 1を構成すると共に入力サンプリングを有効化し、システムを入力サンプリング・モードに構成します。構成が完了すると、RTC1_SS1ピンからトリガ・パルスを送信してリード・スイッチを起動すると同時に、入力サンプリングによってデータのサンプリングを実行します。この実証例では、サンプリング・ポイントをARESに設定し、サンプリング・パターンのマッチング条件をマッチング条件2(現在のサンプルがその前にサンプリングした値と異なる)に設定しています。
パイプの中の水流がプロペラを回転させ、それによって磁石が回転します。磁石のN-S極がリード・スイッチのどちらかと平行になると、そのスイッチが閉じます。これによりリード・スイッチの出力にロジック1が生成されます。このロジックは対応する入力サンプリングGPIOから使用可能です。
最初に水流を計算する場合、サンプリング・パターンのマッチング条件はマッチング条件3(現在のサンプルが予想サンプル値と一致する)に設定され、予想サンプル値は2’b11にセットされています。現在のサンプル値と予想サンプル値が一致した場合、例えばSMPxt = EXP_SMPx = 2’b11の場合に、MCUは、ウェークアップして2’b11のカウント数をインクリメントしてから、休止モードに入ります。このプロセスは1秒間継続し、MCUはGP1_IN1およびGP1_IN2(表2参照)の2’b11のパルス数をカウントします。この2本のピンでの2’b11のパルス数を使用して、リード・スイッチの入力パルスの周波数を計算します。この周波数は、間接的に磁石とプロペアの回転数を表します(式1参照)。SensorStrobe周波数は、計算された磁石回転数の最新値の整数倍に変更されます。
f = 1 ÷ 2’b11のパルス数 (1)
最初の磁石回転数を計算すると、サンプリング・パターンのマッチング条件は、マッチング条件2(現在のサンプルがその前にサンプリングした値と異なる)に変更されます。SensorStrobeの周波数が、例えばサンプリング周波数に変更されると、入力サンプリングによってSensorStrobeパルスのARESで収集されるデータは、その前のサンプリング・データと同じになります。サンプリング・パターンのマッチング条件により、MCUは現在のサンプル値がその前のサンプル値と異なる場合にのみウェークアップします。マッチング条件を満たした場合、MCUはウェークアップしてGP1_IN1およびGP1_IN2ピン(表2参照)から磁石の新しい回転数を計算します。次いで、SensorStrobeの周波数を新しい計算値に設定した後、休止モードに入ります。また、これは管内の水の流速が変化したことを意味するので、システムは、課金処理のために必要な水の消費量を計測するために水の新しい流速を計算する必要があります。MCUは、水の流速が変化したときにウェークアップするか介在するだけなので、MCUの介在時間と消費電力を削減できます。
入力サンプリングのソフトウェア・フロー
図6に入力サンプリングのシステム例におけるソフトウェア・フローを示します。
ソース・コードの構成
図7と図8に、SensorStrobe用および入力サンプリング用にRTC1を設定する場合のソース・コードを示します。
電力測定
ここでは、システムの電流消費量をモニタする方法を説明します。図1に示す、電流測定用デジタル・マルチメータ(DMM)のシステム接続を参照してください。
SensorStrobeのモニタリング
- EV-COG-AD4050LZ開発ボードのSensorStrobeアプリケーションをロードします。
- TH2のシャント・ジャンパを外します。
- DMMの正端子をTH2の左側の端子に接続し、DMMの負端子をTH2の右側の端子に接続します。
- 開発ボードのRESETボタンを押します。
- DMMの消費電流をモニタします。
入力サンプリングのモニタリング
- EV-COG-AD4050LZの低消費電力水量計アプリケーションをロードします。
- TH2のシャント・ジャンパを外します。
- DMMの正端子をTH2の左側の端子に接続し、DMMの負端子をTH2の右側の端子に接続します。
- 開発ボードのRESETボタンを押します。
- DMMの消費電流をモニタします。
低消費電力水量計アプリケーションで電流を測定する間、パイプの水流が5秒ごとに変化しているため、そのたびにADuCM4050はウェークアップして流量測定を実行します(図10参照)。