【加速度センサー入門】タップ検出機能を使ってみよう

【加速度センサー入門】シリーズでは、アナログ・デバイセズ社の加速度センサーを中心に、基本的な使い方や応用方法を解説します。前回の記事では、加速度センサー「ADXL345」 と「Arduino」を使い「セルフテスト機能」をご紹介しました。本記事では、ADXL345に搭載されている「トリガー機能」をご紹介します。

【加速度センサー入門】シリーズ一覧はこちらから

トリガーモード

機能の概要

今回ご紹介するトリガー機能は、以前記事でご紹介した「FIFO機能」、「アクティブ検知機能」を組み合わせた使い方になります。

トリガー(Trigger)は「きっかけ、要因、出来事」の意味になり、「アクティブ検知」(インアクティブ検知でも可能)をトリガーとして使うことで、FIFOを効果的に活用することができます。リアルタイムでの加速度データの取得が必要のないアプリケーションにおいては、アクティブ検知が起きた時間を基準として、その前後のデータを記録するイベントロガーのような応用が可能となります。
イメージとしては、オシロスコープの「SINGLEトリガー」のようなイメージになり、トリガーイベント前後の状態を解析することが可能となります。

応用例として、物流システムにおける輸送状態の監視などが考えられます。例えば、トラックや航空機などで貨物の輸送中間に、ある一定の大きな加速度が生じた場合に、その前後の加速度データのログを記録しておくことが可能となります。また加速度データを長時間連続で取得すると、データを保持するメモリー容量に制限がでてくる可能性もあります。そのため、イベントが発生した際のデータのみを記録することで長時間のデータログを実現することも可能です。

動作説明

ADXL345のFIFOは最大32サンプルのX,Y, Z軸の加速度データを格納することができます。トリガー機能では、ある閾値をこえる加速度が生じた場合に発生する「アクティブ割り込み」により、32サンプルのうち「Sample_Num 」レジスタで設定した数のデータは保持し、それ以前の格納データは自動的に捨てられるためFIFOに空きができます。そして、FIFOが満杯になるまで空になった分に新しいデータが追加されます。この動きにより、トリガーイベント発生前後の加速度データを保持することができます。

下図にイメージ図を作成してみました。加速度センサーが机の上にぶつかった際に生じる加速度がトリガー信号となり、FIFOに前後のデータを格納する動きになります。このように、イベントロガーの使い方が可能となります。

詳細はデータシート及びアプリケーションノートご確認ください。

 

 

トリガ動作イメージ図
アクティブ機能&インアクティブ機能の動作イメージ図

トリガー機能を使ってみよう

加速度センサー「ADXL345」とハードウェアのオープンプラットフォームである「Arduino」を使い「トリガー機能」のサンプルプログラムを作成していきます。

 

準備するもの

今回、加速度センサーを評価するうえで準備したものはこちらです。

 

・Arduino IDE がインストール済みの PC (Arduino IDE のダウンロードはこちらから)

Arduino Nano 互換品ボード 

加速度センサー ADXL345 

・その他(USB ケーブル (Arduino と PC 接続用)、ブレッドボード、ワイヤー)

 

上記の部品を組み合わせて、下図のように回路を組んでいきます。Arduino Nano への電源は、PC からの USB バスパワーで供給します。ADXL345は、SPI インターフェースとI2C インターフェースに対応していますが、今回はI2C インターフェースを使用します。また割り込みピンのINT1ピンを使用します。

接続図
接続図

プログラムの内容

トリガー機能を活用するため、FIFO設定とアクティブ検知機能に関連する設定をおこないます。下記に具体的な設定内容を記載します。

・ACT_INACT_CONTROLレジスタ(アドレス0x27)ではAC/DCカップリングモードの選択、有効とさせるX,Y,Z軸を設定します。
 今回はACカップリングモード、全ての軸を有効にしました。
・THRESH_ACTレジスタ(アドレス0x24)ではアクティブ検出の加速度閾値を設定します。
 スケール係数は62.5mg/LSBとなり、今回は机の上に軽くぶつけた衝撃を想定として±2gを閾値として設定しました。
・FIFO_CTLレジスタ(アドレス0x38)ではFIFOのモード設定と格納サンプル数を設定します。今回はTrigger modeとしたので、BIT[7:6]=0x02とします。
 またトリガ・イベントの発生時にFIFOバッファに保持されるトリガ・イベント発生前のデータ数をBIT[4:0]で指定します。

 今回は20サンプルに設定しました。
 
トリガーイベントの発生状況は、FIFO_STATUSレジスタ(アドレス0x39)でも確認することができます。また、トリガー検知後に再度機能を有効にする際には、トリガーのリセットをおこないます。方法は、デバイスをバイパス・モードに設定してからトリガー・モードに設定し直します。なお、デバイスをバイパス・モードにすると FIFO がクリアされるため、FIFO 内のデータをバイパス・モードに設定する前に読み出す必要があります。

本プログラムではトリガーイベントの割込みを検知した後に、格納されたデータを取得し、取得したデータをArduinoのシリアルモニターに表示します。Arduino IDE で作成したプロジェクトファイルはダウンロードできますので、ご興味のある方は下記「資料ダウンロード」より入手ください。

 

 

動作確認

作成したプログラムで動作確認をしてみます。デバイスを机にぶつけた際に生じた加速度変化をトリガーに前20サンプル、後12サンプル(合計32サンプル)のデーターが保持されることが確認できました。このデータをグラフにしてみると、衝撃前と後のデータが確認することができました。

 

今回検証したサンプルコードのダウンロード

今回実施したArduino のプロジェクトファイルを提供しています。こちらからお申し込みの上、ぜひお試しください。

加速度センサー ADXL345 について

今回使用したADXL345 は、3軸のデジタル出力加速度センサーです。主な特長は下記の通りです。

・ADC、演算機能ブロック、FIFO 内蔵で、非常に使いやすいスタンダードな加速度センサー
・加速度データは、デジタルシリアル方式で一般的なI2C/SPIを採用
・3軸タイプのセンサーは直交座標 (X, Y, Z) で、それぞれの軸に働く加速度を取得可能
・最大検出加速度を2g~16gの範囲で設定ができ、サンプリングも~3.2kHzと幅が広いので、衝撃、傾き、モーション検知など様々な用途に応用可能
・消費電流を減らすためのフレキシブルなモードを採用

ADXL345 の詳細は、データシートをご参照ください。また、この加速度センサーは非常に使いやすいので、これから加速度センサーを評価してみたいという方は、ぜひ評価ボードでお試しください。

 

最後に

本記事の内容に関してのご質問、または加速度センサーの選定や使い方にお困りのことがありましたら、以下からお問い合わせください。



アナログ・デバイセズ メーカー情報Topへ

アナログ・デバイセズ メーカー情報Topに戻りたい方は以下をクリックしてください。