打印
[STM32]

adxl345三轴加速度的问题

[复制链接]
2566|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FS1360472174|  楼主 | 2013-7-21 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在基于STM32平台使用ADXL345测倾角时发现一些问题,之前用的是传感器购买时赠送的51程序,没有细究拿来就用的,在移植到stm32平台时发现测量时很不准。
这是数据处理代码:
//这是x轴
BUF[1],BUF[3]MBUF[5]分别是x,y,z的高位,判断正负后再进一步合值
void display_x()
{
int temp;
x=BUF[0];
if(BUF[1]&0x80)
{
BUF[1]=~BUF[1]+1;
LCD_ShowNum(92,170,0,1,16);
printf("此处x是负号");
}
else
LCD_ShowNum(92,170,1,1,16);
x=BUF[0]+(BUF[1]<<8);
K=(float) (x*3.9) ;
conversion(K);
LCD_ShowNum(108,170,qian, 1,16);
LCD_ShowNum(124,170,bai,1,16);
LCD_ShowNum(140,170,shi,1,16);
LCD_ShowNum(156,170,ge,1,16);
}

//这是角度显示函数,测得的是与z轴夹角
void display_Angle(void)
{

int angle;

angle[0]= (int)(atan2((double)K,(double)Q) * (180 / 3.14159265)); // 与z的夹角
conversion(angle[0]); //计算数据和显示
LCD_ShowNum(108,230,qian, 1,16);
LCD_ShowNum(124,230,bai,1,16);
LCD_ShowNum(140,230,shi,1,16);
LCD_ShowNum(156,230,ge,1,16);

}
现在的问题是数据能够传过来,但是显示的值有问题,角度测量相当的不准备,没什么规律可循。想问下有没做过这的,传感器发送过来的数据格式是怎样的?上述我的处理方法错在什么地方了

相关帖子

沙发
FS1360472174|  楼主 | 2013-7-21 18:10 | 只看该作者
有没人遇到过这样的问题

使用特权

评论回复
板凳
airwill| | 2013-7-22 10:02 | 只看该作者
有几个可能性.
1. ARM  速度快了, 导致 ADXL345 的时序有问题, 读到了错误的值, 这个可以用调试器采集些数据来判断.
2. 编译器问题, 32 为的编译器和 C51 有区别的. 主要原因是 32 的寄存器了.
最明显的一点, int 由 16位数变成了 32 位. 原来计数中的移位, 溢出,条件都发生了变化, 导致有时计算结果出现错误.

使用特权

评论回复
地板
boltmy| | 2013-8-19 15:40 | 只看该作者
不明觉厉

使用特权

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

本版积分规则

3

主题

60

帖子

1

粉丝