基于mps430低功耗计步器.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于mps430低功耗计步器

基于mps430低功耗计步器 本设计为多功能计步器,采用mps430作为主控制器,系统设计基于uC/OS-II,而界面设计基于uC/GUI。 作为一款便携式穿戴设备,本设计以高可靠、低功耗为理念,对采集的数据滤波整形,最终实现精准计步;运用多种唤醒机制降低功耗。 同时,TSI面板与TFTLCD显示,改善了人机交互体验。此外本设计还具有检测环境温、湿度,气压等功能。 系统主要硬件模块如下所述: 1.主控制器:德州仪器MSP430FR5969。最新一代基于FRAM超低功耗MCU,是目前世界上最低功耗的控制器。具有多种超低功耗模式,灵活而丰富的系统外设。 2.运动传感器:MPU6050。MPU6050是InvenSense公司生产的6轴传感器。本次设计中,使用了该传感器的三轴陀螺仪和三轴加速度计,用以检测运动状态。该传感器为数字传感器,通过IIC与MCU通讯; 3.SDHC卡:采用金士顿公司的class10高速卡。通过基于文件系统的方式,MCU可以创建文本文件并写入数据。文本文件可以通过PC读取,方便Matlab等上位机进行分析。SDHC卡通过SPI与MCU通讯; 4.BLE模块:采用德州仪器CC2541蓝牙模块,可以以较小功耗发送信息。蓝牙模块通过SCI与MCU通讯; 5.显示器:采用串行128*64 OLED显示器,通过自己构建字库和图标等,可以完成较为丰富的显示功能,同时整体功耗也比较低。 原理图及PCB 系统如设计:系统软件设计分为三部分,即初始化流程、系统主循环功能和中断功能。系统中断函数负责MPU6050数据的采集和测算,一直到最终的步数计算和运动状态检测。系统主循环负责OLED显示器的刷新和蓝牙信息的发送。 ? 在系统中断函数中,采集MPU6050原始数据以后,通过进行简单的数字滤波,可以认为得到一个较为稳定的数据。在经过一定的数字信号处理,也就是计步器的核心算法,可以得到使用者的运动状态,进而可以得到运动步数。事实上,借助MPU6050可以实现更多种运动状态的检测,包括上楼下楼、起立做下等。 ? ?系统主循环中,如果检测到显示信息需要刷新,则刷新显示信息,同时经过蓝牙向PC发送信息。 系统中断函数负责MPU6050数据的采集和测算,一直到最终的步数计算和运动状态检测。 ? 系统主循环负责OLED显示器的刷新和蓝牙信息的发送。 ? 在系统中断函数中,采集MPU6050原始数据以后,通过进行简单的数字滤波,可以认为得到一个较为稳定的数据。在经过一定的数字信号处理,也就是计步器的核心算法,可以得到使用者的运动状态,进而可以得到运动步数。比赛阶段暂时不公开,之后利用寒假进一步完善后可以和大家分享。事实上,借助MPU6050可以实现更多种运动状态的检测,包括上楼下楼、起立做下等。 ? 系统主循环中,如果检测到显示信息需要刷新,则刷新显示信息,同时经过蓝牙向PC发送信息。 本次设计中使用了TI的BLE,同样保持了很低的工作时间,按照模块的手册中说明,其电流不超过5mA。然后再看MPU6050模块。 部分源码: void TaskStartA(void *pdata) { pdata = pdata; /*无任何意义,防止编译器报警 */ WDTCTL = WDT_MDLY_32; /*设置时钟节拍间隔为32ms*/ IE1 |= BIT0; /* 开看门狗定时器中断*/ P2SEL = BIT1; //引脚功能选择器 P2DIR |= BIT1; //方向寄存器,1为输出模式 while(1) { P2OUT |= BIT1; OSTimeDly(10); //延时10个时钟节拍,任务挂起,等待延时结束(此时任务B执行) } } void TaskStartB(void *pdata) { pdata = pdata; /*无任何意义,防止编译器报警*/ WDTCTL = WDT_MDLY_32; /*设置时钟节拍间隔为32ms*/ IE1 |= BIT0; /*开看门狗定时器中断*/ P2SEL = BIT1; //引脚功能选择器 P2DIR |= BIT1; //方向寄存器,1为输出模式 while(1) { P2OUT = ~BIT1; OSTimeDly(20); //延时20个时钟节拍,任务挂起,等待延时结束(此时任务B执行) } }

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档