STM32 Nucleoで加速度センサを使ってみる

加速度センサとは

加速度センサというものはいろいろなセンサの中でも製品内の見えない場所で使われていることが多いので利用率が高い割にはどのようなものかを知らない人が多いかもしれません。

例えば、スマホでは内部の加速度センサにかかる重力から傾きを検知して画面の向きを変えたり、振動を計測する歩数計アプリなどに使われています。

今回使用する加速度センサはKinox社の3次元空間の加速度 をX,Y,Z軸で検出できるセンサ本体KXTC9-2050に50Hzのローパスフィルタ用コンデンサを装備したモジュールとなったものです。

検出した加速度には動き、振動、衝撃などによる加速度に加えて重力(G)もオフセット分(DC分)として含まれるので、X,Y,Z軸方向の重力成分が分かればセンサの傾きも検出できます。

加速度センサを利用したアプリケーションとしては重力による傾きの検出振動や動きによる振動、自由落下およびモーションの加速度計測衝撃による歩数の計測などさまざまな用途に利用されています。アイディア次第でさらにいろいろな用途へ発展できるでしょう。

フィルタ付き加速度センサモジュール
めかのとろ

加速度センサKXTC9-2050 は±2Gの範囲内で加速度を検出できます。仕様表1の出力から、例えば、X,Y軸を水平面とし、Z軸に重力方向にセンサを設置すると、X,Y出力は重力成分はゼロなので1.65V, Z軸出力は1G分を含むので2.32(=1.65+0.66)Vとなるはずです。

仕様表1(データシートより)

重力と加速度について

めかのとろ

加速度センサは加速度を検知するものですが信号には重力加速度成分をオフセット分(DC成分)として含んでいます。重力Gは9.8[m/sec2]で地面の向きに一定にかかっている加速度です。

めかのとろ

通常、加速度は動作に伴って発生するものなのですが、この重力加速度成分はセンサを静止させても発生しています。どういうことでしょうか。

静止時の重力
めかのとろ

加速度センサでは実際の動作から 重力加速度成分を直接検出しているのではなく、重力に対する垂直抗力を検出しているのです。したがって、机上など水平面に静止させると重力加速度Gと釣り合っている垂直抗力が重力Gとして検出されます。

めかのとろ

このため、加速度センサ出力に含まれる重力加速度成分の向きは実際の重力とは逆向きとなりますので、実際の動作の加速度にオフセット分(DC分)として含まれます。例えばZ軸の実際の重力方向(マイナス方向)に自由落下させると加速度センサ出力のZ軸成分は垂直抗力による重力オフセット分がキャンセルされてゼロ、つまり1.65Vになります。

各軸の加速度方向
めかのとろ

加速度センサを扱ったアプリケーションで、傾きを検知するには各軸のオフセット分である重力成分だけを検出して計測すればよく、動作の中の加速度を検知するには各軸のオフセット分を除いた加速度成分を検出して計測すればよいわけです。また、衝撃は瞬時に発生した減速時の加速度成分で計測します。

めかのとろ

加速度センサはアイディアしだいでさまざまな用途に発展できる面白いセンサです。今回はその前準備として加速度センサの出力がどのようなものであるかを確認するために加速度3軸分の加速度出力をモニターするアプリを作成します。

加速度センサを使ったアプリ

めかのとろ

今回は仕様書どおりの加速度出力を確認するためのアプリプログラムを作成していきます。

めかのとろ

加速度はアナログ入力信号としてSTM32のAD変換を使用します。ペリフェラルAD変換はADコンバータ【STM32のADコンバータ詳細】で解説しています。

めかのとろ

STM32のAD変換ではアナログ信号入力のパラメータとして、センサの出力インピーダンスを指定する必要があります。メーカーの仕様表3(データシート)より出力インピーダンスは平均32kΩとなっています。

仕様表2(データシートより)
めかのとろ

加速度センサの信号をモニターするアプリにはアナログ入力3点およびPCへのシリアル通信を使用します。今回の AD変換 はアナログ信号が3点ありますのでDMA(Direct Memorry Access)と組み合わせると効率がよいです。

仕様表
配線図
めかのとろ

実際のプログラムではX,Y,Z軸3点アナログ信号入力用にそれぞれポートPA0,PA1,PA4をアナログ入力AD1_CH0,AD1_CH1,AD1_CH4に設定し、AD変換を連続変換モードとして複数チャネルデータをDMAによりメモリに自動転送しています。

めかのとろ

取得したアナログデータ電圧値(整数)に変換してからさらに文字列に変換してシリアル通信で送信しています。

めかのとろ

AD変換の初期設定では使用するチャネルの指定と加速度センサの出力インピーダンスに合わせて指定します。

めかのとろ

このアプリでは1秒毎に加速度成分のX軸,Y軸,Z軸の電圧値(整数)をシリアル送信してPCターミナルでモニターしています。加速度センサーをX,Y軸平面上に静止させているのでZ軸に重力加速度成分がオフセット分として追加していることが確認できます。

めかのとろ

静止しているため、重力の影響を受ける成分(垂直抗力分)だけ 基準値約1.65Vに対して出力に変化が現れます。

めかのとろ

X軸、Y軸についても重力の影響をうける向きに傾けると出力が変化するのがわかります。

Z軸方向の重力(電圧値:整数)