超声波测距仪说明书Word格式.docx
《超声波测距仪说明书Word格式.docx》由会员分享,可在线阅读,更多相关《超声波测距仪说明书Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
超声波是一种在弹性介质中的机械振荡,传播速度仅为光波的百万分之一,超声波对色彩,光照度,外界光线和电磁场不敏感,因此超声波测距对于被测物处于黑暗,有灰尘或烟雾,强电磁干挠,有毒等恶劣的环境下有一定的适用能力,在液体测位,机器人避障和定位,倒车雷达、物体识别等方面有广泛应用。
而且超声波传播不易受干挠,因而经常用于距离的测量。
在某一时刻给超声波发生器施加40khz方波信号,发生器发出超声波,遇到被测物体后反射回来,被超声波接受器接受到。
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时就可以计算出被测物体的距离d=s/2=(vt)/2。
其中d为被测物到测距仪之间的距离,s为超声波往返通过的路程,v为超声波在介质中的传播速度,t为超声波从发射到接收所用时间。
这就是所谓的时间差测距法。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。
2.2设计方案
为了以超声波作为检测手段,必须产生超生波和接收超声波。
完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。
超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;
而在收到回波的时候,则将超声振动转换成电信号。
超声波测距仪利用超声波指向性强,能量消耗缓慢,在介质中传播距离较远的特点测量两点之间的距离的仪器。
这个设计就是利用超声波传输中的距离与时间的关系,采用了STC89C52单片机对超声波仪进行控制及数据处理,设计出了能够精确测量两点间距离的超声波测距仪。
该测距仪主要是由单片机主控模块、显示模块、超声波发射模块、接收模块所构成。
其中采用STC89C52单片机作为主控模块,用来控制超声波的发出和接收,并且计算距离。
用超声波模块HC-SR04发出和接受超声波,用3位数码管作为显示模块。
本次设计的超声波测距仪,具有迅速、操作方便、计算简单、易于做到实时控制,并且测量精度较高的特点。
测量范围可达到25cm~350cm,其误差1cm左右。
在理论分析上达到了本次课设的要求。
超声波测距仪原理框图如下图:
图1超声波测距仪原理框图
3硬件选择与设计
硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。
单片机采用STC89C52RC系列。
采用11.0594MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。
单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断P3.2端口监测超声波接收电路输出的返回信号,使用T0定时器来发射方波脉冲。
显示电路采用简单实用的4位共阴LED数码管,用0.5k排阻驱动。
图2超声波测距仪系统电路原理图
3.1单片机的选择
在这个设计中单片机选用的是STC89C52(如图3),它内部集成了功能强大的中央处理器。
具有以下标准的功能:
32个I/O口线,看门狗(WDT),4k字节的Flash闪速存储器,128字节的内部RAM,一个向量两级中断结构,两个16位定时/计数器,两个数据指针,片内振荡器及时钟电路,一个全双工串行通信口。
CPU的工作在空闲方式下停止,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
STC89C52集成了几乎完善的8位中央处理单元,处理功能强,中央处理单元中集成了方便灵活的专用寄存器,硬件的加,减,乘,除法器和布尔处理机以及各种逻辑运算和转移指令,这给应用提供了极大的便利。
STC89C52把微型计算机的大部分的部件都是集成在一个芯片上,所以达达缩短了数据传输距离,具有更高的可靠性,和更快的运行速度,由于微型计算机已经芯片化了,所以各功能部件的布局和结构在芯片中已经达到最优化,加强了抗干扰能力,工作也相对稳定。
它是40引脚双列直插分装方式(如图2)。
图3STC89C52引脚图
3.2超声波模块的选择
在超声波测距仪设计中,采用HY-SRF05超声波模块(如图3),它性能稳定,测度距离精确,模块高精度,盲区小。
可以用来设计机器人避障
、物体测距
、液位检测等领域。
图4HY-SRF05超声波模块
HY-SRF05超声波测距模块设计的嵌入式系统这样的项目。
它的分辨率为0.3和测距距离为2cm至400厘米。
它采用一个5V直流电源供电,待机电流小于2mA。
该模块发送的超声波信号,拿起其回波,测量所经过的时间之间的两个事件和输出波形,其高的时间是由测得的时间的距离成正比的调制。
3.2.1HY-SRF05超声波模块时序图
图5HY-SRF05时序图
从时序图中,可以看到的40kHz脉冲串传输的的10US触发脉冲后的回声输出后,得到一些更多的时间。
只有后回波消失,这个时间段被称为循环周期,可以给出的下一个触发脉冲HY-SRF05的循环周期必须不低于50毫秒。
根据数据表,就可以计算出距离。
3.2.2HY-SRF05模块的使用
初始化时将trig和echo端口都置低,首先向给trig发送至少10us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉echo端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照如下计算公式:
测试距离=(高电平时间*声速(340m/s))/2
就可以算出超声波到障碍物的距离。
3.3数码管的选择
在本设计中采用共阴极显示模块(如图5),个数为4个。
LED显示块与单片机接口非常容易,只要将一个8位并行输出口与显示块的发光二极管引脚连接即可。
图6显示电路设计
3.4硬件电路的设计
时钟电路用于产生单片机工作所需的时钟信号。
时钟信号可以由两种方式产生:
内部时钟方式和外部时钟方式,在这个设计中采用的是内部时钟方式。
单片机内部有一个高增益反向放大器,用于构成内部震荡器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,就构成了稳定的自激震荡器,其发生的脉冲直接送入内部时钟发生器,见图5。
外接陶瓷谐振器时,电容约为22pF。
为了减少寄生电容,更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装的与单片机芯片靠近。
在这儿采用了震荡频率为11.0592MHz的晶振。
图7时钟电路
4软件部分设计
超声波测距的软件设计主要由主程序、超声波发生子程序、超声波接收程序及显示子程序组成。
超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时)。
软件分为两部分,主程序和中断服务程序,主程序完成初始化工作、超声波发射和接收顺序的控制、计算距离、输出显示。
定时器T0中断服务子程序完成超声波的间隔发射、定时器T1完成超声波发射到接收计时、外部中断服务子程序主要完成时间值的读取、接收超声波成功标志设置等工作。
主程序首先是对系统环境初始化,设置定时器T0、T1工作模式为16位定时计数器模式,置位总中断允许位EA=1、打开外部中断、设置负跳变有效,为定时器T0赋初值。
然后等待接收超声波,没有接到超声波报警灯亮,继续等待,定时器T0时间溢出将产生中断,调用超声波发生子程序送出8个超声波脉冲,为了避免超声波发射计时错误,在发射前将计时器T1关闭、清零,发射完成后再次启动定时器T1,接着重新为定时器T0赋初值。
P1.0端口接收到超声波,电平负跳变产生,调用外部中断子程序。
接着关闭定时器T0、T1、外部中断,然后读取时间值,设置接收成功标志,并将定时器T1清零。
由于采用的是12MHz的晶振,计数器T1每计一个数就是0.5μs,当主程序检测到接收成功的标志位后,将定时器T1中的数(即超声波来回所用的时间)按下式计算,即可得被测物体与测距仪之间的距离,设计时取10℃时的声速为338
m/s,取其近似值340m/s则有:
d=(c×
t)/2=(340*T1/1000000)*100cm
=0.034*T1cm
其中,T1为计数器T1的计算值。
测出距离后结果将以十进制BCD码方式送往LED,然后再进入主程序中等待超声波发射,中断产生发超声波脉冲重复测量过程。
利用定时器T0、计数器T1、外部中断有利于程序结构化、条理清晰和容易计算出距离。
超声波测距软件设计流程图如下:
图8主程序图9定时中断图10外部中断
5数据处理及误差分析
数据处理
用超声波测距仪测得的数据如下(表1):
表1所测数据
标准数据
5.00
10.00
15.00
20.00
25.00
测量数据
(/cm)
4.98
9.95
14.86
17.95
24.18
4.86
9.88
14.90
18.26
24.26
4.92
9.70
14.75
18.49
24.48
平均值
9.84
14.84
18.23
24.31
对表1中数据进行拟合,如图11
图11数据拟合
由上图拟合出超声波测距数学模型为:
y=0.9280x+0.4640。
6设计与体会
这一次的课程设计要用到超声波来测量距离,这是一个我们之前没有接触到的题材。
一开始我们都没有很清晰的思路,只能在摸索中前进。
本次课程设计只有短短一周,但让我对所学的电路知识及刚刚上学期学习的单片机知识有了更深的理解,同时这也是难得的一次理论与实践相结合的机会,以前只是在书本上学单片机可实现的很多功能,还有各种中断,但却没有机会实践,一直只有理论的学习,通过这次课程设计我才真正了解其中的原理。
刚开始我拿到题目的时候不知道应该怎么做,查完资料后,自己大概知道了电路需要哪些模块,下来就是针对每个模块进行具体设计,同时我还要进行一些仿真,其中应用哪些电阻,电容,这都要通过仿真来确定,期间遇到很多困难,都是团体同伴帮助我的,这也让我认识到团体的合作精神。
通过本次课程设计我不光复习了模电知识及单片机知识,锻炼了动手能力,同时也熟悉掌握了proteus仿真软件和Protel电路设计软件的使用,对于我们
测控专业的学生来说,Proteus和Protel是必须掌握的电路仿真软件,这次课
程设计给我提供了一个很好的机会锻炼自己的实践能力,我想对于我们工科学生
来说动手能力是很重要的,以前每天只是在教室里面学习理论知识,而没有机会将理论与实践结合起来。
这次课设提高了我们的动手实践能力。
超声波测距之前有同学做过,也跟我简要介绍过。
这个题材当时在我看来感觉很难很高端,直到这次自己和同组同学也把这个课题的实物做出来后,我便真正了解这个课题的思路,知道自己也是能够运用所学过的理论知识将这个小设计完成的,这增强了我的自信。
希望自己在今后的学习过程中能够继续加强实践能力,这是成为一个合格的工程师的必经之路。
感谢学校给我们提供了这次宝贵的动手实践机会,通过动手操作,我们学到了许多书本上没有的知识,而且更加巩固了所学知识,真正做到了所学即所用。
附录
附录Ⅰ:
实物图
图12实物图
附录Ⅱ:
程序代码
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
uinttime,timeH,timeL,succeed_flag;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbittrig=P1^0;
//超声波激励信号口
sbitecho=P3^2;
//超声波返回信号口
sbitbaiw=P2^2;
sbitshiw=P2^1;
sbitgew=P2^0;
uintdistance,distance0,X,Y,a;
voiddelayms(uintxms)//按键延时
{uinti,j;
for(i=xms;
i>
0;
i--)
for(j=110;
j>
j--);
}
voiddelay_10us()//发射方波的周期(10us)
{for(a=0;
a<
1;
a++);
}
voiddisplay(uinttemp)//数码管显示
{P2=0xfe;
P0=leddata[temp/100];
delayms
(1);
P0=0x00;
P2=0xfd;
P0=leddata[temp%100/10];
P2=0xfb;
P0=leddata[temp%100%10]+0x80;
P2=0xf7;
P0=leddata[temp%10];
voidmain()
{
trig=0;
distance=0;
EA=1;
//开总中断
TMOD=0X11;
//定时器的工作方式
TH0=(65536-50000)/256;
//发射方波的间隔
TL0=(65536-50000)%256;
while
(1)
{ET0=1;
//开启定时器0中断
TR0=1;
//开启定时器0
EX0=1;
//开启外部中断
IT0=1;
//外部中断0触发方式为电平触发
while(echo==1)
{for(Y=0;
Y<
5;
Y++)
display(distance0);
}}
if(succeed_flag==1)
{time=timeH*256+timeL;
//读取时间
distance=time*0.034/2;
//计算距离
distance0=distance*0.9280+0.4640;
//拟合曲线
succeed_flag=0;
display(distance);
}}
voidexter()interrupt0//外部中断接受超声波
{TR0=0;
//定时器0初始化
TR1=0;
//定时器1初始化
EX0=0;
timeH=TH1;
timeL=TL1;
succeed_flag=1;
TH1=0;
TL1=0;
voidmaichong()interrupt1//定时器T0发射8个超声波
{TR1=0;
for(X=0;
X<
8;
X++)
{
trig=1;
delay_10us();
delay_10us();
}
TR1=1;
附录Ⅲ:
参考文献
[1]
康华光.陈大钦,等.电子技术基础(模拟部分).高等教育出版社2003年
[2]
谭浩强.C程序设计(第二版).清华大学出版社.1999年
[3]
李全利.迟荣强.单片机原理及接口技术.高等教育出版社.2004年
[4]
郭天祥.51单片机C语言教程.电子工业出版社.2008年
[5]胡萍.超声波测距仪的研制.计算机与现代化.2003.10
[6]时德刚.刘哗.超声波测距的研究.计算机测量与控制.2002.10
[7]华兵.MCS-52单片机原理应用.武汉.武汉华中科技大学出版社.2002.5