Arduinoで作ろう(20) 3軸加速度センサKXR94-2050
秋月で買った3軸加速度センサモジュールKXR94-2050で加速度計を作ってみました。
このモジュールの6,7,8ピンにそれぞれx軸,y軸,z軸方向の加速度がアナログ電圧値で出力されるんだそうです。
電源が5Vだと,加速度0m/s^2で2.5Vが出力される仕様です。
しかし,正確に言うと「加速度」ではなくて「重力+慣性力」の大きさを測っているみたいです。センサを水平に静かに置いてみると,z軸には10bitでAD変換された値で700前後が出力されています。
「なんだ,ばねにおもりをぶら下げて,ばねの伸びを測ってるみたいだな」と思って調べてみたら,実際この小さなモジュールの中にばねが何本も入っているらしいです。よくそんな小さなばねが作れるもんですな。驚きました。
で,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);
}
| 固定リンク | 0
「Arduino」カテゴリの記事
- 大型7セグLEDを4個使った表示装置(2022.01.23)
- Arduinoで作ろう(61) Digisparkで7セグLED温度計(2022.01.16)
- Arduinoで作ろう(60) Digisparkでデジタル時計(2022.01.10)
- Arduinoで作ろう(59) DigisparkのP5を使えるようにした(2022.01.08)
- Arduinoで作ろう(58) DigisparkとLM35で温度計(2022.01.02)