调试MPU9150磁力计求助
大侠们,请教一个问题,我在调试MPU9150中磁力计的ID读不出来,不知道什么原因,I2C已经配置为pass-by方式,磁力计地址0x0c,请问哪位大侠知道什么原因? 上帝知道。 硬件问题:某些引脚与覆铜短路或者虚焊,或者说是根本没有连接正确,重新焊接,或芯片坏了 *(80大洋的东西啊!)软件问题:IIC时序是否正确,如果能用你现在的程序去读取其他IIC芯片看能否正常工作.
还是说 只有ID读不出来么? IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读不出来,我担心是不是需要配置某些寄存器,但是我没有配置 Nurke 发表于 2013-5-14 12:33 static/image/common/back.gif
硬件问题:某些引脚与覆铜短路或者虚焊,或者说是根本没有连接正确,重新焊接,或芯片坏了 *(80大洋的东西啊!)
...
IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读不出来,我担心是不是需要配置某些寄存器,但是我没有配置 如何设置9150内部AK8975的Single measurement mode模式呢?我看那个寄存器是read-only模式的。 已经解决 mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决
LZ能否共享一下代码 mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决
楼主可否讲下你是怎么解决的,也造福下坛友啊 kmani 发表于 2013-6-21 18:34 static/image/common/back.gif
楼主可否讲下你是怎么解决的,也造福下坛友啊
LZ网线掉线了 zhcj66 发表于 2013-6-22 14:58 static/image/common/back.gif
LZ网线掉线了
不共享代码也行,至少说下如何解决的吧?
我是各种服了、 kmani 发表于 2013-6-22 15:27 static/image/common/back.gif
不共享代码也行,至少说下如何解决的吧?
我是各种服了、
你买了这个芯片了吗? zhcj66 发表于 2013-6-22 16:25 static/image/common/back.gif
你买了这个芯片了吗?
打算买呢~ kmani 发表于 2013-6-22 17:56 static/image/common/back.gif
打算买呢~
这个芯片真不便宜啊,我看他的寄存器也超多,说明书你看明白了? zhcj66 发表于 2013-6-23 10:30 static/image/common/back.gif
这个芯片真不便宜啊,我看他的寄存器也超多,说明书你看明白了?
我以前玩过MPU6050。
其实我想买MPU9000的或者LSM333D的,这两个都是SPI通信的9轴。但是这俩都没上市。
kmani 发表于 2013-6-23 11:40 static/image/common/back.gif
我以前玩过MPU6050。
其实我想买MPU9000的或者LSM333D的,这两个都是SPI通信的9轴。但是这俩都没上市。
...
MPU9150市面上到时可以买到,好像75RMB就能搞到 mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决
LZ你的驱动代码能否和大家分享一下 zhcj66 发表于 2013-6-24 14:17 static/image/common/back.gif
LZ你的驱动代码能否和大家分享一下
楼主每天都上线,要是给早就给了。 kmani 发表于 2013-6-24 22:11 static/image/common/back.gif
楼主每天都上线,要是给早就给了。
是啊 在莫老大这里是支持开源的 mcu1234mcu 发表于 2013-5-14 18:04 static/image/common/back.gif
IIC应该是没有问题的,因为这个读9150的陀螺仪ID,陀螺仪数据还有加速度计的数据都是正常的,就是读地磁读 ...
我也是读罗盘的数据读出来不准确,,但是ID读出来正确,是72没错。你现在解决了吗 mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决
求指导。I2C啊。。。电子罗盘数据读不出来啊{:cry:} 求楼主分享如何解决的,各种求啊,楼主 mcu1234mcu 发表于 2013-5-15 16:12 static/image/common/back.gif
已经解决
楼主是如何解决的?说一下方法就好啊,又不要代码 jwl5879 发表于 2013-8-17 21:34 static/image/common/back.gif
楼主是如何解决的?说一下方法就好啊,又不要代码
之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c
但因為 I2C 的 LSB 為 R/W bit
所以應該需要向左移 1 bit
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轴不同嘛,开始啃理论了嘿嘿。 jwl5879 发表于 2013-10-18 09:49 static/image/common/back.gif
这位兄台真的十分感谢你,竟然会看我的其他帖子跟问题,谢谢!我下载了坛子里这个固件http://www.amobbs. ...
請問你可以正確讀取 ak8975 的數值嗎?
最近再寫 MPU-9150 的電子羅盤時
三軸的資料是一樣的,
但數據(變化)我認為是沒問題的,
不知道是否有遇過類似問題? john800422 发表于 2013-10-18 11:12 static/image/common/back.gif
請問你可以正確讀取 ak8975 的數值嗎?
最近再寫 MPU-9150 的電子羅盤時
你说的三轴资料一样是说三轴数据一样吗?我的三轴数据不相同,除非都是0。你用DMP和自己的姿态解算都有这样的问题吗? jwl5879 发表于 2013-10-18 19:29 static/image/common/back.gif
你说的三轴资料一样是说三轴数据一样吗?我的三轴数据不相同,除非都是0。你用DMP和自己的姿态解算都有这 ...
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化
沒有用過 DMP,目前就只是普通的讀取,
每次讀取前先改成 Single measurement mode,
然後讀取 6 個暫存器的數據,
但讀出來的 3 軸數據是一樣的 john800422 发表于 2013-10-18 23:41 static/image/common/back.gif
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化
沒有用過 DMP,目前就只是普通的 ...
那是不是你读寄存器时候读错了呢?本来应该读三个轴的,但是三个数据都读成了一个轴的,就发生了这样的状况。检查一下程序看看呗~ john800422 发表于 2013-10-18 23:41 static/image/common/back.gif
你说的三轴资料一样是说三轴数据一样吗?→是的,但是會隨裝置旋轉變化
沒有用過 DMP,目前就只是普通的 ...
今天测试9150的ak8975在打开单次测量之后必须sleep一段时间,不然得不到有效的数据,您不妨试试 jwl5879 发表于 2013-10-19 19:45 static/image/common/back.gif
那是不是你读寄存器时候读错了呢?本来应该读三个轴的,但是三个数据都读成了一个轴的,就发生了这样的状 ...
讀三軸的, 沒有讀成一軸 lynx19890808 发表于 2013-10-20 17:38 static/image/common/back.gif
今天测试9150的ak8975在打开单次测量之后必须sleep一段时间,不然得不到有效的数据,您不妨试试 ...
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
john800422 发表于 2013-10-22 08:07 static/image/common/back.gif
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
哈哈 又有您的代码了 好高兴 john800422 发表于 2013-10-22 08:05 static/image/common/back.gif
讀三軸的, 沒有讀成一軸
我用的是官方提供的inv_mpu.c文件中的mpu_get_compass_reg()函数读的,不知道你的函数是自己写的还是用的官方的。
兄台你有椭圆拟合的程序吗?我不会编这个算法的程序,而且你的这部分资料里面我有部分地方没有看懂。 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 就可以編譯了 kmani 发表于 2013-6-24 22:11
楼主每天都上线,要是给早就给了。
像楼主这种,只能呵呵。成不了大气候。 {:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:} mcu1234mcu 发表于 2013-5-15 16:12
已经解决
请问楼主,磁力计原始数据完全不符合x*x+y*y+z*z恒定这个规律,是不是说明数据出错了?
john800422 发表于 2013-10-22 21:35
自己寫的
橢圓擬合的資料這裡有 http://www.amobbs.com/thread-5527851-1-1.html
壓縮檔裡的 C 用 CodeBl ...
请教台湾的大神,我用IMUupdate融合(MPU6050)的数据后用上位机3D显示发现滞后,已经确定不是上位机的问题(上位机用的第七实验室的),有可能是什么原因造成的呢? onev 发表于 2014-4-3 23:18
请教台湾的大神,我用IMUupdate融合(MPU6050)的数据后用上位机3D显示发现滞后,已经确定不是上位机的问题 ...
解算姿態的頻率 john800422 发表于 2014-4-4 01:20
解算姿態的頻率
应该也不是频率的问题啊 都1000hz了 onev 发表于 2014-4-4 12:46
应该也不是频率的问题啊 都1000hz了
這種簡單的算法滯後和誤差問題是一定會有的,
只是只是滯後多少時間,誤差有多大而已,
若傳感器資料都沒有問題,增加解算頻率應該是最有效的。
但在此算法中是以加速度寄來校正姿態,若快速轉動,
可能會產生運動加速度,進而影響姿態的校正。
也有可能是傳到上位機延遲了 john800422 发表于 2014-4-4 13:05
這種簡單的算法滯後和誤差問題是一定會有的,
只是只是滯後多少時間,誤差有多大而已,
把IMUupdate里面的Kp打大15倍以上(比如现在我将Kp=40)就能很好的跟上板子的动作了,这样会不会超调严重? onev 发表于 2014-4-4 13:56
把IMUupdate里面的Kp打大15倍以上(比如现在我将Kp=40)就能很好的跟上板子的动作了,这样会不会超调严重 ...
這需要看你的需求和實驗,
就我所知,算法 PID 的 ERROR 主要由加速度計決定,
放大 Kp 等同較相信加速度計,當有運動加速度產生則容易產生誤差。 john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
看了您的代码,发现里面并没有在读磁力计数据之前开启BYPASS和关闭IIC_MASTER,而是直接去0x18读的。这样的操作没问题吗?还是说有开启但是我没看到? john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
参考改代码配置的寄存器,用的是模拟IIC,加速度传感器和陀螺仪的数据都正确,磁力计的数据都是oxff,这是什么原因,而且磁力计的ID读取的值也不是0X48,这是什么原因呢? john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
大神还在吗?参考你的代码配置的寄存器,用模拟IIC读取的,加速度传感器和陀螺仪的数据是正确的,但是磁传感器的数据都是0xff,而且磁传感器的ID读取也是错误的,手册上说0x48但是读取的同样是oxff,你觉得可能的错误原因是什么吗? 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 标记一下, john800422 发表于 2013-10-17 17:11
之前也遇到相同問題
後來發現是讀寫地址問題
datasheet 上寫讀寫地址為 0x0c
问下那个ak8975的地址你是直接从mpu9150的datasheet找到的还是从ak8975自身的datasheet上找到的,谢了 Nole 发表于 2014-4-25 11:06
看了您的代码,发现里面并没有在读磁力计数据之前开启BYPASS和关闭IIC_MASTER,而是直接去0x18读的。这样 ...
同样的问题 zzx52831 发表于 2014-10-29 16:33
同样的问题
同样的问题!你们都解决了么? 我读磁力计的id是对的,低8位数据也会变化,但高8位不是0就是255,不知怎么回事。。。。 头疼死了,好不容易采集数据算法什么都做好,突然需求由以前的两个mcu减到1个mcu;
问题出现了,算法算的没有以前准了,问题是模拟i2c占资源采集数据有点慢;
然后就用硬件i2c采集,陀螺仪和加速计数据正常,但是问题来了磁力计读取有问题,
要么读取不对,要么读不出来,请问会是什么问题呢; 问题已经解决,噢耶 本帖最后由 沉默胜过白金 于 2016-7-13 17:38 编辑
john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
你好,最近在做磁力计的角度补偿问题。
但是发现MPU9250加速的和陀螺仪的XYZ轴坐标系与磁力计AK8963的XYZ轴不重合。
这样如何做补偿。 陀螺和磁力计数据融合输出后的方位角精度大概能到多少呢? john800422 发表于 2013-10-22 08:07
確實是需要延遲一段時間,
加上讀取 ST1 寄存器做判斷後就好了
上傳下 Code
大佬,想问下文档说9150磁力计是13位,但是读出来的三个轴原始数据无论怎么旋转四轴最大值只在255左右而不是2^13?
页:
[1]