已回答假定已回答

求助!ADXL读数跳变问题

Aaron_HZI 在 2015-9-21 詢問的問題
最後回覆由訪客於2015-10-8提供

ADXL读数跳变问题

Z轴垂直于平面,XY均在平面内的情况

红色为X轴向,绿色为Y轴向,蓝色为Z轴向,XY轴向均出现±1g的跳变,Z轴向没有,降低传输速率亦存在

 

X轴垂直于平面,YZ在平面内,三个轴向均出现跳变,幅值都为±1g

XYZ三轴向均不平行或垂直于平面时则无此毛刺产生(同样的速率及硬件电路)

硬件电路部分

软件部分

初始化

if(ADXL345_RD_Reg(DEVICE_ID)==0XE5) //¶ÁÈ¡Æ÷¼þID

  ADXL345_WR_Reg(DATA_FORMAT,0X2B); //µÍµçƽÖжÏÊä³ö,13λȫ·Ö±æÂÊ,Êä³öÊý¾ÝÓÒ¶ÔÆë,16gÁ¿³Ì
  ADXL345_WR_Reg(BW_RATE,0x0f);  //Êý¾ÝÊä³öËÙ¶ÈΪ100Hz
  ADXL345_WR_Reg(POWER_CTL,0x28);     //Á´½ÓʹÄÜ,²âÁ¿Ä£Ê½
  ADXL345_WR_Reg(INT_ENABLE,0x00); //²»Ê¹ÓÃÖжϠ 
   ADXL345_WR_Reg(OFSX,0x00);
  ADXL345_WR_Reg(OFSY,0x00);
  ADXL345_WR_Reg(OFSZ,0x00);

 
  return 0;
}

读数及数据处理

for(i=0;i<6;i++)

{

   gXYZ_BUF[i]=ADXL345_RD_Reg(0x32+i); //¶ÁÈ¡Ò»¸ö×Ö½Ú,¼ÌÐø¶Á,·¢ËÍACK

  }            

gX=(short)(((u16)gXYZ_BUF[1]<<8)+gXYZ_BUF[0]);     

gY=(short)(((u16)gXYZ_BUF[3]<<8)+gXYZ_BUF[2]);     

gZ=(short)(((u16)gXYZ_BUF[5]<<8)+gXYZ_BUF[4]);   

gX=gX*3.9/1000;

gY=gY*3.9/1000;//发送显示的值

gZ=gZ*3.9/1000;

結果