mcu1234mcu 发表于 2013-5-14 11:47:19

调试MPU9150磁力计求助

大侠们,请教一个问题,我在调试MPU9150中磁力计的ID读不出来,不知道什么原因,I2C已经配置为pass-by方式,磁力计地址0x0c,请问哪位大侠知道什么原因?

lxl_lw 发表于 2013-5-14 12:08:17

上帝知道。

Nurke 发表于 2013-5-14 12:33:10

硬件问题:某些引脚与覆铜短路或者虚焊,或者说是根本没有连接正确,重新焊接,或芯片坏了 *(80大洋的东西啊!)

软件问题:IIC时序是否正确,如果能用你现在的程序去读取其他IIC芯片看能否正常工作.

还是说 只有ID读不出来么?

mcu1234mcu 发表于 2013-5-14 18:04:33

IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读不出来,我担心是不是需要配置某些寄存器,但是我没有配置

mcu1234mcu 发表于 2013-5-14 18:05:38

Nurke 发表于 2013-5-14 12:33 static/image/common/back.gif
硬件问题:某些引脚与覆铜短路或者虚焊,或者说是根本没有连接正确,重新焊接,或芯片坏了 *(80大洋的东西啊!)
...


IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读不出来,我担心是不是需要配置某些寄存器,但是我没有配置

mcu1234mcu 发表于 2013-5-15 09:34:29

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

mcu1234mcu 发表于 2013-5-15 16:12:15

已经解决

zhcj66 发表于 2013-6-21 14:10:04

mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决

LZ能否共享一下代码

kmani 发表于 2013-6-21 18:34:24

mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决

楼主可否讲下你是怎么解决的,也造福下坛友啊

zhcj66 发表于 2013-6-22 14:58:13

kmani 发表于 2013-6-21 18:34 static/image/common/back.gif
楼主可否讲下你是怎么解决的,也造福下坛友啊

LZ网线掉线了

kmani 发表于 2013-6-22 15:27:59

zhcj66 发表于 2013-6-22 14:58 static/image/common/back.gif
LZ网线掉线了

不共享代码也行,至少说下如何解决的吧?
我是各种服了、

zhcj66 发表于 2013-6-22 16:25:27

kmani 发表于 2013-6-22 15:27 static/image/common/back.gif
不共享代码也行,至少说下如何解决的吧?
我是各种服了、

你买了这个芯片了吗?

kmani 发表于 2013-6-22 17:56:07

zhcj66 发表于 2013-6-22 16:25 static/image/common/back.gif
你买了这个芯片了吗?

打算买呢~

zhcj66 发表于 2013-6-23 10:30:31

kmani 发表于 2013-6-22 17:56 static/image/common/back.gif
打算买呢~

这个芯片真不便宜啊,我看他的寄存器也超多,说明书你看明白了?

kmani 发表于 2013-6-23 11:40:28

zhcj66 发表于 2013-6-23 10:30 static/image/common/back.gif
这个芯片真不便宜啊,我看他的寄存器也超多,说明书你看明白了?

我以前玩过MPU6050。
其实我想买MPU9000的或者LSM333D的,这两个都是SPI通信的9轴。但是这俩都没上市。

zhcj66 发表于 2013-6-24 08:21:29

kmani 发表于 2013-6-23 11:40 static/image/common/back.gif
我以前玩过MPU6050。
其实我想买MPU9000的或者LSM333D的,这两个都是SPI通信的9轴。但是这俩都没上市。
...

MPU9150市面上到时可以买到,好像75RMB就能搞到

zhcj66 发表于 2013-6-24 14:17:31

mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决

LZ你的驱动代码能否和大家分享一下

kmani 发表于 2013-6-24 22:11:33

zhcj66 发表于 2013-6-24 14:17 static/image/common/back.gif
LZ你的驱动代码能否和大家分享一下

楼主每天都上线,要是给早就给了。

zhcj66 发表于 2013-6-25 08:20:51

kmani 发表于 2013-6-24 22:11 static/image/common/back.gif
楼主每天都上线,要是给早就给了。

是啊 在莫老大这里是支持开源的

zjzly 发表于 2013-7-4 11:50:39

mcu1234mcu 发表于 2013-5-14 18:04 static/image/common/back.gif
IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读 ...

我也是读罗盘的数据读出来不准确,,但是ID读出来正确,是72没错。你现在解决了吗

zjzly 发表于 2013-7-4 11:54:25

mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决

求指导。I2C啊。。。电子罗盘数据读不出来啊{:cry:}

lukefan2008 发表于 2013-7-30 11:54:06

求楼主分享如何解决的,各种求啊,楼主

jwl5879 发表于 2013-8-17 21:34:43

mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决

楼主是如何解决的?说一下方法就好啊,又不要代码

john800422 发表于 2013-10-17 17:11:48

jwl5879 发表于 2013-8-17 21:34 static/image/common/back.gif
楼主是如何解决的?说一下方法就好啊,又不要代码

之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c
但因為 I2C 的 LSB 為 R/W bit
所以應該需要向左移 1 bit

jwl5879 发表于 2013-10-18 09:49:28

john800422 发表于 2013-10-17 17:11 static/image/common/back.gif
之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c


这位兄台真的十分感谢你,竟然会看我的其他帖子跟问题,谢谢!我下载了坛子里这个固件http://www.amobbs.com/thread-5538389-1-1.html,这部分问题已经解决了。由于网上好多程序都是用的6050和hmc5883,现在用的9150,想把hmc5883修改一下用于ak8975。这不是5883和8975轴不同嘛,开始啃理论了嘿嘿。

john800422 发表于 2013-10-18 11:12:48

jwl5879 发表于 2013-10-18 09:49 static/image/common/back.gif
这位兄台真的十分感谢你,竟然会看我的其他帖子跟问题,谢谢!我下载了坛子里这个固件http://www.amobbs. ...

請問你可以正確讀取 ak8975 的數值嗎?

最近再寫 MPU-9150 的電子羅盤時
三軸的資料是一樣的,
但數據(變化)我認為是沒問題的,
不知道是否有遇過類似問題?

jwl5879 发表于 2013-10-18 19:29:05

john800422 发表于 2013-10-18 11:12 static/image/common/back.gif
請問你可以正確讀取 ak8975 的數值嗎?

最近再寫 MPU-9150 的電子羅盤時


你说的三轴资料一样是说三轴数据一样吗?我的三轴数据不相同,除非都是0。你用DMP和自己的姿态解算都有这样的问题吗?

john800422 发表于 2013-10-18 23:41:55

jwl5879 发表于 2013-10-18 19:29 static/image/common/back.gif
你说的三轴资料一样是说三轴数据一样吗?我的三轴数据不相同,除非都是0。你用DMP和自己的姿态解算都有这 ...

你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化

沒有用過 DMP,目前就只是普通的讀取,
每次讀取前先改成 Single measurement mode,
然後讀取 6 個暫存器的數據,
但讀出來的 3 軸數據是一樣的

jwl5879 发表于 2013-10-19 19:45:57

john800422 发表于 2013-10-18 23:41 static/image/common/back.gif
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化

沒有用過 DMP,目前就只是普通的 ...

那是不是你读寄存器时候读错了呢?本来应该读三个轴的,但是三个数据都读成了一个轴的,就发生了这样的状况。检查一下程序看看呗~

lynx19890808 发表于 2013-10-20 17:38:32

john800422 发表于 2013-10-18 23:41 static/image/common/back.gif
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化

沒有用過 DMP,目前就只是普通的 ...

今天测试9150的ak8975在打开单次测量之后必须sleep一段时间,不然得不到有效的数据,您不妨试试

john800422 发表于 2013-10-22 08:05:20

jwl5879 发表于 2013-10-19 19:45 static/image/common/back.gif
那是不是你读寄存器时候读错了呢?本来应该读三个轴的,但是三个数据都读成了一个轴的,就发生了这样的状 ...

讀三軸的, 沒有讀成一軸

john800422 发表于 2013-10-22 08:07:56

lynx19890808 发表于 2013-10-20 17:38 static/image/common/back.gif
今天测试9150的ak8975在打开单次测量之后必须sleep一段时间,不然得不到有效的数据,您不妨试试 ...

確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code

lynx19890808 发表于 2013-10-22 14:13:45

john800422 发表于 2013-10-22 08:07 static/image/common/back.gif
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code


哈哈 又有您的代码了 好高兴

jwl5879 发表于 2013-10-22 20:42:28

john800422 发表于 2013-10-22 08:05 static/image/common/back.gif
讀三軸的, 沒有讀成一軸

我用的是官方提供的inv_mpu.c文件中的mpu_get_compass_reg()函数读的,不知道你的函数是自己写的还是用的官方的。
兄台你有椭圆拟合的程序吗?我不会编这个算法的程序,而且你的这部分资料里面我有部分地方没有看懂。

john800422 发表于 2013-10-22 21:35:10

jwl5879 发表于 2013-10-22 20:42 static/image/common/back.gif
我用的是官方提供的inv_mpu.c文件中的mpu_get_compass_reg()函数读的,不知道你的函数是自己写的还是用 ...

自己寫的
橢圓擬合的資料這裡有 http://www.amobbs.com/thread-5527851-1-1.html
壓縮檔裡的 C 用 CodeBlacks 就可以編譯了

610570143 发表于 2014-1-13 11:32:55

kmani 发表于 2013-6-24 22:11
楼主每天都上线,要是给早就给了。

像楼主这种,只能呵呵。成不了大气候。

电气工程化动自 发表于 2014-3-22 11:34:40

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

silence2455 发表于 2014-4-3 16:37:21

mcu1234mcu 发表于 2013-5-15 16:12
已经解决

请问楼主,磁力计原始数据完全不符合x*x+y*y+z*z恒定这个规律,是不是说明数据出错了?

onev 发表于 2014-4-3 23:18:49

john800422 发表于 2013-10-22 21:35
自己寫的
橢圓擬合的資料這裡有 http://www.amobbs.com/thread-5527851-1-1.html
壓縮檔裡的 C 用 CodeBl ...

请教台湾的大神,我用IMUupdate融合(MPU6050)的数据后用上位机3D显示发现滞后,已经确定不是上位机的问题(上位机用的第七实验室的),有可能是什么原因造成的呢?

john800422 发表于 2014-4-4 01:20:42

onev 发表于 2014-4-3 23:18
请教台湾的大神,我用IMUupdate融合(MPU6050)的数据后用上位机3D显示发现滞后,已经确定不是上位机的问题 ...

解算姿態的頻率

onev 发表于 2014-4-4 12:46:48

john800422 发表于 2014-4-4 01:20
解算姿態的頻率

应该也不是频率的问题啊   都1000hz了

john800422 发表于 2014-4-4 13:05:41

onev 发表于 2014-4-4 12:46
应该也不是频率的问题啊   都1000hz了

這種簡單的算法滯後和誤差問題是一定會有的,
只是只是滯後多少時間,誤差有多大而已,

若傳感器資料都沒有問題,增加解算頻率應該是最有效的。

但在此算法中是以加速度寄來校正姿態,若快速轉動,
可能會產生運動加速度,進而影響姿態的校正。

也有可能是傳到上位機延遲了

onev 发表于 2014-4-4 13:56:42

john800422 发表于 2014-4-4 13:05
這種簡單的算法滯後和誤差問題是一定會有的,
只是只是滯後多少時間,誤差有多大而已,



把IMUupdate里面的Kp打大15倍以上(比如现在我将Kp=40)就能很好的跟上板子的动作了,这样会不会超调严重?

john800422 发表于 2014-4-4 14:15:40

onev 发表于 2014-4-4 13:56
把IMUupdate里面的Kp打大15倍以上(比如现在我将Kp=40)就能很好的跟上板子的动作了,这样会不会超调严重 ...

這需要看你的需求和實驗,
就我所知,算法 PID 的 ERROR 主要由加速度計決定,
放大 Kp 等同較相信加速度計,當有運動加速度產生則容易產生誤差。

Nole 发表于 2014-4-25 11:06:45

john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code


看了您的代码,发现里面并没有在读磁力计数据之前开启BYPASS和关闭IIC_MASTER,而是直接去0x18读的。这样的操作没问题吗?还是说有开启但是我没看到?

也无风雨赵 发表于 2014-5-6 21:34:47

john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code


参考改代码配置的寄存器,用的是模拟IIC,加速度传感器和陀螺仪的数据都正确,磁力计的数据都是oxff,这是什么原因,而且磁力计的ID读取的值也不是0X48,这是什么原因呢?

也无风雨赵 发表于 2014-5-7 12:30:23

john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code


大神还在吗?参考你的代码配置的寄存器,用模拟IIC读取的,加速度传感器和陀螺仪的数据是正确的,但是磁传感器的数据都是0xff,而且磁传感器的ID读取也是错误的,手册上说0x48但是读取的同样是oxff,你觉得可能的错误原因是什么吗?

popmailyz 发表于 2014-7-15 00:07:23

john800422 发表于 2013-10-22 21:35
自己寫的
橢圓擬合的資料這裡有 http://www.amobbs.com/thread-5527851-1-1.html
壓縮檔裡的 C 用 CodeBl ...

谢谢john800422的代码, 原来MPU9150上来需要 reset一下, 看了代码试下才明白! 否则磁力计读的不对!


#define        MPU6050_PWR_MGMT_1          ((u8)0x6B)
{0x01, MPU6050_PWR_MGMT_1},   // Reset device

linex0816 发表于 2014-7-22 00:39:54

标记一下,

老衲人称秃驴 发表于 2014-8-14 21:19:27

john800422 发表于 2013-10-17 17:11
之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c


问下那个ak8975的地址你是直接从mpu9150的datasheet找到的还是从ak8975自身的datasheet上找到的,谢了

zzx52831 发表于 2014-10-29 16:33:10

Nole 发表于 2014-4-25 11:06
看了您的代码,发现里面并没有在读磁力计数据之前开启BYPASS和关闭IIC_MASTER,而是直接去0x18读的。这样 ...

同样的问题

xiuhao 发表于 2015-5-5 18:52:34

zzx52831 发表于 2014-10-29 16:33
同样的问题

同样的问题!你们都解决了么? 我读磁力计的id是对的,低8位数据也会变化,但高8位不是0就是255,不知怎么回事。。。。

maskblue 发表于 2015-8-5 17:15:09

头疼死了,好不容易采集数据算法什么都做好,突然需求由以前的两个mcu减到1个mcu;
问题出现了,算法算的没有以前准了,问题是模拟i2c占资源采集数据有点慢;
然后就用硬件i2c采集,陀螺仪和加速计数据正常,但是问题来了磁力计读取有问题,
要么读取不对,要么读不出来,请问会是什么问题呢;

maskblue 发表于 2015-8-6 15:29:52

问题已经解决,噢耶

沉默胜过白金 发表于 2016-7-13 17:35:58

本帖最后由 沉默胜过白金 于 2016-7-13 17:38 编辑

john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code





你好,最近在做磁力计的角度补偿问题。

但是发现MPU9250加速的和陀螺仪的XYZ轴坐标系与磁力计AK8963的XYZ轴不重合。

这样如何做补偿。

chiying 发表于 2017-4-3 22:57:18

陀螺和磁力计数据融合输出后的方位角精度大概能到多少呢?

crabor 发表于 2019-10-4 11:28:48

john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code


大佬,想问下文档说9150磁力计是13位,但是读出来的三个轴原始数据无论怎么旋转四轴最大值只在255左右而不是2^13?
页: [1]
查看完整版本: 调试MPU9150磁力计求助