加速度センサ(KXM52-1050)を使った傾斜計を作る(第1回)

 加速度センサの動作テストは、マイコンボードを作った当初に済ませていて、センサを傾けるとセンサに繋いだマイコンのAD変換器からそれなりの値が出ていること確認していたので、この課題は直ぐに書けるだろうと高を括っていましたが、その後、加速度センサの資料を色々読み漁るにつれ、傾斜計と呼べるような、此処の傾斜度は何度と表示するような機器を作るには、加速度センサ素子のバラツキを使い始めに調整して出力を補正する処理や、そもそも基準となるような正確に垂直とか水平な場所なんて身の回りに無いとか。実際に考えると結構難しいことに気が付き始めました。
 そこで、取り敢えず手始めに今回のセンサ(KXM52-1050)を動かして見て、センサを傾けたときに出力にどんな値が出てくるのかデータを取って調べて見ることにしました。幸い、此処までに色々作った課題のプログラムを流用して、センサの出力をAD変換して、それをシリアルインタフェースでPCに送ってコンソールで表示する位のプログラムは、直ぐに作れたので、これを使ってPCに取り込んだデータをExcelを使ってグラフ化したりして解析してみました。

 今回の加速度センサ(KXM52-1050)周りの回路は以下のようになっています。マイコンボードにポートの余裕が無く、センサ入力に2本しか割り当てられないので、Y軸とZ軸をジャンパーピンで切り替えるようにしています。

画像


 マイコンボードに取り付けたセンサと各軸の位置関係は以下の様になっています。このボードを下図のようにY軸周りに1回転させたときの、X軸とZ軸のAD変換器で見た出力を実際のボードでデータ採取してみました。
なるべく、Y軸を水平にしてボードを回転させますが、なにぶん手動?なので、かなり測定値がぶれて、グラフに描くときれいなサインカーブにはなりませんが、X軸とZ軸の出力の相対的な関係が見られれば良いので、その辺は目をつぶることにします。

画像


 マイコンボードから送られたデータをTera Termで受けて、Excelでグラフにした図が下記のようになります。A~Dが回転しているボードの位置とグラフ上のX軸、Z軸の対応を示しています。

画像


 このグラフを見て貰うと分かることは、X軸とZ軸出力の最高値は殆ど同じなのに、最低値がX軸の方が下がっています。このようにセンサーの出力にはばらつきがあるので、これを正規化しないと、正確な傾斜角の測定が出来ません。そこで、Excel上で両方のデータを同じオフセットとスケールになるように正規化し、さらに波形のセンター値をゼロ基準にするようにしました。一応これで、各軸の出力の最高値が+1G、ゼロが0G、最低が-1Gに対応させることができます。この正規化したグラフを以下に載せます。
このデータを基に、第2回で傾斜計のプログラムを紹介します。今回Excelを使ってやった各軸の最高値と最低値の検出や正規化、角度への変換のマイコンでの処理を追加します。

画像


 この図で合成値と書いてある赤い線のX軸とZ軸の合力を計算した値が(今回の場合は、むしろ1Gの重力がX軸とZ軸に分解されたと言うほうが正しいが)、ほぼ一定で、各軸の最高値と等しく(=1G)なっていることが分かると思います(当然ですが、こうならないと何処かがおかしいという検証になります)。
 各軸の値からセンサの傾斜角度を算出する方法は、下記の図を見て貰えば直ぐに分ると思います。平方根やCOSの計算が必要となりますが、mathライブラリが使えるのでそれほど難しくないと思います。(スピードが心配ですが)

加速度センサ(KXM52-1050)を使った傾斜計を作る(第2回)
http://jr1wfhbbs.at.webry.info/201003/article_2.html

画像


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック