
INT中断输出,AD0设置地址AD0=0 地址=0X68 AD0=1 地址0X69,SCL/SDA IIC接口
1.初始化IIC
2.复位mpu6050,由电源管理寄存器0X6B控制
3.设置角速度加速度满量程范围
4.设置其他参数
5.设置系统时钟
6.使能
DEVICE_RESET=1复位
SLEEP=0正常工作模式
TEMP_DIS用于设置是否使能温度传感器,设置为0,则使能CLKSEL[2:0]用于选择系统时钟
陀螺仪配置寄存器0X1B
FS_SEL[1:0]用于设置满量程范围
加速度配置寄存器0X1C
AFS_SEL[1:0]用于设置满量程范围
FIFO使能寄存器0X23
在简单读取传感器数据,可以不用FIFO,设置为0
采样率分频寄存器0X19
采样频率=陀螺仪输出频率/(1+SMPLRT_DIV)
一般设置为采样率的一半
配置寄存器0X1A
看数字低通滤波器设置位
加速度输出寄存器0x3B-0X40
陀螺仪输出 0X43-0X48
温度传感器数据输出0X41-0X42高8位低8位,通过温度换算
欧拉角yaw航向角 roll横滚角 pitch俯仰角
dmp输出的是四元数,采用q30格式,q30是一个常量
上位机
匿名四轴上位机
我知道的也不多,说一下我的理解吧。拿正点原子的程序为例mou6050:原子的程序配合上位机能输出6个数据,加速度输出:ax,ay,az角速度输出:wx,wy,wz分别在上位机上显示,这个数据是原始数据,dmp结算后的四元数。而单片机TFT屏幕上显示的Pitch、Roll、Yaw角度是通过陀螺仪的四元数解算出来,这个数据有个问题即使陀螺仪放不平(有个倾斜角),mpu6050上电后是以此时的状态为0度角度,这样测出来的数据肯定是错误的。原因是:陀螺仪测量的是角速度变化率,它也不知道0度在哪,它是以刷新的那个时刻记为0度开始积分的。因此陀螺仪单独是没法用的需要校准,校准的传感器可以是地磁传感器或者加速度计。而陀螺仪地磁和加速度计又有自己的缺点,需要他们把彼此的数据做个融合。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)