搜索
bottom↓
回复: 56

调试MPU9150磁力计求助

[复制链接]

出0入4汤圆

发表于 2013-5-14 11:47:19 | 显示全部楼层 |阅读模式
大侠们,请教一个问题,我在调试MPU9150中磁力计的ID读不出来,不知道什么原因,I2C已经配置为pass-by方式,磁力计地址0x0c,请问哪位大侠知道什么原因?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-5-14 12:08:17 来自手机 | 显示全部楼层
上帝知道。

出0入0汤圆

发表于 2013-5-14 12:33:10 | 显示全部楼层
硬件问题:某些引脚与覆铜短路或者虚焊,或者说是根本没有连接正确,重新焊接,或芯片坏了 *(80大洋的东西啊!)

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

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

出0入4汤圆

 楼主| 发表于 2013-5-14 18:04:33 | 显示全部楼层
IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读不出来,我担心是不是需要配置某些寄存器,但是我没有配置

出0入4汤圆

 楼主| 发表于 2013-5-14 18:05:38 | 显示全部楼层
Nurke 发表于 2013-5-14 12:33
硬件问题:某些引脚与覆铜短路或者虚焊,或者说是根本没有连接正确,重新焊接,或芯片坏了 *(80大洋的东西啊!)
...


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

出0入4汤圆

 楼主| 发表于 2013-5-15 09:34:29 | 显示全部楼层
如何设置9150内部AK8975的Single measurement mode模式呢?我看那个寄存器是read-only模式的。

出0入4汤圆

 楼主| 发表于 2013-5-15 16:12:15 | 显示全部楼层
已经解决  

出0入53汤圆

发表于 2013-6-21 14:10:04 | 显示全部楼层
mcu1234mcu 发表于 2013-5-15 16:12
已经解决

LZ能否共享一下代码

出0入0汤圆

发表于 2013-6-21 18:34:24 | 显示全部楼层
mcu1234mcu 发表于 2013-5-15 16:12
已经解决

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

出0入53汤圆

发表于 2013-6-22 14:58:13 | 显示全部楼层
kmani 发表于 2013-6-21 18:34
楼主可否讲下你是怎么解决的,也造福下坛友啊

LZ网线掉线了

出0入0汤圆

发表于 2013-6-22 15:27:59 | 显示全部楼层
zhcj66 发表于 2013-6-22 14:58
LZ网线掉线了

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

出0入53汤圆

发表于 2013-6-22 16:25:27 | 显示全部楼层
kmani 发表于 2013-6-22 15:27
不共享代码也行,至少说下如何解决的吧?
我是各种服了、

你买了这个芯片了吗?

出0入0汤圆

发表于 2013-6-22 17:56:07 | 显示全部楼层
zhcj66 发表于 2013-6-22 16:25
你买了这个芯片了吗?

打算买呢~

出0入53汤圆

发表于 2013-6-23 10:30:31 | 显示全部楼层
kmani 发表于 2013-6-22 17:56
打算买呢~

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

出0入0汤圆

发表于 2013-6-23 11:40:28 | 显示全部楼层
zhcj66 发表于 2013-6-23 10:30
这个芯片真不便宜啊,我看他的寄存器也超多,说明书你看明白了?

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

出0入53汤圆

发表于 2013-6-24 08:21:29 | 显示全部楼层
kmani 发表于 2013-6-23 11:40
我以前玩过MPU6050。
其实我想买MPU9000的或者LSM333D的,这两个都是SPI通信的9轴。但是这俩都没上市。
...

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

出0入53汤圆

发表于 2013-6-24 14:17:31 | 显示全部楼层
mcu1234mcu 发表于 2013-5-15 16:12
已经解决

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

出0入0汤圆

发表于 2013-6-24 22:11:33 | 显示全部楼层
zhcj66 发表于 2013-6-24 14:17
LZ你的驱动代码能否和大家分享一下

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

出0入53汤圆

发表于 2013-6-25 08:20:51 | 显示全部楼层
kmani 发表于 2013-6-24 22:11
楼主每天都上线,要是给早就给了。

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

出0入0汤圆

发表于 2013-7-4 11:50:39 | 显示全部楼层
mcu1234mcu 发表于 2013-5-14 18:04
IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读 ...

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

出0入0汤圆

发表于 2013-7-4 11:54:25 | 显示全部楼层
mcu1234mcu 发表于 2013-5-15 16:12
已经解决

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

出0入0汤圆

发表于 2013-7-30 11:54:06 | 显示全部楼层
求楼主分享如何解决的,各种求啊,楼主

出0入0汤圆

发表于 2013-8-17 21:34:43 | 显示全部楼层
mcu1234mcu 发表于 2013-5-15 16:12
已经解决

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

出0入0汤圆

发表于 2013-10-17 17:11:48 | 显示全部楼层
jwl5879 发表于 2013-8-17 21:34
楼主是如何解决的?说一下方法就好啊,又不要代码

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

出0入0汤圆

发表于 2013-10-18 09:49:28 | 显示全部楼层
john800422 发表于 2013-10-17 17:11
之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c

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

出0入0汤圆

发表于 2013-10-18 11:12:48 | 显示全部楼层
jwl5879 发表于 2013-10-18 09:49
这位兄台真的十分感谢你,竟然会看我的其他帖子跟问题,谢谢!我下载了坛子里这个固件http://www.amobbs. ...

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

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

出0入0汤圆

发表于 2013-10-18 19:29:05 | 显示全部楼层
john800422 发表于 2013-10-18 11:12
請問你可以正確讀取 ak8975 的數值嗎?

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

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

出0入0汤圆

发表于 2013-10-18 23:41:55 | 显示全部楼层
jwl5879 发表于 2013-10-18 19:29
你说的三轴资料一样是说三轴数据一样吗?我的三轴数据不相同,除非都是0。你用DMP和自己的姿态解算都有这 ...

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

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

出0入0汤圆

发表于 2013-10-19 19:45:57 | 显示全部楼层
john800422 发表于 2013-10-18 23:41
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化

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

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

出0入0汤圆

发表于 2013-10-20 17:38:32 | 显示全部楼层
john800422 发表于 2013-10-18 23:41
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化

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

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

出0入0汤圆

发表于 2013-10-22 08:05:20 | 显示全部楼层
jwl5879 发表于 2013-10-19 19:45
那是不是你读寄存器时候读错了呢?本来应该读三个轴的,但是三个数据都读成了一个轴的,就发生了这样的状 ...

讀三軸的, 沒有讀成一軸

出0入0汤圆

发表于 2013-10-22 08:07:56 | 显示全部楼层
lynx19890808 发表于 2013-10-20 17:38
今天测试9150的ak8975在打开单次测量之后必须sleep一段时间,不然得不到有效的数据,您不妨试试 ...

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

本帖子中包含更多资源

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

x

出0入0汤圆

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

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

出0入0汤圆

发表于 2013-10-22 20:42:28 | 显示全部楼层
john800422 发表于 2013-10-22 08:05
讀三軸的, 沒有讀成一軸

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

出0入0汤圆

发表于 2013-10-22 21:35:10 | 显示全部楼层
jwl5879 发表于 2013-10-22 20:42
我用的是官方提供的inv_mpu.c文件中的mpu_get_compass_reg()函数读的,不知道你的函数是自己写的还是用 ...

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

出0入0汤圆

发表于 2014-1-13 11:32:55 | 显示全部楼层
kmani 发表于 2013-6-24 22:11
楼主每天都上线,要是给早就给了。

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

出0入0汤圆

发表于 2014-3-22 11:34:40 | 显示全部楼层

出0入0汤圆

发表于 2014-4-3 16:37:21 | 显示全部楼层

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

出0入0汤圆

发表于 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显示发现滞后,已经确定不是上位机的问题(上位机用的第七实验室的),有可能是什么原因造成的呢?

出0入0汤圆

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

解算姿態的頻率

出0入0汤圆

发表于 2014-4-4 12:46:48 | 显示全部楼层

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

出0入0汤圆

发表于 2014-4-4 13:05:41 | 显示全部楼层
onev 发表于 2014-4-4 12:46
应该也不是频率的问题啊   都1000hz了

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

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

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

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

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2014-4-25 11:06:45 | 显示全部楼层
john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code

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

出0入0汤圆

发表于 2014-5-6 21:34:47 | 显示全部楼层
john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code

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

出0入0汤圆

发表于 2014-5-7 12:30:23 | 显示全部楼层
john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code

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

出0入0汤圆

发表于 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  

出0入0汤圆

发表于 2014-7-22 00:39:54 | 显示全部楼层
标记一下,

出0入0汤圆

发表于 2014-8-14 21:19:27 | 显示全部楼层
john800422 发表于 2013-10-17 17:11
之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c

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

出0入0汤圆

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

同样的问题

出0入0汤圆

发表于 2015-5-5 18:52:34 | 显示全部楼层

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

出0入0汤圆

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

出0入0汤圆

发表于 2015-8-6 15:29:52 | 显示全部楼层
问题已经解决,噢耶

出0入0汤圆

发表于 2016-7-13 17:35:58 | 显示全部楼层
本帖最后由 沉默胜过白金 于 2016-7-13 17:38 编辑
john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code





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

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

这样如何做补偿。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2017-4-3 22:57:18 | 显示全部楼层
陀螺和磁力计数据融合输出后的方位角精度大概能到多少呢?

出0入0汤圆

发表于 2019-10-4 11:28:48 | 显示全部楼层
john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code

大佬,想问下文档说9150磁力计是13位,但是读出来的三个轴原始数据无论怎么旋转四轴最大值只在255左右而不是2^13?

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-25 22:22

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

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