1、基于单片机的超声波测距系统的研究 机械工程学院 测试计量技术与仪器 蔡慧君 S1103114 在日常生产生活中,很多场合如汽车倒车、机器人避障、工业测井、水库 液位测量等需要自动进行非接触测距。超声波是指频率大于 20 kHz 的在弹性介 质中产生的机械震荡波,其具有指向性强、能量消耗缓慢、传播距离相对较远 等特点,因此常被用于非接触测距。由于超声波对光线、色彩和电磁场不敏感, 因此超声波测距对环境有较好的适应能力,此外超声波测量在实时、精度、价 格也能得到很好的折衷。 为此,文中尝试以单片机 AT89S52 为核心,利用一对 40 kHz 压电超声传 感器设计一款体积较小、价格低廉、精度较高
2、、具有温度补偿、实时 LCD 显示 和报警的超声波测距仪。 1 超声波测距原理 超声波传感器分机械方式和电气方式两类,它实际上是一种换能器,在发 射端它把电能或机械能转换成声能,接收端则反之。本次设计超声波传感器采 用电气方式中的压电式超声波换能器,它是利用压电晶体的谐振来工作的。它 有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶 片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,产生超声 波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电 晶片作振动,将机械能转换为电信号,就成为超声波接收器。在超声波电路中, 发射端输出一系列脉冲方波,脉冲宽
3、度越大,输出的个数越多,能量越大,所 能测的距离也越远。超声波发射换能器与接收换能器其结构上稍有不同,使用 时应分清器件上的标志。 超声波测距的方法有多种:如往返时间检测法、相位检测法、声波幅值检 测法。本设计采用往返时间检测法测距。其原理是超声波传感器发射一定频率 的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后 由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传 播的路程的远近有关。测试传输时间可以得出距离。 假定 s 为被测物体到测距仪之间的距离,测得的时间为 ts,超声波传播 速度为 vms1 表示,则有关系式(1) s=vt2 (1) 在精度要求
4、较高的情况下,需要考虑温度对超声波传播速度的影响,按式 (2)对超声波传播速度加以修正,以减小误差。 v=3314+0607T (2) 式中,T 为实际温度单位为,v 为超声波在介质中的传播速度单位为 ms。 2 系统总体设计方案 本系统由超声波发射、回波信号接收、温度测量、显示和报警、电源等硬 件电路部分以及相应的软件部分构成。系统原理框图,如图 1 所示。 整个系统由单片机 AT89S52 控制,超声波传感器采用收发分体式,分别是 一支超声波发射换能器 TCT4016T 和一支超声波接收换能器 TCT4016R。 超声波信号通过超声波发射换能器发射至空气中,遇被测物反射后回波被超声 波接收
5、换能器接收。进行相关处理后,输入单片机的 INT0 脚产生中断,计算 中间经历的时间,同时再根据具体的温度计算相应的声速,根据式(2)就可得出 相应的距离用来显示,当然在一些场合也可根据需要,设置距离报警值。 3 硬件设计 31 超声波发射部分 超声波发射部分是为了让超声波发射换能器 TCT4016T 能向外界发出 40 kHz 左右的方波脉冲信号。40 kHz 左右的方波脉冲信号的产生通常有两种方法: 采用硬件如由 555 振荡产生或软件如单片机软件编程输出,本系统采用后者。 编程由单片机 P1.0 端口输出 40 kHz 左右的方波脉冲信号,由于单片机端口输 出功率不够,40 kHz 方波
6、脉冲信号分成两路,送给一个由 74HC04 组成的推挽 式电路进行功率放大以便使发射距离足够远,满足测量距离要求,最后送给超 声波发射换能器 TCT4016T 以声波形式发射到空气中。发射部分的电路,如 图 2 所示。图中输出端上拉电阻 R31,R 32,一方面可以提高反向器 74HC04 输 出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由 振荡的时间。 32 超声波接收部分 上述 TCT4016T 发射的在空气中传播,遇到障碍物就会返回,超声波接 收部分是为了将反射波(回波)顺利接收到超声波接收换能器 TCT4016R 进行 转换变成电信号,并对此电信号进行放大、滤波、
7、整形等处理后,这里用索尼 公司生产的集成芯片 CX20106,得到一个负脉冲送给单片机的 P3.2(INT0)引脚, 以产生一个中断。接收部分的电路,如图 3 所示。 可以看到,集成芯片 CX20106 在接收部分电路中起了很大的作用。 CX20106 是一款应用广泛的红外线检波接收的专用芯片,其具有功能强、性能 优越、外围接口简单、成本低等优点,由于红外遥控常用的载波频率 38 kHz 与 测距的超声波频率 40 kHz 比较接近,而且 CX20106 内部设置的滤波器中心频 率 f0 五可由其 5 脚外接电阻调节,阻值越大中心频率越低,范围为 3060 kHz。故本次设计用它来做接收电路。
8、CX20106 内部由前置放大器、限幅放大 器、带通滤波器、检波器、积分器及整形电路构成。工作过程如下:接收的回 波信号先经过前置放大器和限幅放大器,将信号调整到合适幅值的矩形脉冲, 由滤波器进行频率选择,滤除干扰信号,再经整形,送给输出端 7 脚。当接收 到与 CX20106 滤波器中心频率相符的回波信号时,其输出端 7 脚就输出低电平, 而输出端 7 脚直接接到AT89S52 的 INT0 引脚上,以触发中断。若频率有一 些误差,可调节芯片引脚 5 的外接电阻 R42,将滤波器的中心频率设置在 40 kHz,就可达到理想的效果。 33 其他主要电路 (1)温度测量部分。 由于声音的速度在不
9、同的温度下有所不同,为提高系统的精度,采用了温 度补偿功能。这里采用的主要元器件是是美国 Dallas 半导体公司生产的单总线 数字温度传感器 DS18B20,其具有精度高、智能化、体积小、线路简单等特点。 将 DS18B20 数据线与单片机的 P1.1 口相连,就可以实现温度测量,如图 4 所 示。 (2)LCD 显示部分。 本设计显示部分采用字符型 TC1602 液晶显示所测距离值。 TC1602 显示的 容量为 2 行 16 个字。液晶显示屏有微功耗、体积小、显示内容丰富、超薄轻巧、 使用方便等诸多优点,与数码管相比,显得更专业、美观。使用时,可将 P0 与 LCD 的数据线相连,P 2
10、 口与 LCD 的控制线相连,如图 5 所示。 其中,TC1602 第 4 脚 RS 为寄存器选择,第 5 脚 RW 为读写信号线,第 6 脚 E 为使能端。第 714 脚:D0D7 为 8 位双向数据线。这里要注意的是, 为了布线方便,单片机端的 D0D7 是接到 LCD602 的 D1D0,正好相反, 因此在编写软件时需要做处理,使读取正确。 (3)报警部分。 采用一个蜂鸣器,由 P1.2 输出一定频率的信号,在连接到蜂鸣器之前,经 过一个三极管 9 012 的放大。报警部分的连线,如图 6 所示。 (4)电源电路:220 V 经 9 V 变压器降压后,再经 D1D4 桥式整流和 7 80
11、5 稳压 后给电路各部分供电。 (5)晶振电路:采用 12 MHz 的晶振。 4 软件 系统软件设计采用模块化设计,主要包括主程序设计、T1 中断服务子程序、 INT0 外部中断服务子程序、测温子程序、距离计算子程序、显示子程序、延时 子程序和报警子程序设计等。 系统软件编制时应考虑相关硬件的连线,同时还要进行存储空间、寄存器 以及定时器和外部中断引脚的分配和使用。本设计中 P1.0 引脚连接到 7 HC04 推挽放大电路再连接到超声波发射传感器,P1.0 引脚输出的将是软件方式产生 的 40 kHz 方波,而 P3.2(INT0)则被用来接收回波。定时器 T1,T0 均工作在工 作方式 1,
12、为 16 位计数,T1 定时器被用来开启一次测距过程以它的溢出为标 志开始一个发射测量循环,T0 定时器是用来计算脉冲往返时间,它们的初值均 设为 0。 系统初始化后就启动定时器 T1 从 0 开始计数,此时主程序进入等待,当 到达 65 ms 时 T1 溢出进入 T1 中断服务子程序;在 T1 中断服务子程序中将启 动一次新的超声波发射,此时将在 P1.0 引脚上开始产生 40 kHz 的方波,同时 开启定时器 T0 计时,为了避免直射波的绕射,需要延迟 1 ms 后再开 INT0 中 断允许;INT0 中断允许打开后,若此时 P3.2(INT0)引脚出现低电平则代表收到 回波信号,将提出中
13、断请求进入 INT0 中断服务子程序,在 INT0 中断服务子程 序中将停止定时器 T0 计时,读取定时器 T0 时间值到相应的存储区,同时设置 接收成功标志;主程序一旦检测到接收成功标志,将调用测温子程序,采集超 声波测距时的环境温度,并换算出准确的声速,存储到 RAM 存储单元中;单 片机再调用距离计算子程序进行计算,计算出传感器到目标物体之间的距离; 此后主程序调用显示子程序进行显示;若超过设定的最小报警距离还将启动扬 声器报警;当一次发射、接收、显示的过程完成后,系统将延迟 100 ms 重新让 T1 置初值,再次启动 T1 以溢出,进入下一次测距。如果由于障碍物过远,超 出量程,以致
14、在 T0 溢出时尚未接收到回波,则显示 “ERROR”重新回到主流程 进入新一轮测试。主程序和定时器 T1、外部中断 INT0 中断服务子程序的框图 分别,如图 7图 9 所示。 此外,还有几点需要说明的是: (1)定时器 T1 之所以是 65 ms 溢出是因为它是 16 位定时计数器(65 535)。 在使用 12MHz 的晶振时,由于周期 T=1/f=1(12106)12=1s,则一个机器 周期是 1s,计数器每 65 ms 计数器溢出。 (2)本设计中 40 kHz 方波的产生采用软件方式实现:控制 P1.0 口输出 12s 的高电平,再输出 13s的低电平,这样得到一个周期的 40 k
15、Hz 的脉冲,再循 环发送 8 次。 (3)在 CPU 停止发送脉冲群后,由于电阻尼,换能器不能立即停止发送超 声波,在一段时间内仍然会发送,故这段时间内不可立即开启 INT0 接收回波, 要等待一段后以避免发送端的部分直射波未经被测物就直接绕射到接收端,这 段被称为“虚假反射波 ”。从发射开始一直到 “虚假反射波”结束这段时间,不开 放 INT0 中断申请,可有效躲避干扰,但也会造成测试的“盲区” 。本次设为 1 ms,假定温度为 20,则测量盲区为 s=110-33442172 cm。 (4)最大测试距离将取决于:两次脉冲群发送之间的最小时间间隔和脉冲的 能量。一般来说,发射端脉冲个数越多
16、,能量越大,所能测的距离也越远。但 也不是无限制的,本次读取定时器 T0 的计数值,最大能测试的距离是 T0 尚没 溢出,故在温度 20下,最大测试距离为 s=vt2=65 535344(2106) =11272 m。在一些周期性发射超声波设备中,如果要测试的最大距离是 10 m,则两次脉冲群之间的最小时间为 t=2s/v=21034460:ms 。 5 结束语 为了验证系统的测量精度,在实验室进行了实地测量。利用本系统对 201 000 cm 范围进行了多次测试,经补偿后最大误差达 2 cm,线性度、稳定 性和重复性都比较好。系统具有结构简单、体积小、实时 LCD 显示和报警、带 温度补偿、抗干扰性能好等优点。系统的误差主要来自于发射探头发出的超声 波是呈喇叭状扩散传播、被测物的表面不光滑且不一定垂直于两探头的轴线而 导致所反射回来的波也许是从不同点获得,此外电子元器件自身的时延、干扰 等也造成一定影响。可以根据具体场合,选择合适功率的探头,以及调整程序 中脉冲的频率、宽度和个数等提高精度或测量距离,扩大系统的应用范围。