基于单片机的超声波测距Word格式文档下载.docx
- 文档编号:18129709
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:12
- 大小:375.20KB
基于单片机的超声波测距Word格式文档下载.docx
《基于单片机的超声波测距Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的超声波测距Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
1.2性能指标2
二、反案论证2
三、系统硬件电路的设计3
3.1单片机系统及显示电路3
3.2超声波发射电路3
3.3超声波检测接收电路5
3.4系统程序的设计5
3.5超声波测距器的算法设计6
3.6主程序6
3.7超声波发生子程序和超声波接收中断程序7
四、系统软件设计7
五、调试步骤9
六、心得体会9
参考文献11
附录1.系统硬件电路图12
一、设计任务和性能指标
1.1设计任务
设计一个超声波测距器,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。
要求测量范围在0.10~4.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。
1.2性能指标
根据文中电路参数和程序,测距器可测量范围为0.07~5.50m,实验中对测量范围0.07~2.50m内的平面物体做了多次测试,测距器的最大误差不超过1cm重复一致性很好。
1.距离显示:
用三位LED数码管进行显示(单位是CM)。
2.测距范围:
7CM到550CM之间。
二、反案论证
我们知道,由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到日常使用的要求。
超声波发生器可以分为两大类:
一类是用电气方式产生超声波,一类是用机械方式产生超声波。
电气方式包括压电型、电动型等;
机械方式有加尔统笛、液哨和气流旋笛等,它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。
目前在近距离测量方面较为常用的是压电式超声波换能器。
根据设计要求并综合各方面因素,决定采用AT89C51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器系统设计框架如图1。
图1超声波测距器系统设计框图
发射电路主要采用差分放大电路来实现的,由反相器74LS04和超声波发射换能器T构成,输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推挽形式将方波信号加到超声波换能器的两端。
之所以采用该方案是因为通过差分放大电路可以提高超声波的发射强度,进而增加了发送距离,最终扩大了设备的测量范围。
三、系统硬件电路的设计
硬件电路主要分为单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。
3.1单片机系统及显示电路
单片机采用89C51或其兼容系列。
采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。
单片机用P1.0端口输出超声波换能器所需的40kHz方渡信号,利用外中断0口监测超声波接收电路输出的返回信号。
显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管8550驱动。
单片机系统及显示电路如图2所示。
图2片机系统及显示电路
3.2超声波发射电路
超声波发射电路原理图如图3所示。
发射电路主要由反向器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的40kHz方渡信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后进到超声波换能器的另一个电极。
用这种推挽形式将方渡信号加到超声波换能器两端,可以提高超声波的发射强度。
输出端采用两个反向器并联,用以提高驱动能力。
上拉电阻R10、R11,一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。
图3超声波发射电路原理图
复位电路是利用压电晶体的谐振来工作的。
时间脉冲如图4所示,它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一个超声渡发生器;
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声渡接收换能器了。
超声波发射换能器与接收换能器其结构上稍有不同,使用时应分清器件上的标志。
图4时间脉冲电路图
3.3超声波检测接收电路
集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路(如图45)。
实验证明用CX20106A接收超声波(无信号时输出高电平),具有很高的灵敏度和较强的抗干扰能力。
适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。
3.4系统程序的设计
超声波测距器的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。
我们知道c语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序运行的时间,而超声波测距器的程序既有较复杂的计算(计算距离时),又要求精确计算程序运行时间(超声波测距时),所以控制程序可采用c语言和汇编语言混合编程。
下面对超声波测距器的算法、主程序、超声波发生子程序和超声波接收中断程序逐一作介绍。
3.5超声波测距器的算法设计
图5示意了超声波测距的原理,即超声波发生器T在某一时刻发出一个超声渡信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。
这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。
距离的计算公式为:
d=s/2=(c×
t)/2
其中d为被测物与测距器的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。
图5超声波测距原理图
由于超声波也是一种声波,其声速c与温度有关,表6列出了几种不同温度下的超声波声速。
在使用时,如果温度变化不大,则可认为声速是基本不变的。
如果测距精度要求很高,则应通过温度补偿的方法加以校正。
声速确定后,只要测得超声波往返的时间,即可求得距离。
表6不同温度下超声波声速表
温度/℃
-30
-20
-10
10
20
30
100
声速c/(m·
s-1)
313
319
325
323
338
344
349
386
3.6主程序
主程序首先是对系统环境初始化,设置定时器TO工作模式为16位定时计数器模式,置位总中断允许位EA并给显示端口PO和P2清O。
然后调用超声
波发生子程序送出一个超声波脉冲,为了避免超声渡从发射器直接传送到接收器引起的直射渡触发,需要延时约0.lms(这也就是超声波测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。
由于采用的是12MHz的晶振,计数器每计一个数就是1μs,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(4-2)计算,即可得被测物体与测距器之间的距离,设计时取20℃时的声速为344m/s则有
D=(c×
t)/2=172TO/10000cm(4-2)
其中TO为计数器T0的计数值。
测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。
为了有利于程序结构化和容易计算出距离,主程序采用c语言编写。
图4.1为主程序流程图。
4.1主程序流程图
3.7超声波发生子程序和超声波接收中断程序
超声波发生子程序的作用是通过P1O端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12μs左右,同时把计数器T0打开进行计时。
超声波发生子程序较简单,但要求程序运行时间准确,所以采用汇编语言编程。
超声波测距器主程序利用外中断O检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。
进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。
如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志宇赋值2以表示本次测距不成功。
四、系统软件设计
4主程序设计
主程序中包括主程序,显示子程序,中断程序,如下所示:
在主程序设计中,我们采用了汇编编程。
首先进行系统初始化。
其次利用循环产生4个40KHZ的方波,由输出口进行输出,并开始计时。
第三读取外界环境的温度,由该温度确定环境中的超声波传输速度。
第四等待中断,若超声波被接收探头捕捉到,那么通过中断可测得超声波在环境中的传播时长。
第五进行计算,求得测距仪到被测物的距离。
主程序:
voidmain(void)
{
datauchardispram[5];
datauinti;
dataulongtime;
P0=0xff;
P2=0xff;
TMOD=0x11;
IE=0x80;
while
(1)
{
cs_t();
delay
(1);
testok=0;
EX0=1;
ET0=1;
while(!
testok)display(dispram);
if(1==testok)
time=TH0;
time=(time<
<
8)|TL0;
time*=172;
time/=10000;
dispram[0]=(uchar)(time%10);
time/=10;
dispram[1]=(uchar)(time%10);
dispram[2]=(uchar)(time%10);
dispram[3]=(uchar)(time/10);
if(0==dispram[3])dispram[3]=17;
}else
dispram[0]=16;
dispram[1]=16;
dispram[2]=16;
dispram[3]=16;
}
for(i=0;
i<
300;
i++)display(dispram);
}
//
/*超声接收程序(外中断0)*/
voidcs_r(void)interrupt0
TR0=0;
ET0=0;
EX0=0;
testok=1;
/*超时清除程序(内中断T0)*/
voidovertime(void)interrupt1
testok=2;
}
五、调试步骤
1.焊接完成后先确定有无硬件焊接错误
2.检测程序是否有误
3.烧程序
4.上电调试
5.测距成功
六、心得体会
经过这次的项目实训让我深刻体会到自己的不足;
不论电路基础、焊接技术、传感器知识、汇编语言以及软件的调试等方面都是远远不能满足于此次的实训。
像PROTEL99画出的原理图中,几个硬件之间的搭接并不是十分清楚,可能于我平时上课认真程度和物理基础知识不够的原因吧。
庆幸的是,这个实训不仅让我稍微弥补上述的不足,还让我额外学习了许多新的知识。
鉴于这个项目的基础上,必须要掌握单片机的内部结构与核心数据。
利用AT89C5单片机的中断和延时两个核心,配合硬件电路构成超声波测距仪。
在焊接的过程中出现不少的虚焊与焊接错误,尤其是一些极其细小的原件,十分难焊接。
但后来再组员与苗耀洲老师的配合下,成功的完成了硬件电路方面的焊接。
之后苗耀洲老师又和我们一起讲解超声波的原理与程序,大致使我对这个实训有较深的理解。
我想,如果作为一个软件方面的工程师能够读懂别人写出的程序是一个必要的过程。
于是我开始了埋头苦读程序的道路上。
光是读懂是远远不够的,还要做一些尝试性的修改,通过反复的修改与调试,可以让我更好的对单片机与实训的理解。
就这样每日每夜的看与修改了一段时间,基本对延时方面略有所成,然而在中断方面仍存在许多问题,从而导致在我修改的程序中出现许多错误,例如,当某个程序进行中断后,按下按键中断后,无法跳出中断,一直循进行永无止境的虚幻当中,令我十分懊恼。
就这样持续经过了3周,我们组终于完成超声波测距这个项目了。
在大家积极的配合下学到了很多东西。
参考文献
[1]徐维祥、刘旭敏.单片微型机原理及应用.大连:
大连理工大学出版社,1996
[2]李光飞、楼然苗、胡佳文、谢象佐.单片机课程设计与实例指导.北京:
北京航空航天大学出版社,2004
[3]余永权.89系列FLASH单片机原理及应用.北京:
电子工业出版社,2002
[4]李群芳,黄建.单片机微型计算机与接口技术.北京:
电子工业出版社,2001
[5]楼然苗、李光飞.51系列单片机设计实例.北京:
北京航空航天大学出版社,2003
[6]王守中51单片机开发入门与典型实例.北京:
人民邮电出版社,2009
附录1.系统硬件电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 超声波 测距