赞
踩
前言
在网上关于MSP430F5529的资料还是比较少的,大部分都要从STM32里边移植,但是直接移植会遇到很多困难,最近在准备电赛,就把自己准备的成果分享出来,一方面想要填补网上资料的空缺可以帮助大家,另一方面是为了督促自己进步。
我觉得会用一个模块不一定需要了解它的全部,只要知道几个方面就够了。
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、位姿解算
这里用到了互补滤波算法,即给传感器获得的值和预测值加权,当你更相信预测值或传感器计算值侧加大相应权重,如图:
我主要参考了这个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。