mpu6050:MPU6050简介 2024-04-01 19:01:42 0 0 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、SDAXCL、XDAAD0INT 功能:电源 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 收藏(0)