




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、玉林师范学院本科生毕业设计基于单片机的计步器设计The Pedometer Design Based on Single Chip Microcomputer院 系电子与通信工程学院专 业电信工程学 生 班 级2012级1班姓 名胡丽娜学 号201208401144指导教师单位电子与通信工程学院指导教师姓名吕集尔指导教师职称高级实验师 基于单片机的计步器设计电子信息科学与技术 2012级1班 胡丽娜指导老师 吕集尔摘要简易加速度计步器以竖直方向加速度传感器MMA7260与单片机PIC18F452组成的计步测试系统,能够对人体运动的运动量作出评估。与传统的机械式传感器不同,MMA7260是电容式
2、传感器,由它捕获人体运动时加速度信号,更加准确。信号通过低通滤波器滤波,由单片机内置AD转换器对信号进行采样、AD转换。软件采用自适应算法实现计步功能,减少误计数,更加精确。单片机控制5110液晶显示计步状态。整机工作电流只有1-1.5mA,实现超低功耗。关键字:单片机,电子计步器,加速度传感器 The Pedometer Design Based on Single Chip MicrocomputerElectronic Information Science and Technology 2012-1 HulinaSupervisor LvjierAbstractSimple accel
3、eration pedometer with triaxial acceleration sensor MMA7260 step meter test system composed of MCU PIC18F452, can exercise an assessment to the human body movement.Different from the traditional mechanical sensor, sensor MMA7260 is capacitive three axis, by acceleration signal when it captures the h
4、uman body movement, more accurate.Is filtered by low-pass filter, the single chip microcomputer built-in A/D converter for signal sampling, A/D conversion.Software using adaptive algorithm implementation plan step function, reduce the error count, more precise.Single-chip microcomputer control step
5、5110 liquid crystal display meter.The whole machine working current is only 1-1.5 mA, realize ultra-low power consumption.Keywords:SCM, electronic pedometer, triaxial acceleration sensor目录1 引言12系统总体设计12.1总体框图12.2传感器选择12.3 低通滤波器理论分析23 硬件电路设计33.1 传感器连接及滤波电路模块33.2 微处理器模块33.3显示模块54 软件设计65 制作与调试75.1 硬件电路
6、单片机部分的连接图75.2 调试75.3 实测及误差分析86 结论及建议8参考文献10附录1 实物图10附录2 总原理图10附录3 源程序11附录4 加速度计步器MMA7260简介171 引言1.1计步器的发展背景 随着社会的不断进步与发展,人们的物质生活水平不断提高,人们便开始越来越关注自身的健康。运动则是最好的方式,计步器作为一种可以计算行走的步数测量仪器,所以人们可以制定适量的运动方案来健身,并根据运行情况来分析人体的健康状况,因此越发被广泛的应用。电子计步器是一种适应市场需求的设计,使用起来也简单方便。 1.2 计步器的研究目的计步器是一种十分受欢迎的日常锻炼进度监控器,可以激励人们挑
7、战自己,能够增强体质,并且帮助减肥瘦身。早期设计利用加重的机械开关检测步伐,并带有一个简单的计数器。每当晃动这些装置时,可便以听到有一个金属球来回滑动,或者一个摆锤左右摆动敲击挡块。1.3目标通过设计一个以STC89C52单片机为核心的计步器可以实现计频数,频数累计功能。是一种结构简单、性能稳定、使用方便、价格低廉、智能化的计步器,具有一定的实用价值。2系统总体设计2.1总体框图如图2.1所以,该计步器总共由四个模块构成。低通滤波器、主控MCU、竖直方向加速度传感器、显示模块组成。传感器采集数据经低通滤波器滤波,输入单片机内部A/D、D/A,将数据处理后输出液晶显示,加速度传感器的竖直方向的加
8、速度输出,AN0为单片机一个模拟输入口,数据经单片机处理后由液晶输出。图2.1 计步器总体框图Fig.2.1 Pedometer overall block diagram2.2传感器选择传统的机械式的计步器利用人体行走时的振动引起计步器内部簧片或者弹力小球的振动来产生电子脉冲,内部处理器通过判断电子脉冲的方法来达到计步的功能。这种机械式方式的成本比较低,但是它的准确性和灵敏度很低。DXL330是一个竖直方向模拟输出的加速度传感器,正好可以作为垂直方向的传感器。利用MEMS(微机电系统)加速度传感器制作工艺,很容易地和传统的CMoS工艺结合起来,服机械式的准确性和灵敏度低的缺点。MMA7260
9、是美国Freescale公司推盘的一款低成本、单芯片,置轴加速度传感器。该微型电容式加速度传感器融合了信号调理、单掇低通滤波器和滠度补偿技本,并提供四种加速度范围。DXL330和MMA7260都是适合于做手持式电子计步器的传感器,但相比之下,MMA7260价格更低,性价比稍好,该设计选择MMA7260。2.3 低通滤波器理论分析通常来讲,人体每秒钟行走52步,最多不超过5步。因此,合理的计步器输出为0.55 Hz。在模拟电路部分,采用5 Hz的抗混叠带宽来过滤高频噪声;在数字电路部分,采用5 Hz截止频率的FIR低通滤波器来过滤高频噪声。FIR低通滤波器参数设计分析:根据现有资源情况,以及考虑
10、性价比因素,只对信号进行简单的低通滤波。参考芯片手册资料,选择电阻1k电阻,0.1uF电容构成一个无源低通滤波。由截止频率得=1592Hz。低通滤波器无法过滤0.5 Hz以下的噪声,因此我们采用了时间窗口的方法来实现。如图2.2所示,我们把大于T1或者小于T2的频率输出都认为是噪声的影响。图2.2 传感器输出曲线图Fig2.2 Sensor output curve3 硬件电路设计3.1 传感器连接及滤波电路模块如图3.1所示,为传感器底座,接口以及滤波电路图。在信号通过输出前通过一阶滤波电路滤波。图3.1 传感器连接及滤波电路Fig.3.1 Sensor connection and fil
11、ter circuit此模块电路主要功能就用于做MMA7260加速度传感器的一个转接口,而且利用MMA7260该加速度传感器产生相应的变化值。相当于整个系统的信号产生模块。在MMA7260每一路信号输出端都接了一个RC低能滤波器,从而在硬件上做到减小高频噪声干扰。3.2 微处理器模块本系统中是以PIC18F452为主控芯片来设计的,区别于一般的MCS-51单片机的总线结构是冯-诺依曼型、单指令流水线结构。PIC单片机的总线结构是哈佛结构、双指令流水线结构,指令和数据空间是完全分开的, 可以对程序和数据同时进行访问,所以提高了数据吞吐率。也是因为哈弗结构程序和数据总线可以采用不同的宽度,数据总线
12、都是8位的,但指令总线位数分别位12、14、16位。我们选择的Pic18f452就是数据总线为8位,指令总线为16位的一款单片机。另外PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作。如图3.2所示,主控模块由pic18f452为主要部分,外接一个16M的晶振,接上VCC和地构成最小系统模块。图3.2 主控制器最小系统电路Fig.3.2 Main controller minimum system circuit3.3显示模块5110是一块低功耗的CMOS LCD控制驱动器,设计为驱动48 行84 列的图形显示。所有
13、必须的显示功能集成在一块芯片上,包括LCD 电压及偏置电压发生器,只须很少外部元件且功耗小。5110与微控制器的接口使用串行总线。以下是5110主要的几个引脚的功能:SDIN:串行数据线SCLK:串行时钟线D/C:模式选择 SCE:芯片使能 RES:复位实时时钟模块图3.3 显示模块Fig.3.3 Display module如图3.3所示,将SCE与单片机的RD3连接,将RES(RST)连接到单片机的RD4,D/C连接到单片机的RD5引脚,将DIN连接到单片机的RD6,SCLK连接到RC3。 4 软件设计 软件总体设计图4.1 程序流程图Fig.4.1 Program flow chart程
14、序流程图如图4.1所示:不同的人行走会有不同加速度大小的输出,因此软件中动态参数的设置提供了一种自适应的方法,来满足不同行人的要求。动态参数包括动态精度、动态阈值以及加速度传感器的峰一峰值的输出。动态精度是用来量化采样的数据以去除高频的噪声;动态阈值满足下式就可以判断一步的成立。Old Data>Dynamic Threshold>New Data。于是在进入测试后首先进行预采样,进行自适应,获得动态阈值。软件中量化的模块有两个移位寄存器组成:新数据寄存器和旧数据寄存器。新数据寄存器的内容为动态精度和加速度变化值,当加速度变化值大于动态精度时,这时的数据就可以移位到新数据寄存器;当
15、加速度变化值小于或者等于动态精度时,新数据寄存器保持不变。旧数据寄存器则不断的更新采样的数据。为防止不同时间,人体运动状态不同,设置软件每隔50步,重新采样取得阈值,继续计数,同时为防止不同时间的阈值不同产生的误计数,比如人已经停止运动,但是没有按下结束键是,采用前后两次阈值比较,在某一变化范围内认为有效阈值,这样就避免了错误的计数,提高了计数精度。输入步长,在结束运动时,可以计算运动的里程数,对锻炼量进行评估。5 制作与调试5.1 硬件电路单片机部分的连接图5.2 调试为了检测计步算法的可行性,我们做了以下实验:测试系统主电路板及附属电源组成,在实验中本测试系统由测试对象随身携带,全部绑在脚
16、的正左方,像携带沙袋一样。 分别进行多次实验,得到多组数据。 5.3 实测及误差分析测试方案:由于加速度传感器有竖直加速度测试值,所以测试时采用把传感器按x轴向竖直向上的方法分别进行测量,进行评估。以每次100步为标准,测试结果如下表5.1所示:表5.1 作品测试结果Table.5.1 Works test results次数竖直向上竖直向上竖直向上标准实测误差标准实测误差标准实测误差110098-210096-410097-3210097-310095-51001033310096-410010111001033410097-3100100010096-4510010111001044100
17、104461001000100101110095-57100103310096-410098-2数据分析:根据数据分析得计步器的精度为95%,精度还是比较不错的,软件算法可能需要继续优化,提高精度。6 结论结论:利用人运动时产生加速度变化来检测步数的计步器,在实测时计步器的精度达到95%,这个结果已经比较不错,为了可以较好的实现计步功能。而且体型小功耗低,工作电流只有1mA-1.5mA,非常适合应用于手持式设备。这种计步器在人们日常中的应用。设计过程总结的几点经验:一、首先弄懂本设计的设计的原理和设计要求,理解各个模块的工作原理。二、先尽量把硬件做完善,确保硬件各个通路都能正常,以免在调试软件
18、的时候遇到问题不知所措。三、使用 C 语言编程要养成良好的编程风建议:致谢此次毕业设计能够顺利完成,我的学习生涯也将告一段落。在此,我要对四年来帮助过我的人表示深深的感谢。 感谢我的指导老师吕集尔老师,一直以来负责又耐心的指导我,并从查阅资料、论文的修改、论文格式调整等各个环节中都给予了我悉心的指导,感谢指导老师和同学们在我做毕业设计的过程中对我的帮助,让我对许多相关知识有了更深层次的了解,也让我养成了积极向上、执着追求目标的好习惯。参考文献1 宋浩然 廖文帅 赵一鸣. 基于加速度传感器ADX543的高精度计步器. 传感技术学报, 2006,19(4).2 赵祥欣. 基于三维加速度传感器的跌倒
19、监测研究. 硕士学位论文.3 曹赟 周宇 徐寅林. 加速度传感器在步态信号采集系统中的应用. 信息化研究, 2009,35(9).附录1 实物图附录2 总原理图附录3 源程序void main()unsigned int i = 0,FirCouFlag = 1;unsigned int dynThreh = 600, dynThrel = 450; /三轴方向不同的动态中间阈值unsigned int dynthreTemph = 0, dynthreTempl = 0;/动态中间阈值临时值 int diff=0;/采样值与阈值的差值unsigned char Diff = 0;/三轴合成特
20、征值数组峰峰值unsigned long tempvx = 0,tempvy = 0,tempvz = 0; /三轴合成特征值运算中间变量CloseInterKey();TRIS_KEY0 = 1;ad_init();N5110Init();init_24xx();LCD_clear();/step_length();WelcomeFace();Drawnum(0,2,0,1);Drawnum(1,2,0,1);Drawnum(2,2,0,1);Drawnum(3,2,0,1);DrawStr(5,2,20,24);/stopwhile(1)if (BUTTON_IO0 = 0) /进入测试
21、delay(20);if (BUTTON_IO0 = 0)tmrCounter = 0;/计时清零delay(1200);/秒长延时SLEEP = 1;/唤醒MMA7260DrawStr(5,2,15,19);/Countwhile(1)for(i = 0; i < 300; i+)ADCON0 = 0x01;/选择AN0tempx = get_ad();ADCON0 = 0x09;/选择AN1tempy = get_ad();ADCON0 = 0x11;/选择AN2tempz = get_ad();/=计算阈值=tempvx=(unsigned long)tempx*(unsigned
22、 long)tempx; tempvy=(unsigned long)tempy*(unsigned long)tempy; tempvz=(unsigned long)tempz*(unsigned long)tempz; arrayi = sqrt(tempvx+tempvy+tempvz);/ delay(5);DoMinMaxMid(array,minmax,300);Diff = minmax1-minmax0;dynThreh = minmax0 + 0.7 * Diff;dynThrel = minmax0 + 0.4 * Diff;/TimerInit();InterKeyIn
23、it();tmrCounter = 0;/计时清零if(Diff >= WalkThreL)while(1)for(i=0; i < 10;i+)ADCON0 = 0x01;/选择AN0tempx = get_ad();ADCON0 = 0x09;/选择AN1tempy = get_ad();ADCON0 = 0x11;/选择AN2 tempz = get_ad(); /delay(20);tempvx = (unsigned long)tempx*(unsigned long)tempx; tempvy = (unsigned long)tempy*(unsigned long)
24、tempy; tempvz = (unsigned long)tempz*(unsigned long)tempz; diff = sqrt(tempvx+tempvy+tempvz); while(diff<=dynThreh) ADCON0 = 0x01;/选择AN0tempx = get_ad();ADCON0 = 0x09;/选择AN1 tempy = get_ad();ADCON0 = 0x11;/选择AN2 tempz = get_ad(); tempvx=(unsignedlong)tempx*(unsignedlong)tempx; tempvy=(unsigned lo
25、ng)tempy*(unsigned long)tempy; tempvz=(unsigned long)tempz*(unsigned long)tempz; diff=sqrt(tempvx+tempvy+tempvz); / delay(10);while(diff>=dynThrel)ADCON0 = 0x01;/选择AN0tempx = get_ad();ADCON0 = 0x09;/选择AN1 tempy = get_ad();ADCON0 = 0x11;/选择AN2 tempz = get_ad();tempvx=(unsigned long)tempx*(unsigned
26、 long)tempx; tempvy=(unsigned long)tempy*(unsigned long)tempy; tempvz=(unsigned long)tempz*(unsigned long)tempz; diff=sqrt(tempvx+tempvy+tempvz); / delay(10);if (FirCouFlag = 1)counter = 7;FirCouFlag = 0;elsecounter+;Drawnum(0,2,(counter/1000),1);Drawnum(1,2,(counter%1000/100),1);Drawnum(2,2,(counte
27、r%100/10),1);Drawnum(3,2,(counter%10),1); /end for/=重新计算阈值=for(i=0;i<75;i+) ADCON0 = 0x01;/选择AN0tempx = get_ad();ADCON0 = 0x09;/选择AN1tempy = get_ad();ADCON0 = 0x11;/选择AN2tempz = get_ad(); tempvx=(unsigned long)tempx*(unsigned long)tempx; tempvy=(unsigned long)tempy*(unsigned long)tempy; tempvz=(u
28、nsigned long)tempz*(unsigned long)tempz; arrayi=sqrt(tempvx+tempvy+tempvz); / delay(10); DoMinMaxMid(array,minmax,75); Diff = minmax1-minmax0; dynthreTemph = minmax0 + 0.7 * Diff; dynthreTempl = minmax0 + 0.4 * Diff; / adTemp = DoArrayDiffAver(array);if (Diff >= WalkThreL && Diff <= Wa
29、lkThreH) /判断是否进行阈值替代counter+;Drawnum(0,2,(counter/1000),1);Drawnum(1,2,(counter%1000/100),1);Drawnum(2,2,(counter%100/10),1);Drawnum(3,2,(counter%10),1);dynThreh= dynthreTemph;dynThrel= dynthreTempl; /end of if/tmrCounter = 0;/计时清零/end of while /end of if/end of while/end of if/end of while/end of main附录4 加速度计步器MMA7260简介MMA7260是美国Freescale公司最新推出的一款低成本单芯片三轴加速度传感器该微型电容式加速传感器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 当代中国社会建设-第三讲-从发展型政府到服务型政府
- 2024年纺织行业新产品开发试题及答案
- 2024年助理广告师考试答题思路试题及答案
- 天津化学奥赛试题及答案
- 2024年提升设计表现力的策略国际商业美术设计师考试试题及答案
- 河南中职旅游试题及答案
- 刑法复试面试题及答案
- 水利事业面试题及答案
- 电工应用技术试题及答案
- 2024年设计文化传播国际商业美术设计师考试试题及答案
- 2025届鄂东南省级示范高中联盟高考英语二模试卷含答案
- 2025购销合同范本下载
- 2024年家政服务职业技能大赛家庭照护赛项决赛试理论题库1000题
- 2025年四川省成都市成华区中考二诊英语试题(含笔试答案无听力音频及原文)
- 2025劳动合同范本下载打印
- (四调)武汉市2025届高中毕业生四月调研考试 地理试卷(含答案)
- 管道试压吹扫方案
- 大概念视角下的初中数学函数单元整体教学设计研究与实践
- 2024年探放水工技能大赛理论考试题库500题(供参考)
- XX道路危险运输企业安全管理台账标准化表格
- GB/T 13025.7-2012制盐工业通用试验方法碘的测定
评论
0/150
提交评论