目 录
第1章 引 言……………………………………………………………………………1
1.1 超声波测距系统概述…………………………………………………………2
1.1.1超声波传感器…………………………………………………………2
1.1.2超声波测距的基本原理………………………………………………2
1.2 本设计任务和主要内容………………………………………………………3
1.2.1设计任务………………………………………………………………3
1.2.2主要内容………………………………………………………………3
第2章 系统主要硬件电路设计………………………………………………………4
2.1 方法论证与比较………………………………………………………………4
2.2 单片机系统电路………………………………………………………………5
2.3 单片机硬件电路………………………………………………………………5
2.3.1单片机系统及显示电路………………………………………………5
2.3.2超声波发射电路………………………………………………………6
2.3.3超声波检测接受电路…………………………………………………7
第3章 系统软件设计…………………………………………………………………9
3.1 超声波测距器的算法设计………………………………………………………9
3.2 主程序设计……………………………………………………………………10
3.3 超声波发射和接收子程序……………………………………………………11
3.4 显示子程序……………………………………………………………………14
3.5 超声波测距控制源程序………………………………………………………15
结束语 ………………………………………………………………………………16
参考文献 ……………………………………………………………………………17
基于单片机超声波测距系统的设计
第1章 引 言
18世纪,意大利传教士兼生物学家斯帕兰·扎尼在研究蝙蝠夜间活动时,发现将蝙蝠眼睛蒙上,在伸手不见五指的黑夜里,它仍能穿梭飞行,可是把蝙蝠的双耳塞住,它就会到处瞎撞。原来,蝙蝠飞行时能发出高频率的尖叫,由它特大的耳廓接收回波,来判定出目标或障碍物及其距离。蝙蝠是靠高频率的尖叫来确定障碍物的位置的。蝙蝠尖叫声的声波频率在每秒2万到10万赫兹之间,我们的耳朵对这样频率范围内的声波是听不到的,这样的声波被称之为超声波。蝙蝠发出超声波,然后借助物体反射回来的回声,就能判断出所接近的物体的大小、形状和运动方式。在自然界中除了蝙蝠还有很多其它动物能发出超声波,如海洋中的海豚也具备很强的超声定位本领。
人们正是从自然界生物中获得了灵感,开始了仿生学研究并取得卓著成果。第二次世界大战时,军舰已使用回声探测术来侦察水下的潜艇。50年代,科学家们将超声波探测技术应用到医学上,到70年代以来,以B型超声成像为代表的医学超声诊断技术已经取得了很快的发展。超声诊断由于安全、简单、经济、信息量丰富而受到医学界的特别赏识。现在超声波已广泛应用于无损探伤物位测量测厚测距等领域。
近二、三十年,特别是近十年来,由于电子技术及压电陶瓷材料的发展,使超声检测技术得到了迅速的发展。超声技术是一门以物理、电子、机械、及材料学为基础的通用技术之一。超声技术是通过超声波产生、传播及接收的物理过程而完成的。超声波具有聚束、定向及反射、透射等特性。
超声检测技术是利用超声波在媒质中的传播特性(声速、衰减、反射、声阻抗等)来实现对非声学量(如密度、浓度、强度、弹性、硬度、粘度、温度、流速、流量、液位、厚度、缺陷等)的测定。它的基本原理是基于超声波在介质中传播时遇到不同的界面,将产生反射,折射,绕射,衰减等现象,从而使传播的声时,振幅,波形,频率等发生相应变化,测定这些规律的变化,便可得到材料的某些性质与内部构造情况。目前,超声波测距在各种场合均已经得到广泛的应用,如汽车倒车、海洋测量、物体识别、工业自动控制、建筑工程测量和机器人视觉识别等。
1.1 超声波测距系统概述
1.1.1 超声波传感器
超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。
测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12 M晶振,所以此系统的测量精度理论上可以达到毫米级。
超声波发生器可以分为两类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。
1.1.2 超声波测距的基本原理
超声波发生器在某一时刻发出超声波信号,遇到被测物体后反射回来,被超声波接收器接收到。只要计算出超声波信号从发射到接收到回波信号的时间,知道在介质中的传播速度,就可以计算出距被测物体的距离:
(1-1)
式中D为被测物到测距仪之间的距离,S为超声波往返通过的路程,V为超声波在介质中的传播速度,T为超声波从发射到接收所用的时间。为了提高精度,需要考虑不同温度下超声波在空气中传播速度随温度变化的关系:
(1-2)
式中,T为实际温度(℃),v的单位为m/s。
1.2 本设计任务和主要内容
1.2.1 设计任务
设计一个超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在30cm-200cm,测量精度0.5cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果,并且精确到小数点后一位(单位:cm),测量方式可通过硬件开关预置。
1.2.2 主要内容
该系统主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。其主要内容如下:
硬件电路的设计:
1.根据超声波测距的特点,进行系统的整体规划和设计。
2.针对系统的整体功能,对各个模块电路进行具体设计。
3.对超声波发生电路进行论证和设计,产生用于测量的超声波。
4.对超声波接收电路进行论证和设计,接收反射回来的超声波。
5.对数据采样电路进行设计和分析,测量发送和接收的时间,并计算距离。
6.LED数码显示测量的距离值,以文字显示的方式显示测量的距离。
系统软件的设计:
1.超声波测距器的算法设计。
2.系统主程序的设计。
3.发送子程序的设计。
4.接收中断程序的设计。
5.显示子程序的设计。
6.超声波测距控制源程序的设计。
第2章 系统主要硬件电路设计
2.1 方法论证与比较
目前,非接触式测距仪常采用超声波、激光和雷达。
激光测距仪是利用激光对目标的距离进行准确测定的仪器。激光测距仪在工作时向目标射出一束很细的激光,由光电元件接收目标反射的激光束,计时器测定激光束从发射到接收的时间,计算出从观测者到目标的距离。虽然激光测距比较精确,但是需要注意人体安全,制做的难度较大,成本也较高,并且光学系统需要保持干净,否则将会影响测量。
雷达是利用极短的无线电波进行探测的,雷达的组成部分有发射机、天线、接收机和显示器等。由于无线电波传播时,遇到障碍物就能反射回来,雷达就根据这个原理把无线电波发射出去,再用接收装置接收反射回来的无线电波,这样就可以测定目标的方向、距离、高度等。雷达被称为“千里眼”,白天黑夜均能探测远距离的目标,且不受雾、云和雨的阻挡,具有全天候、全天时的特点,并有一定的穿透能力。因此,它常常是军事上必不可少的电子装备。但是,雷达却存在致命的的三大弱点:一是对超低空目标有盲区,“千里眼”实际是远视眼,头顶和鼻子底下有盲区;二是雷达是主动用电波去搜寻目标的,易暴露自身;三是雷达很容易受到干扰,频率相同的电波它不分敌我,一律可以入内。
超声波测距是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。其测距原理与雷达原理相一致,但是在测距方面,超声波却比雷达和激光更有明显的优势。激光和雷达测距仪造价偏高,不利于广泛的普及应用,在某些应用领域有其局限性,一般仅用于军事和工业领域。相比之下,超声波测距系统电路不仅易实现、结构简单和造价低,而且穿透力强,指向性强,传输过程中衰减少,能量消耗缓慢,在介质中传播的距离较远,在传播过程中也不受烟雾、空气能见度等因素的影响,对外界光线、色彩和电磁场不敏感,更适于黑暗、电磁干扰强、有毒、有灰尘或烟雾的恶劣环境,在识别透明及漫反射性差的物体上也更有优势。
另外,超声波与一般声波比较,它的振动频率高,而且波长短,因而具有束射特性,方向性强,可以定向传播,其能量远远大于振幅相同的一般声波,并且具有很高的穿透能力。
2.2 单片机系统电路
根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统设计框图如图2-1所示:
图2-1 超声波测距器系统设计框图
2.3 系统硬件电路
本系统主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。其原理图如图2-2所示:
图2-2 超声波测距板原理框图
2.3.1 单片机系统及显示电路
单片机采用AT89S51或其兼容系列,采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机使用P1.0端口输出超声波转化器所需的40KHz方波信号,利用外中断0口检测超声波接受电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动。
单片机系统如图2-3所示:
图2-3 AT89S51单片机图
2.3.2 超声波发射电路
发射电路主要硬件单元的功能:单片机 OC1端输出的40kHz方波信号一路经一级反向器后送到超声波换能器的一个电极。另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力。上拉电阻 R10、R20一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。
图2-4 超声波发射电路原理图
因为本课题属于近距离测量,所以本系统的超声波发生器采用常用的压电式超声波换能器来实现。压电超声波转换器的功能是利用压电晶体谐振工作。其内部结构如图2-4所示,它由两个压电晶片和一个共振板共同组成。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如果没加电压,当共振板接受到超声波时,将压迫压电振荡器做振动,将机械能转换为电信号,这时它就成为超声波接受转换器。另外,超声波发射转换器和接受转换器的结构稍有不同。
图2-5 超声波转化结构图
2.3.3 超声波检测接受电路
参考红外转化接收期刊的电路采用集成电路CX20106A,这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。适当改变C4的大小,可改变接受电路的灵敏度和抗干扰能力。
图2-6 超声波接收电路原理图
第3章 系统的软件设计
超声波测距软件设计主要由主程序、超声波发射子程序、超声波接受中断程序及显示子程序组成。下面对超声波测距器的算法、主程序、超声波发射子程序和超声波接受中断程序逐一介绍。
3.1 超声波测距器的算法设计
图3-1示意了超声波测距的原理,即超声波发生器T在某一时刻发出的一个超声波信号,当超声波遇到被测物体后反射回来,就被超声波接收器R所接受。这样只要计算出发生信号到接受返回信号所用的时间,就可算出超声波发生器与反射物体的距离。距离计算公式如下:
(3-1)
D为被测物与测距器的距离,S为声波的来回路程,C为声速,T为声波来回所用的时间。
图3-1超声波测距原理图
声速c与温度有关,如温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返时间,即可求得距离。在系统加入温度传感器来监测环境温度,可进行温度被偿。这里可以用DS18B20测量环境温度,根据不同的环境温度确定一声速提高测距的稳定性。为了增强系统的可靠性,应在软硬件上采用抗干扰措施。
表3-1 不同温度下的超声波声速表
3.2 主程序设计
首先对系统环境初始化,设置定时器T0工作模式为16位的定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清0。然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,设计时取20℃时的声速为344 m/s则有:
(3-2)
T0为计数器T0的计数值。
测出距离后结果将以十进制BCD码方式LED,然后再发超声波脉冲重复测量过程。主程序框图如图3-2所示:
图3-2主程序框图
主程序代码如下:
START: MOV SP, #4FH
MOV R0, #40H ;40~43H为显示数据存放单元(40为最高位)
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 ;65ms初值
MOV TL0, #00H ;40KHz初值
MOV TH1, #0F2H
MOV TL1, #0F2H
MOV P0, #0FFH
MOV P1, #0FFH
MOV P2, #0FFH
MOV P3, #0FFH
MOV R4, #04H ;超声波脉冲个数控制(为赋值的一半)
SETB PX0
SETB ET0
SETB EA
CLR 00H
SETB TR0 ;开启测距定时器
START1: LCALL DISPLAY
JNB 00H, START1 ;收到反射信号时标志位为1
CLR EA
LCALL WORK ;计算距离子程序
SETB EA
CLR 00H
SETB TR0 ;重新开启测距定时器
MOV R2, #64H ;测量间隔控制(约4*100=400ms)
LOOP: LCALL DISPLAY
DJNZ R2, LOOP
SJMP START1
3.3 超声波发射和接收子程序
超声波发生子程序的作用是通过P1.0端口发送2个左右的超声波信号频率约40KHz的方波,脉冲宽度为12us左右,同时把计数器T0打开进行计时。超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。超声波测距系统的软件设计流程如图3-3所示:
(a) 主程序流程图
(b)定时中断服务子程序
(c)外部中断服务子程序
图3-3超声波测距系统的软件设计流程
中断程序如下:
;T0中断,65ms中断一次
INTT0: CLR EA
CLR TR0
MOV TH0, #00H
MOV TL0, #00H
SETB ET1
SETB EA
SETB TR0 ;启动计时器T0,用以计算超声波来回时间
SETB TR1 ;开启发超声波用定时器T1
OUT: RETI
;T1中断,发超声波用
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
延时程序如下:
DL1MS: MOV R6, #14H
DL1: MOV R7, #19H
DL2: DJNZ R6, DL2
DJNZ R6, DL1
RET
3.4 显示子程序
显示程序如下:
;40H为最高位,43H为最低位,先扫描高位
DISPLAY: MOV R1, #40H
MOV R5, #0F7H
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
JNB ACC.0, ENDOUT
RR A
MOV R5, A
AJMP PLAY
ENDOUT: MOV P2, #0FFH
MOV P0, #0FFH
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
;共阳数码管0,1,2,3,4,5,6,7,8,9,不亮
3.5 超声波测距控制源程序
以下是用汇编语言编写的超声波测距控制源程序:
采用AT89S51 12MHz晶振
显示缓冲单元在40H~43H,使用内存44H、45H、46H用于计算距离
20H用于标志
VOUT EQU P1.0 ;脉冲输出端口
;中断入口程序
ORG 0000H
LJMP START
ORG 0003H
LJMP PINT0
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
结 束 语
以前以为只有雷达才能够远距离测量距离,对测距仪器的认识也是知之甚少。在这次实验中,我收集了很多有关测距的知识,也从中学到了很多。包括有哪些常用的测距方式,它们各自的工作原理是什么,它们又存在哪些优势和弱点等等。
在系统设计过程中,每一个步,我都做得很小心,什么时候是用几号字体,公式的输入格式应该如何,图表的应该放在哪个更合适的位置以及图表的标注应该如何把握……第一次,我真正体会到了什么是标准的规范化。而在这个过程中,我也一直朝着这个规范化的目标不断努力,并且努力做得更好。
经过这次设计,可以说,对系统设计的整个流程有了比较深刻的认识。从不知道,到慢慢了解,再到一点点深入认识,直到最后的基本掌握,这就是一个不断努力、不断进步的过程。
在本设计中,通过外部硬件电路来产生40kHz的超声波信号,因而相对于由单片机产生的40kHz超声波信号而言,更加接近超声波传感器的共振频率,因而使超声波传感器的输出最大,可以有效地提高测量距离,测量距离在30cm-200cm内。
本系统存在的不足之处:
首先,本系统设计的超声波测距系统与激光测距相比,测量的精度不是非常精确,测量精度只有0.5cm,其精确度有待于提高。其测距误差主要来源于以下几个方面:
1.超声波发射与接收探头与被测点存在一定的角度,这个角度直接影响到测量距离的精确值;
2.超声波回波声强与待测距离的远近有直接关系,所以实际测量时,不一定是第一个回波的过零点触发;
3.由于工具简陋,实际测量距离也有误差。影响测量误差的因素很多,还包括现场环境干扰、时基脉冲频率等等。
其次,与雷达测距相比,其测量的距离不是很远,本系统设计的测距系统,其测量距离只在30cm-200cm以内。针对市场需求,本设计还可以加大发射功率,让测量的距离更加的远。在显示方面,也可以对程序做适当改动,使开始发射超声波时LED显示出温度值,到超声波回波接收到以后通过计算得出距离值时,LED自动切换显示距离值,这样在视觉效果上得到更加直观的了解。
参考文献
[1]王振宇. 雷达的弱点——缺点列举法. 中国职工科技报/20##年/12月/8日/第004版
[2]王庆利,袁建敏. 单片机设计案例实践教程(M). 信息产业部电子教育与考试中心组编, 北京邮电大学出版社 2008
[3]求是科技. 单片机典型模块设计实例导航.2版(M). 人民邮电出版社 2008.07
[4]李平, 杜涛, 罗和平. 单片机应用开发与实践(M). 机械工业出版社 2008.8
[5]于殿泓, 王新年. 单片机原理与程序设计实验教程(M). 西安电子科技大学出版社 2007
[5]张萌,和湘,姜斌. 单片机应用系统开发综合实例(M). 清华大学出版社 200707
[6]靳达. 单片机应用系统开发实例导航(M). 人民邮电出版社 2003
[7]余永权. 单片机在控制系统中的应用(M). 电子工业出版社 2003
[8]梁森,欧阳三泰,王侃夫. 自动检测技术及应用. 机械工业出版社 2010