mpu6050:MPU6050简介

MPU6050:

MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景

3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度

3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度

6轴:3轴加速度,3轴角加速度

9轴:3轴加速度,3轴角加速度,3轴磁场强度

10轴:  3轴加速度,3轴角加速度,3轴磁场强度,一个气压强度

加速度计测量的是加速度(可以看作测力计,根据牛顿第二定律F=ma可以计算加速度),加速度计具有静态稳定性,不具有动态稳定性

MPU6050的陀螺仪测量的是角速度,角度可以通过角速度积分得到,具有动态稳定性,不具有静态稳定性

  • MPU6050参数:
    • 16位ADC采集传感器的模拟信号,量化范围:-32768~32767

    • 加速度计满量程选择:±2、±4、±8、±16(g|9.8m/s2)
    • 陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)

    • 可配置的数字低通滤波器
    • 可配置的时钟源
    • 可配置的采样分频

    • I2C从机地址:1101000(AD0=0)     1101001(AD0=1)

    若从中间拆开,110 1000十六进制就是0x68,

    发送第一个字节时将(0x68<<1) | 0/1,  0xD0/0xD1;

    所以I2C的从机地址有两种说法:

    0x68是直接把7位地址转换16进制得到的

    0xD0是 融入了读写位的从机地址     

  • MPU6050硬件电路:
  • LDO:低压差线性稳压器

    CON1:八针的排针

    引脚:            

  • VCC、GND      
  • SCL、SDA
  • XCL、XDA
  • AD0
  • INT
  • 功能:

  • 电源
  • I2C通信引脚(内置了两个4.7K的电阻,已经为弱上拉模式,所以可直接接GPIO,不用添加电阻)
  • 主机I2C通信引脚
  • 通常可外接磁力计和气压计,弥补6轴功能不全的情况,同时MPU6050的主机接口可以直接访问这些拓展芯片的数据,在MPU6050里有DMP单元,会进行数据融合·和姿态解算

  • 从机地址最低位
  • 1101000 / 1101001

    图中可以看到AD0接电阻默认下拉到低电平了,若引脚悬空,就是低电平。若想置高电平,就把AD0直接引到VCC,强上拉至高电平

  • 中断信号输出
  • 配置芯片内部的一些事件,来触发中断引脚的输出

    LDO是电源供电的逻辑,MPU6050的芯片VDD供电是2.375~3.46V,属于3.3V供电的设备,不能直接接5V,所以接入了一个3.3V的稳压器,电源(5V)可在3.3V到5V之间给芯片端供电

    LED是电源指示灯。

    MPU6050的模块框图:

    灰色部分是芯片内部的传感器,包括XYZ轴的加速度计和陀螺仪,还内置了一个温度传感器,每个传感器前面都有一个自测单元,是用来验证芯片好坏的

    Charge Pump:是一个电荷泵,进行升压,因为陀螺仪内部是需要一个高电压支持的。

    右边的部分是寄存器和通信接口部分了。

    寄存器:

    Interrupt Status Register(中断状态寄存器):可控制内部的哪些事件到中断引脚的输出。

    FIFo(先入先出寄存器):可对数据流进行缓存,

    Config Register (配置寄存器):可以对内部的各个电路进行配置。

    Sensor Register(传感器寄存器):也就是数据寄存器,存储了各个传感器的数据

    Factory Calibration (工厂校准):内部的传感器都进行了校准

    Digital Motion Processor(DMP):数字运动处理器,简称DMP,是芯片内部自带的一个姿态解算的硬件算法,配合官方的DMP库,可以进行姿态解算。

    通信接口:

    上面的8,9,23,24是从机的I2C和SPI通信接口,用于和STM32通信;下面的6,7是主机的I2C和SPI接口,用于和MPU6050拓展的设备进行通信。

  • 寄存器表格:
  • 第一列:Register Adress (十六进制/HEX)

    第二列:Register Adress(十进制)

    第三列:Register Name(寄存器名称)

    第四列:读写权限,RW代表可读可写,R代表可读,W可写

    后面的是寄存器内每一位的名字。

    以下是黄色标识寄存器的名字(十进制的排序):

    每个寄存器都是八位。

  • 采样频率分频器
  • 八位为一个整体作为分频值,这个寄存器可以配置采样频率的分频系数,简单来说就是分频越小,内部AD转换就越快,数据寄存器刷新就越快

  • 配置寄存器
  • 内部有两部分:外部同步设置和低通滤波器配置,配置滤波器的参数越大,输出数据抖动就越小,0是不使用滤波器,陀螺仪时钟为8KHz,使用了滤波器陀螺仪时钟为1KHz

  • 陀螺仪寄存器
  • 高三位是XYZ轴的自测使能位,中间两位是满量程选择位,后三位没用到

  • 加速度计寄存器
  •    高三位是XYZ轴的自测使能位,中间两位是满量程选择位,

       低三位是用来配置高通滤波器(内置小功能,运动检测用的对输出没用影响)

    下面三行中 _L表示低八位,_H表示高八位

    59~64. 加速度计的XYZ轴的数据寄存器

           想读取数据的话,就读取数据寄存器就行,这是一个16位的有符号数以二进制补码的方式存储,读出高八位和低八位,高位左移八次 或逻辑上 低位数据,最后在存在一个uint16_t的变量里,就能得到数据了

    65~66. 温度传感器数据寄存器

           和加速度计一样操作方法

    67~72. 陀螺仪XYZ轴的数据寄存器

           同上

    107~108. 电源管理寄存器1、2

    电源管理寄存器1:

    第1位(最高位Bit7)设备复位,置1所有寄存器恢复到默认值

    第2位 睡眠模式,置1,芯片睡眠/不工作,进入低功耗

    第3位 循环模式,置1,设备进入低功耗,过一段时间启动一次

    第4位 空

    第5位 温度传感器失能,置1,禁用内部的温度传感器

    最后三位 用来选择系统时钟来源

    117. 器件的ID号(我是谁)

         只读,中间六位固定110100,最高位和最低位都是0,I2C地址0x68

    相关推荐

    相关文章