OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: Admin

【正点原子探索者STM32F407开发板例程连载+教学】第37章 MPU6050六轴传感器实验

[复制链接]

13

主题

206

帖子

1

精华

高级会员

Rank: 4

积分
613
金钱
613
注册时间
2014-10-26
在线时间
32 小时
发表于 2015-5-3 21:08:25 | 显示全部楼层
回复【49楼】正点原子:
---------------------------------
原子哥,这个MPU6050输出的 角度带有滤波么?
学习!
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-5-5 00:19:35 | 显示全部楼层
回复【51楼】q27488:
---------------------------------
没有。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-11-27
在线时间
26 小时
发表于 2015-5-11 18:16:31 | 显示全部楼层
哥们问一下  6050斜着放  读出来的初始数据也是0啊   之后转动正常
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-5-14
在线时间
0 小时
发表于 2015-5-14 16:08:05 | 显示全部楼层
真不错,看看
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-5-24
在线时间
1 小时
发表于 2015-5-24 20:23:55 | 显示全部楼层
原子哥我只要一调用 mpu_dmp_get_data就进入HardFault_Handler这个中断函数
在启动文件把堆栈改到9000也不好使啊
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-5-24
在线时间
1 小时
发表于 2015-5-24 20:34:33 | 显示全部楼层
回复【55楼】aq6943599:
---------------------------------
原子哥我的移植成功了,但还有个问题,怎么设置才能让平行地面的角度是零度
而不是初始化时所在的角度为零度啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-5-24 22:28:46 | 显示全部楼层
回复【56楼】aq6943599:
---------------------------------
这我也不知道改,论坛貌似有个网友改过,不过你得找找了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2015-3-4
在线时间
14 小时
发表于 2015-5-28 13:30:47 | 显示全部楼层
i2c_write,i2c_read,delay_ms和get_ms,原子哥   最后这个get_ms是干什么用的啊???找来找去找不到定义的地方啊,只找到mget_ms{}这个空函数
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-11-15
在线时间
4 小时
发表于 2015-6-5 20:05:43 | 显示全部楼层
原子哥问一下加速度的数据如何处理?
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-11-15
在线时间
4 小时
发表于 2015-6-5 20:32:39 | 显示全部楼层
是让得到的数据除以16384么?
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
257
金钱
257
注册时间
2014-5-12
在线时间
35 小时
发表于 2015-6-6 21:05:00 | 显示全部楼层
回复【56楼】aq6943599:
---------------------------------
我也很纳闷????但是我也有个读出的不是0的,可是看不出差别.....
fishing,or drying the net...
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
257
金钱
257
注册时间
2014-5-12
在线时间
35 小时
发表于 2015-6-6 21:13:14 | 显示全部楼层
回复【53楼】Alone_:
---------------------------------
你找到原因了没?
fishing,or drying the net...
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-6-8
在线时间
2 小时
发表于 2015-6-8 14:26:55 | 显示全部楼层
你好,我移植到mini板上 IO口定义也换了 好像还是没能成功驱动起来。。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-6-8
在线时间
2 小时
发表于 2015-6-8 16:25:43 | 显示全部楼层
回复【63楼】xyy:
---------------------------------
回复【27楼】飓风:
---------------------------------
你好请问你在mini板上成功了吗
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
257
金钱
257
注册时间
2014-5-12
在线时间
35 小时
发表于 2015-6-17 22:33:11 | 显示全部楼层
回复【53楼】Alone_:
--------------------------------
把两个位置改一下....MPU6050×?????
//·?????:0,????
//    ????,?§°?
u8 run_self_test(void)
{
int result;
//char test_packet[4] = {0};
long gyro[3], accel[3]; 
result = mpu_run_self_test(gyro, accel);
if (result == 0x7)                                                   //if (result == 0x3)   这里别用0x03,第一个位置
{
/* Test passed. We can trust the gyro data here, so let's push it down
* to the DMP.
*/
*************************************************************88888

/·?????:0,????
//    ????,?§°?
u8 mpu_dmp_init(void)
{
u8 res=0;
//MPU_IIC_Init();  //??????IIC×???
if(mpu_init()==0) //??????MPU6050
{  
res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL);//?è???ù?è?????????÷
if(res)return 1; 
res=mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);//?è??FIFO
if(res)return 2; 
res=mpu_set_sample_rate(DEFAULT_MPU_HZ); //?è?????ù??
if(res)return 3; 
res=dmp_load_motion_driver_firmware(); //????dmp????
if(res)return 4; 
res=dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));//?è????????·??ò
if(res)return 5; 
res=dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT|DMP_FEATURE_TAP| //?è??dmp????
    DMP_FEATURE_ANDROID_ORIENT|DMP_FEATURE_SEND_RAW_ACCEL|DMP_FEATURE_SEND_CAL_GYRO|
    DMP_FEATURE_GYRO_CAL);
if(res)return 6; 
res=dmp_set_fifo_rate(DEFAULT_MPU_HZ); //?è??DMP????????(×??ó??????200Hz)
if(res)return 7;   
res=run_self_test(); //×??ì
// if(res)return 8;            //这个屏蔽掉....................................................第二个位置
res=mpu_set_dmp_state(1); //????DMP
if(res)return 9;     
}else return 10;
return 0;


就修改这两个位置,可以上电后不全初始化为0
fishing,or drying the net...
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-6-22
在线时间
0 小时
发表于 2015-6-23 09:21:44 | 显示全部楼层
MPU_Set_Accel_Fsr(0); //加速度传感器,±2g

把0改为1,那么量程即应该有±2g改为了±4g,


当去测同一个加速度时,量程改前改后的读数都是一样的(我只研究了Z轴加速度,其他的度数先不看)。

求解释。
回复 支持 反对

使用道具 举报

27

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2012-9-11
在线时间
31 小时
发表于 2015-6-23 14:15:33 | 显示全部楼层
原来原子大哥这里有啊,我顶。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-7-6
在线时间
0 小时
发表于 2015-7-6 19:25:56 | 显示全部楼层
原子哥,我在我的STM32F103C8T6上移植了MDP,原先没有加MDP的时候读取MPU的地址是可以的,而且是对的,我用定时器3所控制的LED闪烁也是可以正常闪烁的,但是奇怪的是只要在main函数中添加了while(mpu_dmp_init()){}就会导致“死机”,暂且说死机,因为只要一加这个初始化LED灯不再闪烁,连MPU的地址都没法读取了,我的芯片的ROM是64K,RAM是20K,帖子有提到死机可能是堆栈过小的问题,但是怎么更改其大小都没法解决这个“死机”的问题,但是帖子提的是GET——data时候会死机,没提到初始化时候会死机,我找了很久没有找到问题所在,在线调试才点击了两步就卡死没法仿真调试了,望原子哥看到后指点一下
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-7-6
在线时间
0 小时
发表于 2015-7-6 20:31:36 | 显示全部楼层
回复【68楼】风竹:
---------------------------------
现在发现是只要程序调用到inv_mpu.c和inv_mpu_dmp_motion_driver.c文件的函数时编译程序大小只是7K左右,运行一切正常,但是只要调用到这个两个文件的函数后编译程序大小变为了27K,程序运行不正常,只要t调用到inv_mpu.c和inv_mpu_dmp_motion_driver.c中的任何函数程序都没法运行
回复 支持 反对

使用道具 举报

6

主题

56

帖子

0

精华

高级会员

Rank: 4

积分
834
金钱
834
注册时间
2015-6-11
在线时间
119 小时
发表于 2015-7-8 15:08:45 | 显示全部楼层
我打开软件后,界面没有完全显示:“打开串口”按钮点击不到;同时不能最大化窗口;
为什么?



回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
发表于 2015-7-26 16:52:25 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
if(res==MPU_ADDR)//?÷??ID???·
{
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01); //?è??CLKSEL,PLL X?á??????
MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00); //?????????????????¤×÷
MPU_Set_Rate(50); //?è?????ù????50Hz
  }else return 1;

原子哥  res==MPU_ADDR  这个是不等的吧  MPU_ADDR这个是0x68或者0x69 是0—6位地址寄存器的值   而MPU_Read_Byte(MPU_DEVICE_ID_REG)读的是整个八位寄存器的值吧读出来十进制是209  这个if语句一直都不会进入吧
天道酬勤
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
发表于 2015-7-26 16:54:02 | 显示全部楼层
回复【71楼】信奉3:
---------------------------------
是不是要把res=MPU_Read_Byte(MPU_DEVICE_ID_REG)写成res=MPU_Read_Byte(MPU_DEVICE_ID_REG)>>1;
天道酬勤
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-7-26 19:38:02 | 显示全部楼层
回复【70楼】凉风习习:
---------------------------------
你这电脑系统的问题吧,呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-7-26 19:38:23 | 显示全部楼层
回复【71楼】信奉3:
---------------------------------
你可以仿真看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
发表于 2015-7-26 20:47:29 | 显示全部楼层
回复【73楼回复【74楼】正点原子:
---------------------------------
我打印过   按你的写法打印出来是209     如果右移一位打印出来是104也就是0x68
天道酬勤
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-7-26 21:39:42 | 显示全部楼层
 回复【75楼】 信奉3 :
---------------------------------
那是你的连线太长了。出问题了。
我们例程测试结果如图:

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-8-4
在线时间
5 小时
发表于 2015-8-4 15:55:01 | 显示全部楼层
回复【68楼】风竹:
---------------------------------
你好。我的文体和你一莫一样,,加入这两个C文件中的函数后,调试的时候连主函数也进不去了。你现在解决了吗?
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-11-10
在线时间
17 小时
发表于 2015-8-10 14:30:07 | 显示全部楼层
原子哥你好 请问我接磁力计HMC5883L 输出九轴 需要怎么改dmp呢  困扰很久了 真的谢谢原子哥能指导一下 谢谢
努力吧
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-10-3
在线时间
1 小时
发表于 2015-8-28 12:03:22 | 显示全部楼层
在F103上用过,目前把F407的移植到F411上的,发现读取器件地址不正确,咋回事
捍卫梦想!
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-10-3
在线时间
1 小时
发表于 2015-8-28 12:08:35 | 显示全部楼层
回复【75楼】信奉3:
---------------------------------
问一下怎么解决的,我的打印出来也是209
捍卫梦想!
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
发表于 2015-9-8 16:29:52 | 显示全部楼层
回复【80楼】ZPY在路上:
---------------------------------
移位,具体左移右移你看wHO am i 那个寄存器  只移一位
天道酬勤
回复 支持 反对

使用道具 举报

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2014-3-6
在线时间
31 小时
发表于 2015-12-8 10:23:43 | 显示全部楼层
楼主您好,我用了程序是可以跑起来,但是我在主程序的while(1)里面加个延时(大概1~2秒)之后,就一直都在这边跑if(dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more))return 1;
这个是什么问题呢?

还有一个问题就是MPU6050怎么样才能进入待机,然后一到设定的阈值就中断这样的模式呢?您有这样的例程吗?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-7-24
在线时间
0 小时
发表于 2015-12-19 18:18:48 | 显示全部楼层
原子哥  问一下 有没有睡眠模式 的时候     给一个加速度然后自动唤醒的。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-7-24
在线时间
0 小时
发表于 2015-12-19 18:20:27 | 显示全部楼层
回复【82楼】xiaosi204:
---------------------------------
问题解决了吗  我也需要这个 ,   不一定要例程   跟我说一下哪个寄存器什么的就可以了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-6-21
在线时间
1 小时
发表于 2016-6-28 16:49:23 | 显示全部楼层
谢谢原子老师的讲解。虽然实际应用时,我还是不知道怎么用。。。。。。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-6-29
在线时间
7 小时
发表于 2016-6-29 17:35:22 | 显示全部楼层
原子哥你好,我的显示屏显示正常,但是匿名四轴上位机波形无法显示(已经勾选波形线,高级收码设置正确无误),无法显示数据以及飞控状态,我用串口软件观察输出的全是乱码信息,找了好久也没有找到原因,到底是哪里的问题呢?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-6-29
在线时间
7 小时
发表于 2016-6-29 18:40:03 | 显示全部楼层
原子哥您好,我在使用STM32F4来驱动MPU6050,读取其原始数据,并利用其自带的DMP实现姿态解算时出现一个问题,找了好久也没有找到原因,到底是哪里的问题呢?结合匿名四轴上位机软件和LCD显示,我的LCD显示屏显示正常,但是匿名四轴上位机波形无法显示(波特率,串口设置无误,已经勾选波形线,高级收码设置正确无误),可是无法显示数据以及飞控状态,我用串口软件观察输出的全是乱码信息,这是什么原因呢?
回复 支持 反对

使用道具 举报

13

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2013-7-9
在线时间
6 小时
发表于 2016-7-25 12:31:24 | 显示全部楼层
jinzhong 发表于 2015-3-14 11:35
请问这个匿名上位机有下载地址吗?

亲,我按照这个程序移植到STM32F303上面,发现pit,row,yaw为负时还比较正常,当为正数时就很诡异,波动在几百,这是为什么呢
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-7-26
在线时间
5 小时
发表于 2016-10-9 16:13:49 | 显示全部楼层
正点原子 发表于 2015-3-14 23:24
回复【5楼】jinzhong:
---------------------------------
开发板光盘就有。论坛置顶帖就有开发板光盘资料 ...

关于aux iic 原子是否 有过相关的研究。  
回复 支持 反对

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2017-6-19
在线时间
27 小时
发表于 2017-6-26 21:08:19 | 显示全部楼层
正点原子 发表于 2015-4-29 23:00
回复【48楼】详见恨晚:
---------------------------------
请看我们教程。

想问一下原子哥,我在看mpu_dmp_init();时,这个函数包含了一个设置陀螺仪的方向函数
res=dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));//设置陀螺仪方向,然后我就查了一下API的说明,如图,它提到   方向是inv_orientation_matrix_to_scalar的输出值,给人的感觉是因该有这个函数,后来就看了一下源程序发现这个函数居然是原子哥自己编写的,但是既然API的说明上有这个函数就因该不要自己编写啊,就很想知道这个函数原子哥是怎么编写出来的

捕获1.PNG
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-7-27
在线时间
31 小时
发表于 2017-8-1 17:00:17 | 显示全部楼层
kufan_561 发表于 2015-3-31 19:00
**** 作者被禁止或删除 内容自动屏蔽 ****

您好,请问你的这个问题解决了吗 ?我的加速度z轴方向现在也大于1G,其他两个方向正常,求助呀
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-10-15
在线时间
3 小时
发表于 2017-11-17 23:25:16 | 显示全部楼层
请问现在的代码是以一开始的时候芯片位置为初始位置计算的,怎样能够让他以水平位置为初始位置昵。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2018-4-9
在线时间
8 小时
发表于 2018-5-6 19:35:52 | 显示全部楼层
jinzhong 发表于 2015-3-14 11:35
请问这个匿名上位机有下载地址吗?

原子哥,怎么用互补计算yaw呢?现在只会pitch和roll
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-8-30
在线时间
3 小时
发表于 2019-9-4 10:35:59 | 显示全部楼层
幸运果 发表于 2015-4-2 19:22
回复【15楼】正点原子:
---------------------------------
原子哥,我发现这个res=dmp_load_motion_driver ...

兄弟 我也遇到和你一样的问题了  我换了一个开发板就好使了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2019-9-9
在线时间
17 小时
发表于 2019-9-11 11:00:10 | 显示全部楼层
本帖最后由 达来 于 2019-9-11 11:16 编辑

大佬们我想请教一下,能不能将原子哥的STM32F407的MPU6050轴传感器实验移植到STM32F103C8T6中 呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 13:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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