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 軸加速度センサーを 360 度回した時の傾斜を検出する事を示します。 傾斜の検出を使用して、下図のように 3 軸加速度センサーの傾斜を模倣したアプリケ ーションの作成が可能になります。 図 1 傾斜検出を利用したアプリケーションイメージ HOKURIKU 1 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 1 構成 本アプリケーションノートでは、HAAM-326B と接続する CPU に例として 78K0/KB2 (uPD78F0500)で説明します。 電気特性については HAAM-326B カタログを参考にして下さい。 HAAM-326B CPU GND STANBY +3V Vcc +3V AVss +3V 78K0/KB2 (uPD78F0500) AVref X out P20/ANI0 Y out P21/ANI1 Z out P22/ANI2 図 2 HAAM-326B と CPU の接続 HOKURIKU 2 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■ 入力電圧と変換結果について アナログ入力端子(ANI0- ANI2)に入力されたアナログ入力電圧と論理上の A/D 変 換結果(10 ビット A/D 変換結果レジスタ)には下図に示す関係があります。 本アプリケーションノートで使用する 78K0/KB2 の場合は下図のようになります。 図 3 入力電圧と変換結果 ■ 変換結果で採用する値について 本アプリケーションノートでは、0G の時のデジタル値は0で考えています。 A/D 変換結果にオフセットを加算した図 3 入力電圧と変換結果の Correction0=0G (Digital value)の値を以後の説明では使用します。 ■ サンプリングレートについて 本アプリケーションノートでは、4ms 毎に XYZ のサンプリングを行なっています。 HOKURIKU 3 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 2 傾斜を検出するアルゴリズム ■ X軸回転の傾斜検出 X軸の回転は、X の数値とZの±を基に下記の表のように計算する。 角度 X Z 計算式 0度 0 -137 X≦0、Z≦0 の場合 30 度 -69 - 60 度 -119 - 90 度 -137 ±0 90 度 -137 ±0 120 度 -119 + 150 度 -69 + 180 度 0 +137 180 度 0 +137 210 度 69 + 240 度 119 + 270 度 137 ±0 270 度 137 ±0 300 度 119 - 330 度 69 - 360 度 0 -137 表 1 X 軸の角度の計算表 図 4 X 軸が向いている角度のイメージ 角度=sin-1(-X/137) X≦0、Z≧0 の場合 角度=180-sin-1(-X/137) X≧0、Z≧0 の場合 角度=180+sin-1(X/137) X≧0、Z≦0 の場合 角度=360-sin-1(X/137) HOKURIKU 4 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■ Y 軸回転の傾斜検出 Y 軸の回転は、Y の数値とZの±を基に下記の表のように計算する。 角度 Y Z 計算式 0度 0 -137 Y≦0、Z≦0 の場合 30 度 -69 - 60 度 -119 - 90 度 -137 ±0 90 度 -137 ±0 120 度 -119 + 150 度 -69 + 180 度 0 +137 180 度 0 +137 210 度 69 + 240 度 119 + 270 度 137 ±0 270 度 137 ±0 300 度 119 - 330 度 69 - 360 度 0 -137 表 2 Y 軸の角度の計算表 図 5 Y 軸が向いている角度のイメージ 角度=sin-1(-Y/137) Y≦0、Z≧0 の場合 角度=180-sin-1(-Y/137) Y≧0、Z≧0 の場合 角度=180+sin-1(Y/137) Y≧0、Z≦0 の場合 角度=360-sin-1(Y/137) HOKURIKU 5 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■ 3次元での傾斜検出 X 軸の角度と Y 軸の角度を組み合わせることにより 3 次元上での位置も下図のよう に求められます。 X=150 度で Y=90 度の時は、3 次元上は下図の青い矢印の方に傾斜しています。 図 6 X=150 度で Y=90 度の時 図 7 X=150 度で Y=90 度の時のアプリケーションのイメージ HOKURIKU 6 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 X=150 度で Y=150 度の時は、3 次元上は下図の青い矢印の方に傾斜しています。 図 8 X=150 度で Y=150 度の時 図 9 X=150 度で Y=150 度の時のアプリケーションのイメージ HOKURIKU 7 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 X=170 度で Y=150 度の時は、3 次元上は下図の青い矢印の方に傾斜しています。 図 10 X=170 度で Y=150 度の時 図 11 X=170 度で Y=150 度の時のアプリケーションのイメージ HOKURIKU 8 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 3 傾斜と移動の識別 傾斜と移動を混同して判断しないように、それぞれの動作を識別する必要があります。傾斜、 停止、移動はそれぞれ以下の違いが出ます。 • 傾斜 (図 12 センサーを X 軸方向に一回転傾斜させたときのデータグラフ) 3 軸合成値 : 1G に近い値をとり続けます。 各軸 : それぞれ変化します。 • 停止 (図 13 センサー停止時のデータグラフ) 3 軸合成値 : 1G に近い値をとり続けます。 各軸 : 各軸に変化はありません。 • 移動 (図 14 センサーを移動させたときのデータグラフ) 3 軸合成値 : 1G 以上の値をとります。 各軸 : それぞれ変化します。 (注) 3 軸合成値→x,y,z 軸を合成したものです。センサーに激しい動作が加えられて いないとき 3 軸の合計は 1G になります。 これらの違いによりセンサーに加えられた動作を識別します。 HOKURIKU 9 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■ 傾斜の識別 3 軸合成値が 1G に近い値(デジタル値で 137±25)を取り続けている間は、傾斜の検出を 行ないます。 200 3 軸合成値 150 100 X軸 50 0 -50 Y軸 -100 -150 Z軸 -200 図 12 センサーを X 軸方向に一回転傾斜させたときのデータグラフ HOKURIKU 10 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■ 停止の識別 3 軸合成値が 1G に近い値(デジタル値で 137±25)を取り続けている間は、傾斜の検出を 行ないます。 センサーの微妙な振動で、ゆらゆら傾かないように停止したら XY のいずれも±10 を超えて から傾斜の識別を開始すると微妙な振動によるゆらぎを回避できます。 150 100 3 軸合成値 X軸 50 0 -50 Z軸 Y軸 -100 -150 図 13 センサー停止時のデータグラフ HOKURIKU 11 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■ 移動の識別 センサーを前後左右斜め何れかに動かした場合は、初動のときに 3 軸合成値が 1G から外 れる値になります。 3 軸合成値が 1G から外れる間は、傾斜を正常に検出できないので傾斜の検出は行なえま せん。 300 3 軸合成値 200 100 0 -100 -200 Z軸 X軸 Y軸 -300 図 14 センサーを移動させたときのデータグラフ HOKURIKU 12 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 4 角度の設定の問題点及び解決方法 ■問題点 センサーを傾けたときのデジタル値は以下の通りです。 角度 デジタル値(XorY) 0度 0 30 度 69 60 度 119 90 度 137 120 度 119 150 度 69 180 度 0 210 度 -69 240 度 -119 270 度 -137 300 度 -119 330 度 -69 360 度 0 0 度 ~ 90 度を第一象限とします。 90 度 ~ 180 度を第二象限とします。 180 度 ~ 270 度第三象限とします。 270 度 ~ 360 度を第四象限とします。 センサーを第一象限の範囲で傾けたときデジタル値は 0~137 の値をとります。 しかし、第二象限の範囲でセンサーを傾けたときも、デジタル値は第一象限のとき と同じ 0~137 の値をとってしまいます。 これはセンサーを 90 度以上傾けたとき、デジタル値は減少してしまうためセンサー 自体は 90 度以上傾斜第二象限の範囲にいるにもかかわらず、デジタル値を見ただけ では第一象限判断と第二象限のどちらの範囲で傾いているのか判断が付けられませ ん。(第三象限と第四象限でも同様のことが考えられます。) HOKURIKU 13 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■解決方法 角度設定の問題点を解決するには Z 軸の値を見ることにより解決が出来ます。 以下の図のように Z 軸を見ることにより、第一象限~第四象限にそれぞれ違いが表 れ判断することができます。 軸 第一象限 第二象限 第三象限 第四象限 0 ~ 90 90~180 180~270 270~360 XorY プラス プラス マイナス マイナス Z マイナス プラス プラス マイナス 200 傾きなし 0 ~ 90 90~180 180~270 270~360 傾きなし 150 XorY 軸 Z軸 100 50 A A` B 0 -50 C -100 -150 D (注1) -200 (注 1)センサー停止状態との違いを出すためデジタル値がある程度変化しないと、傾 きと判断しないようにしているためこの時点ではセンサーは傾いていない状態となっ ています。 A、A` B C HOKURIKU D 14 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 5 自転の問題点 重力に対して垂直な軸を自転させた場合にセンサーとしては、X、Y、Z の各軸には大 きな変化が表れないためセンサー停止状態と識別します。 この問題については、単独のセンサーでは回避できません。 150 100 3軸合成値。1G に近い値をとり続ける 50 0 -50 各軸に大きな変化が表れない -100 -150 垂直な軸(例は Z 軸)に対してセンサーを自転させたときのデータグラフ HOKURIKU 15 ピエゾ抵抗型3軸加速度センサー HAAM-326B 傾斜検出編 2007 年 2 月 第 1 版 ■傾斜の判断方法 傾斜を判断するには、次の条件をすべて満たしたとき傾斜と判断します。 傾斜条件1、3 軸合成値が 137(1G)に近い値をとり続ける (3 軸合成値と 137(1G)の差が±25 以内を推奨)。 傾斜条件2、センサーのデジタル値は停止状態でも多少の変化を検出します。停止 時に傾斜検出しないために X と Y 軸いずれも±10 を超えないと、傾斜 と判断させないようにする。 傾斜条件3、センサーを傾けるとき、デジタル値の増減は緩やかに変化するため、 前回値と今回値との差(絶対値)が0に近い値(10 以下)をとり続ける。 傾斜条件4、条件 1~3 が連続する(20msec 以上推奨)。 本アプリケーションノートでは 4ms のサンプリングで行なっています ので、5回連続にて条件が成立します。 HOKURIKU 16