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

搜索
12
返回列表 发新帖
楼主: 凌天007

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

[复制链接]

3

主题

17

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2017-5-9 09:49:36 | 显示全部楼层
admin 发表于 2017-5-8 23:33
把Roll和Yaw也发到上位机即可

#include "sys.h"
  /**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
u8 Way_Angle=2;   
float Angle_Balance;
int main(void)
{
        Stm32_Clock_Init(9);            //系统时钟设置
        delay_init(72);                 //延时初始化
        uart_init(72,9600);           //初始化串口1
        IIC_Init();                     //模拟IIC初始化
  MPU6050_initialize();           //=====MPU6050初始化       
        DMP_Init();                     //初始化DMP     
  Timer1_Init(49,7199);           //=====5MS进一次中断服务函数
        while(1)
                {
                                printf("卡 尔 曼 滤 波 输 出 Pitch:  %f\r\n  ",Angle_Balance);  //y
                                printf("卡 尔 曼 滤 波 输 出 ROLL:  %f\r\n  ",Angle_Balance);  //x-----
                                printf("卡 尔 曼 滤 波 输 出 YAW:  %f\r\n  ",Angle_Balance);  //z -----
                }
}
应该不是这样吧 ,你看那个Angle_Balance应该是Pitch的值,但是ROLL和YAW的值不知道是什么,卡尔曼滤波那块好像又没有
回复

使用道具 举报

3

主题

17

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2017-5-9 10:22:54 | 显示全部楼层
admin 发表于 2017-5-8 23:33
把Roll和Yaw也发到上位机即可

还有一个问题,就是我用DMP读取数据时,假如我读取YAW角数据,我没有动那个mpu模块,但是YAW角数据会一直往大增加,这是DMP这个算法的问题还是芯片本身的问题,有没有解决的办法呢?
回复

使用道具 举报

1

主题

11

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2017-5-9 11:05:48 | 显示全部楼层
凌天007 发表于 2017-5-9 09:49
#include "sys.h"
  /**************************************************************************
...

看来你比我还新手
                q0 = quat[0] / q30;        //q30格式转换为浮点数
                q1 = quat[1] / q30;
                q2 = quat[2] / q30;
                q3 = quat[3] / q30;
                //计算得到俯仰角/横滚角/航向角
                *pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;        // pitch
                *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;        //yaw

回复

使用道具 举报

3

主题

17

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2017-5-9 12:23:46 | 显示全部楼层
魂萦xy 发表于 2017-5-9 11:05
看来你比我还新手
                q0 = quat[0] / q30;        //q30格式转换为浮点数
                q1 = quat[1] / q30; ...

我知道这个,但是这个是DMP融合数据的,在卡尔曼滤波算法那个主程序里没有读取DMP的数据。
就是说我现在想用卡尔曼滤波算法得到旋转角的数据,然后到串口上显示,我看卡尔曼滤波算法的程序里只是计算了俯仰角的数据,其他两个角的数据没有计算。
我不用DMP那个程序。
你用DMP那个程序的时候,上电复位后有没有发现有的角度(比如我用的YAW角)开始时一直增大到6 度,然后变化很缓慢(但还在增加),遇到过这个情况吗?
回复

使用道具 举报

1

主题

11

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2017-5-9 12:59:03 | 显示全部楼层
单靠 MPU6050 无法准确得到 Yaw 角,需要和地磁传感器结合使用。不用dmp用卡尔曼得到yaw和roll需要自己去姿态解算融合,我也不会,做平衡车用不到yaw和roll,我觉得你应该到搞四轴的论坛去寻找答案。
回复

使用道具 举报

3

主题

17

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2017-5-9 14:00:56 | 显示全部楼层
魂萦xy 发表于 2017-5-9 12:59
单靠 MPU6050 无法准确得到 Yaw 角,需要和地磁传感器结合使用。不用dmp用卡尔曼得到yaw和roll需要自己去姿 ...

哦哦,谢谢了
回复

使用道具 举报

3

主题

17

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2017-5-9 18:18:26 | 显示全部楼层
admin 发表于 2017-5-8 23:33
把Roll和Yaw也发到上位机即可

用卡尔曼滤波算法能否消除YAW角的偏移呢,具体有程序吗?
卡尔曼滤波算法姿态解算出YAW角的程序又该怎么写呢,揪心啊,不想用HMC5883进行校准YAW角
回复

使用道具 举报

3

主题

17

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2017-5-9 20:12:56 | 显示全部楼层
魂萦xy 发表于 2017-5-9 12:59
单靠 MPU6050 无法准确得到 Yaw 角,需要和地磁传感器结合使用。不用dmp用卡尔曼得到yaw和roll需要自己去姿 ...

那么用卡尔曼滤波算出来的YAW会不会也存在漂移
回复

使用道具 举报

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2018-3-5 14:30:14 | 显示全部楼层


gyro, accel,两个数组怎么转化为三个轴的角速度,对应关系是啥
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|平衡小车之家  

GMT+8, 2019-10-15 20:22 , Processed in 0.087322 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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