打印

[求助]ADXL345三轴输出数据问题

[复制链接]
1297|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hartsing|  楼主 | 2014-7-10 15:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大哥,小弟用STM32读取ADXL345的三轴加速度,发现结果读数很不正确,求助大神帮忙看看问题何在?在此谢过!
原始数据——读取寄存器数据;解算数据——(float)原始数据*3.9/1000

附(数据):
依次为X/Y/Z方向
静止:
原始数据:13  14  230
解算数据:0.050700/0.054600/0.897000
原始数据:13  13  229
解算数据:0.050700/0.050700/0.893100
轻微运动:
原始数据:65459  65489  210
解算数据:255.290100/255.407104/0.819000
原始数据:65509  65535  86
解算数据:255.485107/255.586502/0.335400

附(代码):
void ADXL345_READ_XYZ(u16 *x,u16 *y,u16 *z)  //读取三个方向的值
{
u8 buf[6];
buf[0]=ADXL345_RD_Reg(DATA_X0);
buf[1]=ADXL345_RD_Reg(DATA_X1);
buf[2]=ADXL345_RD_Reg(DATA_Y0);
buf[3]=ADXL345_RD_Reg(DATA_Y1);
buf[4]=ADXL345_RD_Reg(DATA_Z0);
buf[5]=ADXL345_RD_Reg(DATA_Z1);
*x=buf[1]<<8|buf[0];      
*y=buf[3]<<8|buf[2];      
*z=buf[5]<<8|buf[4];     
printf(“原始数据:%d  %d  %d\r\n",*x,*y,*z);
}
void ADXL345_Init(void) //ADXL345初始化
{   
IIC2_Init();
if(ADXL345_RD_Reg(DEVICE_ID)==0XE5)
{  
ADXL345_WR_Reg(DATA_FORMAT,0X2B);
ADXL345_WR_Reg(BW_RATE,0x0A);
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);
}   
}

相关帖子

沙发
lyncxy119| | 2014-7-10 16:02 | 只看该作者
Z轴数据还算正常,其他两轴的输出饱和了,如果三轴读数代码相同的话建议查一下硬件AD部分

使用特权

评论回复
板凳
dirtwillfly| | 2014-7-10 17:29 | 只看该作者
看AD部分的电路

使用特权

评论回复
地板
hartsing|  楼主 | 2014-7-11 10:45 | 只看该作者
lyncxy119 发表于 2014-7-10 16:02
Z轴数据还算正常,其他两轴的输出饱和了,如果三轴读数代码相同的话建议查一下硬件AD部分 ...

ADXL345是数字输出的,弱弱的问下它的AD部分是?

使用特权

评论回复
5
hartsing|  楼主 | 2014-7-11 10:47 | 只看该作者
dirtwillfly 发表于 2014-7-10 17:29
看AD部分的电路

ADXL345直接和STM32连接的,没有其他电路了啊

使用特权

评论回复
6
lyncxy119| | 2014-7-11 11:15 | 只看该作者
电路贴出来看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝