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

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

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

オフセットキャリブレーションとは?

オフセットとは?

 オフセット(Offset)は補整、埋め合わせなどの意味で基準となる位置からの差(距離、ズレ、相対位置)を表す値のことを指します。センサーデバイスや信号処理をおこなうオペアンプのようなデバイスには、理想からの一定量の誤差が出力がされ、この誤差をオフセットエラーやオフセット誤差と呼びます。加速度センサ自身にもオフセット誤差があり下図のように加速度が加わっていない状態(加速度=0g)の際の出力レベルを「0gOffset」として規定されています。このオフセット誤差は、取得した加速度レベルに一誤差を含ませてしまい、問題になるケースがあります。またオフセット誤差は個体によりバラツキがあります。
 以前紹介しました加速度閾値を基準にイベント処理をおこなう「自由落下・アクティブ割り込み、タップ割り込み」などでは、オフセット誤差の影響により設定する閾値加速度が適切ではない場合があります。また、加速度センサーを使い傾斜角度を求める使い方をする場合、オフセット誤差により測定した傾斜角度は誤差を含んでしまいます。そのためアプリケーションによってはオフセット誤差を補正するキャリブレーションを実施するケースがあります。

 

データシート抜粋「0gOFFSET」
データシート抜粋「0gOFFSET」

 参考のため手元にあるADXL345の0gオフセットを測定し、結果は下図の通りとなりました。理想の状態ではX/Y 軸は重力方向と直交するため加速度出力が 0gとなり、Z 軸は入力加速度が+1gとなりますが、測定した測定値にはオフセット誤差が生じていることが確認できました(細かい話をすると実際には0gオフセット以外に感度や他軸感度の影響も多少考えられます)。

Ogオフセット値の取得
Ogオフセット値の取得

オフセットレジスタを使ったキャリブレーション方法

 ADXL345 は初期のオフセット補正用レジスタを内蔵しています。このレジスタは 8 ビット、2 の補数フォーマットでデータの書き込みをおこないます。また、1LSB が約 15.6(mg/LSB)を表します。このオフセットレジスタに補正値の書き込みをおこなうと、データレジスタに格納される加速度値は「測定した加速度とオフセットレジスタに書き込んだ値の和」となります。例えば ADXL345 の初期オフセットが+156(mg)だった場合には、-156(mg)をオフセットレジスタに書き込むと初期オフセットをキャンセルすることができます。なおADXL345のデータフォーマットは10ビットのため分解能は3.9(mg)となります。そのため15.6(mg) 以上の精度で補正をおこなう必要がある場合は、プロセッサー側で補正をおこなう必要があります。

 

キャリブレーションをおこなってみよう

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

 

準備するもの

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

 

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

Arduino Nano 互換品ボード 

加速度センサー ADXL345 

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

 

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

接続図
接続図

プログラムの内容

 プログラムの流れは、まずADXL345を机の上に水平に置いた状態でデータを取得します。その後、取得したデータをオフセットレジスタへ書き込みます。その後、新たにデータを取得した際に、オフセットレジスタで設定した値が反映されているかを確認していきます。Arduino IDE で作成したプロジェクトファイルはダウンロードできますので、ご興味のある方は下記「資料ダウンロード」より入手ください。

 

 

動作確認

 作成したプログラムで動作確認をしてみます。下の動画の通りオフセットキャリブレーション前は誤差が生じていることが確認できました。一方、オフセットキャリブレーションを実施すると、誤差が補正されているのが確認できました。今回の方法はシングルキャリブレーション(1点補正)とも呼ばれるシンプルな方法ですが、より精密なキャリブレーションをおこなう場合は、補正中に製品を回転させるなどの工程が必要となります。機会があれば改めてキャリブレーションに関する記事も書いてみたいと思います。また、オフセットの特性は温度により変化しますので、温度変動が大きいようなアプリケーションでは、温度変化に応じてキャリブレーションを実施するケースもあるかと思います。アナログ・デバイセズ株式会社では温度ドリフトが非常に小さいADXL355という加速度センサーがあります。温度変動によるオフセットキャリブレーションの作業を省くことも可能になりますので、別の機会で紹介したいと思います。

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

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

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

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

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

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

 

最後に

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



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

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