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