APP下载

超声测距模块HC-SR04的超声波测距仪设计

2011-06-25李军申俊泽

单片机与嵌入式系统应用 2011年10期
关键词:驱动程序测距应用程序

李军,申俊泽

(东北石油大学 计算机与信息技术学院 嵌入式实验室,大庆 163318)

引 言

随着国民经济的迅速发展,超声波在机械制造、石油化工、航空航天等领域发挥着越来越重要的作用。

超声波测距作为一种非接触式距离测量方法,具有不受外界光及电磁场等因素影响的优点,实现电路简单,成本低;同时,还具有易于定向发射、方向性好、对人体伤害小等特点。上述优势使得与超声波测距领域相关的仪器设备在数据处理、检测性能和工程设计系统化等方面有了更大的发展空间。

1 总体设计

本系统利用三星公司的S3C2410及超声波测距模块HC-SR04构造了一个嵌入式系统平台。整个系统由3部分组成:底层硬件平台、系统软件层和应用软件层。系统硬件结构如图1所示。

图1 系统硬件结构图

超声波测距仪的软件层由驱动及应用程序组成。其中,应用程序包括数据采集程序及图形用户界面;而驱动程序的设计是本系统的重点。

2 硬件设计

2.1 S3C2410处理器

S3C2410处理器是三星公司的一款基于ARM920T内核的16/32位RISC嵌入式微处理器。ARM920T由ARM9TDMI、存储管理单元(MMU)和高速缓存3部分组成,主频可达200MHz;外围硬件资源包括64MB SDRAM、64MB NAND Flash、2个五线异步串行口、1个10M网口及用户扩展口等。本系统利用开发板提供的GPIO扩展资源,实现对超声波测距模块HC-SR04的数据采集及控制,同时在LCD屏上显示精确的距离数值。

2.2 超声波测距模块

超声波测距是借助于超声脉冲回波渡越时间法来实现的。设超声波脉冲由传感器发出到接收所经历的时间为t,超声波在空气中的传播速度为c,则从传感器到目标物体的距离D可用下式求出:

超声波测距模块HC-SR04可提供2~400cm的非接触式距离感测功能,测距精度可高达3mm。模块包括超声波发器、接收器与控制电路。图2为HC-SR04的引脚图。

各引脚功能如下:

①VCC是5V电源,GND为地。

②TRIG是触发测距引脚,给至少10μs的高电平信号。

③ECHO是信号接收引脚。有信号返回时,通过I/O口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

图2 HC-SR04引脚图

3 软件设计

在软件开发之前,首先要完成软件开发环境的搭建,接下来最重要的工作就是设备驱动程序的开发。当软件系统底层的程序完成之后,就可以着手上层的与设备无关的应用程序。最后就是系统的图形界面的设计,并将应用程序烧写到S3C2410开发板上。

3.1 系统开发环境的建立

(1)交叉编译环境的建立

交叉编译是嵌入式开发过程中的一项重要技术,是编译技术发展过程中的一个重要分支。本系统采用的交叉编译器是cross-3.3.2.tar.bz2。安装此编译器只需要在/usr/local目录下建一个arm的目录,将cross-3.3.2.tar.bz2拷贝到arm目录下,然后进入该目录进行解压,并设置相应的环境变量。

(2)Qt/Embedded和Qtopia开发环境的建立

建立Qt/Embedded和Qtopia开发环境的具体步骤如下:首先,下载tmake、Qt/Embedded、Qtopia的源码包,注意版本之间的向后兼容性;其次,把这3个源码包分别解压到不同的目录下;最后,编辑/etc/bashrc文件,设置环境变量,并利用交叉编译器编译Qt/Embedded。

3.2 超声波测距模块程序设计

超声波测距模块程序由驱动及应用程序组成。应用程序传送给超声波测距模块驱动控制参数,具体测距由驱动程序完成。在用户态应用程序中读取超声波设备,可获得所需的信息。

Linux系统访问设备就像访问文件一样。字符设备使用struct file_operation结构来定义设备的各种操作集合,结构中的各个函数分别响应同名或类似名称的系统调用。它是操作外设的函数接口,又称设备驱动程序接口。编写字符设备驱动程序,主要实现struct file_operation结构中的各个函数。当然,驱动程序并不是要实现所有的这些函数,可以根据实际设备需要实现必要的函数。超声波传感器设备驱动中定义的数据结构为:

函数gpio_init用于初始化GPIO设备。函数gpio_setup_cdev创建并注册字符设备,动态分配设备号。函数gpio_open用于打开并配置为输入口。函数gpio_read用于读取超声波测距模块输出的距离数据。函数gpio_release用于关闭GPIO设备。

超声波测距系统的应用程序主要由测距程序、超声波发生子程序、超声波接收程序及显示子程序组成。测距程序流程如图3所示。

图3 测距程序流程

3.3 图形界面设计及应用程序烧写

图形用户界面(GUI)是系统的一个至关重要的方面,用户通过GUI与系统进行交互,所以GUI应该易于使用并且可靠。本系统图形界面的主要功能有:调用相应驱动程序,显示距离,处理触摸屏点击事件等。

将应用程序烧写到S3C2410开发板。首先将驱动程序的可执行文件复制到根文件系统的/usr目录下;其次把Qt\Embedded二进制库和应用程序的二进制代码复制到某个目录下;然后把这个目录制成某种类型的根文件系统;最后把这个根文件系统烧写到S3C2410的Flash存储器上。这个过程可能需要一些制作根文件系统的工具,如mkcramfs。

4 超声波测距仪数据测量结果

在系统设计并实现后,为了验证测距仪的准确性与稳定性,测试了12组数据,并对测距结果与实际距离进行了比较。距离测试结果如表1所列。

表1 距离测试结果 cm

由实验数据可知,该超声波测距器的盲区(超声波传感器检测到墙壁的最近距离)为2cm;而最远测量距离为400cm。电路程序设计时,为了避免超声波从发射器直接传送到接收器引起的直射波触发,延时约为0.1ms,所以超声波测距器会有一个最小可测距离。而由于超声波在传播过程中会产生衰减且发射功率有限,导致远距离回波很难检测到,所以会有一个最远测量距离。另外,通过温度补偿可以提高测量精度。

5 结 论

利用超声波测距原理,系统在S3C2410+Linux的平台上,实现了自动测距和实时显示功能。该系统所有运算、处理、显示都实现数字化;操作简单,使用方便,测量速度快、准确,结果显示直观;体积小,携带方便,适用于各种水文液位测量、障碍物的识别以及车辆自动导航等领域,具有良好的应用前景。

[1]石秀民.嵌入式系统原理与应用[M].北京:北京航空航天大学出版社,2007.

[2]王宜怀.嵌入式技术基础与实践[M].北京:清华大学出版社,2009.

[3]优龙科技发展公司.YLP2410使用手册,2007.

[4]宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2008.

[5]欧文盛.ARM嵌入式Linux应用实例开发[M].北京:中国电力出版社,2008.

[6]Xteam(中国)软件技术有限公司.Qt程序设计[M].北京:清华大学出版社,2002.

猜你喜欢

驱动程序测距应用程序
类星体的精准测距
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
计算机硬件设备驱动程序分析
浅谈超声波测距
基于PSOC超声测距系统设计
相对差分单项测距△DOR
基于MPC8280的CPU单元与内部总线驱动程序设计
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序