收藏 分享(赏)

健康计步器毕业设计.docx

上传人:cjc2202537 文档编号:4760160 上传时间:2019-01-10 格式:DOCX 页数:31 大小:356.55KB
下载 相关 举报
健康计步器毕业设计.docx_第1页
第1页 / 共31页
健康计步器毕业设计.docx_第2页
第2页 / 共31页
健康计步器毕业设计.docx_第3页
第3页 / 共31页
健康计步器毕业设计.docx_第4页
第4页 / 共31页
健康计步器毕业设计.docx_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、2017 届电子信息工程专业本科毕业论文第 1 页 共 31 页健康计步器的设计摘要:改革开放三十年来,随着社会的不断进步,人们的生活水平也不断的提高了,许多人把健身当做每天的一门必修的功课,在诸多的健身方法中,跑步便成了他们最有效,最简单的运动方法。计步器是一种颇受欢迎的日常锻炼进度监控器,可以激励人们挑战自己,增强体质,帮助瘦身,也成了计量跑步时间、步数和里程的最简易、有效的工具。计步器功能可以根据计算人的运动情况来分析人体的健康状况。而人的运动情况可以通过很多特性来进行分析。与传统的机械式传感器不同,MMA7455 是微机械式三轴传感器,由它捕获人体运动时加速度信号,更加准确。信号通过低

2、通滤波器滤波,由单片机内置 A/D转换器对信号进行采样、A/D 转换。软件采用自适应算法实现计步功能,减少误计数,更加精确。单片机 STC89C52 控制液晶显示计步状态。整机工作电流只有 1-1.5mA,实现超低功耗。关键字:计步器 MMA7455 加速度传感器 低功耗Abstract: Thirty years of reform and opening up, with the constant progress of the society, peoples living standard has been improved, many people consider fitness

3、as every one of the compulsory courses, in many fitness method, running as their most effective, the most simple method, pedometer is a popular daily exercise progress monitor, can motivate people to challenge themselves, enhance physical fitness, to help lose weight. pedometer also became the runni

4、ng time, measurement step number and calories burned the most simple, effective tool. Pedometer function can calculate the movement of people to analyze the situation of human health. And the movement of people can be analyzed by many features. With the traditional mechanical sensors differ, MMA7455

5、 three-axis sensor is a capacitive acceleration signal by its human motion capture, and more accurate. Signal through a low pass filter, the microcontroller built-in A / D converter for signal sampling, A / D conversion. Software uses an adaptive algorithm pedometer function, reduce error count is m

6、ore accurate. STC89C52 SCM control LCD pedometer state. Machine operating current of only 1-1.5mA, ultra-low power consumption.Key words: pedometer, MMA7455, Acceleration sensor, low power consumption1 绪论1.1 引言随着社会的发展,人们的物质生活水平日渐提高,人们越来越注重自己的健康,跑步成为了一种方便而又有效的锻炼方式。但是如何知道自己的运动情况?计步器可以帮助人们实时掌握锻炼情况。它的主要

7、功能是检测步数,通过步数和步幅可计算行走的路程。通过运动步数,得以计算人体消耗的热量,所以人们可以定量的制定运动方案来健身,并根据运行情况分析人体的健康状况,因而越来越流行。手持式的电子计步器是适应市场需求的设计,使用起来简单方便。计步器的原理是利用行走时身体的肢体摆动从而影响振动传感器,然后单片机处理振荡信息并进行后续处理。振荡传感器的内部有一个可随意移动的小球,利用物体移动时产生的物理惯性,导致小球在物体内运动,然后利用感应器检测小球的运动,从而确定被检测物的运动状况。电子计步器主要组成部分是振动传感器和电子计数器。步行的时候人的重心会上下移动。以腰部的上下移动最为明显,所以计步器挂在腰带

8、上最为合适。所谓的振动传感器其实就是一个平衡锤在上下振动时平衡被破坏使一个触点能出现通/断动作,由电子计数器完成了主要的记录与显示功能,其他的列如热量消耗,路程换算均由电路完成。计步器中一般采用一种加速度计来感受外界的震动。常用的加速度计原理如下:在一段塑料管中密封着一小块磁铁,管外缠绕着线圈,当塑料管运动时,磁铁由于惯性在管中反向运动,切割线圈,由于电磁感应,线圈中产生电流,人体运动时,上下起伏的加速度近似为正弦过程,线圈的输出电流也是正弦波,测量正弦波的频率就可以得出运动的步数,再计算出的速度,距离,和消耗卡路里。1.2 研究意义计步器最早是由意大利的伦纳德达芬奇酝酿的,但现存的最早的计步

9、器是在达芬奇之后 150 年,是德国于 1667 年制作的。在中世纪和近代,计步器并未被广泛使用,因为人们并不清楚它的用途。这说明机器的发明(硬件)不及找到它对人类的用途(软件)重要。这使得计步器通常利用摆钟原理作为记步技术,利用加重的机械开关检测步伐,并带有一个简单的计数器。如果晃动这些装置,就可以听到有一个金属球来回滑动,或者一个摆钟左右摆动敲响当块。这种机械式的计步器早已淡出历史,取而代之的是电子式的计步器。1.3 研究的内容本文是一个基于 STC89C52 低速单片机,结合 MMA7455 倾角传感器来实现计步功能。根据设计的要求选择了基于三轴加速度 MMA7455 功能计步器设计方案

10、,对硬件中微处理器电路模块、传感器数据采集模块以及 LCD1602 显示模块进行介绍,并对软件流程图以及计步检测算法进行介绍,最终完成对实物的调试和功能验证。2 方案设计及选择2.1 设计要求(1)使用单片机技术处理数据。(2)能够有效的检测人体步行动作。(3)能够显示并且记录单位时间内的步数。(4)超过设定值报警。(5)可以通过按键设置每步的距离、总步数和总里程的预警值。2.2 MCU 微处理器的选择方案一:采用 8 位微控制器8 位微控制器的典型代表是 8051 微控制器。8051 微控制器是一款入门级微控制器,它的内核简易,应用广泛,资料齐全,非常适合入门学习。同时价格低廉,是一款适用于

11、追求低成本不求实时性的电子产品。很长一段时间内,8051 微控制器在我国占据了小型家电市场,其中原因是超低成本。方案二:采用 16 位微控制器MSP430 微控制器是一款以低功耗闻名的 16 位微控制器,有许多低功耗的工作模式,采用了精简指令集(RISC)结构,具有丰富的寻址方式,高效率的查表处理指令。这些特点都保证了用它可以编写出高效率的源程序。方案三:采用 32 位微控制器现如今 32 位微控制器拥有超低功耗模式多种灵活的功率模式,适合不同的应用情形,可最大限度延长电池寿命;多种技术优化功耗,包括时钟和电源门控技术,以及带有位处理引擎、外围交叉桥和零等待闪存控制器的高效平台等;深度睡眠模式

12、下,可在不唤醒内核的情况下进行智能决策并处理数据。综合上述几种单片机优缺点并且根据实验要求,就地取材选择了由 STC 公司生产的一种价格便宜、低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。2.3 传感器的选择方案一:选择机械式振动传感器机械式振动传感器内部有一个平衡锤,当传感器振动时,平衡被破坏,因此会造成触点的上下断通。佩戴者在跑步过程中,身体起伏重心高低发生变化,计算机内部的振动传感器就会将这一变化转换为数字量送至控制单元,从而获得佩戴者的运动信息。机械式振动传感器原理简单、精度和成本低,适用于振幅较大的场合。方案二:选择加速度传感器三轴加速度传感器

13、分为压阻式,压电式和电容式。加速度的变化能够改变电阻、电压或者电容的变化,从而获得空间位置三个垂直方向的加速度分量。佩戴者在跑步过程中,身体上下起伏,计步器内部的微控制器读取三轴加速度传感器的三组模拟量,通过计步算法分析,获取运动信息。三轴加速度传感器具有精度高、反应速度快、通讯协议简单可靠等特点,广泛使用于汽车、数码产品、航天设备等领域。方案三:选择压力传感器压力传感器是将压力的变化转化为电压的变化。利用这一特性,可将压力传感器内置在鞋的底部,当用户在行进过程中,压力传感器受到的压力不同(抬脚时脚对鞋无压力,放脚时脚对鞋有持续压力),这样,计步器的主控单元读取压力值,经过计步算法即可判断运动

14、状态。目前内置于鞋底的压力传感器属于柔性传感器。在 2008 年北京奥运会上曾将它用于检测运动员的蹬地力、蹬地时间、足底接触形状、运动速度、离心力等信息,以便指导运动员取得更好的成绩。这种传感器价格昂贵,设计难度较大,不适合本设计。机械设振动传感器应用于早期的计步器,测量精度低,误判、漏判严重,不符合本课题高精度的设计原则。随着加速度传感器的工艺逐渐成熟,测量精度也逐渐提高,功耗已达到微安级别,随着市场的大量使用,价格也降了下来,非常符合本课题的设计理念。结合价格、功耗和精度等多方面考虑,本课题选择的三轴加速度传感器 MMA7455 作为计步传感器。2.4 系统的总体设计如图 2-1 所示,该

15、计步器是由 STC89C52 单片机、MMA7455 加速度传感器以及 LED1602 显示屏等组成。传感器采集数据,经内部 A/D 传唤后,输入单片机内部,将数据处理后输入液晶显示。图 2-1 总体方框图3 系统的硬件设计3.1 微处理器电路模块STC89C52 是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。STC89C52 使用经典的 MCS-51 内核,但做了很MMA7455 传感器采集器微处理器STC89C52 单片机LCD1602 数据显示多的改进使得芯片具有传统 51 单片机不具备的功能。在单芯片上,拥有灵巧的8 位

16、CPU 和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k 字节 Flash,512 字节 RAM,32 位 I/O 口线,看门狗定时器,内置 4KB EEPROM,MAX810 复位电路,3 个 16 位定时器/计数器,4个外部中断,一个 7 向量 4 级中断结构(兼容传统 51 的 5 向量 2 级中断结构),全双工串行口。另外 STC89X52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内

17、容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率 35MHz,6T/12T可选。STC89C52RC 单片机内有 8K 字节程序存储空间,512 字节数据存储空间,内带 2K 字节 EEPROM 存储空间,可直接使用串口下载,如图 3-1 所示:图 3-1 单片机最小系统电路图3.2 计步器传感器采集模块MMA7455 的内部功能结构如图 3-1 所示,X、Y、Z 三个相互正交的的方向上的加速度由 G-Cell 传感器感知,经过容压变换器、增益放大、滤波器和温度补偿后以电压信号输出。图 3-1 MMA7455 内部结构功能框图所谓的 G-Cell 传感器是

18、由半导体材料(多晶硅)经半导体工艺加工得到,其结构可简化为三块电容极板,如图 3-2 所示,两端的极板圈定,中间的极板在加速度的作用下,偏离无加速度的位置,这样它到两端极板的距离发生变化,造成电容值的变化。这个变化值经容压变换、增益放大,滤波等后体现在最后的电压输出值上,从而完成对加速度的测量。图 3-2 G-Cell 传感器的物理模型MMA7455 的三个相互正交的测量方向,固定在人体上后,这三个方向上的数据意义也就随之确定了。引脚配置(顶视图)如图 3-3 所示:图 3-3 引脚功能图MMA7455 是一款小而薄的超低功耗 3 轴加速度计,分辨率高(13 位),测量范围达16g。数字输出数

19、据为 16 位二进制补码格式,可通过 SPI(3 线或 4 线)或 I2C 数字接口访问。MMA7455 非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到 1.0的倾斜角度变化。如图 3-4 所示,为传感器底座,接口电路连接:图 3-4 传感器连接模块此模块电路主要功能就用于做 MMA7455 加速度传感器的一个转接口,而且利用 MMA7455 该加速度传感器产生相应的变化值。相当于整个系统的信号产生模块。3.3 显示模块液晶显示器(LCD)为平面超薄的显示设备,液晶显示器功耗很低,适用于使用电

20、池的电子设备.它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。LCD 特点:机身薄,节省空间。与比较笨重的 CRT 显示器相比,液晶显示器只要前者三分之一的空间。省电,不产生高温,它属于低耗电产品,可以做到完全不发热(主要耗电和发热部分存在于背光灯管或 LED),而 CRT 显示器,因显像技术不可避免产生高温。低辐射,益健康。液晶显示器的辐射远低于 CRT 显示器(仅仅是低,并不是完全没有辐射,电子产品多多少少都有辐射)。画面柔和不伤眼,不同于 CRT 技术,液晶显示器画面不会闪烁,可以减少显示器对眼睛的伤害,眼睛

21、不容易疲劳。如图 3-5 所示:图 3-5 LCD1602 标准 16 脚接口第 1 脚:GND 为电源地。第 2 脚:VCC 接 5V 电源正极。第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度)。第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平 1 时进行读操作,低电平 0 时进行写操作。第 6 脚:E(或 EN)端为使能(enable)端,高电平 1 时读取信息,负跳变时执行指令。第 714

22、脚:D0D7 为 8 位双向数据端。第 1516 脚:空脚或背灯电源。第 15 脚背光正极。第 16 脚背光负极。特性 3.3V 或 5V 工作电压,对比度可调。3.4 键盘输入模块采用独立式键盘接法,每个 I/O 口上只接一个按键,按键的另一端接地,这种接法相比矩阵式键盘接法程序比较简单且系统更稳定。在用单片机对键盘处理时会涉及键盘的去抖动,也就是机械抖动,实现方法是先查询按键当有低电平出现时立即延时 10200 毫秒以避开抖动(一般为 20 毫秒),延时结束后再读一次 I/O 口的值,这一次的值如果为 1 表示低电平的时间不到 10200 毫秒,视为干扰信号。当读出的值是 0 时则表示有按

23、键按下,调用相应的处理程序。硬件电路图如图 3-6 所示:图 3-6 键盘控制电路图3.5 蜂鸣器模块蜂鸣器是一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、复印机、打印机、汽车电子设备、电子玩具、电话机等电子产品中作发声器件。蜂鸣器主要分为电磁式蜂鸣器和电压式蜂鸣器两种类型。本次设计的蜂鸣器驱动电路包括以下几个部分:一个三极管、一个蜂鸣器、一个限流电阻、一个自锁开关。如图 3-7 所示:图 3-7 蜂鸣器驱动电路4 软件设计4.1 总体流程图本次设计单片机程序采用 C 语言编写,开发环境为 WAVE。软件编写的好坏直接影响到计步的准确度以及是否有良好的人机交互功能。软件部分包括单

24、片机对硬件个模块的整合、控制,主要实现计步、液晶显示等功能,其主要由如下几个程序模块构成。整个软件采用 C 语言编程。图 4-1 系统设计程序流程图图 4-1 是计步器软件的系统设计流程图。首先对所用到的各种部件进行初始化,然后根据应用的功能,调用各个子程序完成相应的功能。4.2 主程序流程图开 始按键功能判断调用按键扫描程序开 始程序初始化调用各功能模块程序显示程序结 束图 4-2 主程序流程图主程序的运行过程如图 4-2 体现。程序开始执行,开始各 I/O 口的初始化,各功能按键的定义,分配单片机的各个 I/O 口位,然后液晶显示器进行显示,判断各功能按键是否被按下,如果有功能键被按下,则

25、通过液晶显示器显示,如此循环。4.3 子程序流程图相关数据操作预 采 样自适应阀判断阀值是否有效计 数Count%继续计数显示数据返 回NYY图 4-3 子流程图图 4-3 所示,在完成扫描按键,确定工作状态后,计步器进入正常工作状态,通过检测传感器的工作状态,可判断是否完成一个步行动作。如果确定为一个步行动作,通过程序的对数据的处理,产生距离数据,并将步数和距离一起显示在 LCD 上。这只是一个过程,计步器功能的实现主要通过循环,在完成上述的一个过程后,会返回扫描按键,检测按键有无动作,如按键没动作,程序将继续检测,记录步数,一直循环下去。如检测到按键有动作后,将马上退出循环状态。4.3 计

26、步器算法的实现在可用于分析跑步或步行的特征当中,我们选择“加速度”作为相关参数。个体(及其相关轴)的运动包括三个分量,分别是前向(“滚动”)、竖向(“偏航”)和侧向(“俯仰”),如图 4-4 所示,MMA7455 检测其三个轴x、y 和 z 上的加速度。计步器处于未知方向,因此测量精度不应严重依赖于运动轴与加速度计测量轴之间的关系。图 4-4 跑步时三个分量让我们考虑步行的特性。一个步伐,我们将其定义为单位步行周期,步行周期各阶段与竖向和前向加速度变化之间有一定的关系。要实现检测步数首先要对人走路的姿态有一定了解。行走时,脚、腿、腰部,手臂都在运动,它们的运动都会产生相应的加速度,并且会在某点

27、有一个峰值。从脚的加速度来检测步数是最准确的,但是考虑到携带的方便,我们选择利用腰部的运动来检测步数。图 4-5 显示了与一名跑步者的竖向、前向和侧向加速度相对应的 x、y 和 z轴测量结果的典型图样。无论如何穿戴计步器,总有至少一个轴具有相对较大的周期性加速度变化,因此峰值检测和针对所有三个轴上的加速度的动态阈值决策算法对于检测单位步行或跑步周期至关重要。图 4-5 x、y 和 z 轴加速度的典型图样首先,为使信号波形变得平滑,需要一个数字滤波器。可以使用四个寄存器和一个求和单元,如图 4-6 所示。当然,可以使用更多寄存器以使加速度数据更加平滑,但响应时间会变慢。图 4-6 数字滤波器图

28、4-7 显示了来自一名步行者所戴计步器的最活跃轴的滤波数据。对于跑步者,峰峰值会更高。图 4-7 最活跃的滤波数据动态阈值和动态精度:系统持续更新三轴加速度的最大值和最小值,每采样 50 次更新一次。平均值(Max + Min)/2 称为“ 动态阈值”。接下来的 50 次采样利用此阈值判断个体是否迈出步伐。由于此阈值每 50 次采样更新一次,因此它是动态的。这种选择具有自适应性,并且足够快。除动态阈值外,还利用动态精度来执行进一步滤波。步伐迈出的条件定义为:当加速度曲线跨过动态阈值下方时,加速度曲线的斜率为负值(sample_new (Mid_Ang - 7) ET0 = 1;EA = 1;C

29、ount = 0;Delay(1000); /延时 1sWrite_Reg(0x16, 0x01); /配置加速传感器Key0 = Key1 = Key2 = Key3 = Key4 = Key5 = 1; /初始化按键Bee = 1; /初始化蜂鸣器Display_Str(0, “BJ:“);/步距报警Display_Str(6, “LC:“); /里程报警Display_Str(17, “BS:“);/步数报警while(Key1) /等待开始计步按键被按下if(!Key2 | !Key3) /设置按键被按下则执行相应的动作Delay(5);if(!Key2)Step_Dis += 1;e

30、lse if(!Key3)Step_Dis -= 1;if(Step_Dis 20)Step_Dis = 20;if(!Key4 | !Key5)Delay(5);if(!Key4)Dis_Alarm += 10;else if(!Key5)Step_Alarm += 5;if(Dis_Alarm 5000)Dis_Alarm = 20;if(Step_Alarm 5000)Step_Alarm = 20;Write_Ord(0x80 + 0x03);Write_Byte(numberStep_Dis % 100 / 10);Write_Byte(numberStep_Dis % 10);Wr

31、ite_Ord(0x80 + 0x0a);Write_Byte(numberDis_Alarm / 1000);Write_Byte(numberDis_Alarm % 1000 / 100);Write_Byte(numberDis_Alarm % 100 / 10);Write_Byte(numberDis_Alarm % 10);Write_Ord(0x80 + 0x43);Write_Byte(numberStep_Alarm / 1000);Write_Byte(numberStep_Alarm % 1000 / 100);Write_Byte(numberStep_Alarm %

32、100 / 10);Write_Byte(numberStep_Alarm % 10); /显示阀值Write_Ord(0x01);Init_Dis(); /初始化显示Display_Str(26, “ON “); /显示计步功能打开while(1)TR0 = 1; /开始计时/Display_Acc();MMA7455_Step(); /检测步子Display_Step(); /显示步数if(Key0 = 0) /如果停止键被按下则复位所有功能Bee = 1; /复位蜂鸣器Display_Str(26, “OFF“); /显示计步功能关TR0 = 0; /计时器停止Time = 0;Step

33、 = 0;Display_Step();Write_Ord(0x80 + 0x0b);Write_Byte(numberTime / 1000);Write_Byte(numberTime % 1000 / 100);Write_Byte(numberTime % 100 / 10);Write_Byte(numberTime % 10); /初始化显示while(Key0 = 0); /等待开始按键被按下while(Key1);Display_Str(26, “ON “);if(Step * Step_Dis / 10) Dis_Alarm) | (Step Step_Alarm)/如果步数或者距离超过阀值,则报警Bee = 0;void Tim0() interrupt 1 /定时器中断函数TL0 = T1MS;TH0 = T1MS 8;if(Count+ = 1000)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报