《超声波测距仪的设计实现.pdf》由会员分享,可在线阅读,更多相关《超声波测距仪的设计实现.pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 超声波测距仪的设计与实现 摘要 超声波测距系统采用芯片STC89C52 作为系统的主控制器,采用 NE555 作为系统的脉冲发射源,结合 3 位 7 段数码管液晶显示,实现了测量距离大,测量精度高,并能实时显示,无明显失真。关键词:实时超声波测距 第 1 章设计主题和要求 1.1 设计要求 利用压电超声换能器和单片机作为控制器,完成了超声波测距仪的软硬件设计。1.2 基本要求:(1)具有反射式超声波测距功能,测量距离为0.1m 3.0m;(2)测距精度:误差 1cm;(3)用 LED 数码管显示测试距离;(4)实时显示测量的距离,显示格式为。米。第二章系统总体方案论证 2.1 总体系统计划
2、题目要求设计一种利用超声波反射原理测距并实时同步显示的超声波测距仪。因此,该系统可分为四个模块:发射、接收、显示和主控模块,如图2.1 所示:图 2.1系统的基本框图 根据技术指标的需要,为了使系统的测量距离更远,精度更高,提高系统的整体完善性,对上述系统的各个功能模块逐一进行了方案论证:2.2 主控制模块 2.2.1 主控模块概述 主控制器模块实际上是一个简化的嵌入式系统。嵌入式系统一般指非 PC 系统,具有计算机功能,但不称为计算机设备或设备。它是以应用为中心,软硬件可裁剪的专用计算机系统,能满足应用系统对功能、可靠性、成本、体积、功耗等全面而严格的要求。嵌入式系统的核心是嵌入式微处理器。
3、2.2.2 主控模块方案选择 根据以上知识,考虑到目前市场上常用的 AVR、61、51 微控制器,我们有以下三种方案可供选择。方案 1:AVR MCU AVR 单片机品种丰富,有 ATtiny,AT90S,ATmeg 系列。每个系列都有不同的型号,价格适中。相对来说,相对于 51 单片机,它的资源更多,其部门也集成了A/D 和 PWM 输出,但在系统的进一步扩展方面并不是很好。这种单片机主要应 主控制模块 发射舱 接收模块 显示组件 用在工业控制领域,在语音处理方面没有优势。方案二:SPCE061A。凌阳 MCU 的资源比较丰富,32K16bitFlash,两个 D/A 通道,一个全双工异步串
4、口(UART)方便其与其他控制器通信。而且它的编程和 C 语言非常相似。最重要的是,在语音处理方面有着得天独厚的优势,凌阳公司提供了丰富的技术支持。方案三:51 单片机 51 单片机的最小系统板非常简单便宜,但是51 单片机的 RAM(128bit 或者256bit)和 ROM(4KB 或者 8KB,特别是 AT89S8253 是 12KB)都比较小,而且单元没有集成 D/A 和 A/D,不方便语音处理,扩展系统比较麻烦。由于本课题不需要语音播报,不需要外扩 A/D 就可以实现其他要求,所以本实验选用性价比高的 STC89C52 作为主控芯片。综上所述,本系统选用宏景公司生产的 STC89C5
5、2 作为核心控制器。2.3 发射模块 超声波发射原理 超声波是一种人耳听不到的声音,频率高于 20KHz。声波在空气中的传播速度很慢,大约344m/s(21,高空气压)。波长和速度之间的关系是:(2-1)是声波的波长,是声波在空气中的传播速度,是声波的频率。is the frequency of sound waves.从上面可以看出,40KHz 超声波的波长在这种相对较低的传播速度下非常短,这意味着可以获得更高的距离和方向分辨率。由于这种高分辨率特性,可以获得高精度的测量。假设声速为 344 m/s,100Hz 音频的波长为 3.44 m,1000hz(1 kHz)的波长为34.4 cm,而
6、 20kHz音频的波长为1.7 cm,40 kHz音频的波长为8.5 mm。为了达到题目中的技术指标,需要详细分析探头的物理特性。在没有任何驱动电路的情况下,只用信号源和示波器定性分析接收探头的电压与发射探头的距离和频率以及施加在发射探头两端的电压之间的关系。(1)检查探头的中心频率:即当发射探头上的电压不变,发射探头与接收探头的距离不变时,接收探头的电压随发射探头的频率而变化。利用信号源施加在发射头两端的电压的峰峰值(电压太小会使接收到的信号很弱,所以为了方便观察,这里取 20V),在 15cm 的地方放一块木板。反射后,通过接收换能器,在示波器上直接观察到电压随信号源发出的信号频率的变化。
7、实测数据见表1:表 1 中心频率测量 单位:毫伏 频率 f 31k 32k 33k 36k 39k 39.6 千 接收 Vpp 10 36 48 76 156 199 频率 f 39.8 千 39.9 千 40k 41k 43k 45k 接收 Vpp 208 236 228 192 146 86 测试条件:发射探头施加的电压为=20V,两个探头之间的距离为 l=20 cm。从表 1 中可以发现,当发射信号的频率为 39.9KHz 时,示波器上观察到的峰间电压()最大,因此我们确定 39.9KHz 是超声探头共振的最佳频率,即中心频率。注意:这个测量结果只对我们使用的探头有意义。(2)验证接收探
8、头的电压与距离的关系。由于只需要定性分析,电压和距离的关系可以通过查超声波探头数据得到,如图 2.2 所示:从图 2.2 可以看出,当频率为 40KHz 时,声压随距离的衰减很小。频率越高,衰减率越高,波的传播距离越短。但根据不同的换能器略有不同,所以测得的最佳频率与 40KHz 略有偏差,如表 1 所示。考虑到写报告的方便,本文改用40KHz。纵观所有使用波的反射测距,比如雷达,发射的信号都是 CW(连续波)脉冲。通过计算接收波和发射波之间的时间间隔,根据2-2 公式计算距离。(2-2)其中 l 是超声波传播的距离,v 是超声波传播的速度,t 是传播时间。图 2.2 不同距离的声压衰减特性
9、2.3.2 超声波发射模块的方案选择 根据以上知识和相关资料,得到了发射模块的两种方案。方案一:以三级管理为核心。(1)三级胀管。主控制器发出的 40KHz 波通过三极管膨胀直接送到升压变压器,再通过换能器送出。这种电路比较简单,受二极管特性的限制,电压和电流的放大比较小。(2)三极管推挽功率放大。用分立元件构建的三极管推挽功率放大器在性能上要比放大电路优越得多。然而,很难选择参数和优化性能。再者,三极管是流控放大器,会导致系统功耗增加。方案二:以 NE555和变频器为核心。使用 NE555发射 40KHz方波,频率稳定可控可调,通过CD4049中六个逆变器的互补对称电路可以增加发射功率。综上
10、所述,本系统发射部分采用NE555 和 CD4049 构建的互补对称功率放大,最终由换能器发射出去。2.4 接收模块 接收模块概述 超声波在金属、木材、混凝土、玻璃、橡胶、纸张上可以 100%反射,而布料、棉花、绒毛等。可以吸收电波。从图 2.2 可以看出,声波随着距离的增加成比例衰减。经测试,接收换能器(探头)转换的电流信号非常微弱,需要对接收信号进行放大。超声波探头具有良好的选频特性,以提高系统的信噪比。因此,增加了滤波电路。通过以上的信号整形和放大,检测后再由比较模块进一步整形,从而得到比较完整的方波信号。总之,我们得到了如图2.3 所示的接收模块的基本框图。图 2.3接收模块电路图 2
11、.4.2 接收模块的设计和方案论证 增强 从换能器转换的声波信号很弱。为了提高信号的驱动能力,必须对接收信号进行放大。有两种放大方法:方案一:采用 NE5532 集成运算放大器构成二级放大电路,将整体信号放大5000 倍,然后连接到电压比较器。但在实际实验中发现,两级电路的自激非常严重,电路复杂。方案二:用最简单的三极管放大接收到的信号,放大倍数在 50 倍左右。由于单级放大系统受干扰较小,放大倍数较小,但测量 3M 距离没有问题,可以很好地满足题目的要求。综上所述,本系统选择第二种方案。比较器 方案一:检测电路是由检测二极管、电容和电阻组成的包络检测电路。检测后,得到一个“”形状的包络信号。
12、的包络信号。”的包络信号。方案二:采用 LM393 专用电压比较器,其优点是阈值电压调整简单,外围电路只需电阻。比较 MCU 处理 增强 过 滤波 过 滤波 因此,本实验选择 LM393 作为电压比较模块。第三章系统硬件设计 3.1 系统的总体组成 根据课题的要求,系统可以分为四个模块,即:发送、接收、处理和显示。发射:NE555 发射一个频率为 40KHz 的方波,经 CD4049 的互补电路升压,最后由换能器转换成超声波发出。接收:接收换能器转换的电信号经放大、滤波、比较后由单片机处理。处理:51 单片机最小系统板。接收模块处理后的信号由该模块判断并计算距离。显示:以 STC89C52为控
13、制核心,液晶显示距离。因此,可以得到如图3.1 所示的系统组成框图。图 3.1超声波测距系统总体框图 3.2 发射模块 如图 3.2 所示。用于驱动超声波传感器的 40KHz 方波由 NE555 制成的多谐振荡器产生,多谐振荡器受控制器的控制信号控制。40KHz 的方波经过 CD4049 调理,变成幅度为 18V 的方波,提高了发射功率。注意:在电路中,9V 电源连接到 CD4049。STC89C52 系统主控制模块 发射电路 接收电路 发射者 接收器 被测对象 显示 漂 亮的 2 在外 三 四 CVOLT 五 保持时间 六 讨论 七 八 一重置 VCC 地线 U1 NE555 R1 1K V
14、CC C1 0.01uF C2 0.01uF R3 10K R2 5.1K 在外 输入输出 图 3.2 传输电路图 3.3 接收模块 放大器电路 如图 3.3 所示。图 3.3 放大图 测量放大倍率(3-1)。比较电路 如图 3.8 所示。在实际测试中发现,虽然输入信号经过电容滤波,但仍然存在 DC 偏置,使得信号的 DC 信号上升。调整 DC 可以改变比较阈值,以解决输入信号中的偏移问题。雌三醇环戊醚 NPN型的 R2 104 R1 1K VCC C1 220uF R3 1K C2 220uF r 1K 监视 C3 100uF 用户界面 产出 A 一个 五-2 V+三 地线 四 电源电压 八
15、 产出 B 七 五-六 V+五 LM393 VCC R1 5.1K R2 5.1K R3 10K 投入 输出 图 3.8 比较电路 3.4 主控制模块 该模块的核心是 STC89C52。本模块设计制造为 51 最小实验板,包括最基本的时钟电路和复位电路。第四章系统软件设计 4.1 系统软件设计介绍 4.1.1 软件部分 该系统的软件设计基于超声波反射原理。首先,单片机控制 NE555 产生 40KHz 连续波脉冲信号。然后通过外部中断采集电平触发信号,利用定时器按照 2-2 公式计算时间和距离,然后将数据显示在数码管上。4.2 软件框图和流程图 4.2.1 软件框图 软件框图如图 4.1 所示
16、。图 4.1 软件框图 程序流程图 流程图如图 4.2 所示:主机 出 现40KHz脉冲。电 平触 发信 号采样 同步显示 图 4.2 程序流程图 第五章系统调试 初始化子程序 启用 NE555 发送脉冲。启动定时器,延时 1 毫秒 打开外部中断 有 外 部 干扰吗?等待 显示距离 Y 普 超时?Y 关闭计时器。关闭超声波 5.1 测试仪器 测试中使用的仪器和设备见表2。表 2 测试用仪器设备表 序列号 名称、型号和规格 量 一个 示波器 DS5022M 一个 2 SG1040 信号发生器 一个 三 万用表 一个 四 三脚架 一个 五 卷尺 一个 5.2 测试方法和结果 在该系统的测试过程中,
17、由于发射超声波、接收和处理回波的时间延迟等不稳定因素,测量数据与真实值之间存在一定的误差。为了减小测量误差,超声波探头在使用前需要进行校准。我们的测试方法是:在实验室里拿出一个很平的一米左右高的实验桌,通过一面光滑的墙来验证数据,分别测试每一个距离段,用一把 3 米的直尺在每一个距离段做标记来测量,以此来验证系统的准确性,用实际值来补偿测量值。我们校准的实验数据如表3 所示:表 3 第一次校准的数据表 测试温度 T=12.80单位:米 实际价值 0.200 0.500 0.800 1.000 1.200 测量值 1 0.233 0.518 0.823 1.028 1.234 测量值 2 0.2
18、30 0.518 0.826 0.037 1.231 测量值 3 0.233 0.515 0.829 1.026 1.234 测量值 4 0.230 0.518 0.820 1.028 1.234 测量值 5 0.230 0.521 0.826 1.029 1.231 测量值 6 0.233 0.518 0.826 1.026 1.231 测量值 7 0.230 0.515 0.826 1.026 1.231 测量值 8 0.233 0.500 0.829 1.029 1.231 测量平均值 0.232 0.515 0.826 0.904 1.232 实际价值 1.500 1.800 2.00
19、0 2.500 3.000 测量值 1 1.533 1.821 2.030 2.531 3.031 测量值 2 1.530 1.824 2.027 2.537 3.024 测量值 3 1.530 1.821 2.030 2.536 3.036 测量值 4 1.530 1.827 2.027 2.527 3.041 测量值 5 1.531 1.823 2.027 2.541 3.047 测量值 6 1.533 1.821 2.030 2.536 3.027 测量值 7 1.536 1.827 2.030 2.539 3.030 测量值 8 1.533 1.821 2.027 2.536 3.02
20、5 测量平均值 1.532 1.823 2.029 2.535 3.033 以实际距离为横坐标,以测量距离的平均值为纵坐标,得到如图 5.1 所示的校准曲线:图 5.1 第一条校准曲线 注:由于环境的影响,系统的读数会不稳定,所以表 1 和表 2 中记录的数据是系统相对稳定时读取的值。通过多次标定,从图 5.1 可以看出,曲线基本上是一条 45o 的直线,可以很好地满足要求的精度。5.3 测试误差分析:对于表 3,可以计算系统的平均误差。实际价值 0.200 0.500 0.800 1.000 1.200 0.0000.5001.0001.5002.0002.5003.0003.5000.00
21、00.5001.0001.5002.0002.5003.0003.500实际距离测试距离测量平均值 0.202 0.489 0.792 0.999 1.200 相对误差 1.18750000%2.12500000%0.96875000%0.10000000%0.02083333%实际价值 1.400 1.500 2.000 3.000 测量平均值 1.407 1.503 2.012 2.999 相对误差 0.48214286%0.20833333%0.60625000%0.02083333%由此可以计算出平均相对误差:(5-1)当然,以上相对误差只是在非常理想的情况下计算的。错误原因分析:1)
22、由于超声波在空气中的传播会随着距离的增加而逐渐衰减,所以测得的距离不一定被第一次回波所反映;2)超声波传播速度的变化影响测距精度,温度会影响传播速度,从而影响精度。3)超声波束的集中度会明显影响测距精度,现场环境等其他因素也会影响测量结果。4)由于校准条件和测试环境的限制,不可能在精度上校准与实际值完全相同的校准。5.4 调试中遇到的问题及解决方法 问题 1:三极管放大的正弦信号输入到 LM393 电压比较器。如果输出正确,应该是方波,但是用示波器测量没有信号。解决方法:经检查,电路无焊接问题。信号发生器输出的具有相同幅度的方波被添加到输入端,并且比较器的输出具有正确的方波。在测量放大的信号并
23、去除交流耦合后,发现该信号中约有 2V DC,因此提高阈值,直到输出方波。这个问题解决了。问题 2:下载程序后,最大显示0.50m。解决方法:对于软件问题,原因还是思维问题。更改测量开关时间,并调整显示的时间。正常情况下,离天花板的距离(约 3m)可以在实验室测量。问题三:显示不稳定。解决方法:由于程序执行和显示需要一定的时间,系统需要实时测量,两者之间的协调性很难控制。程序中时间控制的很好,解决了显示问题。第六章结论 经过测试,该系统能够实现自动测距和供电下的实时显示功能。在 3 米的距离上,测量速度快,准确,精度高。然而,作品的不足之处在于,由于测量环境和校准工具的限制,测量距离无法达到远
24、目标,AGC 模块的成败是系统测量距离加长的一个非常重要的因素。由于所学知识和实验时间的限制,不可能更完善。这种超声波系统在测量短距离时显示稳定、快速、实时,但在测量长距离时显示不稳定,显示与测量的程序协调性有待提高。通过总结,我还得出一个重要的结论。如果超声的硬件系统不断完善,程序写起来会更方便,效果会更好。因此,在今后的学习和实践中,不断强化理论基础,总结丰富的实验经验,将是我的目标。参考资料:1红色。模拟电子技术。,工程大学,2001 年 2万晨。模拟电子技术基础设计的仿真编程与实践。,工程大学,2003 3建陵.51 系列单片机开发合集。,电子工业,2007 4易纲等.新型 MCS-5
25、1 单片机应用设计.技术大学,2003 年 附录:附录一:主要部件清单 序列号 模型 量 一个 STC89C52 一个 2 NE555 一个 三 LM393 一个 四 CD4049 一个 五 9013 一个 六 七段数码管 三 七 超声波探头 1 右 附录二:程序清单#include#定义 uchar 无符号字符#定义 uint 无符号整数 sbit du=p26;sbit we=p27;sbit an1=p34;sbit go=p17;sbit p32=p32;sbit deng=p10;sbit beep=p23;uchar a、b、c、e、f;uint n=0,m1=0,d=0,m2=0
26、,m3=0,x=0,n1=0,n2=0,k=0;无效延迟(单位 x)for(a=x;a 0;答-)for(b=43;b 0;b-)for(c=10;c 0;c-);无效延迟 2()uchar nn0=0;for(nn0=250;nn0 0;nn0-);uint shu10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/Void dis01()/显示一位 P0=0 xff we=1;we=0;P0=Shum1;du=1;du=0;P0=0 x1f we=1;we=0;Void dis10()/显示十位数 P0=0 xff
27、 we=1;we=0;P0=Shum2;du=1;du=0;P0=0 x2f we=1;we=0;void is 100()/显示百位数 P0=0 xff we=1;we=0;P0=Shum3;du=1;du=0;P0=0 x37 we=1;we=0;Void dis000()/显示小数点 P0=0 xff we=1;we=0;P0=0 x80 du=1;du=0;P0=0 x37 we=1;we=0;Void dis()/显示函数 dis 01();延迟(1);dis 10();延迟(1);dis 100();延迟(1);dis 000();延迟(1);/Void main()/主函数 TMOD=0 x 01;/IT0=0;/EX0=0;EA=1;TH0=0 x00 TL0=0 x00 go=0;延迟(250);延迟(250);while(1)go=1;/启动超声波 TR0=1;delay 2();go=0;while(p32=0);TR0=0;n1=TH0*256 n2=TL0 x=n1+N2;k=x/54;m1=k%10 m2=k%100/10;m3=k/100;dis();TH0=0 x00 TL0=0 x00