资源描述
毕业设计用纸超声波测距仪毕业论文中文摘要电子测距仪要求测量范围在50cm500cm,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。如测距仪和物位测量仪等都可以通过超声波来实现。超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于液位、井深、管道长度的测量等场合。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。因此在移动机器人的研制上也得到了广泛的应用。我的超声波测距仪设计采用74hc04反相器和CX20106搭接电路实现了超声波的发射与接收。采用AT89C51单片机为该测距仪的控制核心,此设计易于调试,成本低廉,具有很强的实用价值和良好的市场前景。 关键词:超声波传感器,单片机,测距仪ABSTRACTElectronic distance measurement instrument for measurement in the range of 20cm-2.5m, precision 1cm, with the measurement of the measured object without direct contact, can clearly demonstrate the stability of the measurement results. Because of the strong point of ultrasonic energy consumption, slow, medium of communication in the longer distance, which are often used for ultrasonic distance measurement. Such as the range finder and level measurement and so on can be achieved by ultrasound. Ultrasonic ranging, can be applied to car parking, construction sites and some industrial site location monitoring, and can also be used for liquid level, depth, pipe length measurement occasions. Use of ultrasonic testing is often more rapid, convenient, simple, easy to achieve real-time control, and measurement accuracy can meet the practical requirements of industry. In the mobile robot has been developed on a wide range of applications. My car anti-collision anti-theft alarm system design using 74hc04inverter and CX20106lap circuit to realize the ultrasonic transmitter and receiver. Using AT89C51 SCM as the control core of the range finder, this design easy debugging, low cost, has the very strong practical value and good market prospects.Key words: ultrasonic sensor, single chip microcomputer, range finder,目录第一章 绪论- 1 -1.1 设计项目概述- 1 -1.2 设计要求- 1 -1.3 超声波测距原理- 1 -第二章 超声波测距仪的内容及意义- 3 -2.1 超声波测距仪的意义- 3 -2.2超声波测距仪的内容- 3 -第三章 系统方案选择- 3 -3.1 方案一- 4 -3.2 方案二- 4 -3.3 方案确定- 4 -第四章 系统硬件电路设计- 4 -4.1单片机模块- 4 -4.1.1 AT89C51标准功能- 5 -4.1.2管脚说明- 6 -4.2超声波谐振频率调理电路模块- 7 -4.3超声波回路接收处理电路模块- 8 -4.4数码管显示模块- 8 -第五章 系统软件程序设计- 9 -5.1 超声波测距程序设计- 9 -5.2 超声波测距流程图- 10 -第六章 系统软硬件调试- 10 -6.1 硬件调试- 10 -6.2 软件调试- 11 -6.3 测试结果- 11 -第七章 调试中遇到的问题- 11 -7.1 发射接收时间对测量精度的影响分析- 11 -7.2 当地声速对测量精度的影响分析- 12 -总 结- 13 -参考文献- 14 -附录 A- 0 -附录 B- 0 -致 谢- 6 -第一章 绪论 声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射,反射波称为回声。假如声波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测量得到,那么就可以计算出从声波到目标的距离。这就是本系统的防撞报警原理。这里声波传播的介质为空气,采用不可见的超声波。 接收回路中测得的超声波信号共有两个波束,第一个波束位余波信号,即超声波接收头在发射头发射信号(一组 40KHz 的脉冲)后,马上就接收到了超声波信号,并持续一段时间。另一个波束为有效信号,即经过被测物表面反射的回波信号。 超声波测距时,需要测的是开始发射到接收到信号的时间差,需要检测的有效信号为反射物反射的回波信号,故要尽量避免检测到余波信号,这也是超声波检测中存在最小测量盲区的主要原因。 软件控制脉冲发射、检测回波信号:程序采用的是脉冲测量法,由单片机引脚产生40KHz 的脉冲信号,每次测量发射的脉冲数至少要 12个完整的 40KHz 脉冲。同时发射信号前打开计数器,进行计时;等计时到达一定值后再开启检测回波信号,以避免余波信号的干扰。采用外部中断对回波信号进行检测(回波信号送到单片机的为一序列方波脉冲)。接收到回波信号后,马上读取计数器中的数值,此数据即为需要测量的时间差数据。经过处理后得到这一次测距值。假设室温下声波在空气中的传播速度是 335.5m/s,测量得到的声波从声源到达目标然后返回声源的时间是 t 秒,则距离 d 可以由公式(1-1)计算:d=33550(cm/s)*t(s),因为声波经过的距离是声源与目标之间距离的两倍,声源与目标之间的距离应该是 d/2。1.1 设计项目概述由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波被广泛应用于距离的测量。利用超声波检测往往比较迅速、方便,计算简单,已做到实时控制,并且在测量精度方面能达到工业实用要求,测量时与被测物体无直接接触等,这些优点使其广泛应用于倒车雷达、建筑施工工地以及一些工业现场,例如液位测量、精深测量等场合。目前国内一般实用专用集成电路设计超声波测距器,但是成本高,没有显示,操作不便,操作使用不方便,创展不灵活。基于单片机的超声波测距易克服了上述缺点,应用非常广泛。1.2 设计要求设计一个超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。具体要求如下:(1)测量范围在0.5-1.11m,测量精度1cm。(2)测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。1.3 超声波测距原理采用单片机作为主控制器,用LED数码管作为显示仪器来显示所测的距离。由单片机发射和接受超声波信号,再经过单片机计算输出显示被测距离,即超声波发生器T在某一时刻发出一段超声波信号,当超声波遇到障碍物(被测物体)后返回被接收器R接受。测距的原理如图1-1。RTT2T1 图1-1 测距的原理这样只要计算出发射超声波和接收到超声波之间的时间,就可以计算出超声发射器与反射物体的距离。距离计算公式为: 其中:d为被测物与测距器的距离 s为声速的来回路程 c为声速 t为声波来回所用的时间超声波是指频率高于20KHZ的机械波。为了以超声波作为检测手段,必须产生超声波和接收超声波,完成这种功能的装置就是超声波传感器,习惯称之为超声波换能器或超声波探头。超声波传感器有发送器和接收器两种,但是一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器利用压电效应的原理将超声波和电能相互转换,即在发射超声波的时候,将电能转换为超声波,而在收到回波的时候,则将超声振动转换为电信号。超声波测距的原理一般采用渡越时间法。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的生源与障碍物之间的距离,超声波测距适用于高精度的中长距离测量,因为超声波在标准空气中的传播速度为332.45m/s。单片机使用12MHZ晶振,所以此系统的测量精度理论可以达到毫米级。 单片机显示模块超声波接收器R超声波发生器T电源电路 图1-2 基于单片机的超声波测距器系统框图第二章 超声波测距仪的内容及意义2.1 超声波测距仪的意义 随着现代科技的发展,人们的生活节奏加快,高效的、人性化测距仪和无线系统得到了广泛的应用。当超声波受到尺寸大于其波长的目标物体阻挡时就会发生反射,反射波称为回声。假如声波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测量得到,那么就可以计算出从声波到目标的距离。利用超声波的高可靠性和无接触性,在现在的高难度的应用和普遍的多次快速应用场合已经得到了广泛的应用。应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于液位、井深、管道长度的测量等场合,无线系统常用于报警器设防解防、车库门遥控、摩托车、汽车的防盗报警等,遥控模块价格低廉,发射模块和接收模块体积小巧、外观精致,耗电省,工作稳定可靠。本设计将超声波系统与无线系统结合通过单片机处理,制作出简单、稳定、高实用性的汽车防撞防盗报警器。2.2超声波测距仪的内容 发射器发出的超声波以速度在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由s=vt/2即可算出被测物体的距离。由于超声波也是一种声波,其声速v与温度有关,下表1列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。表2-1 超声波波速与温度的关系表温度()-30-20-100102030100声速(ms)313319325323338344349386具体控制方法如图1所示,单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED/LCD显示。超声波发射器放大电路超声波接收器放大电路锁相环检波电路单片机控制显示器图2-1 超声波测距原理框图第三章 系统方案选择3.1 方案一系统包括超声波谐振频率调理电路、超声波回波接收处理电路、LED数码显示模组、单片机及电源四部分。超声波测距仪主要以STC单片机为控制核心,其发射器是利用压电晶体的谐振带动周围空气振动来工作的.超声波发射器向某一方向发射超声波,在发射的同时开始计时 ,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器接收到反射波就立即停止计时。一般情况下,超声波在空气中的传播速度为340m/s,根据计时器记录的时间t ,就可以计算出发射点距障碍物的距离 s,即s=340t/2, 这就是常用的时差法测距。在测距计数电路设计中,采用了相关计数法,其主要原理是:测量时单片机系统先给发射电路提供脉冲信号,单片机计数器处于等待状态,不计数;当信号发射一段时间后,由单片机发出信号使系统关闭发射信号,计数器开始计数,实现起始时的同步;当接收信号的最后一个脉冲到来后,计数器停止计数。显示模块是一个8位段数码显示的LED;测量结果的显示用到四位数字段码,电源采用5V的DC直流稳压电源输入,供系统各部分电路使用。优点:可以自己动手操作、科研价值比较高、适用与初学者研究,准确无误。缺点:超生波系统电路纯硬件搭接、性能不是很稳定、精度也要稍低些。3.2 方案二系统包括超声波测距模组、液晶1602显示电路,单片机最小系统及电源五部分组成。超声波测距系统主要由发射部分和接收部分组成,超声波的发射受主控制器控制。超声波换能器谐振在40KHz的频率,模块上带有40KHz方波产生电路。其工作原理与方案一的原理基本相似。在测距计数电路设计中,采用了相关计数法,其主要原理是:测量时单片机系统先给发射电路提供脉冲信号,单片机计数器处于等待状态,不计数;当信号发射一段时间后,由单片机发出信号使系统关闭发射信号,计数器开始计数,实现起始时的同步;当接收信号的最后一个脉冲到来后,计数器停止计数。优点:超生波系统集成度高、性能比较稳定、可控性好、精度较好。缺点:只适用与成品开发、满足不了人们的求知欲望、缺少科研价值。3.3 方案确定由于本次是一次实验性的开发,经过对上述两种方案的分析,如果选择模组就失去了实验的价值,哪怕没有成功,那也是一次很好的经历,所以我选择了方案一。第四章 系统硬件电路设计4.1单片机模块单片机是在集成电路芯片上集成了各种元件的微型计算机,这些元件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时/计数器、中断系统、时钟部件的集成和I/O接口电路。由于单片机具有体积小、价格低、可靠性高、开发应用方便等特点,因此在现代电子技术和工业领域应用较为广泛,在智能仪表中单片机是应用最多、最活跃的领域之一。在控制领域中,现如今人们更注意计算机的底成本、小体积、运行的可靠性和控制的灵活性。在各类仪器、仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,提高计算机的运算速度,简化仪器仪表的硬件结构,提高其性能价格比。AT89C51单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。在AT89C51单片机内部有一振荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。电容的作用是稳定频率和快速起振,电容值在5-30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2-12MHz间选择,典型值为12MHz和11.0592MHz。当在AT89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用6MHZ时C取22uF,R取1K。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经过电阻与电源VCC接通而实现的。最小系统如图3-1所示。图4-1 单片机最小系统原理图 4.1.1 AT89C51标准功能(1)与MCS-51单片机产品兼容 (2)8K字节在系统可编程Flash存储器 (3)1000次擦写周期 (4)全静态操作:0Hz33Hz (5)三级加密程序存储器 (6)32个可编程I/O口线 (7)三个16位定时器/计数器 (8)八个中断源 (9)全双工UART串行通道 (10)低功耗空闲和掉电模式 (11)掉电后中断可唤醒 (12)看门狗定时器 (13)双数据指针 (14)掉电标识符 4.1.2管脚说明(1) VCC:电源 (2) GND:地 (3) P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时, P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 (4) P1口:P1 口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输出口使用。作输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX) ,具体如表3.2所示。 在flash编程和校验时,P1口接收低8位地址字节。 表4-1 P1口第二功能引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入) ,时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用) (5) P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4个TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。 在访问外部程序存储器或用16位地址读取外部数据存储器 (例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送 1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 (6) P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。 P3口亦作为AT89C51特殊功能(第二功能)使用,如表3.3所示。 在flash编程和校验时,P3口也接收一些控制信号。 表4-2 P3口第二功能引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断 0)P3.3INT0(外部中断 0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通) P3.7RD(外部数据存储器写选通)(7) RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 (8) ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。 在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。 如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置 “1”,ALE仅在执行 MOVX 或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。 (9) PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。 当 AT89C51从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。 (10) EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。 为了执行内部程序指令,EA应该接VCC。 在flash编程期间,EA也接收12伏VPP电压。 (11) XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 (12) XTAL2:振荡器反相放大器的输出端。4.2超声波谐振频率调理电路模块超声波发射电路原理图如图1-7所示。发射电路主要由反相器74ls04和超声波发射换能器T构成,单片机P1.0端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1O、R11一方面可以提高反向器74hc04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。其原理图如图4-2所示。图4-2 超声波谐振频率调理电路 压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。4.3超声波回路接收处理电路模块集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz较为接近,可以利用它制作超声波检测接收电路(如图4)。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。图4-3 超声波检测接收电路4.4数码管显示模块本电路的显示模块主要由一个4位一体的7段LED数码管构成,用于显示测量到的电压值。它是一个共阳极的数码管,每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机的P1口产生的显示段码。S1,S2,S3,S4引脚端为其位选端,用于接收单片机的P2口产生的位选码。本系统采用动态扫描方式。扫描方式是用其接口电路把所有数码管的8个比划段ag和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受I/O线控制。CUP从字段输出口送出字型码时,所有数码管接收到相同的字型码,但究竟是哪个数码管亮,则取决于COM端。COM端与单片机的I/O接口相连接,由单片机输出位位选码到I/O接口,控制何时哪一位数码管被点亮。在轮流点亮数码管的位扫描过程中,每位数码管的点亮时间极为短暂。但由于人的视觉暂留现象,给人的印象就是一组稳定显示的数码。动态方式的优点是十分明显的,即耗电省,在动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。具体原理图如图4-4图4-4 数码管显示模块第五章 系统软件程序设计5.1 超声波测距程序设计超声波测距器软件设计主要由主程序、超声波发射子程序、超声波接收中断程序及显示子程序组成。超声波主程序首先对系统初始化,设置定时器的初值和工作方式,使总中断允许位EA=1,并给显示端口清零。然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延时0.1ms(这也就是测距器会有一个最小可能测距的原因)后,才能打开外中断0接收返回的超声波信号。由于采用12MHZ的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距器之间的距离,设计时取20摄氏度时的声速344m/s,则有:,(其中T0为计数器T0的计数值)。我们知道C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效容易精细计算程序运行的时间,所以控制程序我采用C语言编程。通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12s左右,同时把计数器T0打开进行计时。利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。5.2 超声波测距流程图开始初始化发射按键是否按下发射超声波脉冲停止定时器计时,并且计算出时间,根据时间计算出距离是否有外部中断通过数码管显示出距离结束YNYN图5-1 系统整体流程图第六章 系统软硬件调试6.1 硬件调试 超声波测距仪的制作和调试都比较简单,其中超声波发射和接收采用15的超声波换能器74ls04(T发射)和CX20106A(R接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距48cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容的大小,以获得合适的接收灵敏度和抗干扰能力。在本次设计中,主控模块是非常重要的部分,它不仅是本次设计的核心,在本次硬件调试中也遇到了问题,接上电源的时候,数码管不亮,没有任何显示,于是我做了如下的工作:(1)检查电源是否通电,发现指示灯亮着;(2)编程使P1为低电平,检查到P1输出为低;(3)检查P0口未接上拉电阻,接上数码管发亮了。6.2 软件调试 硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参数和程序,测距仪能测的范围为0.105.0m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。6.3 测试结果 按照设计的硬件电路和软件,做成成品,调试好后,对系统进行测试,测试数据如表6-1所示。表6-1 测距数据实际距离32.634.538.639.045.048.651.260.763.572.9测量距离32.533.237.538.144.247.550.258.962.971.1误 差1111111111实际距离102.6108.1130.5142.2158.6159.2173.5180.2184.5197.5测量距离102107.5129.2140.1156.9158.4171179.2183.0195.6误 差0111212112实际距离200250300350400450500550600650测量距离197.9247.2297.1345.8398.7446.8494.9545.2590.9639.1误 差23242454712第七章 调试中遇到的问题7.1 发射接收时间对测量精度的影响分析 采用压电超声波传感器,脉冲发射由单片机控制,发射频率 40KHz ,忽略脉冲电路硬件产生的延时,可知由软件生成的起始时间对于一般要求的精度是可靠的。对于接收到的回波,超声波在空气介质的传播过程中会有很大的衰减,其衰减遵循指数规律。超声波在传播过程中存在衰减,且超声波频率越高,衰减越快,但频率的增高有利于提高超声波的指向性。 经以上分析,超声波回波的幅值在传播过程中衰减很大,收到的回波信号可能十分微弱,要想判断捕获到的第一个回波确定准确的接受时间,必须对收到的信号进行足够的放大,否则不正确的判断回波时间,会对超声波测量精度产生影响。 7.2 当地声速对测量精度的影响分析 当地声速对超声波测距测量精度的影响远远要比收发时间的影响严重。超声波在大气中传播的速度受介质气体的温度、密度及气体分子成分的影响,在空气中,当地声速只决定于气体的温度,因此获得准确的当地气温可以有效的提高超声波测距时的测量精度。工程上常用的由气温估算当地声速。实际情况下,温度每上升或者下降 1c, 声速将增加或者减少 0.607m /s ,这个影响对于较高精度的测量是相当严重的。因此提高超声波测量精度的重中之重就是获得准确的当地声速。总 结对所设计的电路进行测量、校准发现其测量范围15cm250cm内的平面物体做了多次测量发现,其最大误差为2cm,显示最小分辨率为0.01 m,测量盲区小于0.15米,且重复性好。该测距仪稳定性比较高、灵敏度比较高,盲区范围小,分辨率小于0.01m, 被测目标不需要垂直于超声波测距仪角度保持在正负30度,被测目标表面不需要平坦;但是在检测过程中会有一些不便的地方:1.测量时在超声波测距仪周围没有其他可反射超声波的物体,由于发射功率有限,测距仪无法测量5m外的物体。2.因为实现测距所以电路的电流相对比较大。3.不能够实现不同温度下的测距功能。4.因为超声波是将空气作为媒介所以受电磁干扰比较大。超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。由上述的分析知,如果能够知道当地温度,则可根据公式求出当地声速,从而能够获得较高的测量精度。而问题的关键在于获得温度数据的方法。采用热敏电阻、热电耦、集成温度传感器都可以获得较为准确的温度值,在复杂环境下,如果难于获得环境温度,或者不便获得环境温度时,如果仍旧要求较高的测量精度,我们采用所谓标杆校正的方法实现超声波测距精度的校正。超声波测距装置首先测量距离已知为 h 的基平面(标杆)声波往返所用的时间,而后由测得的时间和距离 h 根据公式求出当地声速。通过这样的方法,我们也能够顺利的求出声速,省去了使用传感器测量温度所带来的麻烦。因此,只用为测距设备设定“标定”和“测量”两种状态,即能够实现温度校正所能实现的高精度测距功能。本文主要介绍了以单片机AT89C51为处理器超声波测距器的设计过程,包括电路设计和程序的设计以及电路的搭建与调试。此设计电路由超声波传感器、单片机、发射/接收电路和LED显示器组成。以单片机AT89C51为主处理器,通过超声波传感器发射和接收超声波,再通过单片机中断测出单片机由发射到接收到超声波的时间,再计算出单片机与被测物体之间的距离,然后通过数码管显示出被测物体与单片机之间的距离。发射电路主要有74LS04和超声波换能器构成用单片机P1.0端口输出40KHZ方波信号一路经一级反向后送到超声波换能器的一个电极,另一路经两级反向后送到超声波换能器的另一个电极。超声波接收采用的是常用于电视红外遥控接收器的芯片CX20106A。显示电路采用四位数码管的动态显示。本电路设计由于元器件及其成板误差,测量最大距离未能达到设计初衷要求,但对测量距离结果的误差影响不大,能满足日常生活、工业生产的测量要求,因此此设计有着很大的意义。同时通过这个设计能够提高我对单片机的认识、编程能力和电路设计能力。参考文献1张艺刚 单片机原理与接口技术北京航空航天大学出版社200568105 2胡萍 超声波测距仪的研制浙江大学出版社20001031593李华 单片机语言编程北京航空航天大学出版社200526564苏长赞 红外线与超声波遥控人民邮电出版社19931591895苏伟 超声波测距误差分析.传感器技术2005第五期236周荷琴、吴秀清 微型计算机原理与接口技术中国科学技术大学出版社200945477靳达 单片机应用系统开发实例导航 人民邮电出版社200326298余永权、汪明慧等 单片机在控制系统中的应用电子工业出版社200445519胡汉才 单片机原理及其接口技术清华大学出版社2004112310刘凤然 基于单片机的超声波测距系统传感器世界2001203111高飞燕 基于单片机的超声波测距系统的设计信息技术20054152附录 A图A1 系统原理图 附录 B源程序:#include sbit k1=P34; sbit csbout=P10; /超声波发送 sbit csbint=P32; /超声波接收 sbit bg=P33; #define LED P0 sbit LED1=P24; /LED控制 sbit LED2=P25; /LED控制 sbit LED3=P26; /LED控制 sbit bj=P20;/报警#define csbc 0.0347 unsigned char cl,mqzd,csbs,csbds,buffer3,xm1,xm2,xm0,jpjs;/显示标识 unsigned char convert10=0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88,0x3b,0x08,0x09;/09段码 unsigned int s,t,i,xx,j,sj1,sj2,sj3,mqs,sx1; void csbcj(); void delay(j); /延时函数 void scanLED(); /显示函数 void timeToBuffer(); /显示转换函数 void keyscan(); void k1cl(); void k2cl(); void k3cl(); void k4cl(); void offmsd(); void main() /主函数 EA=1; /开中断 TMOD=0x11; /设定时器0为计数,设定时器1定时 ET0=1; /定时器0中断允许 ET1=1; /定时器1中断允许 TH0=0x00; TL0=0x00; TH1=0x9E; TL1=0x57; csbds=0; csbout=1; cl=0; csbs=8; jpjs=0; sj1=50;/测试报警距离 sj2=200; sj3=580; k4cl(); TR1=1; while(1) keyscan(); if(jpjssj3) /大于时显示“CCC” buffer2=0xC6; buffer1=0xC6; buffer0=0xC6; else if(ssj1) /小于时显示“- - -” buffer2=0xBF; buffer1=0xBF; buffer0=0xBF; else timeToBuffer(); else timeToBuffer(); /将值转换成LED段码 offmsd(); scanLED(); /显示函数 if(s=40) csbds=0; cl=1; void csbcj() if(cl=1) TR1=0; TH0=0x00; TL0=0x00; i=csbs; while(i-) csbout=!csbout; TR0=1; i=mqs; /盲区 while(i-) i=0; while(csbint) i+; if(i=4000) /上限值 csbint=0; TR0=0; TH1=0x9E; TL1=0x57; t=TH0; t=t*256+TL0; t=t-29; s=t*csbc/2; TR1=1; cl=0; csbint=1; if(s80)bj=1; if(s6) csbs=csbs-2; sj1=40; sj1=sj1+2; k4cl(); else if(s=sj3) if(csbs32) csbs=csbs+2; sj1=sj1+10; k4cl(); void keyscan()
展开阅读全文