MSP430F5529配置陀螺仪MPU6050(有完整代码)

本文介绍了如何在MSP430F5529单片机上配置MPU6050陀螺仪,包括功能介绍、接线方法、程序配置、位姿解算使用互补滤波算法,并提供了完整的代码,虽然俯仰角和翻滚角计算正确,但偏航角准确性待优化。
摘要由CSDN通过智能技术生成

前言

在网上关于MSP430F5529的资料还是比较少的,大部分都要从STM32里边移植,但是直接移植会遇到很多困难,最近在准备电赛,就把自己准备的成果分享出来,一方面想要填补网上资料的空缺可以帮助大家,另一方面是为了督促自己进步。

MPU6050

我觉得会用一个模块不一定需要了解它的全部,只要知道几个方面就够了。
1、功能
MPU6050具有三轴的加速度和陀螺仪
加速度计即测出实际在x,y,z轴的加速度
陀螺仪即测出x,y,z轴的角速度
建议到正点原子的文档库里边找MPU6050的资料,里边非常详细
MPU6050资料

2、接线

MSP430 MPU6050
SCL SCL
SDA SDA
RST RST
DC DC
VCC VCC
GND GND

注:MSP430的引脚为程序里设置的,需要对照程序接好引脚

3、程序配置

void MPU60xx_Init(void)
{
   
	I2C_Init();
	I2C_WriteByte(MPU60xx_ADDRESS,MPU60XX_PWR_MGMT_1, 0x00);	//解除休眠状态
	I2C_WriteByte(MPU60xx_ADDRESS,MPU60XX_SMPLRT_DIV, 0x07);
	I2C_WriteByte(MPU60xx_ADDRESS,MPU60XX_CONFIG, 0x06);
	I2C_WriteByte(MPU60xx_ADDRESS,MPU60XX_GYRO_CONFIG, 0x18);
	I2C_WriteByte(MPU60xx_ADDRESS,MPU60XX_ACCEL_CONFIG, 0x01);
}

int16_t MPU60xx_Read(uint8_t Axis)
{
   
	int16_t Data;
	Data = I2C_ReadByte(MPU60xx_ADDRESS,Axis);
	Data = Data << 8;
	Data |= I2C_ReadByte(MPU60xx_ADDRESS,Axis+1);
	return Data;
}

4、位姿解算
这里用到了互补滤波算法,即给传感器获得的值和预测值加权,当你更相信预测值或传感器计算值侧加大相应权重,如图:
在这里插入图片描述
我主要参考了这个

  • 20
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值