1.六轴姿态传感器:
组成:三轴加速度(x,y,z)+ 三轴陀螺仪(x,y,z)
三轴加速度(Acceleromerter):测量x,y,z三个方向上的加速度的值
三轴陀螺仪(Gyroscop):测量绕x,y,z三个轴旋转的旋转速度的值(角速度)
三轴加速度+三周陀螺仪 = 欧拉角(滚转角roll-z,俯仰角pitch-x,偏航角yaw-y)。
都以正方向为指向,顺势针为正,逆时针为负
则-z的意思是绕着z轴旋转的角度。
方向的定义由芯片定义
2.说明
(1)加速度具有静态稳定性,不具有动态稳定性。
也就是三轴加速度传感器只有在物体静止状态下,受力分析得到的运动方向是正确的;如果在运动状态下测量,则可能产生多种测算结果。
如人坐在车上①车停在坡上;②车在平面上直线加速;两种手里分析都会分析得到人在向斜上方运动。
此时就需要引出补全测量功能的传感器——角速度传感器
(2)角速度传感器具有动态稳定性,不具有静态稳定性
传感器测得角速度,然后通过积分得到角度。
当物体在短时间内发生姿态变化时,可以由积分得到角度变化。但是当物体静态时,由于不可能绝对静止,所以些许摆动也会在不断的积分过程中累加,产生不小的误差。
(3)芯片内部的工作是自动完成的,其中由AD转换器换算电压和所测数值
①MPU6050的ADC是16位的,有符号范围-32768~32768,无符号0~65535。但是各个轴都有正负,所以量化的的结果是-32768~32768。
②因为ADC的量化不同范围的AD得到对应加速度/角速度的数值
所以满量程的越小,测算的数据越准确;满量程选的越大,测算的数据的范围就越大。 而MPU6050可供选择的
加速度的满量程为±2,±4,±8,±16(g)
陀螺仪的满量程为±250°/s,±500°/s,±1000°/s,±2000°/s
③MPU6050支持可配置的数字低通滤波器、可配置的时钟源、可配置的采样频率。
其中低通滤波器可以筛掉高频信号,使得到的数据更加平滑;
而配置的时钟源——>配置的采样频率——>作为MPU的工作时钟(ADC等工作的时钟频率)
(4)自测:
自测可以用来检测芯片是否能正常完成测算工作,如果自测的结果大于厂商提供的误差值,那就说明芯片出了问题。
流程:失能自测状态下读取寄存器的值x1——>使能自测读取寄存器的值x2——>两值做差,误差大于一定值则说明芯片有损坏。
3.MPU6050作从机时的地址:
(1)AD0接高/低的情况不同
①当AD0引脚接地时,从机地址是0110 1000(0x68)
②当AD0引脚接高电平时,从机地址是0110 1001(0x69 或者 (0x68 | 0x01))
(2)I2C通信的情况:7bit地址+1bit读写(1写0读)
①当AD0接地时
若读,则Senbyte(0x68<<0)或者Senbyte(0xD0)
若写,则Senbyte( (0x68<<1) | 1) 或者 Senbyte( (0xD1)
②当AD0接高时
若读,则Senbyte( (0x69<<1)) 或者 Senbyte(0xD2)
若写,则Senbyte( (0x69<<1) | 1) 或者 Senbyte(0xD3)
4.引脚说明
VCC、GND:电源线(3.3v,但内部由3.3v稳压器,所以也可以接5v)
SCL、SDA:用于与Stm32通信的I2C接口,SDA是数据线、SCL是时钟线
XDA、XCL:MPU6050作为I2C通信的主机时,SDA、SCL被作为与新设备通信的引脚,用来扩展其他传感器(气压传感器——测高,磁场传感器——测磁场(指南针)),这时候Stm32需要接入XDA、XCL来通信MPU6050。同时Mux作为选择器,可以将XDA、XCL的线接上SDA、SCL,使Stm32可以同时控制MPU6050及其从设备。
ADO:从机地址的最低位
INT:中断输出引脚。可以通过配置MPU6050内部器件的工作来产生中断。
5.工作流程:
(1)流程:
各轴传感器的数据——>ADC——>信号调节——>数据寄存器
上述流程MPU6050自动完成,只需要通过I2C通信直接读取数据寄存器就可以得到转换后的值。
(2)刷新:
刷新频率决定数据刷新速度
(3)数据寄存器:
各轴拥有独立的寄存器,所以各轴的数据互相占用或覆盖。
姿态解算算法:(不了解,先放点东西)
MPU6050内置数字运动处理器(DMP),可以配合官方的DMP库进行姿态解算。(?看不懂)
不知道什么算法、什么功能的代码:
【毕业设计】MPU6050姿态解算 姿态估计 - 物联网 单片机 stm32-优快云博客
卡尔曼滤波算法解释?: