跳跃高度测试器设计
2020-03-25,,
,,
(长安大学电子与控制工程学院,陕西 西安 710064)
0 引言
在一些娱乐场合、促销活动或一些趣味比赛中,需要通过对比多个参与者的跳跃高度并通过显示装置作竞技显示,将最终跳跃的结果呈献给观众,从而使活动进行得更加有趣味性或使比赛进行得更加快捷方便。人们对能够检测、记录并显示高度的简易电子检测装置的有一定需求。因此,对这一课题进行研究和实践,旨在提供一种便利的测试跳跃高度的方法,以供使用。
1 总体方案设计
本文数据采集部分采用的是增强型的51芯片C8051F020[1-2],该款处理器能够完全兼容51指令,功耗较低,处理速度比较快,比较适合作为加速度传感器数据采集部分的处理器,采用的传感器是ADXL345。最终所测高度的数据显示部分由于对CPU处理速度没有特别的要求,只需要将采集模块计算好的高度值通过无线模块接收(采用PTR8000),然后显示在液晶屏幕上即可。由于普通51单片机成本较低,操作方便,所以显示模块采用的是AT89C51[3]单片机。跳跃高度测试器系统总体结构如图1所示。
图1 系统总体结构
C8051F020采集传感器的值并处理,通过无线传输模块,将数据传送给AT89C51单片机,然后通过液晶屏将数据显示出来。
2 系统软件设计
2.1 系统软件的模块结构
跳跃高度测试器系统软件采用模块化的程序设计,使用C语言编程完成,它移植性好,易于操作。跳跃高度检测系统的软件主要由主程序和许多个功能子模块组成,每个模块又由实现所需要的一些功能的主要程序和其他的一些接口函数组合而成。系统上电,开始初始化后,等待按键状态,确定进入加速度检测模块,并为相应子程序各变量赋值;进入检测模块后,为子程序各变量赋值,加速度传感器不断检测加速度的变化,并把相应值存入寄存器,CPU读取寄存器内容得到加速度值,然后进入下一模块[4];在数据处理模块,先为子程序各变量赋值,然后对得到的加速度进行积分得到被测对象的速度,对速度积分得到位移,进而得到跳跃高度值;给无线模块各变量赋值,通过无线通讯模块把高度值从高度检测板发给另一个CPU(显示板);这时等待按键确定本次跳高结束并进入显示模块,给显示模块各变量赋值然后在LCD1602液晶上显示出最终高度。高度检测板软件的模块结构如图2所示。
图2 高度检测板软件的模块结构
高度检测板软件包含了4个模块,分别是数据采集模块、数据处理模块、数据存储模块和数据发送模块。其中,数据采集模块对加速度传感器的值进行采集;数据处理模块对采集到的加速度值进行数学计算得到高度值;数据存储模块对高度值进行存储;数据发送模块主要是把高度值发给另一个处理器。
数据接收板软件的模块结构如图3所示。数据接收板软件包含3个模块,分别为数据接收模块、液晶显示模块和键盘控制模块。其中,数据接收模块接收发送模块传送的值;液晶显示模块显示接收到的高度值;键盘控制模块负责开始采集数据和显示的控制。
图3 数据接收板软件的模块结构
2.2 系统软件总流程设计
高度检测板的主流程如图4所示。系统一开始上电就对加速度传感器和无线通讯模块进行初始化,主要涉及一些寄存器的初始化。初始化完成之后,加速度传感器就开始检测加速度值的变化,通过编写程序读取加速度值,传送给CPU,CPU收到数据后开始对数据作计算,算出高度值,通过对无线模块的编程,将高度值发出,送给数据接收板[5]。
图4 高度检测板主流程
数据接收板的主流程如图5所示。首先,对软件接收板进行初始化,数据接收板上电后同样先进行初始化。然后无线接收模块不断检测相同频段的载波,如果地址匹配成功,则开始接收数据检测板发送过来的数据,接收完成之后,就通过键盘输入控制数据的显示,当检测到按键按下时就通过液晶显示模块对接收到的数据进行显示。
图5 数据接收板主流程
3 系统软件功能实现
3.1 数据采集模块
数据采集采用的传感器是ADXL345,通过IIC总线读取数据,然后把读取的各位数字组合成加速度值。ADXL345是一个三轴的加速度计,放置的时候要特别注意一定要沿着传感器上的3个轴向,z轴一定要和竖直平面垂直,按照这个传感器的自身特性当传感器不动的时候,x轴和y轴的输出应该是0,z轴的输出应该是当地的重力加速度,大约为9.8 m/s2。一旦传感器运动起来,3个轴向上的加速度值就会被采集出来。这款传感器的供电电压为3~3.6 V,超出了这个范围可能对传感器造成比较大的损害,甚至烧毁,影响使用[6-7]。
传感器一共有14个引脚,包含2个中断、电源、地,以及IIC和SPI的硬件接口。2个中断都是默认高电平有效,不过也可以通过对寄存器值的更改来改变这一默认方式。它自带的偏移校准可以提高测量的精度,可靠性比较高。另外在安装加速度传感器的时候,一定要保证传感器上的z轴是和焊接板平面垂直的,并且一定要牢固地固定在板子上,否则一些震动会影响测量的结果,对测量造成很大的干扰。
加速度采集流程如图6所示。
图6 加速度采集模块流程
系统上电后先要对加速度传感器进行初始化,而初始化主要是向相应的寄存器地址写入一些数值,从而实现对加速度传感器的一些控制主机发送起始信号(需要发送设备地址和存储地址),发完地址之后进行数据的读取(通过IIC协议完成数据传输),数据读到之后要进行合成,合成结束,就发出结束信号,完成1次数据传输。
当完成了加速度传感器的初始化之后,就要开始对加速度值进行采集。本文采用IIC协议将加速度传感器的值传送给微控制器。一开始,主机发送起始信号,发完之后发送从机地址和写信号,最后发送存储单元的地址,发完之后,再发送1次起始信号,接着发送从机地址和读信号,这时可以读相应地址的数据并存入BUF中,直到数据读完。最后把读到的一位一位的数据进行合成,得到加速度值。得到加速度值之后,主机就会发送停止的信号,则1次数据采集完成。然后不断地循环重复此过程,从而能够得到实时变化的加速度值,供用户做数据处理。
3.2 数据处理模块
该模快主要是通过对加速度值的计算处理,从而得到一个高度值。本课题的数据处理的思路是对所采集到的加速度值进行积分,再对加速度进行积分从而得到位移的值[8]。数据处理流程如图7所示。
图7 数据处理模块流程
3.3 数据收发模块流程
对于发送模块来说,系统上电之后开始进行初始化。接着进行模块配置,设置相应的寄存器,把配置的信息通过SPI协议写入PTR8000这个无线模块。之后开始启动数据传输进行数据的传送,如果数据传送完毕就将TRX_CE清除,然后进入待机模式。数据发送模块流程如图8所示。
图8 数据发送模块流程
数据接收模块流程如图9所示。对于接收模块来说,需要先置位TRX_CE,清除TX_EN,选择接收模式,进行一段简短的延时,再开始检测载波,如果检测到了载波信号,就将载波检测位置位。接着开始检测有效地址, 如果匹配的话将地址匹配位置位。这时开始接收数据,当检测到了有效的数据包,就将数据准备就绪位置位,并将TRX_CE清除,进入待机模式。此时从机的CPU开始从PTR8000这一无线模块通过SPI协议读取接收到的数据,读完之后将AM和DR位清除[9]。
图9 数据接收模块流程
3.4 显示模块流程
显示模块的流程如图10所示。首先,要对LCD1602液晶屏进行初始化,初始化包括显示模式设置及显示光标设置,初始化之后要对LCD1602进行清屏操作;然后,设置第1行的字符起始地址和显示方式,并判断是否显示完,如果显示完成,则对第2行进行同样的操作[10];最后,所有的内容都显示完以后,则返回主程序。
图10 显示模块流程
LCD1602有读取相应寄存器的指令,可以保存当前显示的内容,达到备份的目的。
RS用来确定是写要显示的数据,还是写光标显示、光标闪烁、移屏操作或者显示位置等命令。R/W为低电平时,则设置为写模式。写有效之后,将数据或指令送达数据线也即P0口,此时使能端需要1个高电平发出使能信号,使数据到达液晶控制器,至此完成写操作。时序图中的延时,可以根据芯片手册进行查询,确定具体的延时时间,从而完成相应程序的编写。
3.5 按键模块
按键是常用的单片机输入设备,包括一些数字键、功能键和字母键。用户可以通过键盘设置向单片机输入一些指令或控制命令,实现人机交互。通过键盘按键的输入,操作者可以通过键值的输入将控制作用传递给系统,这样一来,就可以达到对系统进行控制的要求,使系统可以按照用户所期望的状态工作。
对于按键处理部分采用的是查询方式,CPU通过调用键盘扫锚子程序,查询按键按下与否,进而进行相关操作。按键处理流程如图11所示。
图11 按键处理流程
图11中,键盘扫描其实就是检测是否有键按下,每个按键实际上相当于1个开关量的输入装置。当按键断开或者闭合时,按键的状态就会产生电压信号,通过所读得的电压信号,即可判断按键所处的状态是断开还是闭合。
按键在触发过程总会出现机械抖动,所以在扫描键盘之后需要进行消抖处理。经过按键确认和松手确认程序之后,就进入到其他程序,完成按键所要实现的功能。
4 实验结果
实验测量结果如表1所示。每组实验测量10次,取平均值作为实测高度(精确到0.1 cm),参考高度分别取20.0 cm,40.0 cm,60.0 cm,80.0 cm,结果表明该设计有一定实用性,参考高度较高时较为准确,后续研究可以考虑进一步缩小误差。
表1 实验结果
5 结束语
分析了跳跃高度测试器的总体设计方案,包括硬件方案和软件方案,其中硬件部分对主要的CPU作了简要的介绍。软件部分对整体要实现的功能和工作的流程进行介绍,并进行了各功能模块的划分。各模块程序采用C语言进行编写,开发工具用Keil 4,并且利用仿真器对程序进行单步调试,从而快速找出程序中存在的问题,并加以解决,方便快捷。采用模块化编程,可移植性好,系统较稳定,有一定实用性。