陀螺仪mpu6050的使用(附带HAL的使用)

我们日常见的陀螺仪模块的使用就是在平衡小车和控制小车的移动上,那么陀螺仪是怎么使用的呢,首先就是能很好的使用I2C,而看到这里,说的一切都是虚的,首先陀螺仪的配置和数据手册大家也是没少看的,但是还是跟我再了解一遍.

MPU6050内部整合了三轴MEMS陀螺仪、三轴MEMS加速度计以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),而且还可以连接一个第三方数字传感器(如磁力计),这样的话,就可以通过IIC接口输出一个9轴信号(链接第三方数字传感器才可以输出九轴信号,否则只有六轴信号)。更加方便的是,有了DMP(同时这个可以在官方库去移植),可以结合InvenSense公司提供的运动处理资料库,实现姿态解算。通过自带的DMP,可以通过IIC接口输出9轴融合演算的数据,大大降低了运动处理运算对操作系统的负荷,同时也降低了开发难度。其实,简单一句话说,陀螺仪就是测角速度的,加速度传感器就是测角加速度的,二者数据通过算法就可以得到PITCH、YAW、ROLL角了。

而对陀螺仪的算法精确就是低通滤波和卡尔曼滤波(在低通滤波上我已学会,在卡尔曼滤波我已学废,但是我还是鼓励大家学卡尔曼滤波,毕竟对数据可以很精准)

 这张图片大家也看得很多了吧,但是我们还是应该要知道这个图片就对应这mpu6050的方向,wo我也希望在使用这个模块的时候可以看清它的方向,毕竟这种事我也经常干。

 这个图咋们也能看出来这个就是mpu6050的内部框图,其中就是测温度加速度和姿态的。

这个大家可以参考一下,HAL库的玩家更要看掌握知识:链接

那么简单的来了,上实践操作部分,而且不要怕不会用,我会慢慢讲解的。

/*
*mpu6050.c
*
*Creation date: September 11th, 2021
*Author: Xiaodong
*
*Kalman filter algorithm used from https://github.com/TKJElectronics/KalmanFilter
*/


#include <math.h>
#include "mpu6050.h"

#define RAD_TO_DEG 57.3

#define WHO_AM_I_REG 0x75
#define PWR_MGMT_1_REG 0x6B
#define SMPLRT_DIV_REG 0x19
#define ACCEL_CONFIG_REG 0x1C
#define ACCEL_XOUT_H_REG 0x3B
#define TEMP_OUT_H_REG 0x41
#define GYRO_CONFIG_REG 0x1B
#define GYRO_XOUT_H_REG 0x43

// Setup MPU6050
#define MPU6050_ADDR 0xD0
const uint16_t i2c_timeout = 100;
const double Ac
  • 10
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值