智能车制作
标题:
用过MPU6050 的各位大神,都出来分享一下经验吧!!!
[打印本页]
作者:
洗牌
时间:
2013-4-16 21:41
标题:
用过MPU6050 的各位大神,都出来分享一下经验吧!!!
小弟近日在搞MPU6050,这个东东读出陀螺仪数值,加计数值,然后融合,然后问题一大堆~~~~~~~
作者:
洗牌
时间:
2013-4-19 09:23
解决了,关键是以前没有融合过
作者:
zhangzhe0617
时间:
2013-4-24 16:56
大神,具体讲讲怎么融合的啊。用的什么算法?互补滤波么?
作者:
洗牌
时间:
2013-4-25 11:59
是,卡尔曼
作者:
搞电的
时间:
2013-5-1 11:05
你好,我也在用6050,读出了原始数据,请问怎么转化为角度?谢谢啦
作者:
洗牌
时间:
2013-5-8 12:42
群号:336079701 大家一起做
作者:
bg8wj
时间:
2013-7-7 11:31
我用过非常好用,我用在自平衡车上。
//初始化MPU6050,根据需要请参考pdf进行修改
u8 Init_MPU6050(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
if(Single_Read(MPU6050_Addr,WHO_AM_I)==0x68)
{
Single_Write(MPU6050_Addr,PWR_MGMT_1, 0x00);//电源管理1,解除休眠状态,时钟为内部8MHz
Single_Write(MPU6050_Addr,SMPLRT_DIV, 0x07);//采样速率125Hz
Single_Write(MPU6050_Addr,CONFIG,0x06);
//不使能FSYNC,不使用外同步采样速率;DLPF_CFG[2~0],设置任意轴是否通过DLPF,
//典型值:0x06(5Hz)低通滤波器带宽5Hz,
//对加速度和陀螺仪都有效,输出频率为1kHz,决定SMPLRT_DIV的频率基准
Single_Write(MPU6050_Addr,GYRO_CONFIG, 0x08);//不自测,量程设置500°/s
/*?GYRO 量程单位系数
+-250 deg/s 131 LSB/deg/s 初始化hex 0x00
+-500 deg/s 65.5 LSB/deg/s 0x08
+-1000 deg/s 32.8 LSB/deg/s 0x10
+-2000 deg/s 16.4 LSB/deg/s 0x18
*/
Single_Write(MPU6050_Addr,ACCEL_CONFIG, 0x00);//不自测,量程设置2g
/* Accle any axe
+-2 g 16384 LSB/g
+-4 g 8192 LSB/g
+-8 g 4096 LSB/g
+-16 g 2048 LSB/g
*/
return 0;
}
return 1;
}
//******读取MPU6050数据****************************************
//**************************************
//读取mpu6050内部数据,两个字节,合成数据
//**************************************
s16 GetData(u8 REG_Address) //返回值为有符号的整形,16位
{
s16 H=0,L=0;
H = Single_Read(MPU6050_Addr,REG_Address); //先读高字节,再读低字节
L = Single_Read(MPU6050_Addr,REG_Address+1);
return (H<<8)+L; //合成数据,为有符号整形数
}
//-------------加速度部分解算角度------------------
s32 Read_Acc(void)
{
s32 Accel_x; //mpo6050读出的X轴加速度
s32 Accel_z; //mpu6050读出的z轴加速度
//-------------加速度部分解算------------------
/*使用是加速度轴x轴正向朝向小车行径方向,y轴陀螺仪的正向 逆时针方向。
加速度计的量程范围见配置 不自测,量程设置4g scal系数为8192
Accle any axe
+-2 g 16384 LSB/g
+-4 g 8192 LSB/g
+-8 g 4096 LSB/g
+-16 g 2048 LSB/g
*/
Accel_x = GetData(ACCEL_XOUT_H); //从mpu6050读取X轴加速度
Accel_z = GetData(ACCEL_ZOUT_H); //从mpu6050读取z轴加速度
if(Accel_x>0)
{
Angle_accel = atan2((float)Accel_x,(float)Accel_z)*(180/3.14159265);//反正切计算rad
/* atan2(y,x)是表示X-Y平面上所对应的(x,y)坐标的角度,
它的值域范围是(-Pi,Pi)
用数学表示就是:atan2(y,x)=arg(y/x)-Pi
当y<0时,其值为负,
当y>0时,其值为正. atan2*180/Pi可以计算出角度值 */
}
else
{
Angle_accel = atan2((float)Accel_z,(float)Accel_x)*(180/3.14159265)-90;//反正切计算
Angle_accel = -Angle_accel;
}
//angle_accel物理量单位是角度 deg!
return Angle_accel;
}
//陀螺仪计算Y轴的角速度
s32 Read_Gry(void)
{
s32 read_gyro_y;
s32 Angle_gyro;
//-------角速度解算-------------------------
//角速度量程见配置 本处使用1000 deg/s。scal系数为32.8 LSB
/*?GYRO 量程单位系数
+-250 deg/s 131 LSB/deg/s offset 44.38188277*2
+-500 deg/s 65.5 LSB/deg/s offset 44.38188277
+-1000 deg/s 32.8 LSB/deg/s ok offset 44.38188277/2
+-2000 deg/s 16.4 LSB/deg/s offset 44.38188277/4
*/
read_gyro_y= GetData(GYRO_YOUT_H)+Gyro_y_offset; //静止时角速度Y轴输出
//Gyro_y_offset计算方法gyro静止时候N多个数据的算术均值
Angle_gyro= -read_gyro_y/65.5; //去除零点偏移,计算角速度值,负号为方向处理
//Angle_gyro测量值的单位是 deg/s.测量的物理量是角速度。
return Angle_gyro;
}
复制代码
作者:
bg8wj
时间:
2013-7-7 11:33
角度解算方法,可以度娘一下陀螺仪解算方法,文库里面大把的是。
作者:
hanlinson
时间:
2013-7-25 19:57
bg8wj 发表于 2013-7-7 11:31
我用过非常好用,我用在自平衡车上。
神一样的代码,注解之详细!对于 mpu6050本来还有一点不懂的,看了全部懂了,谢谢
作者:
空相救心
时间:
2013-8-15 12:41
作者:
夜的第三乐章
时间:
2013-8-25 19:29
bg8wj 发表于 2013-7-7 11:31
我用过非常好用,我用在自平衡车上。
哥们,我最近刚开始入手mpu6050,不知道您能提供我一些资料么,例如你这个代码里面写的 参考的pdf???小弟万谢
作者:
yzx41
时间:
2013-8-30 19:42
求6050程序代码呀
作者:
LZG14
时间:
2013-8-30 20:38
bg8wj 发表于 2013-7-7 11:31
我用过非常好用,我用在自平衡车上。
大侠~有K60的6050代码吗?
作者:
葛国庆
时间:
2014-4-9 16:55
大神,发一份给我吧。
775277266@qq.com
作者:
廉洁
时间:
2014-9-1 17:17
厉害呀楼主谢谢了
作者:
jiushibuzhidao
时间:
2014-9-1 20:59
bg8wj 发表于 2013-7-7 11:31
我用过非常好用,我用在自平衡车上。
你这样做了过后怎么办的啊?角度是根据加速度计得到的啊!后面怎么处理的啊?
作者:
Aslovo
时间:
2016-11-16 16:52
感谢
作者:
znjqr
时间:
2016-11-19 13:03
角度解算方法,可以度娘一下陀螺仪解算方法,文库里面大把的是
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2