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化モジュールを利用しています(残念ながら販売終了)。 モジュールのピン配置は次のようになっています。
| ピン番号 | 名称 | 備考 |
| 1 | VDD | 2.7[V]〜5.5[V] |
| 2 | PS(power shutdown) | VDDにつなぐ(通常動作) |
| 3 | GND | |
| 4 | Pairty | 内蔵 EEPROMのパリティチェック(つながない) |
| 5 | Self Test | GNDへつなぐ |
| 6 | X-OUT | |
| 7 | Y-OUT | |
| 8 | Z-OUT |
秋月電子の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);
}