3軸加速度センサーアプリケーションノート ピエゾ抵抗型3軸加速度センサー 北陸電気工業株式会社 HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 はじめに 本アプリケーションノートでは、ピエゾ抵抗型3軸加速度センサ(HAAM-326B)の個 体差を補正する方法をユーザーに理解していただく事を目的としています。 本アプリケーションノートでは、ピエゾ抵抗型3軸加速度センサ(HAAM-326B)から アナログで出力される加速度をデジタル値に変換した値を使用して説明しています。 参考資料: HAAM-326B カタログ http://www.hdk.co.jp/pdf/jpn/j137507.pdf 3軸加速度センサーアプリケーションノート(傾斜検出編) 3軸加速度センサーアプリケーションノート(歩数検出編) 3軸加速度センサーアプリケーションノート(投げ上げ、自由落下検出編) 1 構成 本アプリケーションノートでは、HAAM-326B と接続する CPU に例として 78K0/KB2 (uPD78F0500)で説明します。 電気特性については HAAM-325B カタログを参考にして下さい。 HAAM-326B CPU GND STANBY Vcc AVss +3V +3V +3V 78K0/KB2 (uPD78F0500) AVref X out P20/ANI0 Y out P21/ANI1 Z out P22/ANI2 図 1 HAAM-326B と CPU の接続 HOKURIKU 1 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 ■ 入力電圧と変換結果について アナログ入力端子(ANI0- ANI2)に入力されたアナログ入力電圧と論理上の A/D 変 換結果(10 ビット A/D 変換結果レジスタ)には下図に示す関係があります。 本アプリケーションノートで使用する 78K0/KB2 の場合は下図のようになります。 図 2 入力電圧と変換結果 ■ 変換結果で採用する値について 本アプリケーションノートでは、0G の時のデジタル値は0で考えています。 A/D 変換結果にオフセットを加算した図 2 入力電圧と変換結果の Correction0=0G (Digital value)の値を以後の説明では使用します。 ■ サンプリングレートについて 本アプリケーションノートでは、4ms 毎に XYZ のサンプリングを行なっています。 2 補正の必要性 「図 2 入力電圧と変換結果」にも記述されている通り、アプリケーションは0G= 0、1G=137、-1G=-137を基準として作成を行ないます。 センサーに誤差があると、アプリケーションもその分誤差が生じます。 それを回避するには、アプリケーションにてセンサーの誤差の修正を行い、0G= 0、1G=137、-1G=-137に近づけることで誤動作を無くす必要があり ます。 HOKURIKU 2 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 3 補正方法 補正方法を以下に示します。 まず初期起動時に①~⑥でセンサー個体差を求めます。 常時⑦の方法にて XYZ 軸のセンサー個体差を補正します。 ① Z軸のプラス方向を上に向けてXY軸が水平になるように置 きます。(右図) 0-X軸のデジタル値=XOffSet1 とします。 0-Y軸のデジタル値=YOffSet1 とします。 Z軸のデジタル値の絶対値=ZFullScale1 とします。 ② Z軸のプラス方向を下に向けてXY軸が水平になるように置 きます。(右図) 0-X軸のデジタル値=XOffSet2 とします。 0-Y軸のデジタル値=YOffSet2 とします。 Z軸のデジタル値の絶対値=ZFullScale2 とします。 ③ X軸のプラス方向を上に向けてYZ軸が水平になるように置 きます。(右図) 0-Z軸のデジタル値=ZOffSet1 とします。 X軸のデジタル値の絶対値=XFullScale1 とします。 ④ X軸のプラス方向を下に向けてYZ軸が水平になるように置 きます。(右図) 0-Z軸のデジタル値=ZOffSet2 とします。 X軸のデジタル値の絶対値=XFullScale2 とします。 ⑤ Y軸のプラス方向を上に向けてXZ軸が水平になるように置 きます。(右図) Y軸のデジタル値の絶対値=YFullScale1 とします。 ⑥ Y軸のプラス方向を下に向けてXZ軸が水平になるように置 きます。(右図) Y軸のデジタル値の絶対値=YFullScale2 とします。 HOKURIKU 3 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 ⑦ 2007 年 2 月 第 1 版 次の計算にて、XYZ 軸のセンサー個体差を補正します。 XoffSet = (XOffSet1 + XOffSet2) / 2 YoffSet = (YOffSet1 + YOffSet2) / 2 ZoffSet = (ZOffSet1 + ZOffSet2) / 2 a = (XFullScale1 + XFullScale2) / 2 b = (YFullScale1 + YFullScale2) / 2 c = (ZFullScale1 + ZFullScale2) / 2 / 137(1G の Scale) + XOffSet / 137(1G の Scale) + YOffSet / 137(1G の Scale) + ZOffSet XFullScale = 1372 / a YFullScale = 1372 / b ZFullScale = 1372 / c 補正済 X デジタル値 = X 軸デジタル値 * XFullScale 補正済 Y デジタル値 = Y 軸デジタル値 * YFullScale 補正済 Z デジタル値 = Z 軸デジタル値 * YFullScale (注) 1G のときの理想値 137 とします。 HOKURIKU 4 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 初期起動時に①~⑥の各デジタル値が以下の場合のオフセットの例を下図に記述します。 ①のとき、X=-4、Y=0、Z=-140 ②のとき、X=3、Y=-10、Z=150 ③のとき、X=-135、Y=-2、Z=-1 ④のとき、X=143、Y=-2、Z=-1 ⑤のとき、X=-3、Y=-142、Z=-3 ⑥のとき、X=-15、Y=150、Z=-10 No. ① デジタ XOffSet1 XFullScale1 YOffSet1 YFullScale1 ZOffSet1 ZFullScale1 ル値 XOffSet2 XFullScale2 YOffSet2 YFullScale2 ZOffSet2 ZFullScale2 X=-4 XOffSet1 YOffSet1 ZFullScale1 Y=0 =4 =0 = 140 X=3 XOffSet2 YOffSet2 ZFullScale2 Y=-10 = -3 = 10 = 150 z=-140 ② z=150 ③ X=-135 XFullScale1 ZOffSet1 Y=-2 = 135 =1 X=143 XFullScale2 ZOffSet2 Y=-2 = 143 =2 z=-1 ④ z=-2 ⑤ X=-3 YFullScale1 Y=-142 = 142 z=-3 ⑥ X=-15 YFullScale2 Y=150 = 150 z=-10 図 3 各オフセット、フルスケールの表 HOKURIKU 5 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 ■補正の例 X 軸で補正の例を説明します。 以下の 1~4 をすることによりセンサーに動作を加えていないときの X 軸にかかるデ ジタル値(オフセット、フルスケール)を計測します。 1. Z軸のプラス方向を上に向けてXY軸が水平になるように置 きます。(右図) 0-X軸のデジタル値=XOffSet1 とします。 2. Z軸のプラス方向を下に向けてXY軸が水平になるように置 きます。(右図) 0-X軸のデジタル値=XOffSet2 とします。 3. X軸のプラス方向を上に向けてYZ軸が水平になるように置 きます。(右図) X軸のデジタル値の絶対値=XFullScale1 とします。 4. X軸のプラス方向を下に向けてYZ軸が水平になるように置 きます。(右図) X軸のデジタル値の絶対値=XFullScale2 とします。 仮に 1~4 で求めた値が以下の通りだったとします。 1. XOffSet1=3 2. XOffSet2=-4 3. XFullScale1=-135 4. XFullScale2=143 HOKURIKU 6 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 XOffSet1、XOffSet2 のようにX軸が水平方向に向くとき、X軸にかかる全体のデジ タル値は7 XFullScale1、XFullScale2 のようにX軸が垂直になるとき、X軸にかかる全体のデ ジタル値は278となります。 しかし、これらのことを「図 4 補正前と補正後の加速度」に表すと補正前の状態 となり、X 軸には 0 を基準にしたときプラス方向とマイナス方向とでは均等な重力(加 速度)がかかっていないことがわかります。 センサーを水平に置いたときの各軸にかかるデジタル値の理想値は、 重力1G がかかっている軸→デジタル値137(-137)、 重力0G がかかっている軸→デジタル値0です。 「図 4 補正前と補正後の加速度」に示す補正後のようにズレを補正し、また理想 値(137、-137)に近づけるために補正を行うとセンサー毎の誤差が修正できるため、 個体差があるセンサーを使用しても同じ様な動作が可能となります。 HOKURIKU 7 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 補正前 補正 補正後 図 4 補正前と補正後の加速度 HOKURIKU 8 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 4 反応速度のについて 以下にセンサーの反応速度について記述します。 移動、振動、衝撃を判断するときにセンサーは、 1. 停止状態を検出(アイドル) 2. 移動開始を検出 3. 移動開始後、移動か振動か衝撃の判断と処理 4. 移動が終了したと判断する(センサー停止状態) 5. 1に戻る(ループします) 上記1.~4.で1つの動作になりますので、移動や停止の検出に時間を掛けると反応 速度が鈍くなります。また、検出の時間を早くすると反応速度が速くなります。 100 2 1 3 4 50 0 -50 A -100 X Y Z -150 C -200 B -250 -300 220ms 120ms 300ms 120ms 520ms -350 上(プラス) 図 5 Z 軸へ上(プラス)方向の移動 前(プラス) 右(プラス) HOKURIKU 9 ピエゾ抵抗型3軸加速度センサー HAAM-326B センサー個体差の補正編 2007 年 2 月 第 1 版 A の区間は、センサーを移動させたときセンサーに移動が行われたことを判断している 時間です。(本アプリケーションノートでは 220msec です) また、A の区間で波形がプラスかマイナス方向に増減したかを見ることにより、センサ ーがどの方向へ移動したかを判断しています。 (Z 軸の場合、この A 区間がマイナスの場合上方向、プラスの場合下方向へ移動したと 判断します) B の区間は、最初の波形の最大値を検知後、センサーが停止したと判断するまでにかか るトータルの時間です。 (本アプリケーションノートでは 520msec です) C の区間は、波形の増減が収まった後カウントをとり続け、カウント中に波形が大きく 増減することがなければセンサーは停止したと判断する区間です。 停止したと判断するまでは、センサーに加えた他の動作を受け付けません 反応速度について ① 移動と判断している区間は移動開始と判断してから最大値検知までの A の区間で すが、仮に、最大値を見つけた後も移動が続いていると判断した場合、正しくない移 動を判断してしまいます。 よって、センサーを一度動かしてから次のセンサーの動きを判断するためには、最大 値を検知してから移動終了を判断するまでの B の区間が必要となり、A の区間が終わ った後、B の区間では波形の増減を無視しなければなりません。 この時間はおよそ 400msec~1 秒くらいですが、センサーを動かした力が強ければ強 いほど、波形が収まるまでの時間(C の区間)が長くなります。 また、この B の区間中にセンサーに新たな動作を加えてしまうと、波形の増減が繰り 返され移動終了を判断する時間が長くなります。 この B の区間の長さによって反応速度が決まります。 HOKURIKU 10