传感技术
直播中

李宛蔓

7年用户 963经验值
私信 关注
[问答]

ADXL345读数跳变问题怎么解决?

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=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;

更多回帖

×
20
完善资料,
赚取积分