[Arduinoのすすめ][ArduinoConf][ArduinoMonitor][iArduino]

秋月電子のKXM52-1050 DIP化アナログ3軸加速度センサモジュールを使う

KXM52-1050は、カイオニクス製の3軸の加速度センサです。電源電圧範囲は 2.7[V]〜5.5[V]です。5[V], 3.3[V]動作のArduinoと電源を共通にして使うことが出来ます。測定範囲は±2[G]で、感度は660[mV/G](電源が3.3[V]時)、オフセットは1.65[V](電源が3.3[V]時)です。 ここでは、秋月電子のDIP化モジュールを利用しています(残念ながら販売終了)。 モジュールのピン配置は次のようになっています。

ピン番号名称備考
1VDD2.7[V]〜5.5[V]
2PS(power shutdown)VDDにつなぐ(通常動作)
3GND 
4Pairty内蔵 EEPROMのパリティチェック(つながない)
5Self TestGNDへつなぐ
6X-OUT 
7Y-OUT 
8Z-OUT 
以下では 6, 7, 8 ピンをそれぞれ Arduino の A0, A1, A2へつなぎ、 3, 5ピンをGNDへ、1, 2ピンを5[V]へつないでいます。

注意

秋月電子のDIP化モジュールは販売終了、KXM52-1050自体も廃品種です。

スケッチ

以下のスケッチは読んだ値(そのままの値と単位を[G]に変換した値)をシリアルへ出力します。 データシートに明示されていませんが、出力電圧が電源電圧に比例するため、 Arduinoの電源電圧を気にせず同じスケッチでいいようです。 センサの傾き(基板上、ケース内等)をキャンセルするには、setup関数で読んだ値を 基準(オフセット)にするとよいでしょう。

const float AREF   = 3.3;   /* 電源が5[V]でも、そのまま */
const float SENS   = 0.660; /* 0.660[V/G] */ 
const int   OFFSET = 512;

void setup() {
  Serial.begin(9600);
  while (!Serial) {}  
}

void loop() {
  int X, Y, Z;
  float x, y, z;

  X = analogRead(A0);
  Y = analogRead(A1);
  Z = analogRead(A2);
  
  x = (X-OFFSET);
  y = (Y-OFFSET);
  z = (Z-OFFSET);
  
  x = x / 1024.0 * AREF / SENS;
  y = y / 1024.0 * AREF / SENS;
  z = z / 1024.0 * AREF / SENS;
  
  Serial.print(X);
  Serial.print(" ");
  Serial.print(Y);
  Serial.print(" ");
  Serial.print(Z);
  Serial.print(" ");
  Serial.print(x);
  Serial.print(" ");
  Serial.print(y);
  Serial.print(" ");
  Serial.println(z);
  
  delay(100);
}

Arduinoのすすめ
Copyright (c) 2013, Noriaki Mitsunaga