基于加速度传感器ADXL345的计步器设计Word格式文档下载.docx
《基于加速度传感器ADXL345的计步器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于加速度传感器ADXL345的计步器设计Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。
![基于加速度传感器ADXL345的计步器设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/23/df9595eb-1e62-4679-8903-5cca6defe1ce/df9595eb-1e62-4679-8903-5cca6defe1ce1.gif)
1.2单片机芯片的选择方案和论证
采用AT89S51芯片作为硬件核心,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,所以在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
采用STC89C52芯片,STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。
同样具有AT89S51的功能,且具有在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,因此选择采用STC89C52作为主控制系统核心。
1.3显示模块选择方案和论证
方案一:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。
方案三:
采用LCD1602液晶显示屏;
它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
1602LCD可以显示的内容为16X2,即可以显示两行。
该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。
综上,在此设计中采用1602液晶显示屏。
1.4传感器的选择方案和论证
选择机械式振动传感器
机械式振动传感器内部有一个平衡锤,当传感器振动时,平衡被破坏,如此会造成上下触点的通断。
佩戴者在跑步过程中,身体起伏重心高低产生变化,计步器内部的振动传感器就会将这一变化转换为数字量送至控制单元,从而获得佩戴者的运动信息。
机械式振动传感器原理简单、精度和成本低,适用于振幅较大的场合。
选择加速度传感器
三轴加速度传感器分为压阻式,压电式和电容式。
加速度的变化能够改变电阻、电压或者电容的变化,从而获得空间位置三个垂直方向的加速度分量。
佩戴者在跑步过程中,身体上下起伏,计步器内部的微控制器读取三轴加速度传感器的三组模拟量,通过计步算法分析,获取运动信息。
三轴加速度传感器具有精度高、反应速度快、通讯协议简单可靠等特点,广泛使用于汽车、数码产品、航天设备等领域。
选择压力传感器
压力传感器是将压力的变化转化为电压的变化。
利用这一特性,可将压力传感器内置在鞋的底部,当用户在行进过程中,压力传感器受到的压力不同(抬脚时脚对鞋无压力,放脚时脚对鞋有持续压力),这样,计步器的主控单元读取压力值,经过计步算法即可判断运动状态。
为选择一款最适合本课题的计步传感器将三种传感器对比如下表:
表1三种传感器对比表
类型
机械式振动传感器
加速度传感器
压力传感器
工作电流
5mA
30mA
--
工作精度
0.1g
0.002g
价格(元)
1.0元
5.0元
目前内置于鞋底的压力传感器属于柔性传感器。
在2008年北京奥运会上曾将它用于检测运动员的蹬地力、蹬地时间、足底接触形状、运动速度、离心力等信息,以便指导运动员取得更好的成绩。
这种传感器价格昂贵,设计难度较大,不适合本设计。
机械设振动传感器应用于早期的计步器,测量精度低,误判、漏判严重,不符合本课题高精度的设计原则。
随着加速度传感器的工艺逐渐成熟,测量精度也逐渐提高,同时也有很高的灵敏度,功耗已达到微安级别,温度漂移小,具有良好的稳定性,随着市场的大量使用,价格也降了下来,加速度传感器非常适合移动设备应用。
综上,加速度传感器符合本课题的设计理念。
表2列出了不同型号的三轴加速度传感器的特性。
表2加速度传感器特性对比表
加速度计代表型号
LSM303DLH
MPU-6050
ADXL345
0.83mA
500uA
150uA
精度
0.0003g
0.008g
40.0
50.0
3.0
结合价格、功耗和精度等多方面考虑,本课题选择的三轴加速度传感器ADXL345作为计步传感器。
1.5系统最终方案设计
该计步器是由ADXL345加速度传感器、STC89C52单片机以及LCD1602显示屏等组成。
传感器采集数据,经内部A/D转换后,输入单片机内部,将数据处理后输出至液晶显示器显示。
图1总体方框图
2硬件电路设计
2.1系统硬件概述
本电路是以STC89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作,在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;
加速度传感器采用ADXL345,它是一款小而薄的超低功耗3轴加速度计,测量范围达正负16g,数字输出数据为16位的二进制补码格式,可通过SPI(3线或4线)或IIC数字接口访问。
显示模块使用LCD1602液晶显示屏来实现,该显示屏具有低功耗、寿命长、可靠性高,可供显示的字符较多,控制指令简单的特点,其工作电压为5V。
2.2主要单元电路的设计
2.2.1系统主控制模块的设计
本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的52系列单片机足以胜任,它具有体积小、控制功能强、成本低,易扩展,可靠性好、使用温度范围宽等众多优点。
通常使用的国产STC89C52单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。
它具有丰富的内部资源,较大的数据存储区和程序存储区。
同时,由于学习52单片机容易上手,指令简单易懂,编程灵活,在本设计中具有较高的应用价值。
一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。
STC89C52单片机外部结构图如图2所示。
图2单片机外部结构图
1、复位电路的设计
复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。
(1)单片机常见的复位电路
通常单片机复位电路有两种:
上电复位电路,按键复位电路。
上电复位电路:
上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。
它利用的是电容充电的原理来实现的。
按键复位电路:
它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。
如果要实现复位的话,只要按下RESET键即可。
它主要是利用电阻的分压来实现的
在此设计中,采用的按键复位电路。
按键复位电路如图3所示。
图3复位电路
(2)复位电路工作原理
上电复位要求接通电源后,单片机自动实现复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。
2、晶振电路的设计
晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4中X1、C1、C2。
可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30nF左右的瓷片电容。
图4时钟振荡电路
2.2.2计步器传感器采集模块
ADXL345的内部功能结构如图5所示,X、Y、Z三个相互正交的方向上的加速度由G-Cell传感器感知,经过容压变换器、增益放大、滤波器和温度补偿后以电压信号输出。
图5ADXL345内部结构功能框图
所谓的G-Cell传感器是由半导体材料(多晶硅)经半导体工艺加工得到,其结构可简化为三块电容极板,如图6。
两端的极板圈定,中间的极板在加速度的作用下,偏离无加速度的位置,这样它到两端极板的距离发生变化,造成电容值的变化.这个变化值经容压变换、增益放大,滤波等后体现在最后的电压输出值上,从而完成对加速度的测量。
图6G-Cell传感器的物理模型
ADXL345的三个相互正交的测量方向如图7,固定在人体上后,这三个方向上的数据意义也就随之确定了。
图7ADXL345的三测量轴向
引脚配置(顶视图):
图8引脚功能图
ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±
16g。
数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。
ADXL345非常适合移动设备应用。
它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。
其高分辨率(3.9mg/LSB),能够测量不到1.0°
的倾斜角度变化。
如图9所示,为传感器底座,接口电路连接:
图9传感器连接模块
此模块电路主要功能就用于做ADXL345加速度传感器的一个转接口,而且利用ADXL345该加速度传感器产生相应的变化值。
相当于整个系统的信号产生模块。
2.2.3显示模块的设计
本设计中由于要对时间进行显示,所以选择液晶显示屏1602模块作为输出。
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。
它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,就能看到字母“A”。
管脚功能如表3所示:
表3LCD1602引脚功能
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端。
4
RS
RS为寄存器选择。
5
R/W
R/W为读写信号线。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0~DB7
三态、双向数据总线
LCD1602主要管脚介绍:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。
RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址;
当RS为高电平R/W为低电平时可以写入数据。
E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
将LCD1602的RS端和P2.0,R/W端和P2.1,E端和P2.2相连,当RS=0时,对LCD1602写入指令;
当RS=1时,对LCD1602写入数据。
当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。
当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。
图10为1602液晶显示屏与单片机的硬件连接图。
图10LCD液晶与单片机硬件连线图
3系统软件设计
3.1系统主程序设计
图11系统主程序流程图
3.2计步器算法的实现
在可用于分析跑步或步行的特征当中,我们选择“加速度”作为相关参数。
个体(及其相关轴)的运动包括三个分量,分别是前向(“滚动”)、竖向(“偏航”)和侧向(“俯仰”),如图12所示。
ADXL345检测其三个轴—x、y和z上的加速度。
计步器处于未知方向,因此测量精度不应严重依赖于运动轴与加速度计测量轴之间的关系。
图12跑步时的三个分量
让我们考虑步行的特性。
一个步伐,我们将其定义为单位步行周期,步行周期各阶段与竖向和前向加速度变化之间有一定的关系。
要实现检测步数首先要对人走路的姿态有一定了解。
行走时,脚、腿、腰部,手臂都在运动,它们的运动都会产生相应的加速度,并且会在某点有一个峰值。
从脚的加速度来检测步数是最准确的,但是考虑到携带的方便,我们选择利用腰部的运动来检测步数。
图13显示了与一名跑步者的竖向、前向和侧向加速度相对应的x、y和z轴测量结果的典型图样。
无论如何穿戴计步器,总有至少一个轴具有相对较大的周期性加速度变化,因此峰值检测和针对所有三个轴上的加速度的动态阈值决策算法对于检测单位步行或跑步周期至关重要。
图13从一名跑步者测得的x、y和z轴加速度的典型图样
(1)步伐参数
数字滤波器:
首先,为使信号波形变得平滑,需要一个数字滤波器。
可以使用四个寄存器和一个求和单元,如图14所示。
当然,可以使用更多寄存器以使加速度数据更加平滑,但响应时间会变慢。
图14数字滤波器
图15显示了来自一名步行者所戴计步器的最活跃轴的滤波数据。
对于跑步者,峰峰值会更高。
图15最活跃轴的滤波数据
动态阈值和动态精度:
系统持续更新三轴加速度的最大值和最小值,每采样50次更新一次。
平均值(Max+Min)/2称为“动态阈值”。
接下来的50次采样利用此阈值判断个体是否迈出步伐。
由于此阈值每50次采样更新一次,因此它是动态的。
这种选择具有自适应性,并且足够快。
除动态阈值外,还利用动态精度来执行进一步滤波。
步伐迈出的条件定义为:
当加速度曲线跨过动态阈值下方时,加速度曲线的斜率为负值(sample_new<
sample_old)。
峰值检测:
步伐计数器根据x、y、z三轴中加速度变化最大的一个轴计算步数。
如果加速度变化太小,步伐计数器将忽略。
步伐计数器利用此算法可以很好地工作,但有时显得太敏感。
当计步器因为步行或跑步之外的原因而非常迅速或非常缓慢地振动时,步伐计数器也会认为它是步伐。
为了找到真正的有节奏的步伐,必须排除这种无效振动。
利用“时间窗口”和“计数规则”可以解决这个问题。
“时间窗口”用于排除无效振动。
假设人们最快的跑步速度为每秒5步,最慢的步行速度为每2秒1步。
这样,两个有效步伐的时间间隔在时间窗口[0.2s-2.0s]之内,时间间隔超出该时间窗口的所有步伐都应被排除。
ADXL345的用户可选输出数据速率特性有助于实现时间窗口。
表4列出了TA=25°
C、VS=2.5V、VDDI/O=1.8V时的可配置数据速率(以及功耗)。
表4数据速率和功耗
输出数据速率(Hz)
带宽(Hz)
速率代码
IDD(µ
A)
3200
1600
1111
146
800
1110
100
400
1101
145
200
1100
1011
50
1010
25
1001
12.5
1000
65
6.25
0111
55
3.125
0110
40
此算法使用50Hz数据速率(20ms)。
采用interval的寄存器记录两步之间的数据更新次数。
如果间隔值在10与100之间,则说明两步之间的时间在有效窗口之内;
否则,时间间隔在时间窗口之外,步伐无效。
“计数规则”用于确定步伐是否是一个节奏模式的一部分。
步伐计数器有两个工作状态:
搜索规则和确认规则。
步伐计数器以搜索规则模式开始工作。
假设经过四个连续有效步伐之后,发现存在某种规则(inregulation),那么步伐计数器就会刷新和显示结果,并进入“确认规则”工作模式。
在这种模式下工作时,每经过一个有效步伐,步伐计数器就会更新一次。
但是,如果发现哪怕一个无效步伐,步伐计数器就会返回搜索规则模式,重新搜索四个连续有效步伐。
3.3系统程序的编译
编译是对程序进行查找错误的过程,在编译之前需要对keil软件进行设置,首先建立一个工程,保存该工程时选择与自己硬件相同的单片机型号。
然后新建文件,编写完程序,保存时为后缀为“.c”。
点击编译按钮,若出现错误,则修改错误,若无错,则生成“.hex”文件,以供仿真与硬件使用。
编译软件如图16所示。
图16系统程序的编译图
3.4系统电路软件仿真
系统仿真需要在proteus软件里进行,在仿真之前,要先设计好系统电路以及元器件各自的参数,在proteus里面找到元器件并连接好电路。
同时设置它们的参数。
并且用调试助手将程序烧录到单片机中,进行仿真。
调试助手界面如图17所示。
仿真图如图18。
图17调试助手界面图
图18系统仿真图
4系统硬件电路的测试
如表5为在实际步数中显示步数以及总步数不复位情况下记录。
下图表6为在实际步数中显示步数每5步复位一次总步数不复位情况下记录。
由图可得到实物对步数统计准确率在90%以上。
表5实际测试不复位记录表
实际步数
10
15
20
30
显示步数
9
14
18
22
27
总步数
表6实际测试每5步复位一次
13
23
28
基于ADXL345的计步器的电路比较复杂,对于焊接方面不可轻视,需要有一定的焊接基础和尝试,只要电路系统中出于一处的错误,就会对检测造成很大的不便,而且电路的交线较多,所以在焊接的时候要边焊接,边检测是否有电路,断路,跳线情况发生,如果有,则要及时修正,否则会对续后的电路焊接造成极大地困难。
对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。
在本次课题的设计调试中遇到了很多的问题。
回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:
(1)在显示步数、总步数、路程以及卡路里有时LCD液晶显示屏被屏蔽掉,造成不亮现象。
解决:
根据仪器的测试,发现电路的驱动能力不足,在接入2.4K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。
(2)烧入程序后,LCD液晶显示屏不显示或者亮度不好。
不显示时首先使用万用表对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏的现象。
若无此问题查看烧写的程序是否正确无误,对程序进行认真修改。
当显示亮度不好时一遍旋转10K欧的滑动变阻器,一遍观看LCD显示屏,直到看到合适的亮度为止。
经过多次的反复调试试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。
同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。
如下为硬件实物图如图18所示。
计步器工作时的实物图如图19所示。
图18计步器实物图
图19计步器工作时的实物图
5结论及进一步设想
至此,关于课程设计的所有内容就介绍完了,进行这次课程设计一切都是从零开始,从最简单查资料、了解各个元件的功能起步,再确定设计方案、画流程图、编写程序到最后进行仿真,这次课题设计可以说成功完成。
系统的硬件、软件设计合理,功能完备,运行稳定、可靠。
实验结果表明此系统实现后具有读取方便、显示直观、功能多样、电路简洁、等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。
通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。
通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;
通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。
最终较好的完成了设计,达到了预期的目的,完了最初的设想。
但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些最基本的功能,还有许多不足和可以扩展的地方。
由于LCD1602还有剩余位置可以显示其他字符,我们可以在系统中加入时钟芯片,可以实时显示时间,消除从手机上看时间的麻烦。
也可以加入湿度传感器,实时监测环境湿度并显示,或者也可以加入烟雾传感器、等组成综合系统,使该系统在起到计步器的作用外还可以起到提醒人们适不