• ベストアンサー

3軸加速センサーのオフセット値について

3軸加速センサーのオフセット値について 秋葉原でKXM52-1050型番の3軸加速センサーを購入しPICのA/D変換にてとりあえず電圧に変換しましたがオフセット値設定の方法(プログラムの処理又は物理的に?)がわかりません。よろしくお願いします。 ハード: センサー名:XM52-1050 pic:pic16f88 電圧:+5V ソフト:CCS社 Cコンパイラ 測定値: X最大 3.612 X最小 1.455 Y最大 3.632 Y最小 1.497 Z最大 3.7  Z最小 1.78 単位V オフセット値:0gの時と思っています、この辺もアドバイス願えたらと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • inara1
  • ベストアンサー率78% (652/834)
回答No.3

ANo.2 です。間違いがありました。 × これを m/s^2単位の加速度に換算するには 10 で割ります ○ これを m/s^2単位の加速度に換算するには 100 で割ります 地上での重力加速度は g = 9.8 m/s^2 程度です。 (補足) モジュールを(2)の姿勢にしたとき、Vz の値が 2.5V より大きくなるので、z方向の加速度は正の値ということになります。重力の向きは下向きなのに逆じゃないかと思うかもしれませんが、下向きの慣性力(重力)を受けるということは、上向きに加速しているのと同じなので、加速度が正というのは正しい結果です。お分かりだと思いますが、この測定結果を使って、物体の速度や位置を求めるときは、重力加速度の影響を差し引く必要があります。

その他の回答 (3)

  • inara1
  • ベストアンサー率78% (652/834)
回答No.4

ANo.1 です。 また間違いがありました。感度の計算式は g でなく 2*g で割るのが正解です。 × Bz = ( Vz1 - Vz2 )/g × By = ( Vy1 - Vy2 )/g × Bx = ( Vx1 - Vx2 )/g ○ Bz = ( Vz1 - Vz2 )/(2*g) ○ By = ( Vy1 - Vy2 )/(2*g) ○ Bx = ( Vx1 - Vx2 )/(2*g)

  • inara1
  • ベストアンサー率78% (652/834)
回答No.2

出力電圧範囲が 1.5V から 3.5V 程度ということは電源電圧が 5V で使用しているのだと思います。KXM52-1050は手元にありますが、モジュールについている説明書を見ると、電源電圧が 5V のときのオフセット電圧は 2.5V です。 オフセット電圧とは、加速度が 0 のときの出力電圧(DC電圧)です。ある方向の加速度を g (m/s^2)としたときの出力電圧 Vout (V) は    Vout = A + g*B となります。A がオフセット電圧で、B が感度です。したがって、出力電圧 Vout を測定して    g = ( Vout - A )/B を計算すれば加速度を計算できます(この計算はPICでやるのだと思いますが)。このモジュールは電源電圧が 5V のとき、A = 2.5V、B = 0.0673 (V・s^2/m)ですが、これは理想値であって、実際には固体差(バラツキ)があります。 以下のように実験すれば実際のオフセットと感度を求めることができます。   (1) お住まいの地点の重力加速度 g の値を [1] か [2] で調べる。だいたい 980 gal 程度のはずですが、これを m/s^2単位の加速度に換算するには 10 で割ります(980 gal = 9.8 m/s^2)。   (2) 添付図(2)のような姿勢にしたときのz出力の電圧を測定する。その値をVz1 とする。   (3) 添付図(3)のようなな姿勢にしたときのz出力の電圧を測定する。その値をVz2 とする。       z方向のオフセット Az と感度 Bz を次式で計算する          Az = ( Vz1 + Vz2 )/2、Bz = ( Vz1 - Vz2 )/g   (4) 添付図(4)のようなな姿勢にしたときのy出力の電圧を測定する。その値をVy1 とする。   (5) 添付図(5)のようなな姿勢にしたときのy出力の電圧を測定する。その値をVy2 とする。       y方向のオフセット Ay と感度 By を次式で計算する          Ay = ( Vy1 + Vy2 )/2、By = ( Vy1 - Vy2 )/g   (6) 添付図(6)のようなな姿勢にしたときのx出力の電圧を測定する。その値をVx1 とする。   (7) 添付図(7)のようなな姿勢にしたときのx出力の電圧を測定する。その値をVx2 とする。       x方向のオフセット Ax と感度 Bx を次式で計算する          Ax = ( Vx1 + Vx2 )/2、Bx = ( Vx1 - Vx2 )/g x, y, z 方向の加速度を gx, gy, gz (m/s^2) 、x, y, z出力を Vx, Vy, Vz (V) としたとき    gx = ( Vx - Ax )/Bx、gy = ( Vy - Ay )/By、gz = ( Vz - Az )/Bz となります。なお、(2)から(7)で求めたオフセットは電源電圧で変わるので、電源電圧を変えたときはその都度測定する必要があります。水平面を作るには [3] のような水準器を使えばいいと思います。 [1] 各地の重力加速度(赤い点をクリックする) http://vldb.gsi.go.jp/sokuchi/gravity/grv_jpn/map.html [2] 各地の重力加速度(地域を選択する) http://vldb.gsi.go.jp/sokuchi/gravity/grv_search/gravity.pl [3] 100円水準器 http://matendman.exblog.jp/3676656/

PC_HELI2
質問者

お礼

ありがとうございました、オフセットをするにはやはり最初は水準器が必用なのですね、になかうまい計算か関数でもあればブログラムすればいいと思ってました、100円ショップで購入しておきます。 電源電圧は5V一定なので一度やればいいと思ってます。ラジコンの姿勢制御に応用出来ないかと色々実験しながらやってます。ANO_1とANO_2とも確認しました。ありがとうございました。

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

>オフセット値:0gの時と思っています 無重力なんてあり得ないでしょ? 定常時(止まっている状態)の測定値を記録して置く -> ゼロ点(オフセット) 数秒間計測した平均値をゼロ点(オフセット)としてください 多分ほとんどがノイズです あと、このノイズレベル以下の加速度はノイズ成分と分離できなければ計測することはできません 次に実際の加速度を測定して、先程のゼロ点で計測した値(オフセット)を引けば 実際の加速度に相当する電圧が求められます >測定値:  X最大 3.612 X最小 1.455  Y最大 3.632 Y最小 1.497  Z最大 3.7  Z最小 1.78 これは時系列の振幅だと思います センサーの感度係数(校正係数)をこの値に掛ければ物理量に変換できます

PC_HELI2
質問者

補足

ご回答ありがとうございます。 0g=無重力ですか、おっしゃる通りだと思いますが、購入時時の説明書には入力電圧と出力振幅(感度)とオフセット(0g時の出力電圧)と記載されています、少々混乱しています。以下はメーカの説明書のリンクですが購入時の製品についてきた説明書はリンクありませんでしたので5V使用時の感度とオフセットを抜粋します。(質問時にPDFにすれば良かったのですが....) 電圧 感度 オフセット 5V  1000mv  2.5v http://akizukidenshi.com/download/KXM-52.pdf 測定値は静止状態でX,Y,Z軸に各々360度ゆっくり回転して実測した値です。(最大値と最小値は約180度の関係にあるようです)2.5Vの値になる時がありますがiphoneの水準器で測定するとX軸y軸が0.5度程度Z軸は3度程度ずれがあります、これを何とかiphoneの水準器なしで地面に対して水平の時に0度としたい思っています。 後、感度係数(校正係数についてもう少し詳しくご教授お願いいたします。

関連するQ&A

  • 3軸加速度センサの値の出力値について

    三軸加速度センサの出力値についての質問です。 電圧は3.3V 感度は660mV/g 0G出力が1.65V 測定レンジが+-2gとなっています。 加速度センサのz軸を下に置いた状態で値を出力すると x:320 y:330 z:430  と出力されます。 加速度センサのx軸を下においた状態で値を出力すると x:435: y:328 z:327 と出力されます そこで質問なのですが上のx:320 y:330 z:490 、x:485: y:328 z:327 の出力値の単位が(mV/g)ということ、下向きにするとその軸にGがかかる、ということはなんとなくわかるのですがこれらの値の意味(導出方法)がよくわかりません。一通り調べたのですが見つかりませんでした どなたか詳しく説明していただける方はいらっしゃいませんか?

  • 3軸加速度センサによる傾き計算

    加速度センサを使った傾き(重力方向に対して何度傾いたか?)の求め方を教えてください。 3軸加速度センサがあります。 3軸(=直交座標x、y、z)の値は重力の分力で、3軸合成値の絶対値(√x^2+y^2+z^2)=1です。 つまり、完全に静止状態でしか測定しないものとします。 ある時点(初期値)の加速度センサの値をZa=(x1,y1,z1)とします。 N時間経過後の加速度センサの値をZb=(x2,y2,z2)とします。 この両者の値より、N時間後に重力方向に対して傾いた角度を求めるには、どうすれば良いのでしょうか? 便宜上x、y、zとしましたが、どの軸が重力方向で、どの軸が水平線方向かは不定です。 考え方だけでも良いのでお教え頂けると幸いです。 よろしくお願いします。

  • アナログ出力の3軸加速度センサ、3軸ジャイロセンサの出力を一つのPIC

    アナログ出力の3軸加速度センサ、3軸ジャイロセンサの出力を一つのPICで取れるものはありますでしょうか?少なくとも加速度センサで3ch、ジャイロセンサで6ch(outで3ch,vrefで3ch)の9chの入力端子が必要で、ジャイロセンサ信号のout-vref差電圧計測をできるものが見つかりません。よろしくお願いします。

  • 加速度センサの3軸について

    加速度センサで3軸を取得して、それをぶったいの回転と連動しようとしているのですが、3軸を円周率に変換する計算式がわかりません。助けてください。よろしくお願いします

  • ACアダプタの選び方についての質問です。

    ACアダプタの選び方がわかりません。 5Vで使うので電圧は決まっているのですが、電流に種類があるので、悩みます。 下の回路を動かすのには何AのACアダプタが必要でしょうか? 3端子レギュレータは、ACアダプタを抜いたときに9V電池に切り替える時に使います。 3軸加速度センサは、KXM52-1050を、PICはPIC16F84aを使用しています。 わかる方回答をお願いします。

  • 3軸地磁気センサーによる方位角の計算方法

    互いに直行する3軸方向の地磁気値を取得するセンサーがあります。 ある時点でのX、Y、Zそれぞれの地磁気データを取得したとき、センサがどの方角を向いているのかを知るには、どう計算すれば良いのでしょうか? 2軸(X、Y)の場合だと、 方位 = arctan( Yout - Ref)/( Xout - Ref ) )      Xout, Yout : 磁気のX成分, Y成分      Ref     :基準電圧 だということを知りましたが、3軸の場合が想像できません。 何卒よろしくお願いいたします。

  • 3次元の回転角度の求め方について教えてください。

    3次元の回転角度の求め方について教えてください。 3軸の加速度センサーがあります。 まず加速度センサーのZ軸を重力方向に置いたときの加速度センサーの値を(x1,y1,z1)=(0,0,1)とします。 加速度センサーのx軸、y軸、z軸をそれぞれ回転させたあとの加速度センサーの値を(x2,y2,z2)とします (このとき加速度センサーは静止しているので、センサーの値は重力の分力になります)。 (x2,y2,z2)が既知のとき(x1,y1,z1)に戻すためのそれぞれの回転角はどのように求めれば良いのか教えてください。 (x2,y2,z2)→(x1,y1,z1)へ移動するときの回転角を φ(z軸の回転角)、ψ(x軸の回転角)、θ(y軸の回転角) とします。 回転行列 (x1) = (cosφ -sinφ 0) (cosθ 0 sinθ) (1 0 0 ) (x2) (y1) = (sinφ cosφ 0) (0 1 0 ) (0 cosψ -sinψ) (y2) (z1) = (0 0 1) (-sinθ 0 cosθ) (0 sinψ cosψ ) (z2) より,3行3列の行列を計算すると 0=cosφcosθx2 + (-sinφcosψ+cosφsinθsinψ)y2+(sinφsinψ+cosφsinθcosψ)z2 0=sinφcosθx2 + (cosφcosψ+sinφsinθsinψ)y2+(-cosφsinψ+sinφsinθcosψ)z2 1=-sinθx2 + cosθsinψy2 + cosθcosψz2 となると思うのですが、この式からφ、ψ、θが導きだせません。 どうすれば求めることができるか教えていただけますか。

  • 安価な加速度センサーを教えてください

    安価な表面実装部品アナログ出力の 1軸、3軸の加速度センサーを探してします 条件 部品形状:SMD 測定Gは0~2Gレベル(0~1Gでも可) 出力はアナログ(電圧)出力 数量は3000ヶ位 精度、メーカーは特に求めていないので、 とにかくコスト重視な物を知っている方は教えてください。 以上、宜しくお願いします

  • 慣性センサの重力加速度出力について

    IMUセンサ(慣性センサ)を手のひらに乗せて静止させている状態でも Z軸方向の加速度出力が9.8N/m^2となります。 静止しているのにどうしてゼロにならないのですか?

  • PICで小数点の演算

    PIC16F877Aを使ってプログラムを作っています。その内容がセンサー(例えば温度センサー等)から取り入れた電圧をPICのA/D変換(10bit)を行って、その値を使ってpicで計算し、その結果を液晶に表示するといった内容なのですが、その計算過程で小数を扱わなければならないのですが、その計算がうまくいきません。A/D変換後の値をxとし具体的に式で書くと、 v = x * 5 / 1023  ・・・(1) ここでvはセンサーから取り込んだ電圧値(値の範囲は0.935~1.748)です。 y = 218.5 - v / 0.008  ・・・(2) 又は y = 218.5 - 125 * v  ・・・(3) 上記の式はA/D変換後の値xを一度アナログ電圧値vに変換し(1)、そこから(2)又は(3)へ代入して得たい情報yを算出するといった少々面倒なものなのですが、これをアセンブラで書きたいのですが、このPICには乗除命令がないことや小数点の演算方法、16bitの乗除等の部分が引っかかってどうもうまくかけません。小数部分は固定小数点形式で考えて最終的にyは少数第二位を四捨五入したいと思っています。 どのようにプログラムを作ればよいのでしょうか。実際にソースを書いていただけると大変理解しやすいです。