Xadow 3-Axis Accelerometer 三轴加速度传感器

From Wiki
Jump to: navigation, search

产品简介

这个加速度模块通过I2C接口可以测量高达16g的加速度,适合对运动状态的监控。 有了这个模块, 你可以在你的设计中很方便地加入运动监控的功能, 例如手臂、腿部的晃动。如果你想设计一个通过手臂晃动来切换你的iPhone歌曲的装置, 那这个模块刚好适合你。


300px-Xadow Accelerometer 01.jpg


规格参数

外形尺寸: 25.43mm X 20.35mm 工作电压: 3.3V 分辨率:3.9mg/LSB 测量范围: ±16g 通信方式: I2C 应用示例

和使用其他Xadow模块一样,在下载测试代码,得到运动信息之前,你需要完成三轴加速度与Xadow 主板的硬件连接。


Xadow3AxisAcce.jpg


测试代码如下:

  1. include <Wire.h>
  1. define ADXL345_DEVICE 0x00
  2. define ADXL345_POWER_CTL 0x2D
  3. define ADXL345_DATAX0 0x32
  4. define ADXL345_DATAX1 0x33
  5. define ADXL345_DATAY0 0x34
  6. define ADXL345_DATAY1 0x35
  7. define ADXL345_DATAZ0 0x36
  8. define ADXL345_DATAZ1 0x37
  1. define ADXL345_ADDRESS 0x53

int X_Read,Y_Read,Z_Read; double ax,ay,az;

void setup()

{

 Wire.begin(); 
 Serial.begin(19200);
 delay(100);
 //Turning on the ADXL345
 Wire.beginTransmission(ADXL345_DEVICE); // start transmission to device 
 Wire.write(ADXL345_POWER_CTL);           
 Wire.write(8);                          //measuring enable
 Wire.endTransmission();                 // end transmission
}

void loop() {

X_Read = readRegister(ADXL345_ADDRESS,ADXL345_DATAX0,ADXL345_DATAX1); Y_Read = readRegister(ADXL345_ADDRESS,ADXL345_DATAY0,ADXL345_DATAY1); Z_Read = readRegister(ADXL345_ADDRESS,ADXL345_DATAZ0,ADXL345_DATAZ1);


/*Serial.print("The X,Y,Z Value are:"); 
Serial.print(X_Read);
Serial.print(" , ");
Serial.print(Y_Read);
Serial.print(" , ");
Serial.println(Z_Read); */

 getAcceleration();
 Serial.print("X=");
 Serial.print(ax);
 Serial.println(" g");
 Serial.print("Y=");
 Serial.print(ay);
 Serial.println(" g");
 Serial.print("Z=");
 Serial.print(az);
 Serial.println(" g");
 Serial.println("**********************");
delay(500); 

}

int readRegister(int deviceAddress,int address1,int address2) {

   long int value;
   int readValue1,readValue2;
   Wire.beginTransmission(deviceAddress);
    Wire.write(address1); // register to read
    Wire.write(address2); // register to read
    Wire.endTransmission();
    Wire.requestFrom(deviceAddress,2); // read two byte
    if(Wire.available()<=2)
    {
      readValue1 = Wire.read();
      readValue2 = Wire.read();
    }
    //Wire.endTransmission();  
    readValue2 = readValue2<<8;
    value= readValue1 + readValue2;
    delay(100);
    return value;  

}

void getAcceleration() {

 double gains;
 //Boring accelerometer stuff   
 gains = 0.00390625;
 ax=X_Read * gains;
 ay=Y_Read * gains; 
 az=Z_Read * gains;

}

下载程序后,打开串口可以观察到模块的运动信息。输出的结果是转换为重力单位g之后的数据。


Xadow 3-Axis Accelemeter Result.jpg


要点补充

下面两个图可以帮助你理解传感器输出结果所代表的物理意义。第一个图是相对于芯片ADXL345而言,每个轴的运动方向。

ADXL345 Axes of Acceleration Sensivity.jpg

第二张图是输出响应与重力方向的关系:


Sensing Diraction 2.jpg


File:ADXL345 datasheet.pdf