超声波测距离
摘 要
本设计利用STC89C52单片机、超声波传感器实现利用超声波进行测距。利用蜂鸣器和发光二极管表示传感器探测范围内是否有障碍物,当在探测范围内有障碍物时,发光管发光和蜂鸣器发出声音。为了保证超声波测距传感器的可靠性和稳定性,采取了相应的抗干扰措施。就超声波的传播特性,超声波换能器的工作特性、超声波发射、接收、超声微弱信号放大、波形整形、速度变换、语音提示电路及系统功能软件等做了详细说明。实现障碍物的距离测试、显示和报警,超声波测距范围7CM-500CM ,精度在1厘米左右。这套系统软硬件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以用于倒车雷达、建筑施工工地以及一些工业现场。
关键词 :STC89C52;超声波;传感器
Abstract
This design using STC89C52 microcontroller, ultrasonic sensors are realized by
ultrasound. Using the buzzer and light-emitting diodes sensor range that there are obstacles, when in detecting worldwide obstacle, shine and tube production sound. In order to guarantee the ultrasonic range-finding sensors, the stability and reliability of the corresponding anti-jamming measures. Will the propagation characteristics of ultrasonic, ultrasonic
transducer operating characteristics, ultrasound, receiving, ultrasonic weak signal waveform plastic, and velocity transformation, audio circuits and functions of the system software to do a detailed explanation. Realize that the distance test, obstacles and alarm, ultrasonic ranging 7CM scope, accuracy in 500CM - 1 centimeter or so. The system hardware and software design is reasonable, strong anti-jamming ability, good real-time, expansion and upgrade system, can be used in radar, construction site back and other industrial field.
Key words: STC89C52;Ultrasonic; Sensors
目 录
引言 ................................................................................................................... 1
1 超声波简介.................................................................................................. 1
1.1 超声波 ......................................................................................................................... 1
1.2 压电式超声波传感器简介 ......................................................................................... 1
1.3 超声波传感器特性 ..................................................................................................... 2
1.3.1频率特性 ........................................................................................................... 2
1.3.2指向特性 ........................................................................................................... 4
2 超声波测距原理 . ......................................................................................... 5
3 系统硬件结构设计 . ..................................................................................... 5
3.1 系统总体设计 ............................................................................................................. 5
3.2 单片机的选择和性能介绍 ......................................................................................... 7
3.3 超声波发射电路的方案比较、设计与论证 ............................................................. 9
3.4 超声波接收电路的方案比较、设计与论证 ........................................................... 10
4 系统软件设计 . ........................................................................................... 12
4.1 软件设计的总体结构框图 ....................................................................................... 12
4.2 主流程图 ................................................................................................................... 12
4.3 超声波发生子程序和超声波接收中断程序 ........................................................... 13
5 系统调试分析 . ........................................................................................... 14
5.1 硬件调试 ................................................................................................................... 14
5.2 调试结果 ................................................................................................................... 15
5.3 误差分析 ................................................................................................................... 15
总结 ................................................................................................................. 16
谢 辞 ............................................................................................................. 17
参考文献 ......................................................................................................... 18
引言
目前一般都采用波在介质传播速度和时间关系进行测量。常用的技术主要有激光测距、微波雷达测距超声波测距三种。激光测距,这是利用激光的单色性和相传播速度V 易受空气中温度、湿度、压强等因素的影响,其中干性好、方向性强等特点,以实现高精度的计量和检测,如量长度、距离、速度、角度等等。手持式和便携式测距仪,作用距离为数百米至数十千米。一般应用到远距离测量。微波雷达测距是利用目标对电磁波反射来发现目标并测定其位置。根据微波雷达的用途不同,所测定的目标可能是飞机、导弹、车辆、建筑物、云雨等。微波测距一般应用于雷达系统,GPS 定位系统。超声波测距就是利用其反射特性,超声波发生器不断地发射出40kHz 超声波遇到障碍物后反射回反射波,超声波接收器接收到发射波信号,并将其转换为电信号。相比于其它定位技术超声波定位技术成本低,制作容易,非常适合于短距离测量定位。
1 超声波简介
1.1 超声波
人们能听到声音是由于物体振动产生的,它的频率在20Hz-20KHz 范围内,而超声波是指频率高于20KHz 的机械波。超声波是一种在弹性介质中的机械振荡,有两种形式:横向振荡(横波)及纵向振荡(纵波)。在工业中应用主要采用纵向振荡。超声波可以在气体、液体及固体中传播,其传播速度不同。另外,它也有折射和反射现象,并且在传播过程中有衰减。在空气中传播超声波,其频率较低,一般为几十KHz ,而在固体、液体中则频率可用得较高。在空气中衰减较快,而在液体及固体中传播,衰减较小,传播较远。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。常用的超声波传感器可以分为二大类, 一是用电气方式产生超声波, 如压电式、磁致伸缩式超声波发生器;二是用机械方式产生超声波,有加尔统笛、液哨和气流旋笛等。下面我们主要介绍压电式超声波传感器。
1.2 压电式超声波传感器简介
压电式超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,
其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
图1.1 超声波发生器
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。
图1.2 超声波接收器
1.3 超声波传感器特性
超声波传感器的基本特性有频率特性和指向特性,这里以课题中选用的传感器特性为例子。
1.3.1频率特性
图1.3 超声波的声压能级
图1.4 超声波的灵敏度
图3、4是超声波发射传感器的升压能级和灵敏度。其中,40KHz 处为超声发射传感器的中心频率。在40KHz 处,超声发射传感器所产生的超声机械波最强,也就是说在40KHz 处所产生的超声声压能级最高。而在40KHz 两侧,声压能级迅速衰减。因此,超声波发射传感器一定要使用非常接近中心频率40KHz 的交流电压来激励。
另外,超声波接收传感器的频率特性与发射传感器的频率特性类似。曲线在40KHz 处曲线最尖锐,输出电信号的幅度最大,即在40KHz 处接收灵敏度最高。因此,超声波接收传感器具有很好的频率选择特性。超声接收传感器的频率特性曲线和输出端外接电阻R 也有很大关系,如果R 很大,频率特性是尖锐共振的,并目在这个共振频率上灵敏度很高。如果R 较小,频率特性变得光滑而具有较宽得带宽,同时灵敏度也随之降低。并且最大灵敏度向稍低的频率移动。因此,超声接收传感器应与输入阻抗高的前置
放大器配合使用,才能有较高得接收灵敏度。考虑到实际工程测量要求, 可以选用超声波的频率f = 40kHz ,波长λ = 0. 85cm。
1.3.2指向特性
实际的超声波传感器中的压电晶片是一个小圆片,可以把表面上每个点看成一个振荡源,辐射出一个半球而波(子波),这些子波没有指向性。但离开超声传感器得空间某一点的声压是这些子波迭加的结果(衍射),却有一指向性。
图1.5 超声波传感器指向特性及结构
超声传感器的指向图由一个主瓣和几个副瓣构成,其物理意义是0度时电压最大,角度逐渐增大时,声压减小。
1.4 超声波的应用
超声波在许多领域内比可听声的用途更加广泛,是基于以下凡个原因:
1.具有方向性,超声波的频率越高,则方向性越强。
2.在无损探伤、水下声纳系统、超声测距系统中方向性是一个重要的考虑因素。
3.超声波的频率越高,则波长越短,波长可以小到与超声传播媒介材料尺寸相比更小的程度。在高分辨率探伤、微小厚度测量、高精度测距中,这一点相当重要。
4.超声是不可听声,这样就避免产生噪声,因而超声具有绿色特性。当超声发射器与接收器分别置于被测物两侧时,这种类型称为透射型。适用于在空气中传播,工作频率一般为23-25KHz 及40-45KHz 。这类传感器适用于测距、遥控、防盗等用途。透射型可用于遥控器、防盗报警器、接近开关等。超声发射器与接收器置于同侧的属于反射型,分离式反射型可用于接近开关、测距、测液位或物位、金属探伤以及测厚等。
2 超声波测距原理
超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波本时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器。在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。超声测距大致有以下方法:① 取输出脉冲的平均值电压,该电压 (其幅值基本固定 ) 与距离成正比,测量电压即可测得距离;② 测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔 t ,故被测距离为 S=1/2vt 。本测量电路采用第二种方案。由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变 。如果测距精度要求很高,则应通过温度补偿的方法加以校正。
表2.1 声速与温度的关系
测出发射和接收回波的时间差△t ,然后求出距离S 。在速度V 已知的情况下,距离S 的计算公式如下:
S=VΔt/ 2
在空气中,常温下超声波的传播速度是 340米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1℃,声速增加约0.6米/秒。因此在测距精度要求很高的情况下,应通过温度补偿的方法对传播速度加以校正。已知现场环境温度T 时,超声波传播速度V 的计算公式可近似如下:
V=331.5 + 0.607T
3 系统硬件结构设计
3.1 系统总体设计
构成超声测距系统的电路功能模块包括发射电路、接收电路、显示电路、核心功能模块单片机控制器及一些辅助电路。采取收发分离方式有两个好处:一是收发信号不会混叠,接收探头所接收到的纯为反射信号;二是将接收探头放置在合适位置,可以避免超声波在物体表面反射时造成的各种损失和干扰,提高系统的可靠性。
图3.1 系统框图
根据设计要求并综合各方面因素,选择了西安立宇电子科技有限公司的超声波测距传感器 TCT40-16T/R(T 表示发射传感器,R 表示接收传感器),最大探测距离为 6m ,发射扩散角为 60度。
超声波传感器有两块压电晶片和一块共振板。当它的两电极加脉冲信号(触发脉冲) ,若其频率等于晶片的固有频率时,压电晶片就会发生共振,并带动共振板振动,从而产生超声波。相反,电极间未加电压,则当共振板接收到回波信号时,将压迫两压电晶片振动,从而将机械能转换为电信号,此时的传感器就成了超声波接收器。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。超声波传感器用来分析共振频率附近的超声波换能器的特性:换能器的器械能用Qm ;电能用Qe 表示。Q 恰好是电路的串联支路的Q 值。设换能器在空载( Z1 = 0) 和有载( Z1 = R1) 时的Q 值分别为Qm0 、Qm ,则有
Q m 0=L 1W 01 =R 0C 1W 0R 0
Q m =L 1W 01 =R 0+R 1C 1W 0(R 0+R 1)
Q e 0=C 0W 0R 0
Q e =C 0W 0(R 0+R 1)
超声波换能器的工作效率为
η=R 1 R 1+R 0
相临两片的压电陶瓷片极化方向相反,芯片的数目成偶数,以使前后金属盖板与同一极性的电极相连,否则在前后盖板与芯片之间要垫以绝缘垫圈,会导致结构不必要的增大,两芯片之间,芯片与金属盖板间通常以薄黄铜片(厚度小于0.1mm ),作为焊接电极引线用;芯片,电极铜片用强力胶胶合,在压电组件的中央部分用结合轴与圆锥状谐振子连成一体,圆锥状谐振子的边缘部分装有圆环弹性橡胶减振器,使之与外壳固定,起声阻匹配作用。在电——声变换部分的前面的超声波束整形板,是对应圆锥状谐振子的振动模式设置的几个开口,使超声波波束指向尖锐,吸声片吸收多余反射声波。
目前市面上出售的超声波传感器种类有通用型,拓宽型,宽带域型,防水型和高频型等这几类。虽然通用型超声波传感器有频率带宽较窄的缺点,但是却可以换来高灵敏度,抗噪声干扰强的优点。超声波基本应用电路主要分为三类:
1)直射型,主要用于遥控及报警电路;
2)分离反射型,主要用于测距,相位测量等电路;
3)反射型,主要用于材料的探伤,测厚电路。
由于是测距系统是采用超声波发射和接收分离反射型结构,所以发射头和接收头应该在同一平行直线上。出于距离和发射夹角所引起的误差以及超声波信号在传播过程中衰减问题的考虑,发射和接收探头距离不可以太远,而又为了避免发射头对接收头接收信号产生的干扰,二者也不能间隔太近。经过参考前人的经验以及调试时的实际情况,应保持超声波发射头和接收头中心轴线平行并相距4-8cm 即可。
3.2 单片机的选择和性能介绍
在系统的设计中,选择合适的系统核心器件就成为能否成功完成设计任务的关键,而作为控制系统核心的单片机的选择更是重中之重。目前各半导体公司、电气商都向市场上推出了形形色色的单片机,并提供了良好的开发环境。选择好合适的单片机可以最大地简化单片机应用系统,而且功能优异,可靠性好,成本低廉,具有较强的竞争力。目前,市面上的单片机不仅种类繁多,而且在性能方面也各有所长。一般来说,选择单片机需要考虑以下几个方面:
(1)单片机的基本性能参数。例如指令执行速度,程序存储器容量,I/O引脚数量等。
(2)单片机的增强功能。例如看门狗、多指针、双串口等。
(3)单片机的存储介质。对于程序存储器来说,Flash 存储器和OTP (一次性可编程)存储器相比较,最好是Flash 存储器。
(4)芯片的封装形式。如DIP (双列直插)封装,PLCC (PLCC 有对应插座)封装及表面贴附等。
(5)芯片工作温度范围符合工业级、军工级还是商业级。如果设计户外产品,必须选用工业级。
(6)芯片的功耗。比如设计并口加密狗时,信号线取电只能提供几mA 的电流,选用STC 单片机就是因为它能满足低功耗的要求。
(7)供货渠道是否畅通、价格是否低廉。
(8)技术支持网站的速度如何,资料是否丰富。包括芯片手册,应用指南,设计方案,范例程序等。
(9)芯片保密性能好、单片机的抗干扰性能好。
STC89系列单片机是MCS-51系列单片机的派生产品。它在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin 兼容。STC89系列单片机高速(最高时钟频率90MHz) ,低功耗,在系统/在应用可编程(ISP,IAP) ,不占用户资源。根据本系统的实际情况,选择STC89C52单片机。
图3.2 STC89C52引脚图
STC89C52的特性
●与MCS —51产品兼容
●8K 字节可编程闪速程序存储器。寿命:1000写/擦循环;数据保存时间:10年 ●全静态工作:0Hz ~24MHz
●三级程序存储器加密锁定
●256X8内部RAM
●32条可编程I/O口线
●三个16位定时器/计数器
●五个中断源
●可编程串行通道
●低功耗的闲置和掉电模式
STC89C52是一种带8K 字节闪速可编程只读存储器(PROM )的低功耗、高性能CMOS 8位微控制器。该器件采用高密度、非易失存储器制造技术,与工业标准的MCS —51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪速存储器组合在单个芯片中,STC89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
3.3 超声波发射电路的方案比较、设计与论证
方案一、采用三极管推动变压器完成40KHz 方波的升压,由于变压器的参数离散,同时自行绕制的变压器参数很难完全满足设计要求,虽然变压器发射电路可以使发射电压升得很高,但是需要订做而且发射波形有时发生严重畸变,发射效率并不高,推动的三极管功耗很大,因此我们不采用本方案。
图3.3 三极管推动方案
方案二、单片机输出的 40kHz 方波信号一路经一级反向器后送到超声波换能器的一个电极。另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端。可以提高超声波的发射强度。输出端采用两个反向器并联。用以提高驱动能力。上拉电阻 R2、R3一方面可以提高反向器74LS04输出高电平的驱动能力。另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。因此,我们采用这个方案。
图3.4 超声波发射部分
3.4 超声波接收电路的方案比较、设计与论证
方案一、超声波接收处理部分电路前级采用NE5532构成10000倍放大器,对接收信号进行放大;后级采用LM311比较器对接收信号进行整形成方波,送给单片机中断口进行中断处理,比较电压为LM311的3管脚的输入。
图3.5 采用NE5532方案
方案二、采用集成接收芯片对超声波回波信号进行放大与整形,在这里我们采用SONY 公司生产的红外接收专用芯片CX20106A ,由于它的接收频率在38KHz ,与超声波回波频率40KHz 较为接近。CX20106A 内部集成了前置放大与限幅放大,总增益可达80dB ,带通滤波电路,峰值检波,噪声抑制电路,自动增益控制电路和波形整形电路。可以通过调整外部的电容C1调整它的接收灵敏度,调整外部电阻R3可以的调整它的
U3接收中心频率与增益,它工作稳定,灵敏度高,功耗小,接收回波能力强。
部分
图3.6 超声波接收部分
超声波测距注意事项:避免余波信号的干扰。
图3.7 超声波发射头和接收头的两个波形图
图3.7是通过示波器采集的超声波发射头和接收头的两个波形。从图中我们,当发射头发出一组40KHz 的脉冲后(图中下面的波形) ,接收头几乎在同一时间就收到了超声波信号,这个波束是余波信号。持续一段时间后,我们才看到超声波接收头又收到了一组波束,这个才是经过被测物表面反射的回波信号。
超声波测距时,需要测的是开始发射到接收到信号的时间差,由上图中就可看出,需要检测的有效信号为反射物反射的回波信号,故要尽量避免检测到余波信号。这就要求对接收头收到的波束进行处理,这也是超声波检测中存在最小测量盲区的主要原因。 在软件中的处理方法就是,当发射头发出脉冲后,记时器同时开始记时。我们在记时器开始记时一段时间后再开启检测回波信号,以避免余波信号的干扰。等待的时间可以为1ms 左右。更精确的等待时间可以减小最小测量盲区。
4 系统软件设计
4.1 软件设计的总体结构框图
图4.1 软件设计的总体结构框图
系统初始化模块:即系统刚上电的时候对系统的各个引脚的电平分配和对各寄存器的初值赋值,中断程序的初始化。
发射接收控制模块:发射控制模块是软件控制超声波发射电路发射。超声脉冲启动定时器工作,同时启动接收电路工作,当接收电路有信号输入时,对输入信号进行处理中断处理。
运算结果处理模块:运算结果处理模块将所测的时间进行处理,根据公式计算出距离。
液晶显示距离和温度模块:此模块是对已经处理好的数据进行显示,较好的显示实时距离。
声光播报模块:利用蜂鸣器、发光二极管来进行限距报警。
软件设计的主要思路是将预置、发射、接收、显示、语音播报,测温等功能编成独立的子模块,在主程序中分别调用预置子程序,发射子程序、中断接收子程序、定时子程序,并把测量的结果进行分析处理,根据处理结果决定显示程序的内容以及是否调用声音,显示程序。当测得距离小于预置距离时,声音、显示报警程序被调用。
4.2 主流程图
图4.2 主程序流程图
4.3 超声波发生子程序和超声波接收中断程序
超声波发生子程序的作用是通过P1.0端口发送脉冲信号(频率约40kHz 的方波)
占空比不一定为50%,脉冲宽度为12.5μs 左右,同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行准确。
(1)使用外部中断INT0来检测回波,使其工作于低电平触发方式(IT0=0)。当检测到回波信号,触发并进入中断,停止计时器T0,在数据处理子程序中读取T0的值,并计算测量结果。
(2)使用T0作为计时器,工作方式为方式1。如果定时时间结束仍没有接收到回波信号,则进入T0溢出中断服务程序,关闭外部中断INT0和T0溢出中断,重新开始新的一轮测试。
由于T0工作方式为方式1时,最大可定时65ms, 即在理想情况下可测最大距离为0.065*324/2=10.5m。而考虑实际情况下并不需测这么远的距离或系统很难探测到这么远的距离,但为了方便计算,所以初值赋为0。
超声波测距仪主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值0以表示此次测距不成功。
时间计测:超声波从发射到接收的间隔时间的测定是由单片机内部的计数器T0来完成的。在调试过程中出现的发送部分与接收部分的直接串扰问题是由于换能器之间的距离不大,有部分声波未经被测物就直接绕射到接收换能器上。从发射开始一直到“虚假反射波”结束这段时间,通过发送超声波后延时1ms 才打开外部中断0,也即超声波发射后不是马上的接收,而是要经过一段时间的等待再接收,使不会发中断申请,可有效躲避干扰,但也会形成所谓的“盲区”,“盲区”只能尽量减小而不能消除。本系统的盲区通过算测试在7cm 左右。
5 系统调试分析
5.1 硬件调试
在电路安装完毕后,不要急于通电测试,而首先必须做好以下调试前的检查工作。 检查连线情况:
经常碰到的有错接(即连线的一端正确,而另一端误接)、少接(指安装时漏接的线)及多接(指在电路上完全是多余的连线)等连线错误。检查连线可以直接对照电路原理图进行,但若电路中布线较多,则可以以元器件(如运放、三极管)为中心,依次检察查其引脚的有关连线,这样不仅可以查出错接或少接的线,而且也较易发现多余的线。 为确保连线的可靠,在查线的同时,还可以用万用表电阻档对接线作连通检查,而且最好在器件外引线处测量,这样有可能查出某些“虚焊”的隐患。
检查元器件安装情况:元器件的检查,重点要查集成运放、三极管、二极管、电解电容等外引线与极性有否接错,以及外引线间有否短路,同时还须检查元器件焊接处是否可靠。这里需要指出,在焊接前,必须对元器件进行检测,确保元器件能正常工作,以免给调试带来不必要的麻烦。
检查电源输入端与公共接地端间有否短路在通电前,还需用万用表检查电源输入端与地之间是否存短路,以防止接上电源可能发生短路而烧掉元器件的现象,若有则须进一步检查其原因。
在完成了以上各项检查并确认无误后,才可通电调试,但此时应注意电源的正、负极性不能接反。
5.2 调试结果
表5.1 距离测量数据表
从表5.1中可以看出绝对误差最大值为3cm ,相对误差小于5%。本系统所测最小距离为0.07m ,最大距离在5.00m 左右,满足设计要求。
5.3 误差分析
引入测量误差的原因主要有:
1、环境对测量的影响,包括空气温度变化引起的声速变化、空气成分变化、声波传播途中温度梯度导致测温不准确等,由于这些因素对结果产生的影响比较小。开关门的可靠性是标志超声波测距仪可靠性的关键, 即同步门控制。也就是说发射与脉冲计数必须同步。
2、量化误差:即参考频率计数结果的误差, 由于选择的单片机计时时钟频率为12MHz, 所以有量化误差为0.01米,符合测距要求范围。所以超声波发送应考虑因素有: 1.量程范围;2. 目标距离和目标反射情况。超声波频率高对探测较小目标有利, 有效反射目标应大于至少10 个波长以上, 对于非垂直于发射波束的目标, 大波束角的传感器通常可以获得更强的回波信号, 而波束角越窄对于减小散射波的干扰越有利。
3、触发误差:由于被测信号经放大、整形, 门控产生“开门脉冲”和“关门脉冲”中, 噪声信号、干扰信号的掺入, 使触发的时间可能提前或滞后, 给测量结构带来了随机误差,该误差与信号的触发波形有很大关系。
4、超声波波束对探测目标的入射角的影响;超声波回波声强与待测距离的远近有
直接关系,所以实际测量时,不一定是第一个回波的过零点触发;影响测量误差的因素很多,还有现场环境干扰、实际脉冲频率等。
总结
经过两周的传感器实训终于完成了超声波测距系统的制作,制作成功的系统能测出5米左右的距离,在1.5米的范围内精度小于1厘米;在测较远距离时由于超声波发射功率不足使得数码管显示的数值不断地跳动。如果加大超声波发射头的发射功率可以使得探测的距离更加远且数码管显示的数值更加稳定。
在选择驱动数码管的电路方案时选择使用上拉电阻的方式,由于使用的是较大尺寸的数码管需要比较大电流才可使数码管显示亮度正常;但是直接选择上拉电阻来驱动数码管的亮度勉强能看清显示的数值。后来,改变了驱动方案,使用74HC245作为数码管驱动芯片;增加了74HC245芯片后数码管的显示亮度正常。看来作为经常使用的电路方案虽然简单但是也要熟悉其原理以及其工作方式,在组成其它电路时能够迅速调用以加快产品的开发速度。 在本科阶段应该对基本的放大电路、滤波电路、显示电路等基本电路能够迅速调用和积累相关经验。
在调试电路时使用的是旧芯片,芯片的管脚部分氧化造成芯片接触不良。例如,超声波发射电路要使用到74HC04非门芯片用于推动超声波发射头工作,使用08年生产的芯片超声波探测的距离只有50厘米左右,更换了新的74HC04非门芯片后超声波测距系统能够测得5米左右的距离。用单片机驱动数码管时也出现了同样的问题,没有改用新的单片机前数码管的显示亮度有点暗,更换新的单片机后数码管显示亮度正常。在电子线路设计中对于存储了半年以上的元器件在使用前要去除管脚的氧化膜,否则有可能造成电路接触不良。
在编写程序时要事先画出程序流程图,以便在编写较大程序时可以按照程序流程图来组织程序结构。程序编写完成后再仔细分析每一条程序代码以便清楚对应电路的信号流向及状态。
谢 辞
在本次传感器实训过程中我得到了指导老师的悉心指导老师对我们要求很严格,要我们自己独立完成电路方案、程序和电路调试,这让我们时刻严格要求自己起到了很大的督促作用。老师对于我们所问的问题都能够耐心的解答并且给出了详细的解决方案。老师们渊博的知识以及对我们的严格要求和严谨的作风都给我留下了很深的印象,这将使我终身受益。感谢您们在忙碌的教学工作和生活中抽出时间来给我们解答各种问题,悉心指导,并提出了许多宝贵意见。
参考文献
[1] 吴金戌.8051单片机实践与应用[M].北京:清华大学出版社,2006
[2] 王宗和. 单片机实验与综合训练[M].北京:高等教育出版社,2005
[3] 马忠梅,籍顺心,张凯,马岩. 单片机的C 语言应用程序设计[M].北京:北京航空航天大学出版社,2003
[4] 楼然苗,李光飞. 单片机课程设计指导[M].北京:北京航空航天大学出版社,2005
[5] 张珩,刘亚杰. 基于单片机的超声波测距倒车防撞报警系统[J].广西轻工业,2009/9
[6] 李文辉. 基于MSP430单片机的超声波倒车雷达监测报警系统[J].自动化与仪器仪表,2009/4
[7] 吴琼,封维忠,马文杰. 汽车倒车雷达系统的设计与实现[J].现代电子技术,2009/9
[8] 黄伟玲,冯羽生. 基于P89V51RB2的汽车倒车雷达设计[J].自动化技术与应用,2008/12
[9] 朱利娜. 基于单片机的超声测距倒车雷达的研究[J].微计算机信息,2007/23
测试程序如下:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit test=P1^4;
//sbit Trig=P2^7;
sbit transfer=P1^0;
sbit ADDKEY=P2^0;
sbit MODEKEY=P2^1;
sbit REBACK=P2^2;
sbit Echo=P3^2;
sbit speaker=P1^1;
uint savedistance,distance;
unsigned char change,flag;
uint succeed_flag,time,timeH,timeL;
//char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay_20us()
{
uchar a;
for(a=0;a
}
void display(uint temp)
{
uchar ge,shi,bai,qie;
//temp=temp-23;
qie=temp%10000/1000;
bai=temp%1000/100;
shi=temp%100/10;
ge=temp%10;
P2=0x1F;
P0=table[qie];
delay(1);
P2=0x2F;
P0=table[bai];
delay(1);
P2=0x4F;
P0=table[shi];
delay(1);
P2=0x8F;
P0=table[ge];
delay(1);
}
void setdistance(void)
{
if(MODEKEY==0)
{
delay_20us();
if(MODEKEY==0)change=1;
while(MODEKEY==0);
distance=0;
flag=0;
}
if(REBACK==0)
{
delay_20us();
if(REBACK==0)change=0;
while(REBACK==0);
flag=1;
distance=0;
}
if(change==1)
{
if(ADDKEY==0)
{
delay_20us();
if(ADDKEY==0){savedistance++;if(savedistance>9998)savedistance=0;}
while(ADDKEY==0);
}
display(savedistance);
display(savedistance);
display(savedistance);
display(savedistance);
display(savedistance);
display(savedistance);
}
if((savedistance
}
void CLK40K()
{
uchar i=3; //
TH1=0;
TL1=0;
EA=0;
EX0=1;
IT0=0;
TR1=1; //START TIME0
do
{
transfer=~transfer;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
//_nop_();
}
while(--i);
}
void main()
{
test=0;
IT0=1;
TMOD=0x10;
EX0=1;
Echo=1;
change=0;
ADDKEY=1;
MODEKEY=1;
speaker=0;
flag=0;
while(1)
{
setdistance();
if(change==0)
{
Echo=1;
CLK40K();
while(Echo==0);
EA=1;
EX0=1;
if(succeed_flag==1)
{
time=timeH*256+timeL;
distance=time*0.172;
distance=distance-23;
display(distance);
}
if(succeed_flag==0)
{
distance=5544;
test=!test;
}
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
display(distance);
}
}
}
void exter() interrupt 0
{ EX0=0;
TR1=0;
timeH=TH1;
timeL=TL1;
IE0=0;
TH1=0;
TL1=0;
succeed_flag=1;
}
void timer1() interrupt 3
{
TH1=0;
TL1=0;
}