请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 26427|回复: 18

MPU6050如何获取三个轴加速度的原始数据呢

[复制链接]

3

主题

17

帖子

34

积分

新手上路

Rank: 1

积分
34
发表于 2017-4-23 18:01:08 | 显示全部楼层 |阅读模式
如何获取MPU6050里加速度的原始数据?我在下图中自己编写了一个函数,在主函数中调用了一下,但是编译总是报错?程序猿大大能帮忙看看吗
QQ图片20170423175712.jpg
QQ图片20170423175725.png
回复

使用道具 举报

5

主题

231

帖子

1190

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1190
发表于 2017-4-23 20:14:06 | 显示全部楼层
Read_DMP的时候已经读出了,记得有2个数组存放的,你看一下
回复

使用道具 举报

5

主题

231

帖子

1190

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1190
发表于 2017-4-23 20:14:07 | 显示全部楼层
Read_DMP的时候已经读出了,记得有2个数组存放的,你看一下
回复

使用道具 举报

3

主题

17

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2017-4-23 20:34:08 | 显示全部楼层
admin 发表于 2017-4-23 20:14
Read_DMP的时候已经读出了,记得有2个数组存放的,你看一下

void Read_DMP(void)
{       
          unsigned long sensor_timestamp;
                unsigned char more;
                long quat[4];

                                dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);               
                                if (sensors & INV_WXYZ_QUAT )
                                {   
                                         q0=quat[0] / q30;
                                         q1=quat[1] / q30;
                                         q2=quat[2] / q30;
                                         q3=quat[3] / q30;
                                         Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;        
                                         Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll                 
                                         Yaw =         atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;
                                }
}



这个里面只有解算之后的欧拉角啊,没有xyz各个轴的原始加速度值和陀螺仪值,我想看看解算之前的数据,我觉得可以程序里应该有相关函数,但是不知道在哪
回复

使用道具 举报

5

主题

231

帖子

1190

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1190
发表于 2017-4-24 00:26:19 | 显示全部楼层
凌天007 发表于 2017-4-23 20:34
void Read_DMP(void)
{       
          unsigned long sensor_timestamp;

gyro, accel,
回复

使用道具 举报

3

主题

17

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2017-4-24 16:45:22 | 显示全部楼层

谢谢程序猿大大的技术支持,赞一个,已经可以得到原始数据了,并且通过单位转换得到具有实际物理意义的数据。
回复

使用道具 举报

3

主题

17

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2017-5-8 18:01:42 | 显示全部楼层

请问,在发的MPU6050程序里利用卡尔曼滤波算法后,在串口软件上只能显示俯仰角吗,能不能显示旋转角或者横滚角
回复

使用道具 举报

1

主题

11

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2017-5-8 20:09:13 | 显示全部楼层
可以啊,自己添加啊,上位机有十个通道,把变量添加上去就行了
回复

使用道具 举报

3

主题

17

帖子

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2017-5-8 20:52:54 | 显示全部楼层
魂萦xy 发表于 2017-5-8 20:09
可以啊,自己添加啊,上位机有十个通道,把变量添加上去就行了

就是在程序里这句:
printf("互 补 滤 波 输 出 Pitch:  %f\r\n  ",Angle_Balance);  //y
我要串口显示旋转角或者横滚角,程序里貌似没有啊
回复

使用道具 举报

5

主题

231

帖子

1190

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1190
发表于 2017-5-8 23:33:41 | 显示全部楼层
凌天007 发表于 2017-5-8 20:52
就是在程序里这句:
printf("互 补 滤 波 输 出 Pitch:  %f\r\n  ",Angle_Balance);  //y
我要串口显示 ...

把Roll和Yaw也发到上位机即可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

粤ICP备20017043号|小黑屋|手机版|Archiver|轮趣科技(东莞)有限公司  

GMT+8, 2024-3-28 19:09 , Processed in 0.067106 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表