为什么自己做的mpu6050模块工作原理一直显示004

你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。查看: 28124|回复: 119
新人成功mpu6050成功,源码发放,过程分享.
新人小白,想做四轴,初学stm32.
3月15号在淘宝上买了一块6050模块,今天刚刚用stm32读到数据。其中也遇到了很多问题,现在在这里贴出来跟大家分享一下成功读出来的过程。
先贴一张图吧javascript:;
以前一直在学习51现在转到stm32感觉区别还是挺大的.
下面梳理一下自己遇到过的关于读6050数据的问题:
1. 卖家给的51程序成功读取到6050数据,stm32未成功,网上下载了很多程序也未成功读取(可能自己不会修改某些参数)。
2. stm32模拟IIC管脚问题。
3. 6050初始化问题。
4. IIC读取到数据不正确遇到过问题。1).数据全部为ff& & & & & & & & 2).数据全部为-1& & & & & & & & 3).数据有规律的成周期性的循环& & & & & & & & 4).读取地址&&数值为 ff或0或不确定的值(反正不是0x68)
自己的处理过程:
1.先用51成功的读到了6050数据(证明6050是好的),看别人的程序的大体框架(细看有些地方也看不懂......)。
2.首先是配置问题————输出用推挽输出,输入用上拉输入(总线外部未接上拉电阻),端口时钟,IO口初始化,SDA端口不停地切换输入输出模式。
& &其次是模拟IIC协议—————基础(后来由于读不到正确的数据,把以前的资料拿出来看了很多遍......)
3.6050初始化,有很多寄存器,也没有细细研究。但是我在一点里提到,虽然网上很多stm32读6050程序未能成功运行,但是他们的初始化程序大致相同。所以我就直接粘过来用了......(以后再细细研究)
4.IIC读数据不正确:
& & & & 过程很坎坷......今天礼拜日没课,所以昨晚干到3点多也未能读到正确数据........
& & & & 总结一下论坛里遇到过此问题后的处理方法吧:
& & & & & & & & & & & & & & & & & & & & & & & & 1).IIC模拟不正确& & & & & & & & //包括电平持续时间,应答的发出,数据读取逻辑顺序& & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & 2).模拟正确后没有初始化& & & &
& & & & & & & & & & & & & & & & & & & & & & & & 3).IIC初始化和6050初始化的时间间隔,需要延迟一段时间& & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & 4).软件复位6050。论坛里有人提到过是在PWR_MGMT_1(地址0x6b)寄存器中的bit7 DEVICE_RESET位 置1复位& & & & 。
& & & & 自己处理方法:
& & & & & & & & 1).保证自己的IIC是对的。先用24C02成功读写数据
& & & & & & & & 2).保证6050的器件地址0xd0无误后,用IIC读取6050的WHO_IM_I寄存器(地址0x75),默认值为0x68。成功读到0x68=104后就成功了一大半。
& & & & & & & & 3).(得寸进尺)读到0x68后,初始化6050再尝试去读取它x轴上的加速度 (MPU6050_RA_ACCEL_XOUT_H& &&&0x3B)&&8|(MPU6050_RA_ACCEL_XOUT_L& &&&0x3C)& & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //高八位与低八位合成十六位数据(可省略此步)
& & & & & & & & 4).上面成功后就可以批量的去读取& & & & & & & & 加速度:X, Y, Z& & & & 陀螺仪:X ,Y ,Z& & & & 温度:temp& & & & & & & & 然后再用串口发送就好了
再贴一张自己调试的时候用到的24c02的图片
最后奉上自己读写成功的程序,还没整理比较乱......
IIC用的刘洋老师的& & & & 板子用的是原子的MINI STM32& & & & 芯片STM32F103& & & & & & & & IIC_SDA.PB11& & & & & & & & IIC_SCL.PB10& & & & & & & & 修改IIC端口时只需在IIC.h文件中修改相应的宏定义即可
6050寄存器中文手册论坛里有人上传大家可以去搜索一下。
本人新手,如有不对的地方希望大家指正!
本帖子中包含更多资源
才可以下载或查看,没有帐号?
本帖最后由 onev 于
15:30 编辑
只是你的函数怎么这样命名&&I2C_Init& && && &&&库函数也这样命名正好&&我这几天纠结MPU6050&&用硬件IIC DMA方式没成功&&改成模拟的也不行 试试你的
支持依稀,同样在学习中
只是你的函数怎么这样命名&&I2C_Init& && && &&&库函数也这样命名正好&&我这几天纠结MPU6050&&用硬件IIC DM ...
这样啊,没注意哎........以后注意!!!
等待你下一步,如何处理数据,我以前是用的硬件IIC,成功了但是不能打断,果断采用软件模拟.
请问你上四轴了吗,振动怎么解决的?
顶起来-----
+1& && && && &&&
感谢楼主分享!!谢谢
再修改一下主函数,这样输出的就是可以用来计算的数值了& &。转化成rad/s和m/s2
接下来的工作就是数据融合算出三个轴的偏移角度!
本帖子中包含更多资源
才可以下载或查看,没有帐号?
多谢分享啊
三轴陀螺仪+ 三轴加速度 ?
为什么 没有读DMP&&我都卡在这几个星期了~~~~~~~~
你这是战舰的板子,不是MINI。。。。
再修改一下主函数,这样输出的就是可以用来计算的数值了& &。转化成rad/s和m/s2
接下来的工作就是数据融合 ...
我的读出来没你的好&&在加速度上&&Z轴只有9.4+
本帖子中包含更多资源
才可以下载或查看,没有帐号?
我的读出来没你的好&&在加速度上&&Z轴只有9.4+
你这个数据应该是正确的 ,我那个有点问题,重力加速度应该是9.81,我那静止时都超过去了。你的9.4是因为其他轴上有加速度分量,应该是的.......(实在看着不爽,直接加上一个初始值)
这都不是重点~
关键是后面的姿态解算......6天过去了,试过软件处理(滤波,积分,融合)未果,现在看看自带dmp功能,论坛里下载了一个程序,慢慢修改吧......
正想玩,谢谢了!
等待你下一步,如何处理数据,我以前是用的硬件IIC,成功了但是不能打断,果断采用软件模拟. ...
你说的不能打断是啥意思?我最开始用的模拟,后来换成硬件IIC,没有发现什么问题啊。
写的很详细,特别是有自己的总结,对于新人来说非常有价值
建议楼主在标题中写清楚,stm32f1,这样大家也好找
谢谢楼主!
MPU6050自带融合算法,为啥不用?
MPU6050自带融合算法,为啥不用?
最近在捣鼓6050的内部隐藏大招.........学习中,论坛里有很多好帖子!!!
楼主的DMP 搞定了吗?
我也是在用硬I2C调,也是出来的数全是无符号就是FF,有符号就是-1,愁死了,能不能交流下,这个问题是怎么解决的。ID读不到,读0x75时,还是FF。。。
我觉得我老惨了!!!
楼主的DMP 搞定了吗?
搞定了......
我也是在用硬I2C调,也是出来的数全是无符号就是FF,有符号就是-1,愁死了,能不能交流下,这个问题是怎么 ...
我用的模拟IIC,都说硬件IIC有问题.......(不太清楚)。你读不出来数据可能是IIC驱动问题,还有就是IIC管脚没有使能吧....
D:\刚刚接触这个东西,用了楼主的程序,数据时出来了,但是感觉不对劲,不知道是怎么回事,还请楼主给讲解一下!这是我运行后接受到的数据
刚刚图片没发得上去,抱歉!
本帖子中包含更多资源
才可以下载或查看,没有帐号?
大神啊,我也想买块原子的mini
不错哎~,一直没有时间鼓捣@!!!
刚刚图片没发得上去,抱歉!
不太清楚,你是不是IIC线接错了?这程序拿过来接上线就应该能跑的啊!
不太清楚,你是不是IIC线接错了?这程序拿过来接上线就应该能跑的啊!
线接错了应该就收不到数据吧?
线接错了应该就收不到数据吧?
不知道啊~~~~~你再慢慢捣鼓吧.......
我开始也捣鼓了好长时间,加油加油!!!
好吧。反正有你的这个程序总比我自己瞎捣鼓强,灰常感谢你的分享!
我也读取成功了,但PID高不好,飞不起来
只能看看了& && && &
看了你描述的过程,觉得不错,一步一步,得寸进尺
我也读取成功了,但PID高不好,飞不起来
........读出来还要滤波融合的啊!!亲
........读出来还要滤波融合的啊!!亲
做过了,用的四元数算法。求得姿态后,PID一直搞不好。
顶楼主。。。。。
读了lz的程序,我刚接触嵌入式linux,在2440上做。也做的软i2c,可是有两个地方的函数不太清楚,卡在了I2C数据读取和写入的地方。。。
读了lz的程序,我刚接触嵌入式linux,在2440上做。也做的软i2c,可是有两个地方的函数不太清楚,卡在了I2C ...
前两天看了一下自己的程序,关于IIC的部分自己写的是有点问题的。是关于IIC管脚修改的注意点,I2C.h文件里面改过后还要在I2C.c文件里面改一下GPIO-pin .c是关于IIC读取和写入时的管脚配置问题&&推完和上拉输入
为什么都不用硬件I2C
为什么都不用硬件I2C
很多人说不好用,就没有再去搞了。直接模拟GG
请问楼主可以读出T,xyz都是0怎么回事啊
本帖子中包含更多资源
才可以下载或查看,没有帐号?
请问楼主可以读出T,xyz都是0怎么回事啊
老朽掐指一算~~~不知道~~估计IIC通信问题
老朽掐指一算~~~不知道~~估计IIC通信问题
恩恩,谢谢了,我再好好看看
我现在读0x75的数据为-1,想问问 “模拟正确后没有初始化&&” 初始化指的是什么
绿大侠,我想请教个问题。就是,我的6050读出来不是0,也不是-1,但是数据不会变化,这是什么原因啊?
请问mpu6050有什么优缺点啊,能否用在强震的的情况下啊?
mark 求dmp
正在研究中
祝贺,发来贺电。。。
为什么去哦气动DMP后的数值跟随机数一样,没有一点规律的乱动勒,摇晃MPU6050也不变
mark 求dmp
DMP在我的另一篇帖子中
LZ你好,第一次玩这个6050,菜鸟一枚,按着LZ的程序学习了一下,LZ帮我看看,谢谢了
为什么我的Z轴加速度只有8.9左右呢,这个是有问题么还是怎么回事呢,看附件
本帖子中包含更多资源
才可以下载或查看,没有帐号?
LZ你好,第一次玩这个6050,菜鸟一枚,按着LZ的程序学习了一下,LZ帮我看看,谢谢了
为什么我的Z轴加速度只 ...
不知道,我那时读出数据后就没有再高了。后去研究6050的DMP了。之前我的也有问题,就是6050DMP刚刚开始工作时的初始状态问题,好像有个自检什么的。你可以尝试直接在输出状态上减去一个初始值试试。我回头再搞搞
谢谢你的回答,另外还想问个很弱智的问题,这个读出来的加速度是什么加速度?是相关轴的线加速度么?
谢谢你的回答,另外还想问个很弱智的问题,这个读出来的加速度是什么加速度?是相关轴的线加速度么? ...
X,Y,Z轴的加速度
准备仔细研读一番!!!
最近也在研究6050,菜鸟一枚,希望能借助大神的帖子搞懂它
已读取成功,谢楼主分享
本帖子中包含更多资源
才可以下载或查看,没有帐号?
感谢楼主的共享,学习了
老朽掐指一算~~~不知道~~估计IIC通信问题
我的程序更恼火,IIC_Wait_ASK()里面如果先设置SDA线输入然后再SCL拉高,读写24c02正常,6050错误。先SCL拉高,再SDA设置成输入,6050读取正确,24c02读取错误。。。。
得到这些低级数据并非难事,难的是过滤,整合这些6轴数据,转化为四元组,而且要解决累积漂移,机械抖动时的干扰等问题。
得到这些低级数据并非难事,难的是过滤,整合这些6轴数据,转化为四元组,而且要解决累积漂移,机械抖动时 ...
头像真棒……
说的很对,数据得到是很简单的,难点在于怎么处理,是套用官方数值还是绑在电机上转来调节参数。
路过,看看
已读取成功,谢楼主分享
你的温度读取出来后的数据怎么处理变成29 的?
感谢楼主的共享
好好学习,争取早日为本吧效力!
驱起来了!新人感谢楼主!!!
下载准备测试一下,谢谢分享
正好最近在调这个
正在调,还是先搞IIC吧
向楼主学习学习 , 我现在&&51还没有读出数据
进入这个芯片领域,玩玩。
顶起来啊!!!
楼主,程序读取的只是一个轴的哇
楼主,程序读取的只是一个轴的哇
三周啊& && && &
可是没看到你切换寄存器啊。
恭喜啊 刚上手确实需要付出很多
可是没看到你切换寄存器啊。
一次读出来的,在。c文件里& & 他们的数据地址是连续的 ,就一下读取了6个地址,地址指针自动加1
一次读出来的,在。c文件里& & 他们的数据地址是连续的 ,就一下读取了6个地址,地址指针自动加1 ...
so ga ,受教了
请教一下 #define MPU6050_SLAVE_ADDRESS&&0xd0& && &//MPU6050器件读地址是什么意思&&我在寄存器手册中没有找到这个地址啊&&但是你每次读取还是写入都会 用到 有点不理解 请指点
IIC 器件地址& && &不懂得话回头看看IIC协议&&
楼主你好~我的问题和87楼的一样。。MPU6050三轴数据地址是连续的,3B3C3D3E3F40,但是从你的code里哪里让地址每次+1了呀?不是很理解……reg_add不是一直不变么?
void PMU6050_ReadData(u8 reg_add,unsigned char*Read,u8 num)
& & & & I2C_Start();
& & & & I2C_Send_Byte(MPU6050_SLAVE_ADDRESS);
& & & & I2C_Wait_Ack();
& & & & I2C_Send_Byte(reg_add);
& & & & I2C_Wait_Ack();
& & & & I2C_Start();
& & & & I2C_Send_Byte(MPU6050_SLAVE_ADDRESS+1);
& & & & I2C_Wait_Ack();
& & & & for(i=0;i&(num-1);i++){
& & & & & & & & *Read=I2C_Read_Byte(1);
& & & & & & & & Read++;
& & & & *Read=I2C_Read_Byte(0);
& & & & I2C_Stop();
请教一下 #define MPU6050_SLAVE_ADDRESS&&0xd0& && &//MPU6050器件读地址是什么意思&&我在寄存器手册中没 ...
MPU6050的地址应该是0x68,变成二进制只有7个bit……还少了最后一个bit告诉他是R/W……你看到的0xd0就是“地址+R/W”变成一个直接的8-bit值……你到计算器里16进制转2进制看一下就知道了
lz,我用两块MPU6050模块采到的Z轴加速度原始值经过换算后一块是9.1m/s?,还有一块是8.8m/s?,不知道lz遇到过这种问题没有
lz,我用两块MPU6050模块采到的Z轴加速度原始值经过换算后一块是9.1m/s?,还有一块是8.8m/s?,不知道lz遇 ...
在论坛里面搜一下 加速度计校准
OK,多谢了
学习了,谢谢分享
哈哈哈&&谢谢楼主
& &还有没有调试mpu6050
谢谢楼主了啊
阿莫电子论坛, 原"中国电子开发网"最近在研究6050,真是很磨人啊,这个小东西还挺复杂,一个读取程序竟然需要600多行。
这几天连查资料找到了几个很好的帖子,要是以后有人看到这篇帖子,可以避免误入歧途,也可以省去很多时间。
1、阿西莫夫电子论坛:神贴。。a/thread--1.html?_dsign=5c5b5cde
2、强大的百度出来的第七实验室:/view/89db87acf8f6b.html
3、6050角度转换原理:http://blog.csdn.net/u/article/details/
说一下我对他的理解。其实也不是特别的复杂,6050就是一个i2c器件,就像一个微控制器,通过它你能知道你当钱的姿态,把他想象成一个黑箱,
要使用它,首先你得了解他的寄存器,知道如何初始化,读取,写入等等。都是套路其实,看着照葫芦画瓢就行,
重要的就是知道如何将输出的数据进行转化为你能需要并且能看懂的数据。而下面你得资料你绝对用得到。
6050的操作:
#include "mpu6050.h"
#include "bsp_usart1.h"
#include "bsp_i2c.h"
写数据到MPU6050寄存器
void MPU6050_WriteReg(u8 reg_add,u8 reg_dat)
i2c_Start();
i2c_SendByte(MPU6050_SLAVE_ADDRESS);
//写从机地址,并配置成写模式
i2c_WaitAck();
i2c_SendByte(reg_add);
//写寄存器地址
i2c_WaitAck();
i2c_SendByte(reg_dat);
//写寄存器数据
i2c_WaitAck();
i2c_Stop();
从MPU6050寄存器读取数据
void MPU6050_ReadData(u8 reg_add,unsigned char*Read,u8 num)
unsigned char
i2c_Start();
i2c_SendByte(MPU6050_SLAVE_ADDRESS);
i2c_WaitAck();
i2c_SendByte(reg_add);
i2c_WaitAck();
i2c_Start();
i2c_SendByte(MPU6050_SLAVE_ADDRESS+<span style="color: #);
//写从机地址,并配置成读模式
i2c_WaitAck();
for(i=<span style="color: #;i&(num-<span style="color: #);i++)
*Read=i2c_ReadByte(<span style="color: #);
*Read=i2c_ReadByte(<span style="color: #);
i2c_Stop();
//**************至此mpu6050的读写操作函数都搞定了,下面只需要初始化就可以读取他的数据了
初始化MPU6050芯片
void MPU6050_Init(void)
int i=<span style="color: #,j=<span style="color: #;
//在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错
for(i=<span style="color: #;i&<span style="color: #00;i++)
for(j=<span style="color: #;j&<span style="color: #00;j++)
MPU6050_WriteReg(MPU6050_RA_PWR_MGMT_1, <span style="color: #x00);
//解除休眠状态
MPU6050_WriteReg(MPU6050_RA_SMPLRT_DIV , <span style="color: #x07);
//陀螺仪采样率,1KHz
MPU6050_WriteReg(MPU6050_RA_CONFIG , <span style="color: #x06);
//低通滤波器的设置,截止频率是1K,带宽是5K
MPU6050_WriteReg(MPU6050_RA_ACCEL_CONFIG , <span style="color: #x00);
//配置加速度传感器工作在2G模式,不自检
MPU6050_WriteReg(MPU6050_RA_GYRO_CONFIG, <span style="color: #x18);
//陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
读取MPU6050的ID
uint8_t MPU6050ReadID(void)
unsigned char Re = <span style="color: #;
MPU6050_ReadData(MPU6050_RA_WHO_AM_I,&Re,<span style="color: #);
//读器件地址
if(Re != <span style="color: #x68)
printf("MPU6050 dectected error!\r\n检测不到MPU6050模块,请检查模块与开发板的接线");
return <span style="color: #;
printf("MPU6050 ID = %d\r\n",Re);
return <span style="color: #;
读取MPU6050的加速度数据
void MPU6050ReadAcc(short *accData)
u8 buf[<span style="color: #];
MPU6050_ReadData(MPU6050_ACC_OUT, buf, <span style="color: #);
accData[<span style="color: #] = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
accData[<span style="color: #] = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
accData[<span style="color: #] = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
读取MPU6050的角加速度数据
void MPU6050ReadGyro(short *gyroData)
u8 buf[<span style="color: #];
MPU6050_ReadData(MPU6050_GYRO_OUT,buf,<span style="color: #);
gyroData[<span style="color: #] = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
gyroData[<span style="color: #] = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
gyroData[<span style="color: #] = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
读取MPU6050的原始温度数据
void MPU6050ReadTemp(short *tempData)
u8 buf[<span style="color: #];
MPU6050_ReadData(MPU6050_RA_TEMP_OUT_H,buf,<span style="color: #);
//读取温度值
*tempData = (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
读取MPU6050的温度数据,转化成摄氏度
void MPU6050_ReturnTemp(short*Temperature)
short temp3;
u8 buf[<span style="color: #];
MPU6050_ReadData(MPU6050_RA_TEMP_OUT_H,buf,<span style="color: #);
//读取温度值
temp3= (buf[<span style="color: #] && <span style="color: #) | buf[<span style="color: #];
*Temperature=(((double) (temp3 + <span style="color: #200)) / <span style="color: #0)-<span style="color: #;
光知道6050怎么操作还是不行的,你的有一个桥梁到6050上面去,得有一个放大镜偷窥里面的数据。这是就需要i2c闪亮登场。
伪代码我就不说了,看我的其他博客。
有了这些你就无敌了。
阅读(...) 评论()查看: 42316|回复: 84
牛人用MPU6050做的串口输出模块,硬件卡尔曼滤波,直接输出角度
本帖最后由 zhaowenwin 于
09:02 编辑
前几天无聊逛TB时看到有位大牛做的MPU6050模块,号称内部集成了数字滤波和姿态结算技术,网上大部分MPU6050模块都是I2C接口的,而这家做成了串口,接口倒是方便许多,还有完整的上位机程序。
于是手贱地搞了一个,今天测试发现效果确实不错,尤其是俯仰角和滚转角的输出相当稳定,跟随也快,运算速度居然能达到100Hz。
非常好奇人家的姿态滤波是怎么做的,我试过用重力的分量算俯仰角和姿态角,但直接计算的精度很差,静态的稳定性都只能到0.1度,特别是在运动的时候,姿态误差更大,而买的那个模块却很稳定,动态解算的精度也很高。
有没有哪位高手能透露一下怎么做姿态解算呢?我目测人家的模块应该也是MPU6050+CPU的结构,咋搞的呢,求指导~
感谢大家的关注,很多网友都质疑淘宝卖家的产品不是用滤波算法做的,而是利用的MPU6050内部的MDP处理的。32楼有个调查,大家都来发表一下意见,质疑的声音多了,不信淘宝卖家看不见,打击虚假宣传,让卖家拿出使用了动态滤波技术证据来!强烈要求开源算法。我先去发言了,路过的朋友,发表一下意见啊~
TB的地址就不发了,避免广告嫌疑,有感兴趣的朋友们可以在TB搜索&串口MPU6050&,就能找到。
附几张模块的图:
(62.45 KB, 下载次数: 109)
15:51 上传
非常小的模块
(242.87 KB, 下载次数: 84)
15:51 上传
滤波后的角速度非常平稳
(124.1 KB, 下载次数: 81)
15:51 上传
姿态解算效果非常稳定
(67.49 KB, 下载次数: 69)
15:51 上传
10:46 上传
点击文件名下载附件
2.35 MB, 下载次数: 1609
贡献模块资料,包括上位机和详细参数
弘毅 发表于
才看到这么好的帖子。。。。强烈加精
第一次发帖就被精啦~~好开心,我会继续努力的!!
没人回复?自己顶起!
{:soso_e103:}也想知道算法。。。
貌似是一个STM8做的
店主写的输出参数,频率是100hz,由此应该是用芯片自带dmp输出数据了,dmp有几档默认是100hz,最高输出200hz,这个是芯片硬件实现的算法,所以很稳定吧
弘毅 发表于
貌似是一个STM8做的
不会吧,STM8是8位的单片机,能做姿态解算和滤波吗?那个计算量好像比较大
pz_cloud 发表于
店主写的输出参数,频率是100hz,由此应该是用芯片自带dmp输出数据了,dmp有几档默认是100hz,最高输出200h ...
目前的MPU6050的DMP国内还没用人能用起来吧,那个好像比较复杂,感觉应该是滤波算法发挥了作用
刚搜了一下TB,LZ就是淘宝的卖家,看名字就知道 。这个明显就是用MPU6050内置的DMP处理器,MCU是8位机只做一些初始化的工作和串口通信,DMP网上很多资料,自己移植一下就行了,什么动态卡尔曼算法都是吹的。原本你正常卖个产品打个广告,我也不想捅破你,但是你加了一些不实的信息进去,误导用户,我就要鄙视你,最讨厌忽悠客户的奸商
cshp138 发表于
刚搜了一下TB,LZ就是淘宝的卖家,看名字就知道 。这个明显就是用MPU6050内置的DMP处理器,MCU是8位机只做 ...
哎,无奈爹妈给我取了个大众名字,不解释了。。。DMP不加滤波是不可能得到稳定的输出数据的,没有滤波姿态就会随着时间漂移,有累计误差,不会一直得到稳定的输出,我用原始数据累加积分试过,精度达不到模块自身输出地那个精度的。俯仰角和滚转角不修正的话,误差会越来越大。短时间还可以,长时间根本没法用。
zhaowenwin 发表于
哎,无奈爹妈给我取了个大众名字,不解释了。。。DMP不加滤波是不可能得到稳定的输出数据的,没有滤波姿态 ...
DMP融合数据处理可以得出与比较专业的滤波算法差不多的结果,我自己也用过DMP,用几个小时效果都不错,DMP有自修正的处理,除了偏航角只能对陀螺仪Z轴做积分,如果没有地磁做修正,会有漂移,其它角度,加速度,角速度得出来的数据都很稳定。从你IC外围元件就知道是STM8S103F,flash最多8K,RAM1K,根本没有多余空间做复杂的处理,简单的处理又不会有多大的作用。居然还在装模作样。
Powered by}

我要回帖

更多关于 mpu6050模块接线 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信