搜索
bottom↓
回复: 64

MPU9150调试求助

[复制链接]

出0入0汤圆

发表于 2013-4-3 22:27:32 | 显示全部楼层 |阅读模式
今天在调MPU9150的模块出现一个很奇怪的现象。单个寄存器的读写都成功,WHO_AM_I的寄存器读出值也是0x68S说明I2C读写正常。
在调MPU9150内部的温度传感器时发现,读取一次的值是正确的(对比室内的数字温度计)但是连续读取温度值,传感器的输出不发生变化。
最后尝试读取之前将MPU9150重新初始化才得到实时变化的传感器。但是我知道这是治标不治本的办法。不知坛子里的大大们有没有遇到过这类问题呢

出0入0汤圆

发表于 2013-4-4 00:00:51 来自手机 | 显示全部楼层
9150  9轴啊   梦想的芯片   就是太贵   楼主哪里搞得?   帮不了你了…

出0入0汤圆

 楼主| 发表于 2013-4-4 10:20:42 | 显示全部楼层
wangjt1988 发表于 2013-4-4 00:00
9150  9轴啊   梦想的芯片   就是太贵   楼主哪里搞得?   帮不了你了…

香港那边有托人带的。。。。    by the way 问题解决了,我I2C读写时序有点问题,对着DATASHEET对了一遍时序改过来就好了

出0入0汤圆

发表于 2013-5-9 12:59:07 | 显示全部楼层
正在玩这个片子,我这边加速度、陀螺仪、温度倒是正常,但是现在发现电子罗盘 数据不变,正在排查问题。

出0入0汤圆

发表于 2013-5-9 17:32:26 | 显示全部楼层
是不是第一次读取数据能读取出来?然后再读取的话就就不变了?
如果是这样有可能是要把全部数据寄存器读取一遍之后它的数据才会更新,我记得有些传感器就是这样.

出0入0汤圆

发表于 2013-5-9 19:03:36 | 显示全部楼层
Nurke 发表于 2013-5-9 17:32
是不是第一次读取数据能读取出来?然后再读取的话就就不变了?
如果是这样有可能是要把全部数据寄存器读取一 ...

找到问题了,首先是对mpu9150的block diagram没认识清,其次是AK8975的single measurement 模式 ,这种情况下,需要每次都要启动一次采集,才会有数据。

出0入0汤圆

 楼主| 发表于 2013-5-9 19:43:47 | 显示全部楼层
wangjt1988 发表于 2013-4-4 00:00
9150  9轴啊   梦想的芯片   就是太贵   楼主哪里搞得?   帮不了你了…

我最后也用了9150内部自带的DMP    很强大   姿态解算不用搞了

出0入0汤圆

发表于 2013-5-10 08:25:47 来自手机 | 显示全部楼层
准不准,持续加速度情况下怎么样

出0入0汤圆

 楼主| 发表于 2013-5-10 08:44:55 | 显示全部楼层
nnnkey 发表于 2013-5-10 08:25
准不准,持续加速度情况下怎么样

我自己使用在来看对于运动的感知很敏感,至于精度问题    我们这些diyer应该没有条件去测试吧

出0入0汤圆

发表于 2013-5-10 08:50:27 | 显示全部楼层
9轴神器一枚
唯一的瑕疵:只能用IIC通信。

出0入0汤圆

 楼主| 发表于 2013-5-10 08:54:50 | 显示全部楼层
kmani 发表于 2013-5-10 08:50
9轴神器一枚
唯一的瑕疵:只能用IIC通信。

I2C通信为什么是瑕疵?

出0入0汤圆

发表于 2013-5-10 09:03:30 | 显示全部楼层
风见流雅 发表于 2013-5-10 08:54
I2C通信为什么是瑕疵?

1:速率低:;2:STM32的硬件IIC有BUG

出0入0汤圆

 楼主| 发表于 2013-5-10 09:09:24 | 显示全部楼层
kmani 发表于 2013-5-10 09:03
1:速率低:;2:STM32的硬件IIC有BUG

1. 400khz的速度对于此处的应用应该足够了,你使用的无刷电调的动态范围也达不到400k。
2. 我没使用过stm32,不知道stm32的i2c带不带dma,如果带的话用起来应该也很方便吧?

出0入0汤圆

发表于 2013-5-10 10:43:46 | 显示全部楼层
风见流雅 发表于 2013-5-10 09:09
1. 400khz的速度对于此处的应用应该足够了,你使用的无刷电调的动态范围也达不到400k。
2. 我没使用过stm ...

400KHZ读取9个16位数据至少需要0.36毫秒。估计实际接近0.5毫秒。

出0入0汤圆

发表于 2013-5-10 11:04:54 | 显示全部楼层
kmani 发表于 2013-5-10 10:43
400KHZ读取9个16位数据至少需要0.36毫秒。估计实际接近0.5毫秒。

應該不用這麼久吧

400KHz → 2.5us

2.5us*9(DOF)*2(Bytes) = 4.5us

加上一些延遲
也不會到0.36ms(360us)吧

出0入0汤圆

 楼主| 发表于 2013-5-10 11:05:46 | 显示全部楼层
kmani 发表于 2013-5-10 10:43
400KHZ读取9个16位数据至少需要0.36毫秒。估计实际接近0.5毫秒。

使用处理器读取一次四元数用0.5ms  而且你拿到的数据已经是姿态解算的结果,2KHz的速率已经很快了。这点传输时间跟你数据处理的时间应该
不在一个数量级。
ps:使用处理器来实现系统做到毫秒级已经算好的了,军事、航天上大多用模拟电路实现,那样实时性会好很多。

出0入0汤圆

发表于 2013-5-10 11:22:38 来自手机 | 显示全部楼层
风见流雅 发表于 2013-5-10 08:44
我自己使用在来看对于运动的感知很敏感,至于精度问题    我们这些diyer应该没有条件去测试吧 ...

呃……其实我想表达的是这个dmp融合的是六轴姿态还是九轴的

出0入0汤圆

发表于 2013-5-10 11:23:06 来自手机 | 显示全部楼层
风见流雅 发表于 2013-5-10 08:44
我自己使用在来看对于运动的感知很敏感,至于精度问题    我们这些diyer应该没有条件去测试吧 ...

呃……其实我想表达的是这个dmp融合的是六轴姿态还是九轴的

出0入0汤圆

发表于 2013-5-10 11:24:33 来自手机 | 显示全部楼层
john800422 发表于 2013-5-10 11:04
應該不用這麼久吧

400KHz → 2.5us

不是这么算的,16个数500us比较靠谱

出0入0汤圆

发表于 2013-5-10 11:55:54 | 显示全部楼层
john800422 发表于 2013-5-10 11:04
應該不用這麼久吧

400KHz → 2.5us

亲~,你少乘了个8

出0入0汤圆

发表于 2013-5-10 11:57:12 | 显示全部楼层
风见流雅 发表于 2013-5-10 11:05
使用处理器读取一次四元数用0.5ms  而且你拿到的数据已经是姿态解算的结果,2KHz的速率已经很快了。这点 ...

假如可以SPI通信,那速度不是一般地快啊

出0入4汤圆

发表于 2013-5-14 10:58:28 | 显示全部楼层
请问各位高手在哪能找到DMP的例程呢?

出0入4汤圆

发表于 2013-5-14 11:39:10 | 显示全部楼层
大侠们,请教一个问题,我目前也在调试MPU9150,我的磁力计的ID读不出来,不知道什么原因,I2C配置为passby方式,磁力计地址0x0c,请问大侠知道什么原因吗?

出0入4汤圆

发表于 2013-5-15 09:33:32 | 显示全部楼层
laber_1912 发表于 2013-5-9 19:03
找到问题了,首先是对mpu9150的block diagram没认识清,其次是AK8975的single measurement 模式 ,这种情 ...

请问如何设置9150内部AK8975的Single measurement mode模式呢,我看那个寄存器是read-only模式的

出0入0汤圆

发表于 2013-5-15 10:33:18 | 显示全部楼层
我等穷人才上6050啊……

出0入0汤圆

发表于 2013-5-15 22:20:32 | 显示全部楼层
我用的STM32+9150,自己的算法,今天刚达到内部计算800Hz,很有成就感

出0入0汤圆

发表于 2013-5-15 22:22:09 | 显示全部楼层
mcu1234mcu 发表于 2013-5-15 09:33
请问如何设置9150内部AK8975的Single measurement mode模式呢,我看那个寄存器是read-only模式的 ...

不是RO,值得注意的是这个片子不能连续采样,每次启动采集之后,一旦采集完成又回到power down mode,所以有点麻烦。

出0入4汤圆

发表于 2013-5-16 09:10:13 | 显示全部楼层
laber_1912 发表于 2013-5-15 22:22
不是RO,值得注意的是这个片子不能连续采样,每次启动采集之后,一旦采集完成又回到power down mode,所以 ...

是的,昨天也发现这个问题了,主要是AK8975有这个特性,原来使用HMC5883,感觉比这个好读数。

出0入0汤圆

发表于 2013-6-5 21:42:17 | 显示全部楼层
laber_1912 发表于 2013-5-9 19:03
找到问题了,首先是对mpu9150的block diagram没认识清,其次是AK8975的single measurement 模式 ,这种情 ...

请问你是用过 AK8975 吗, 我读取数据的时候,转换成角度,好像不对。 是不是读取完数据,还要对数据进行处理? 我读取流程是,开启,等待数据准备好,读取X,Y,Z, 然后 atan2(y,x)×57.3+180

出0入0汤圆

发表于 2013-6-6 23:33:51 | 显示全部楼层
oyingzi007 发表于 2013-6-5 21:42
请问你是用过 AK8975 吗, 我读取数据的时候,转换成角度,好像不对。 是不是读取完数据,还要对数据进行 ...

有个灵敏度的变换,做了么?

出0入0汤圆

发表于 2013-6-7 11:35:35 | 显示全部楼层
laber_1912 发表于 2013-6-6 23:33
有个灵敏度的变换,做了么?

是ASA(x) ASA(y) ASA(z) 这三个吗?
raw_to_gauss_X = asaX + 128;
MAG_F.X = ((long)mag.X * raw_to_gauss_X) /256.0;

还是怎么做,我之前这样做也不大对, 是否有可能被周边器件的磁性所干扰。 请教下,你之前是怎么做的? 有相应代码供参考吗?谢谢你。
纠结好几天了。

出0入0汤圆

发表于 2013-6-9 11:53:14 | 显示全部楼层
oyingzi007 发表于 2013-6-7 11:35
是ASA(x) ASA(y) ASA(z) 这三个吗?
raw_to_gauss_X = asaX + 128;
MAG_F.X = ((long)mag.X * raw_to_ga ...

看手册:
Hx=(asax-128)*0.5/128+1;
mx = Hx * magn_raw_x;

出0入0汤圆

发表于 2013-6-9 14:32:01 | 显示全部楼层
laber_1912 发表于 2013-6-9 11:53
看手册:
Hx=(asax-128)*0.5/128+1;
mx = Hx * magn_raw_x;

谢谢,我再细读下手册。

出0入53汤圆

发表于 2013-6-20 13:59:17 | 显示全部楼层
风见流雅 发表于 2013-5-10 11:05
使用处理器读取一次四元数用0.5ms  而且你拿到的数据已经是姿态解算的结果,2KHz的速率已经很快了。这点 ...

LZ你的代码时候可以贴出来 啊  我也打算用一下这芯片,现在还没有找到他的驱动

出0入0汤圆

发表于 2013-7-4 11:25:54 | 显示全部楼层
laber_1912 发表于 2013-5-15 22:22
不是RO,值得注意的是这个片子不能连续采样,每次启动采集之后,一旦采集完成又回到power down mode,所以 ...

你好,我想问一下关于MPU9150的电子罗盘的问题,我读出来的数据一直有错误,有空可以帮一下忙吗

出0入0汤圆

发表于 2013-7-30 11:58:24 | 显示全部楼层
laber_1912 发表于 2013-5-15 22:20
我用的STM32+9150,自己的算法,今天刚达到内部计算800Hz,很有成就感

首先共享大侠,请问大侠能不能共享一下代码啊,小弟也在用STM32和9150,但是因为听说STM的IIC不稳定,最近一直在自己模拟IIC,可一直都没调出来。

出0入0汤圆

发表于 2013-8-1 10:03:39 | 显示全部楼层
风见流雅 发表于 2013-5-9 19:43
我最后也用了9150内部自带的DMP    很强大   姿态解算不用搞了

你用9150dmp的时候,ak8973磁力计需要标定吗?还是dmp把所有标定的过程都搞好了?新手好多不懂啊,不过我移植的dmp能成功读数了

出0入0汤圆

发表于 2013-8-9 11:33:30 | 显示全部楼层
laber_1912 发表于 2013-6-9 11:53
看手册:
Hx=(asax-128)*0.5/128+1;
mx = Hx * magn_raw_x;

请问大神,你说的是什么手册呢?从哪下载啊?

出0入0汤圆

发表于 2013-8-9 11:34:58 | 显示全部楼层
nnnkey 发表于 2013-5-10 11:23
呃……其实我想表达的是这个dmp融合的是六轴姿态还是九轴的

我也有这个问题呀,罗盘在姿态融合中到底用到了没?

出0入0汤圆

发表于 2013-9-13 00:22:22 | 显示全部楼层
刚刚开始四轴的小白路过

出0入0汤圆

发表于 2013-10-18 01:16:01 | 显示全部楼层
laber_1912 发表于 2013-6-9 11:53
看手册:
Hx=(asax-128)*0.5/128+1;
mx = Hx * magn_raw_x;


請問一下

目前使用 MPU-9150 讀取電子羅盤,
可以讀到 ID, 讀到的資料也應該是沒有問題,
但是 X, Y, Z 軸的資料卻是一樣的,

請問是否有遇到過此問題?
不知道該如何解決?

另外, 關於 AK8975 的讀取,
datasheet 上似乎就只有 bypass 的說明而已,
請問哪裡有較為詳細的說明?

出0入0汤圆

发表于 2013-10-19 10:09:39 | 显示全部楼层
john800422 发表于 2013-10-18 01:16
請問一下

目前使用 MPU-9150 讀取電子羅盤,

x,y,z数据不变很大可能性是没有再次启动采集,9150里面的mag sensor是single measurement 模式,所以你每次读完数据之后,下次需要再次启动数据采集,希望能解决你的问题。

出0入0汤圆

发表于 2013-10-19 10:15:34 | 显示全部楼层
刚看了这个帖子,有求datasheet的,没注意到,现分享下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-10-20 20:12:26 | 显示全部楼层
顶一个,也在研究工作MPU9150

出0入0汤圆

发表于 2013-10-22 08:11:12 | 显示全部楼层
laber_1912 发表于 2013-10-19 10:09
x,y,z数据不变很大可能性是没有再次启动采集,9150里面的mag sensor是single measurement 模式,所以你每 ...

謝謝, 已解決了
主要是需要等待資料準備完畢

還是需要看 AK8975 的 datasheet
MPU9150 的 datasheet 關於電子羅盤的部分寫的不詳細

出0入0汤圆

发表于 2013-10-22 09:57:03 | 显示全部楼层
风见流雅 发表于 2013-5-9 19:43
我最后也用了9150内部自带的DMP    很强大   姿态解算不用搞了

你好,请问用9150加dmp,yaw轴会漂移么?受周围一场磁场干扰的话yaw轴会突变么?谢谢

出0入0汤圆

 楼主| 发表于 2013-10-23 19:56:02 | 显示全部楼层
lufthansa 发表于 2013-10-22 09:57
你好,请问用9150加dmp,yaw轴会漂移么?受周围一场磁场干扰的话yaw轴会突变么?谢谢 ...

这个我没有验证过,不过用地磁传感器的话   周围有磁场,比如电机肯定是会受影响的

出0入0汤圆

发表于 2013-10-25 23:23:07 | 显示全部楼层
用内部DMP!

出0入0汤圆

发表于 2014-1-13 11:38:18 | 显示全部楼层
kmani 发表于 2013-5-10 08:50
9轴神器一枚
唯一的瑕疵:只能用IIC通信。

推荐用9250,比9150小很多。支持spi

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-1-18 22:00:21 | 显示全部楼层
磁场读取速度不要很快,个人觉得使用MPU6000+HMC5883比较合适

出0入0汤圆

发表于 2014-1-19 02:05:16 | 显示全部楼层
这传感器真贵 .......有没有可能搞个团购?

出0入0汤圆

发表于 2014-1-28 22:04:51 | 显示全部楼层
这个传感器自带温漂校正吗?

出0入0汤圆

发表于 2014-3-11 15:49:58 | 显示全部楼层
能不能交流一下  我也在用MPU9150   但数据手册是用英文写的   有点难理解

出0入0汤圆

发表于 2014-3-27 15:42:46 | 显示全部楼层
laber_1912 发表于 2013-6-6 23:33
有个灵敏度的变换,做了么?

兄台,我也用的9150,采用AHRSupdate这个算法,但是现在航向角有点不正常。
那个灵敏度校准我做了,这个应该是芯片出厂的时候就设定了,每个芯片都不一样吧?
请问那个灵敏度校准值ASAX,ASAY,ASAZ应该在那种模式下读呢?Fuse ROM access mode吗?我不管在哪种模式下读都是相同的,170,171和188,感觉我好像读错了。
恳请赐教!!!

出0入0汤圆

 楼主| 发表于 2014-3-31 22:20:05 | 显示全部楼层
电气工程化动自 发表于 2014-3-11 15:49
能不能交流一下  我也在用MPU9150   但数据手册是用英文写的   有点难理解

看懂英文数据手册是起码的     不然工作以后更痛苦。。。。加油吧

出0入0汤圆

发表于 2014-4-2 09:28:36 | 显示全部楼层
laber_1912 发表于 2013-10-19 10:09
x,y,z数据不变很大可能性是没有再次启动采集,9150里面的mag sensor是single measurement 模式,所以你每 ...


这位大哥,我也用的9150,移植AHRS那个算法融合陀螺仪,加计,磁力计。
现在Yaw不太正常,确定是磁力计出了问题,我是可以读出ID的,但是为什么磁力计数据的高八位要么是0要么是255?(低八位很正常)导致磁力计的数据不超过+ -256,
磁力计的量程不是-4096---4096吗,我读出来的数据也太小了,请问你有遇到这个问题吗?恳请指教!!!

出0入0汤圆

发表于 2014-4-22 21:53:16 | 显示全部楼层
laber_1912 发表于 2013-5-9 12:59
正在玩这个片子,我这边加速度、陀螺仪、温度倒是正常,但是现在发现电子罗盘 数据不变,正在排查问题。 ...

您好,请问在吗。我现在也在调MPU9150。我这边的情况是磁力计输出一直不变,加速度计和陀螺仪正常。以下是我的配置,还请您能够帮助
        u8 data_buf[6];
        u8 data = 0x01;
//***********设置为signal measurement模式************   

        iic_rw(&data,1,0x0A,0x18,WRITE);

  //iic bypass en        每次读之前打开
data = 0x02;
  iic_rw(&data, 1, INT_PIN_CFG, MPU6050_ADDR, WRITE);

        iic_rw(&data_buf[0],6, 0x03, 0x18, READ);
        *mx = data_buf[0] + data_buf[1]* 0x100;
        *my = data_buf[2] + data_buf[3]* 0x100;
        *mz = data_buf[4] + data_buf[5]* 0x100;

  //iic bypass disable         //每次读完磁力计之后关掉
  data = 0x00;
  iic_rw(&data, 1, INT_PIN_CFG, MPU6050_ADDR, WRITE);

出0入0汤圆

发表于 2014-4-27 14:30:52 | 显示全部楼层
有人提供源码吗?

出0入0汤圆

发表于 2014-4-27 16:10:09 | 显示全部楼层
我是路过的,别在意我的出现。

出0入0汤圆

发表于 2014-5-6 16:24:51 | 显示全部楼层
我的也是磁力计读取来的数据不变,陀螺仪和加速度计数据正常,不知道论坛里有没有读取九轴裸数据的源码,求助啊

出0入0汤圆

发表于 2014-7-9 13:23:06 | 显示全部楼层
laber_1912 发表于 2013-6-9 11:53
看手册:
Hx=(asax-128)*0.5/128+1;
mx = Hx * magn_raw_x;

你好,请教一下,寄存器出来的值经过这两个公式计算后出来的以uT为单位了吗?还是需要像数据手册里一样再乘以0.3.

出0入0汤圆

发表于 2014-7-9 13:47:18 | 显示全部楼层
oyingzi007 发表于 2013-6-5 21:42
请问你是用过 AK8975 吗, 我读取数据的时候,转换成角度,好像不对。 是不是读取完数据,还要对数据进行 ...

你好,你问题解决了吗?对磁力计数据进行atan(y,x)*57.3+180就直接可以转换为航向吗

出0入0汤圆

发表于 2015-4-14 20:51:42 | 显示全部楼层
laber_1912 发表于 2013-5-9 19:03
找到问题了,首先是对mpu9150的block diagram没认识清,其次是AK8975的single measurement 模式 ,这种情 ...

您好!我最近使用dsp做mpu9150的数据读取,6050部分完全没问题,但是地磁始终读到0,能否发送您的代码参考一下!谢谢!

出0入0汤圆

发表于 2015-5-6 13:37:52 | 显示全部楼层
silence2455 发表于 2014-4-2 09:28
这位大哥,我也用的9150,移植AHRS那个算法融合陀螺仪,加计,磁力计。
现在Yaw不太正常,确定是磁力计 ...

你好 我也遇到和你一模一样的问题。请问你的问题解决的么?如何解决的?

出0入0汤圆

发表于 2015-8-5 17:23:27 | 显示全部楼层
模拟i2c读取9轴数据正常正确;
硬件i2c读取9轴数据磁力计和加速计正常,但是磁力计读取不正常!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 13:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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