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

【加速度センサー入門】シリーズでは、アナログ・デバイセズ社の加速度センサーを中心に、基本的な使い方や応用方法を解説します。前回の記事では、加速度センサー「ADXL345」 と「Arduino」を使い「モーション検知の実装方法」をご紹介しました。本記事では、モーション検知などをおこなう際に必要な重力加速度の除去を検討してみたいと思います。

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

重力加速度を取り除いてみよう

静的加速度と動的加速度

MEMS加速度センサーは一般的にDC(直流成分)の加速度を検出することが可能です。地球上には重力加速度が働いているため1[g]の加速度を検出することができます。下の図は加速度センサーを平らな机の上に置いた際の加速度波形を測定したものです。Z軸は重力方向と垂直のため1gの加速度が時間軸にたいして一定となっていることが確認できます。重力加速度のような時間変化に対して常に一定の値をだすDC成分の加速度を静的加速度、一方、モーションや振動などの動作に生じる加速度は、時間により変化する加速度となり動的加速度と呼ばれます。動的加速度を検出するモーション検知を実装したい場合、加速度の閾値設定が重要になってきます。しかし、重力加速度のDC成分がオフセットとなるため、取り除く必要が出てくるケースがあります。

加速度データ波形
加速度データ波形

ハイパスフィルターの実装

図のような重力加速度のようなDC成分を取り除き、動的な加速度を取得する方法としてハイパスフィルターがあります。アナログ出力タイプの加速度センサーの場合、AD変換前に、コンデンサーと抵抗でハイパスフィルターを組むことができます。今回は、 使用するADXL345はデジタル出力なので、ハイパスフィルターの機能はマイコンなどのホストプロセッサー側に入れる必要があります。

ハイパスフィルタ動作イメージ図
アクティブ機能&インアクティブ機能の動作イメージ図

準備するもの

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

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

 

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

Arduino Nano 互換品ボード 

加速度センサー ADXL345 

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

 

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

接続図
接続図

プログラムの内容

ハイパスフィルターは簡易的な方法で実装します。プログラムの流れは、一定周期で加速度データを取得します。その後取得した前の状態のデータを保持し、現在のデータとの差分をとることで重力加速度の成分を取り除きます。今回はAndroidの開発ガイドに記載のある方法で実装しました。Arduino IDE で作成したプロジェクトファイルはダウンロードできますので、ご興味のある方は下記「資料ダウンロード」より入手ください。

 

 

動作確認

作成したプログラムで動作確認をしてみます。動画ではわかりやすくするためにArduinoIDEのシリアルプロッタ―上にZ軸のみを使用しています。また、比較のため重力加速度の除去前と除去後のデータを表示しました。簡易的なフィルタですが、重力加速度が取り除かれていることが確認できました。しかし、起動時の応答性、加速度の変化がゆっくりとした動きに対しては振幅が小さくなるなどの制限があるため、フィルタの調整が必要になるケースがでてくるかもしれません。しかしながら、シンプルな実装で重力加速度を取り除くことができましたので今後のモーション検知の使い方で活用してみたいと思います。

 

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

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

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

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

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

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

 

最後に

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



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

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