« Arduinoで作ろう(19) LCDシールド を作ってみた | トップページ | Arduinoで作ろう(21) 屈折走行するクルマ »

2018年7月14日 (土)

Arduinoで作ろう(20) 3軸加速度センサKXR94-2050

Keypadshield_kxr942050

 秋月で買った3軸加速度センサモジュールKXR94-2050で加速度計を作ってみました。
このモジュールの6,7,8ピンにそれぞれx軸,y軸,z軸方向の加速度がアナログ電圧値で出力されるんだそうです。
電源が5Vだと,加速度0m/s^2で2.5Vが出力される仕様です。
しかし,正確に言うと「加速度」ではなくて「重力+慣性力」の大きさを測っているみたいです。センサを水平に静かに置いてみると,z軸には10bitでAD変換された値で700前後が出力されています。
「なんだ,ばねにおもりをぶら下げて,ばねの伸びを測ってるみたいだな」と思って調べてみたら,実際この小さなモジュールの中にばねが何本も入っているらしいです。よくそんな小さなばねが作れるもんですな。驚きました。

M05153

 で,Arduinoにつないで測定してみました。
センサを水平に置いたとき,鉛直方向(z軸方向)は,9.8m/s^2ですが,AD変換された値で700程度の出力がありました。x軸,y軸方向は500程度です。
ところが,この値が実に不安定で,電源を入れ直したり,センサを傾けて元の水平位置に戻したりするたびにz軸方向は680~705程度,x軸・y軸方向は500~525程度の幅で出力値が変化します。これでは物理実験に使えないなあ。電源が不安定なのかもしれないと考えて,いろいろな電源で試してみましたが改善は見られません。どうやら,このセンサはその程度のモノのようです。ちょっと期待してただけにガッカリです。

スケッチはこちら→ 20180714.ino

/* LCD KeyPad Shield 3軸加速度センサ KXR94-2050 */

#include <LiquidCrystal.h>
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7);

void setup() {
lcd.begin(16, 2);
//Serial.begin(9600);
}

void loop() {
int Zdata = analogRead(A1);
int Ydata = analogRead(A2);
int Xdata = analogRead(A3);
lcd.setCursor(0, 0);
lcd.print("X:"); lcd.print(9.8 * (Xdata - 500) / (700 - 500));
//Serial.print("X:"); Serial.print(Xdata);
lcd.print(" Y:"); lcd.print(9.8 * (Ydata - 500) / (700 - 500)); lcd.print(" ");
//Serial.print(" Y:"); Serial.print(Ydata);
lcd.setCursor(0, 1);
lcd.print("Z:"); lcd.print(9.8 * (Zdata - 500) / (700 - 500));
//Serial.print(" Z:"); Serial.println(Zdata);
}

|

« Arduinoで作ろう(19) LCDシールド を作ってみた | トップページ | Arduinoで作ろう(21) 屈折走行するクルマ »

Arduino」カテゴリの記事

トラックバック


この記事へのトラックバック一覧です: Arduinoで作ろう(20) 3軸加速度センサKXR94-2050:

« Arduinoで作ろう(19) LCDシールド を作ってみた | トップページ | Arduinoで作ろう(21) 屈折走行するクルマ »