1、基于51单片机的超声波测距仪的设计完成人:尹雷组长,电信092;张洋电信092;郑学贵电信092;傅长军电信092;指导老师:耿磊获奖情况:二等奖:由于超声波指向性强,能量消耗慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。本作品利用51单片机实现了利用超声波测量距离的目的。本系统主要由单片机模块、显示模块、超声波发送模块、超声波接受模块等四局部组成,单片机模块采用的是STC89C52,超声波产生电路由单片机直接产生,通过功率放大电路加到超声波换能器的发送端,超声波接受电路采用红外芯片CX20236A接受回波。通过三位数码管能清晰稳定的显示所测得距离。经过反复测试 本系统在2M的测量
2、距离内所产生的误差小于1CM,所测得范围为18CM450CM左右,能较好的完成测量任务。本作品本钱低,可抗性高,测得的距离能够清晰稳定的显示在三维数码管上,且小巧轻便,有良好的应用前景。关键词:STC89C52单片机;超声波测距;超声波换能器。1 作品功能及总体方案1.1 功能描述随着社会的开展,传统的测距方法在很多场合已无法满足人们的需求,例如在井深、液位、管道长度测量等场合,传统的测距方法根本无法完成测量任务。还有在很多要求实时测距的情况下,传统的测距方法也不能很好完成测量任务,于是一种新的测距方法非接触测距应运而生。整体的设计要求主要体现在结构和功能两个方面。结构要求:(1)该系统由一个
3、接收显示终端和超声波发送与接收电路组成;(2)非接触测量距目标物体的长度。功能要求:能到达短距离测量的目的,保证测量的精度尽量小,测量的结果能清晰稳定的显示在数码管上。并能连续测量,当距离变化时 能够敏锐的反响,到达距离变显示变的效果。1.2 系统组成及工作过程2 硬件设计2.1 硬件电路总体设计接收显示终端以单片机为核心连接数码管,超声波发送与接收端以单片机为核心分别连接功率放大电路与超声波接收电路。2.2单片机模块电路设计单片机采用STC89C52或其兼容系列。系统采用12MHZ高精度的晶振,以获得较稳定的时钟频率,并减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz方波信
4、号,利用外中断0口监测超声波接收电路输出的返回信号。单片机的最小系统如图2所示。图2 51单片机的最小系统2.3 接收显示终端电路显示电路采用简单实用的 4位共阳 LED数码管,位选为P20P22,使用 9012三极管作为位驱动。本电路的显示方式属于动态方式, 各显示位段引脚 a dp并联在一起, 共用直接连到单片机P1端。可以稳定清晰显示测量结果。电路图如下。图3 数码管电路2.4超声波发送电路发射电路主要由反向器74LS04和超声波换能器构成,单片机P1.0端口输出的40kHz方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推挽
5、形式将方波信号加到超声波换能器两端可以提高超声波的发射速度。输出端采用两个反向器并联,用以提高驱动能力。两个上拉电阻一方面可以提高反向器74LS04输出高电平的驱动能力;另一方面可以增加超声波换能器的阻尼效果,以缩短其自由振荡的时间。 电路图如下: 2.5超声波接受电路集成电路CX20236A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路,实验证明,用CX20236A接收超声波具有很高的灵敏度和较强的抗干扰能力。接收的回波直接连接到INT0端口,通过低电平来触发单片机的外部
6、中断,并有单片机计算数据,送达数码管显示,从而实现了测距的目的。4 软件设计4.1 软件总体设计超声波测距器的软件设计主要由主程序、超声波程序发生子程序、超声波接收中断程序、超声波溢出显示程序及测量正常显示子程序组成。由于C语言程序有利于实现较复杂的算法,又可以通过软件延时的调试来精确延时。而超声波测距器的程序既有较复杂的计算计算距离时,又要求精确计算程序运行时间超声波测距时,所以控制程序可采用C语言。下面说明超声波测距器的算法。 超声波测距器的算法设计: 距离计算公式:d=s/2=(vt)/2 其中d是被测物与测距器的距离;s是超声波的来回路程,v是超声波在当前温度下的速度,t是发送和接收超
7、声波所经历的时间。4.2 主程序设计主程序首先要对系统环境初始化,设置定时器工作模式为16位定时、计数器模式,置位总中断允许位EA并对显示端口P0和P2清0;然后调用超声波发生子程序送出一个超声波脉冲。为了防止超声波从发射器直接传送到接收器引起的直射波触发,需要延迟0.1ms后才翻开外中断0以免接收器直接接收到发送端的发送波,接收返回的超声波信号。由于采用12MHZ晶振,计数器每记一个数就是1us,取20时的超声波传输速度v=344m/s,那么d=(vt)/2=344t/2=(172T0/106)m=(172T0 /10000)cm其中T0为中断T0的计数值。测出距离后,结果以十进制BCD码方
8、式送往LED显示约0.5S,然后再发出超声波脉冲重复测量。主程序流程图如下: 4.3显示模块程序设计显示模块由于要实现三位数码管的动态显示,所以采用动态扫描的方式,由于测量的数据是实时变化的,要求每次显示的时间为1s左右,所以每次显示都在一个循环里面实现。4.4外部中断模块程序设计当单片机接收到回波的时候,触发外部中断的发生,此时应首先关闭定时器,然后在对定时器中的数据进行处理,通过定时器所记得数计算出距离目标物体的距离。并把数据进行别离,分别赋给数码管的三个端。最后将定时器清零,以便下一次继续测量。4.5定时器中断模块程序设计 由于主程序执行完后等在延时的过程中,此时假设距离目标物体太远,超
9、声波能量耗尽不能返回至单片机,那么触发定时器中断,此时赋给数码管三个为选为F,假设中断发生,那么数码管显示“FFF,表示距离太长,然后将定时器关闭。等待下一次测量的到来。5 实验及结果 超声波测距系统要求能在短距离内稳定、清晰、准确的显示测量结果。我们在屡次测量的情况下得出了如下表中的数据。实验证明,本系统在2米得范围内,最大误差只有1厘米,可以很好的完成测量的任务。并且在4米得范围内误差能控制在2cm以内,根本上可以到达测量要求。单位:cm实际距离58152540506070显示距离1818182540506070实际距离100130150180200250300350显示距离100130150181201251302352图示为距离目标为1.08M的情况下测量。以下列图为测量距离时的俯视图 左面与探头平行的刻度为1.07M 测量准确。附录1 实物照片超声波测距仪外观附录2 硬件电路图单片机最小体统局部电路图数码管显示电路超声波发送局部电路图超声波接收局部电路图