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); }