| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32——MPU6050六轴传感器 -> 正文阅读 |
|
[嵌入式]STM32——MPU6050六轴传感器 |
一,什么是MPU6050 MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP:Digital Motion Processor)硬件加速引擎,通过主IIC接口可以向应用端输出完整的9轴姿态融合演算数据。DMP的存在降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。 MPU6050的特点:
MPU6050框图: INT是中断输出脚,CS是片选脚,AD0设置地址,SCL和SDA是主IIC接口,AUX_CL和AUX_DA是丛IIC接口。AD0=0-->地址=0X68? ?AD0=1-->地址=0X69 二、MPU6050初始化 1、初始化IIC接口 2、复位MPU6050。由电源管理寄存器1(0X6B)控制 3、设置角速度传感器和加速度传感器的满量程范围。由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置。 4、设置其它参数。配置中断,由中断使能寄存器(0X38)控制;设置AUX IIC接口,由户控制寄存器(0X6A)控制;设置FIFO,由FIFO使能寄存器(0X23控制);陀螺仪采样率,由采样率分频寄存器(0X19)控制;设置数字低通滤波器,由配置寄存器(0X1A)控制。 5、设置系统时钟。由电源管理寄存器1(0X6B)控制。一般选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。 6、使能角速度传感器(陀螺仪)和加速度传感器。由电源管理寄存器2(0X6C)控制。 三、寄存器介绍 1、电源管理寄存器1(0X68) ? (第八位)DEVICE_RESE=1,复位MPU6050,复位完成后,自动清零。 (第七位)SLEEP=1,进入睡眠模式;SLEEP=0,正常工作模式。 (第四位)TEMP_DIS,用于设置是否使能温度传感器,设置为0,则使能。 (第一位~第三位)CLKSEL[2:0],用于选择系统时钟源,如图: 一般是设置X轴作为参考,所以CLKSEL[2:0]设置为001。 2、陀螺仪配置寄存器(0X1B) ? 主要是FS_SEL[1:0]位,用于设置陀螺仪的满量程范围:0,±250°? /S;1,±500°? /S1;3,±2000°? /S;一般设置为3(±2000°? /S),因为陀螺仪的ADC为16位分辨率,灵敏度为:65546/4000=16.4LSB/(°? /S)。 3、加速度传感器配置寄存器(0X1C) ? 主要是AFS_SEL[1:0]位,用于设置加速度传感器的满量程范围:0,±2g;1,±4g;2,±8g;3,±16g;一般设置为0(±2g),因为加速度传感器的ADC也是16位,所以灵敏度为:65536/4=16384LSB/g。 4、FIFO使能寄存器(0X23) ? 该寄存器用于控制FIFO使能,在简单读取传感器数据的时候,可以不用FIFO,设置对应位为:0,即可禁止FIFO;设置为1,则使能FIFO。 (注:加速度传感器的3个轴,全由1个位(ACCEL_FIFO_EN)控制,只要该位置1,则加速度传感器的三个通道都开启了FIFO。) 5、陀螺仪采样率分频寄存器(0X19) ? 该寄存器用于设置MPU6050的陀螺仪采样频率,计算公式为:
这里陀螺仪的输出频率是1Khz或者8Khz,与数字低通滤波器(DLPF)的设置有关,当DLPF_CFG=0/7的时候,频率为8Khz,其它情况是1Khz。而且DLPF滤波频率一般设置为采样率的一半。采样率假定为50Hz,那么:SMPLRT_DIV=1000/50-1=19。这里1000是陀螺仪输出频率,50是采样频率。 6、配置寄存器(0X1A) ? 主要看数字低通滤波器(DLPF_CFG)的设置位,即:DLPF_CFG[2:0],加速度计和陀螺仪都是根据这三位的配置进行过滤的,如下表: ? (注:一般设置带宽=1/2的采样率。) 7、电源管理寄存器2(0X6C) 该寄存器的LP_WAKE_CTRL用于控制低功耗时的唤醒频率,剩下的6位,分别控制加速度和陀螺仪的x/y/z轴是否进入待机模式(若全不进入待机模式,则全设置为0) 8、加速度传感器数据输出寄存器(0X3B~0X40) ? 加速度传感数据输出寄存器总共由6个寄存器组成,输出X/Y/Z三个轴的加速度传感器值,高字节在前,低字节在后。 9、陀螺仪数据输出寄存器(0X43~0X48) ? 陀螺仪数据输出寄存器总共由6个寄存器组成,输出X/Y/Z三轴的陀螺仪传感器数据,高字节在前,低字节在后。 10、温度传感器数据输出寄存器(0X41~0X42) ? 通过读取0X41(高8位)和0X42(低8位)寄存器得到,温度换算公式为:
其中,Temperature为计算得到的温度值,单位为°C,regval为从0X41和0X42读到的温度传感器值。 四、原理图 ATK-MPU6050模块原理图: STM32F407硬件连接原理图: 注:AD0接GND-->地址=0X68 五、MPU6050驱动代码 1、MPU6050 IIC接口驱动部分代码
2、MPU6050初始化函数(MPU_Init函数)
? 3、MPU_Get_Gyroscope函数;MPU_Get_Accelerometet函数;MPU_Get_Temperature函数 (注:MPU_Write_Len MPU连续读? ?MPU_Read_Len MPU连续写)
? ? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:31:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |