加速度計で遊ぶその1


さて、筆者が購入したブレッドボードキットには加速度計が付いていた。
これで遊んでみよう。
物はアナログデバイスのADXL335で、GY-61というモジュール名が振られている。
ググってみるとGY-61の回路図が見つかった。

ADXL335に電源用の3.3Vレギュレータがついている。
ADXL335の入力電圧範囲は1.8-3.6Vなので、電圧ドロップの相当大きなレギュレータでない限り3.3Vを突っ込んでもよさそうだ。
一方、加速度計の出力レンジは電源電圧3.3Vで0.1-2.8Vのようなので、電源は5V、ADCの基準電圧は3.3Vとした。
ArduinoとGY-61の結線はこんな感じだ。

後はArduinoのスケッチだ。


const int indexX = 0;
const int indexY = 1;
const int indexZ = 2;
const int inputAnalogPin[] = { A0, A1, A2 };

int SensorOutputADC[3];
int count;

void setup()
{
Serial.begin(9600);
analogReference(EXTERNAL);
}

void loop()
{
for(count = 0; count < 3; count++)
{
SensorOutputADC[ count ] = analogRead( inputAnalogPin[ count ] );
}
//
Serial.print( "X=" );
Serial.print( SensorOutputADC[ indexX ] );
Serial.print( ", Y=" );
Serial.print( SensorOutputADC[ indexY ] );
Serial.print( ", Z=" );
Serial.println( SensorOutputADC[ indexZ ] );
//
delay(500);
}


果たして動作させてみると、おお、基板の傾きに対してX, Y, Zの値がちゃんと変化する(当たり前か)。
ADXL355の加速度検知範囲は+/-3.6Gなので、基板を傾けたところでXとYに+/-1Gしか掛からないので、あまり大きくは値が変化しない。
一方、基板を上下に振れば(USBケーブルが付いているので制限はあるが)、+/-1G以上と思しき値も出力された。
日曜工作としては手軽で楽しいな。

Arduino Uno Rev3

Arduino Uno Rev3

(実際にはこのキットではない、日本で手に入らないキットで、ADXL335の他、LCDポテンショメータ、ロータリーエンコーダなどがついている)