基于单片机的超声波测距系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的超声波测距系统设计
[摘要]超声波技术是一项应用十分广泛的实用的非接触式技术。它具有传播距离远、聚向性能好、能源在传播过程中消耗缓慢等优点,而超声波测距更是借助了超声波的上述优点外还有如原理简单易懂、相关配件价格实惠等优势而被大量推崇。文章首先介绍超声波测距的测距原理和系统构架,然后分别对制作超声波测距的硬件电路和软件编程思路进行阐述,最后介绍调试超声波测距仪中的一些测试结果。
[关键词]单片机;超声波;测距系统
众所周知,城市轨道交通的检修为了不打扰正常的运营通常放在半夜进行,而在此过程中如要进行一些非接触式的检测项目时,往往由于现场的光线昏暗或是检测条件有限,通常是由检修的老员工通过自己多年的经验来主观判断是否存在误差。这样凭自己的主观工作经验而下的判断无疑是给列车的安全出行埋下了安全隐患。超声波测距技术正是一项非接触式的测距技术,它具有传播距离远、能量消耗少、聚向性能佳等优势,特别适用于传播媒介是空气的应用环境之中。由于在空气中波速较慢,因此容易检测出反射信号的信息,具有很强的分辨能力。同时,它能做到实时控制和检测可靠优势而使其具有很高的工业实用价值,因此它被广泛地应用,而且价格相对低廉,不会给企业和个人使用增加太多的成本负担。一、超声波测距的工作原理
目前超声波的测距原理主要有三种方式:分别是渡越时间检测
法、相位检测法和声波幅值检测法[1] 。相位检测法虽然通过相位之间的角度计算能够得出比较高的精确度[2],但是计算方式比较复杂,而且相关的硬件设备价格较贵;而采用声波幅值检测方法的话,主要的瓶颈在于它容易受到反射波的干扰,而造成灵敏性和精确度不高[3]。综合比较下来,渡越时间检测法的检测原理简单易懂同时反射波也不会对其造成干扰而使其灵敏度和精确度下降,最终笔者选择的超声波测距原理是渡越时间检测法。
渡越时间检测法的原理就是:检测从超声波发射器发出的超声波,经气体介质的传播到接收器的时间,即渡越时间[4]。而用在传媒介质为空气中声波的速度乘以该渡越时间就可以得出我声波总
的传播距离。由于该距离是发射到发射面后再有接收端口接收到的,因此实际的距离则是之前声波乘以渡越时间的一半。而对于时间的计算则是通过51单片机的内部定时器来实现。
测距的具体过程如下:通过超声波发射装置向某一方向或是某一反射面发射超声波,同时激发单片机内部的定时器开始计时。在超声波发射后遇到障碍物则被反射回来,之后被超声波的接收端所接收到;与此同时,单片机的内部定时器停止计时。那么在单片机的内部定时器中的这段时间就是渡越时间,之后将这段时间送给单片机进行读取并计算,最后单片机将最终的结果显示到数码管上。二、超声波测距系统的组成
整个测距系统的话主要是由c51单片机作为核心的控制系统以及发射模块、接收模块、报警模块、显示模块、电源模块等组成。具
体如图1所示:
在这其中单片机作为主要的核心,它的主要的功能将会是为发射端口提供40khz的高频方波信号,经过换能器和驱动电路后将超声波发射出去。
而接收电路接收到反射波后,向单片机发送一个低电平的信号。单片机接收来自接收模块的低电平信号后停止计时并读取出内部定时器的数值,同时进行相应的计算,对最后的结果进行处理后使其能显示在3位的共阳数码管上。而如果当测距的距离超出最大的测距X围时,单片机也能及时触发相应的报警模块进行蜂鸣报警。其他例如显示模块、报警模块、发射模块等将在测距硬件部分中介绍。
三、超声波测距系统的硬件模块组成
(一)发射电路模块
发射电路主要是由超声波发送头、超声波脉冲变压器、电阻、三极管组成。其中脉冲变压器的主要功能就是对超声波发送头处的电压进行升压处理。这样处理的好处就是能够有效地提高发送的功率,使得我的超声波发射的距离能够大大地提高。
发送的过程就是我单片机通过编程使其产生了40khz的高频信号,然后该信号通过变压器后加载到了发送头上,从而驱动了超声波的发送头发送出高频超声波。
(二)接收电路模块
接收电路主要是由放大电路、检波电路、比较整型电路所构成。
放大电路主要是由两组三极管所构成,而其他2个电路则是由三极管、电容和检波二极管所组成。
通常情况下从发射段发射出去的超声波经反射回来后会有一定程度的衰减。所以接收电路首先要做的就是对接收到的信号进行放大处理。通过两组的三级管构成的放大电路进行放大,每组放大倍数定为70倍。之后通过由in4148构成的检波电路和电容组成的整型电路后,输出的直流信号能被单片机有效地读取到。采用这种电路设计方法可以使得接收性能稳定且结构简单。
(三)显示电路
显示电路主要是由3位共阳级的数码管为主体所构成的。由于笔者所采用的是动态扫描的读取方式,因此还加上了s9012三极管来驱动数码管的工作。
(四)报警电路
报警电路的主要是由蜂鸣器、电阻、三极管所组成。在其中设定当在进行测量中测量的距离值小于预先设好的值时,蜂鸣器将会被触发,并给予报警信号。一旦高于设定的值时,将会停止报警。
三、软件编程设计与思路
超声波测距仪的软件编程主要是可以将软件执行的主要过程分为几个模块来思考。将其分为主程序模块、超声波输出模块、超声波接收模块以及显示模块。主程序将作为整个程序的核心,根据相应的需要来调用其他的相应子模块。同时在程序的执行过程中,由于该软件程序既涉及到有时间要求较高的控制过程(比如对于单片
机内部定时器的开关的触发)又涉及到一系列复杂的计算问题(比如数值类型的转换和计算等),因此综合比较分析下来,使用单片机的c51语言编程比汇编语句更加有效。
(一)主程序模块
主程序模块首先进行的是整个系统的环境初始化,对所用的变量恢复原始设置。之后便是对定时器开始进行一定的配置。其值为0时代表其执行计数功能,而其值为1则代表执行定时功能。过了初始化这个步骤后,当定时器标定位是0时进行的就是调用超声波输出模块,使得40khz的方波信号从超声波发射头中发射出去,同时启动单片机的内部定时器,开始计时。
随后紧接着一步就是进行判断,判断测距的距离是否在标定的X 围内,如果不在则调用相应的报警功能。如果在相应的标定距离则进入while循环语句中,调用显示模块,用来不间断显示测距的结果值。流程图如图2所示:
(二)超声波输出及接收子程序设计思路
该子程序模块的调用条件即是当之前单片机内部定时器的标定位为1时被触发。此时程序执行的就是由单片机发送4个一定频率的超声脉冲加载到超声波发送头上,之后立即激发定时器开始计时。
之后将要执行一个延时子程序。这个延时子程序的作用就是防止当我的超声波从发射头中发射出去时直接就被我的接收部分的接收头收到。这种由引起的直射波触发如果不进行延时处理,将会对