今回でセンサー・モジュール関係は当面、最後になるかもしれません。私の実験室では、他にもより「土質試験室」らしい多くのセンサーを使用していますが、そもそもセンサー自体を紹介するのが目的ではないので、「ひずみゲージ型」「(増幅後)電圧出力型」などにまとめて紹介してきました。今回は3軸加速度センサーADXLを紹介します。
この加速度センサーで地震動や風による振動を計測しようとしたことはないので、応答速度等について詳しく気にしたことはありません。3軸(X-Y-Z)なので、重力場でドローンの姿勢を決めるなどに使えるのだと思います。私は、ロガーが倒れていないかなどを遠隔で知るために使っています。傾斜計として使えるかもしれませんが、その用途には別途、傾斜計用のチップを使ったほうが正確だと思います。ちょっと計算したところ、傾き計測の精度は理論上0.1°程度、実際にはもっと粗いかと思います。
データシートはこちら:
https://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345-EP.pdf
レンジは可変で、最大で±16Gとのこと。出力はデジタルで、内部のAD変換は最大で13bit(レンジが16Gのとき)。マイコンとの接続にはSPIとI2Cのどちらも使えるようです。ここではI2Cを使います。
以下のように接続します。ここでは、ADXL345をあっちこっち向けやすいように、PCにシリアル出力するのではなく、LCD(第18回)を使って結果表示します。給電も電池で行うことで、完全にPCから切り離して使います(第6回)。
スケッチには以下を使います。以下のライブラリが必要です。
https://www.arduinolibraries.info/libraries/accelerometer-adxl345
ライブラリに同封されているサンプルコードから、ADXL345の動作に最低限必要な箇所を抜き出し、LCDに表示するコマンドを加えています。LCDのライブラリについては第18回を参照。この他にもSparkFunのライブラリなどもあるようです。
重力場で試してみると・・・
ADXL345ボードを地面と水平にしたとき、LCDの左下(Zのチャネル)が0.83Gになりました。ちょっとずれているようです。
ADXL345ボードを地面に垂直(壁と平行)にしたとき、LCDの左上(Xのチャネル)が0.97Gになりました。
ADXL345ボードを先ほどとは違う向きで地面に垂直(壁と平行)にしたとき、LCDの右上(Yのチャネル)が1.00Gになりました。チャネルによって応答がやや異なるので、正確に使うためには較正が必要になりそうです。