原创 MPU6050和STM32L152的微功耗三维无线鼠标设计

2019-10-11 13:33 2290 8 2 分类: MCU/ 嵌入式 文集: 测试测量

摘要:利用运动传感芯片MPU6050和STM32L152,设计了一款运动感知及处理模块功耗仅为1.2 mA左右的低功耗三维鼠标。针对功耗问题,详细介绍了符合鼠标低功耗工作要求的STM32L152低功耗运行、睡眠模式配置,以及MPU6050加速度计单独循环、单轴加速度计工作模式的配置,给出了加速度计标定及基于加速度计的姿态角计算方法,实现了鼠标姿态的精确测量。

关键词:STM32L152;MPU6050;三维无线鼠标

引言

针对低功耗设计问题,大多数三维无线鼠标仅考虑无线模块的低功耗设计。本文在此基础上,进一步将鼠标处理器模块及惯性测量模块功耗考虑进来,实现一款功耗更低、性能更优的三维无线鼠标。

1 方案选择

系统主要由电源模块、运动感测追踪组件MPU6050模块、串口转无线WiFi模块和主控芯片STM32L152构成,系统功能框图如图1所示。这里WiFi模块只是用于远程传输测试,不在低功耗设计考虑之中,若考虑远程传输低功耗设计,则使用ZigBee无线传输。

 

 

2 硬件电路设计

2. 1 微控制器接口电路

主控芯片STM32L152与MPU6050的I2C和串口转WiFi模块的接口电路如图2所示。

 

 

2.2 运动感测追踪组件MPU6050电路

MPU6050硬件电路设计如图3所示,将其SCL、SDA端口连接4.7 kΩ上拉电阻(否则I2C总线不能通信),并与微处理器PB8、PB9引脚相连;AD0经4.7 kΩ电阻接地,读写器件地址为0xD0,若悬空或接高电平,地址为0xD2;滤波电容取值0.1μF,电荷泵电容取值10 μF,否则片上传感器不工作。

 

 

2.3 串口转WiFi模块电路

WiFi232-s是一款实现串口到WiFi数据包的双向透明转发,其内部完成协议转换。串口转WiFi模块电路如图4所示。通过串口或WiFi网络连接至电脑,可以对模块进行AT指令集设置其配置参数。其中9、10、12引脚接4.7 kΩ上拉电阻,5、6引脚接处理器串口引脚PD8、PD9。

 

 

3 软件设计

3.1 三维鼠标低功耗设计描述

使用MPU6050可以设计两种三维鼠标:基于加速度计或陀螺仪,这里主要讨论基于加速度计的三维鼠标设计。

三维鼠标低功耗设计中,主要实现在鼠标不工作时系统进入睡眠模式,达到功耗最低,并且能够及时从睡眠中唤醒,进入工作状态。因此,在微处理器STM32L152中设置一个3s定时器,用来扫描鼠标当前状态是否符合进入睡眠模式条件。每当定时溢出中断到来后,采集加速度计Z轴输出值并持续0.5s,采集的当前数据与上一时刻相减得到变化值,判断其是否大于所设的阈值,并对这些大于阈值的数据进行计数。若计数大于所设阈值,则鼠标仍然保持工作状态,等待下一次定时中断到来,此时STM32L152为低功耗运行模式,MPU6050工作模式为加速度计单独循环模式;若计数小于所设阈值,则鼠标进入睡眠模式,此时微处理器设置为低功耗睡眠模式,MPU6050的工作模式设置为加速度计Z轴工作,其余轴为Standby待机模式。

3.2 MPU6050低功耗设置

(1)MPU6050加速度计单独循环工作模式

三维鼠标的MPU6050模块中的三轴加速度计设置为循环工作模式,三轴陀螺仪设置为Standby待机模式,此时MPU6050电流消耗500μA。

MPU6050生产商已经给出了编程所需头文件mpu6050.h,其将编程中所用到的寄存器都做了定义,如MPU6050 DEFAULT ADDRESS,在头文件中对应地址为0xD0或0xD2。

 

 

(2)MPU6050其他工作模式配置

MPU6050睡眠模式:电源管理1寄存器PWR_MGMT_1设置为0x40。此时加速度和陀螺仪传感器都进入Standby待机模式,陀螺仪输出值为0,加速度传感器输出一个固定值,MPU 6050电流消耗为5μA。

MPU6050陀螺仪单独运行模式:电源管理1寄存器PWR_MGMT_1设置为0x0C,电源管理2寄存器PWR_MGMT_2设置为0x38。此时只有陀螺仪传感器工作,加速度计进入Standby待机模式,输出为一个固定值,MPU6050电流消耗为3.6 mA。

3.3 STM32L152低功耗设置

 

 

注意,一般睡眠函数放置在while循环最后执行,在其他任务跑完后进入睡眠模式,待中断到来时唤醒。

(3)STM32L152低功耗模式参数

低功耗睡眠模式:当静止不动时,三维鼠标会进入不工作状态。此时只有微处理器中的3 s定时扫描MPU6050加速度计Z轴动作的定时器在工作,在1.8 V或3 V电压下,微处理器功耗为6.1μA。

低功耗运行模式:三维鼠标进行旋转或位移动作时,进入工作状态,此时STM32L152处于低功耗运行模式,主频设置为16 MHz。关闭所有无关的外设,其电流消耗在500 μA左右。

3.4 鼠标工作状态及睡眠状态下的总功耗

鼠标正常工作状态:STM32L152工作在低功耗运行模式,MPU6050工作在加速度计单独循环模式,电流消耗在1.2 mA左右。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

curton 2019-10-12 21:45

三维鼠标  好创意
相关推荐阅读
minicaihong 2020-10-22 16:44
场效应管放大电路的直流偏置电路详解
什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
minicaihong 2020-10-22 16:37
场效应管偏置电路-场效应管偏置电路的工作原理及作用分析
什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
minicaihong 2020-10-22 16:27
MOS管偏置电路-MOS管直流、恒流等偏置电路图文及方程详解
MOS管偏置电路MOS管直流偏置电路MOS管的单电源直流偏置电路有两种:1、只能用于结型和耗尽型MOS管的自给偏置电路。2、可用于各种MOS管的分压式偏置电路自给MOS管偏置电路(1)图解法根据图中电...
minicaihong 2020-05-27 09:50
sprintf 格式化字符串
sprintf 格式化字符串好久没写博客了,又遇到自己觉得很傻的问题,格式化字符串还要找下定义和用法sprintf() 函数把格式化的字符串写入变量中。arg1、arg2、++ 参数将被插入...
minicaihong 2020-05-25 15:07
12T和1T的单片机
标准51是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令度周期,刚好就是1/12M*12=1uS,常见指令例如nop就是一个周期,刚好1uS,其他的...
minicaihong 2020-05-23 16:22
4HC595驱动8*8点阵屏
74HC595驱动8*8点阵屏置顶 菜袅1号 2020-05-19 10:00:03   52   收藏展开该项目使用国产M0核单片机,驱动方式类似于stm32平台;点阵驱动芯片:...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条