超声波测距设计论文.docx
《超声波测距设计论文.docx》由会员分享,可在线阅读,更多相关《超声波测距设计论文.docx(17页珍藏版)》请在冰豆网上搜索。
![超声波测距设计论文.docx](https://file1.bdocx.com/fileroot1/2023-1/21/10dd72f6-a572-4a0d-88c3-7bb6410fc20b/10dd72f6-a572-4a0d-88c3-7bb6410fc20b1.gif)
超声波测距设计论文
题目:
超声波测距
目录
绪论···························································1
I.1课题设计的目的及其意义·································1
I.2超声波测距仪的设计思路·································1
I.3课题设计的任务和要求···································1
1课题的方案设计与论证···········································21.1系统整体方案的设计·····································2
1.2系统整体方案的论证·····································2
2系统的硬件结构设计·············································3
2.1单片机的功能特点及测距原理·····························3
2.2超声波发射电路·········································52.3超声波检测接收电路·····································6
3系统软件的设计·················································83.1超声波测距仪的算法设计·································8
3.2主程序流程图···········································9
总结····························································9
附录程序清单··············································10
绪论
Ⅰ.1课题设计目的及意义
日常生活应用发面:
人们生活水平的提高,城市发展建设加快,城市车辆逐渐增多,因为停车不当而造成的交通事故也越来越多。
为了避免此类事故的发生,一个能够直观地测出汽车与障碍物之间的距离的装置就变得十分必要。
它可以及时将车辆与障碍物之间的距离反映出来,给司机以更准确的信息和更多的反应时间,减少事故的发生;军事应用方面:
超声波声纳已广泛应用于侦查探测等方面,如何提高其测量精度已是正在着重研究的课题之一,相信在不久的将来,超声波测距一定会在侦查反侦察方面起到更大的作用;工业应用方面:
超声波测距仪的设计方便了管道的距离探测,消除了一些空间方面的限制,在其测量精度得到提升后,对一些精密设备的测量也将起到良好的效果。
Ⅰ.2超声波测距仪的设计思路
Ⅰ.2.1超声波测距原理[1,2]
发射器发出的超声波以速度υ在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由s=vt/2即可算出被测物体的距离。
由于超声波也是一种声波,其声速v与温度有关,在使用时,如果温度变化不大,则可认为声速是基本不变的。
由于不同温度下声速需要精确测量,对于短距离的测量,速度的精确度对测量误差的影响是不容忽视的。
2.2超声波测距仪原理框图
单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送液晶显示器显示。
超声波测距原理框图如图1-1所示。
图1-1超声波测距仪原理框图
Ⅰ.3课题设计的任务和要求
任务:
(1).了解超声波测距原理。
(2).根据超声波测距原理,设计超声波测距器的硬件结构电路。
要求:
(1).设计出超声波测距仪的硬件结构电路。
(2).对设计的电路进行分析能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。
(3).对设计的电路进行分析。
(4).以数字和字母的形式显示测量距离。
1课程的方案设计与论证
1.1系统整体方案的设计
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到农业生产等自动化的使用要求。
本文采用STC89C52单片机作为控制器,采用LC1602液晶管进行数字显示,超声波驱动信号用单片机的定时器。
1.2系统整体方案的论证
超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。
本设计采用反射波方式,即发射波被物体反射回来后接收的反射波方式,适用于测距仪。
测距仪的分辨率取决于对超声波传感器的选择。
超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。
由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。
2系统的硬件结构设计
硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。
单片机采用STC89C52系列。
采用11.0592MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。
单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。
显示电路采用LC1602液晶管,由单片机P1.2、P1.3、P1.4端口进行控制。
2.151系列单片机的功能特点及测距原理
2.1.151系列单片机的功能特点
5l系列单片机中典型芯片(STC89C52)采用40引脚双列直插封装(DIP)形式,内部由CPU,8kB的ROM,256B的RAM,2个16b的定时/计数器TO和T1,4个8b的工/O端I:
IP0,P1,P2,P3,一个全双功串行通信口等组成。
特别是该系列单片机片内的Flash可编程、可擦除只读存储器(E~PROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。
该系列单片机引脚与封装如图2-1所示。
图2-189C52单片机引脚封装图
51系列单片机提供以下功能:
4kB存储器;256BRAM;32条工/O线;2个16b定时/计数器;5个2级中断源;1个全双向的串行口以及时钟电路。
空闲方式:
CPU停止工作,而让RAM、定时/计数器、串行口和中断系统继续工作。
掉电方式:
保存RAM的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。
5l系列单片机为许多控制提供了高度灵活和低成本的解决办法。
充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的超声波测距系统。
2.1.2单片机实现测距原理
单片机发出超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差tr,然后求出距离S=Ct/2,式中的C为超声波波速。
限制该系统的最大可测距离存在4个因素:
超声波的幅度、反射的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。
接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。
由于超声波属于声波范围,其波速C还与温度有关。
2.2超声波发射与接收装置
采用HC-SR04超声波收发模块,它可提供2cm--400cm的非接触式距离感测功能。
测量精度可达到3mm(本作品因测量工具限制,测量精度在10mm)。
模块包括超声波发射器、接收器及其控制电路。
基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号。
(2)模块自动发射8个40khz的方波,并检测信号是否有返回。
(3)有信号返回,通过IO端口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到接收所用的时间。
测量距离=高电平持续时间*声速/2。
实物图如图2-2所示:
图2-2超声波收发装置实物图
VCC提供5V电压,GND接地,GRIG触发控制信号输入,ECHO回响信号输出等四只线。
电气参数如图2-3所示:
电气参数
HC-SR04超声波模块
工作电流
15mA
工作频率
40Hz
工作电压
DC5V
最远射程
4m
最近射程
2cm
测量角度
15度
输入触发信号
10us的TTL脉冲
输出回响信号
输出TTL电平信号,与射程成正比
规格尺寸
45*20*15mm
图2-3HC-SR04电气参数
2.3超声波测距系统的硬件电路设计
本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用AT89C52,经济易用,且片内有8K的ROM,便于编程。
电路实物图如图2-4所示。
图2-4距电路实物图
RS-232串口
超声波模块
单片机最小系统
电源模块
液晶模块
3系统软件的设计
超声波测距仪的软件设计主要由主程序、控制超声波接收和发射程序及显示子程序组成。
我们在这里采用C语言进行编程。
图3.1流程图:
图3.1主程序流程图
3.2系统的的调试
硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。
根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。
根据所设计的电路参数和程序,测距仪能测的范围为0.03~4.12m,测距仪最大误差不超过1cm。
系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。
总结
此次设计为超声波测距提供了理论和实践基础。
设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。
以数字的形式显示测量距离。
超声波测距的原理是利用超声波的发射和接收,根据超声波传播的时间来计算出传播距离。
此次设计采用反射波方式,即发射波被物体反射回来后接收的反射。
超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。
单片机采用AT89C51或其兼容系列。
采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。
单片机控制HC-SR04超声波发射与接收模块进行信号的发射与接收。
显示电路采用LC1602液晶管进行数字显示。
在元件及调制方面,由于采用的电路使用了很多集成电路。
外围元件不是很多,所以调试应该不会太难。
一般只要电路焊接无误,稍加调试应该会正常工作。
电路中除集成电路外,对各电子元件也无特别要求。
参考文献
[1]胡萍.超声波测距仪的研制.计算机与现代化,2003.10
[2]时德刚.超声波测距的研究.计算机测量与控制,2002.10
[3]华兵.MCS-51单片机原理应用.武汉:
武汉华中科技大学出版社,2002.5
[4]李华.MCU-51系列单片机实用接口技术.北京:
北京航空航天大学出版社,1993.6
[5]陈光东.单片机微型计算机原理与接口技术(第二版).武汉:
华中理工大学出版社,1999.4
[6]徐淑华.单片机微型机原理及应用.哈尔滨:
哈尔滨工业大学出版社,1999.6.
[7]苏长赞.红外线与超声波遥控.北京:
人民邮电出版社,1993.7
[8]张谦琳.超声波检测原理和方法.北京:
中国科技大学出版社,1993.10
[9]九州.放大电路实用设计手册.沈阳:
辽宁科学技术出版社,2002.5
[10]樊昌元,丁义元.高精度测距雷达研究.电子测量与仪器学报,2000.10
[11]苏伟,巩壁建.超声波测距误差分析.传感器技术,2004.
[12]恒清,张靖.加强单片机系统抗干扰能力的方法.通化师范学院学报,2004.10
[13]晗晓,袁慧梅.单片机系统的印制板设计与抗干扰技术.电子工艺技术,2004.6
[14]薛红宣.采用软件抗干扰设计提高微机系统的可靠性.电子产品世界,2004.1
[15]占操单片机系统中的软件抗干扰技术.电子技术,2003.3
[16]华兵MCS-51单片机原理应用.武汉:
武汉华中科技大学出版社,2002.5
[17]继兴单片机系统软件抗干扰措施分析.电子测量技术2003年2月
[18]丁镇生传感及其遥控遥测计数应用北京电子工业出版社2003年3月
[19]胡向东等传感技术北京重庆大学出版社2006年2月
[20]何希才等传感器及其应用实例北京机械工业出版社2004年1月
附录:
程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#definedelayNOP(){_nop_();_nop_();_nop_();_nop_();}
sbitEcho=P1^3;
sbitTrig=P1^4;
sbitRS=P1^0;
sbitRW=P1^1;
sbitdula=P2^7;
sbitwela=P2^6;
sbitE=P1^2;
inttime=0;
intlength=0;
ucharflag=0;
uchartab[]={"cm"};
ucharLength1[]={0,0,0};
ucharError[]={"Lengthisexceed"};
voiddelay_ms(uintms)//毫秒级延时函数
{uinti;
while(ms--)
for(i=0;i<200;i++);}
voiddelay_us(uintx){
while(--x);}
voidstart()
{Trig=1;
delay_us(10);
Trig=0;}
voidcount()
{time=TH0*256+TL0;
length=time/50;
TH0=0;
TL0=0;
Length1[0]=length/100;
Length1[1]=length%100/10;
Length1[2]=length%10;
tab[0]=Length1[0]+'0';
tab[1]=Length1[1]+'0';
tab[2]=Length1[2]+'0';}
bitLCD_Busy()//LCD忙检查
{bitresult;
RS=0;
RW=1;
E=1;//读液晶状态
delayNOP();
result=(bit)(P0&0x80);//D7对应STA7,如果STA7=1,则不能对液晶进行写操作
E=0;
returnresult;}
voidwrite_com(ucharcom)//写指令
{while(LCD_Busy());//如果STA7=1,则不能进行读写操作,在while中死循环
RS=0;//写入命令寄存器
RW=0;
E=0;
_nop_();_nop_();
P0=com;
delayNOP();
E=1;
delayNOP();
E=0;}
voidwrite_dat(uchardat)//写数据
{while(LCD_Busy());
RS=1;//写入数据寄存器
RW=0;
E=0;
P0=dat;
_nop_();
E=1;
_nop_();
E=0;}
voidinit_LCD()//LCD初始化
{write_com(0x38);//显示模式设置
delay_ms(5);
write_com(0x01);//清屏
delay_ms(5);
write_com(0x06);//字符进入模式:
屏幕不动,字符后移
delay_ms(5);
write_com(0x0c);//显示开,开光标
delay_ms(5);
write_com(0x80);}//初始字符的位置
voiddisplay_LCD()
{uinti;
if(!
flag)
{write_com(0x01);
delay_ms
(1);
write_com(0x80);
for(i=0;i<5;i++)
{write_dat(tab[i]);}
}
else
{
write_com(0x01);
delay_ms
(1);
write_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_dat(Error[i]);
}
flag=0;
}
}
voidmain()
{TMOD=0x01;
TH0=0;
TL0=0;
EA=1;//开总中断
ET0=1;//中断使能
init_LCD();//初始化液晶
Echo=0;
while
(1)
{
start();//开始发射信号
while(Echo==0);//等待一个高电平
TR0=1;
while(Echo);//等待高电平脉冲结束
TR0=0;
count();
display_LCD();
delay_ms(30);
}
}
voidT0_time()interrupt1
{
flag=1;
}