超声波测距器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORG 000BH LJMP ORG 0013H
INTT0
RETI ORG 001BH LJMP ORG 0023H RETI ORG 002BH RETI
INTT1
; ;******************************************** ;* 主 程 序 * ;******************************************** ; START: MOV SP,#4FH MOV R0,#40H ;40H-43H为显示数据存放 单元(40H为最高位) MOV R7,#0BH CLEARDISP: MOV @R0,#00H INC R0 DJNZ R7,CLEARDISP MOV 20H,#00H MOV TMOD,#21H ;T1为8位自动重装模 式,T0为16位定时器 MOV TH0,#00H ;65毫秒初值 MOV TL0,#00H MOV TH1,#0F2H ;40KHZ初值 MOV TL1,#0F2H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R4,#04H ;超声波肪冲个数控制
6
6.1
控制源程序清单
单片机汇编源程序清单
;******************************************** ;* 超声波测距器 * ;* AT89C52 12MHZ晶振 共阳LED显示器 * ;******************************************** ;测距范围7CM-11M,堆栈在4FH以上,20H用于标志 ;显示缓冲单元在40H-43H,使用内存44H、45H、46H用于计算距离 ; VOUT EQU P1.0 ; 红外脉冲输出端口 ; ;******************************************** ;* 中断入口程序 * ;******************************************** ; ORG 0000H LJMP START ORG 0003H LJMP PINT0
3.3
超声波检测接收电路 集成电路CX20106A是一款红外线检波接收的专用芯片,常 用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率 38 kHz与测距的超声波频率40 kHz较为接近,可以利瑁它制作 超声波检测接收电路,如图3.5所示。实验证明,用CX20106A 接收超声波(无信号对
输出高电平)具有很高的灵敏度和较强的抗干扰能力。适当地 更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能 力。
INTT1:
CPL VOUT DJNZ R4,RETIOUT CLR TR1 ;超声波发送完毕,关T1 CLR ET1 ; MOV R4,#04H SETB EX0 ;开启接收回波中断 RETIOUT: RETI ;外中断0,收到回波时进入 PINT0: CLR TR0 ;关计数器 CLR TR1 CLR ET1 CLR EA ; CLR EX0 ; MOV 44H,TL0 ;将计数值移入处理单元 MOV 45H,TH0 ; SETB 00H ;接收成功标志 RETI ; ;**************************************************** ;* 显示程序 * ;**************************************************** ; 40H为最高位,43H为最低位,先扫描高位 DISPLAY: MOV R1,#40H;G MOV R5,#0F7H;G PLAY: MOV A,R5 MOV P0,#0FFH MOV P2,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A LCALL DL1MS INC R1 MOV A,R5
4
系统程序的设计
超声波测距器的软件设计主要由主程序、超声波发生子程 序、超声波接收中断程序及显示子程序组成。由于C语言程序 有利于实现较复杂的算法,汇编语言程序则具有较高的效率并 且容易精确计算程序运行的时间,而超声波测距器的程序既有
较复杂的计算(计算距离时),又要求精确计算程序运行时间 (超声波测距时),所以控制程序可采用C语言和汇编语言混 合编程。下面对超声波测距器的算法、主程序、超声波发生子 程序和超声波接收中断程序逐一介绍。 4.1 超声波测距器的算法设计 图6示意了超声波测距的原理,即超声波发生器T在某一时 刻发出一个超声波信号,当这个超声波遇到被测物体后反射回 来,就会被超声波接收器R接收到。这样,只要计算出从发出 超声波信号到接收到返回信号所用的时间,就可算出超声波发 生器与反射物体的距离。该距离的计算公式如下: d=s/2=(v×t)/2 (1) 其中:d为被测物与测距器的距离;s为声波的来回路程;v为 声速;t为声波来回所用的时间。 超声波也是一种声波,其声速v与温度有关。表3.1列出了 几种不同温度下的超声波声速。在使用时,如果温度变化不 大,则可认为声速是基本不变的。如果测距精度要求很高,则 应通过温度补偿的方法加以校正。声速确定后,只要测得超声 波往返的时间,即可求得距离。
温度 表3.1不同温度下超声波声速表 30 -20 -lO O 10 20 30 100
/℃ 声速/(m.s 313 319 325 323 338 344 349 386 一1)
4.2
主程序 主程序首先要对系统环境初始化,设置定时器TO工作模式 为16位定时/计数器模式,置位总中断允许位EA并对显示端口 PO和P2清0;然后调用超声波发生子程序送出一个超声波脉 冲。为了避免超声波从发射器直接传送到接收器引起的直射波
3
系统硬件电路的设计
硬件电路主要分为单片机系统及显示电路、超声波发射电 路和超声波检测接收电路三部分。 3.1 单片机系统及显示电路
单片机采用89C51或其兼容系列。系统采用12MHz高精度的 晶振,以获得较稳定的时钟频率,并减小测量误差。单片机用 P1.O脚输出超声波换能器所需的40kHz方波信号,利用外中断0 口监测超声波接收电路输出的返回信号。显示电路采用简单实 用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极 管9012驱动。单片机系统及显示电路如图2所示。 3.2超声波发射电路
超声波测距器
1 功能要求
超声波测距器可应用于汽车倒车、建筑施工工地以及一些 工业现场的位置监控,也可用于如液位、井深、管道长度、物 体厚度等的测量。其测量范围为0. 10~4.00m,测量精度为 1cm。测量时与被测物体无直接接触,能够清晰、稳定地显示 测量结果。
2
方案论证
我们知道,由于超声波指向性强,能量消耗缓慢,在介质 中传播的距离较远,因而超声波经常用于距离的测量。利用超 声波检测距离设计比较方便,计算处理也较简单,并且在测量 精度方面也能达到日常使用的要求。 超声波发生器可以分为两大类:一类是用电气方式产生超 声波;另一类是用机械方式产生超声波。电气方式包括压电 型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它 们所产生的超声波的频率、功率和声波特性各不相同,因而用 途也各不相同。目前在近距离测量方面较为常用的是压电式超 声波换能器。 根据设计要求并综合各方面因素,本例决定采用AT89C51 单片机作为主控制器,用动态扫描法实现LED数字显示,超声 波驱动信号用单片机的定时器完成。超声波测距器系统设计框 图如图1所示。
超声波发射电路原理图如图3所示。发射电路主要由反向 器74LS04和超声波换能器构成,单片机Pl.0脚输出的40kHz方
波信号一路经一级反向器后送到超声波换能器的一个电极,另 一路经两级反向器后送到超声波换能器的另一个电极,用这种 推挽形式将方波信号加到超声波换能器两端可以提高超声波的 发射强度。输出端采用两个反向器并联,用以提高驱动能力。 上拉电阻R10、R11一方面可以提高反向器74LS04输出高电平的 驱动能力;另一方面可以增加超声换能器的阻尼效果,以缩短 其自由振荡的时间。 压电式超声波换能器是利用压电晶体的谐振来工作的。超 声波换能器内部结构如图4所示,它有两个压电晶片和一个共 振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有 振荡频率时,压电晶片将会发生共振,并带动共振板振动产生 超声波,这时它就是一个超声波发生器;反之,如果两电极间 未外加电压,当共振板接收到超声波时,将压迫压电晶片作振 动,将机械能转换为电信号,这时它就成为超声波接收换能器 了。超声波发射换能器与接收换能器在结构上稍有不同,使用 时应分清器件上的标志。
5
5.1
调试及性能分析
调试 超声波测距器的制作和调试都较为简单,其中超声波发射 和接收采用Φ5的超声波换能器TCT40-1OF1(T发射)和TCT401OS1(R接收),中心频率为40 kHz,安装时应保持两换能器
中心轴线平行并相距4~8cm,其余元件无特殊要求。若能将超 声接收电路用金属壳屏蔽起来,则可提高抗干扰性能。根据测 量范围要求不同,可适当地调整与ቤተ መጻሕፍቲ ባይዱ收换能器并接的滤波电容 C4的大小,以获得合适的接收灵敏度和抗干扰能力。 硬件电路制作完成并调整好后,便可将程序编译好下载到 单片机试运行。根据实际情况,可以修改超声波发生子程序每 次发送的脉冲个数和两次测量的间隔时间,以适应不同距离的 测量需要。 5.2 性能指标 根据文中电路参数和程序,测距器可测量的范围为0.07~ 2.50m。测距器的最大误差不超过1cm。
(为赋值的一半) SETB SETB SETB SETB start1: LCALL JNB 为1 CLR LCALL SETB CLR SETB MOV 4*100=400MS) LOOP: LCALL DJNZ SJMP DISPLAY R2,LOOP Start1 EA WORK EA 00H TR0 R2,#64H ;计算距离子程序 PX0 ET0 EA TR0 DISPLAY 00H,START1
;开启测距定时器 ;收到反射信号时标志位
;重新开启测距定时器 ;测量间隔控制(约
; ;**************************************************** ;* 中断程序* * ;**************************************************** ;T0中断,65毫秒中断一次 INTT0: CLR EA CLR TR0 MOV TH0,#00H MOV TL0,#00H SETB ET1 SETB EA SETB TR0 ;启动计数器T0,用以计算超声 来回时间 SETB TR1 ;开启发超声波用定时器T1 OUT: RETI ;T1中断,发超声波用
触发,需要延时约0.1 ms(这也就是超声波测距器会有一个最 小可测距离的原因)后才打开外中断O接收返回的超声波信 号。由于采用的是12MHz的晶振,计数器每计一个数就是 1μs,所以当主程序检测到接收成功的标志位后,将计数器TO 中的数(即超声波来回所用的时间)按式(3-2)计算,即可得 被测物体与测距器之间的距离。设计时取20℃时的声速为 344m/s,则有 d=(v×t)/2一(172 To/1OOOO) cm (2) 其中:To为计数器TO的计数值。 测出距离后,结果将以十进制BCD码方式送往LED显示约 0.5s,然后再发超声波脉冲重复测量过程。图7所示为主程序 流程图。 4.3 超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过P1.O脚发送两个左右的超 声波脉冲信号(频率约40 kHz的方波),脉冲宽度为12μs左 右,同时把计数器TO打开进行计时。超声波发生子程序较简 单,但要求程序运行时间准确,所以采用汇编语言编程。 超声波测距器主程序利用外中断0检测返回超声波信号, 一旦接收到返回超声波信号(即INTO引脚出现低电平),立即 进入超声波接收中断程序。进入该中断后,就立即关闭计时器 TO,停止计时,并将测距成功标志字赋值1。 如果当计时器溢出时还未检测到超声波返回信号,则定时 器TO溢出中断将外中断O关闭,并将测距成功标志字赋值2,以 表示本次测距不成功。