哈尔滨理工大学 电技 认识实习报告概要Word格式文档下载.docx
《哈尔滨理工大学 电技 认识实习报告概要Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《哈尔滨理工大学 电技 认识实习报告概要Word格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。
行间距:
1.25倍。
报告A4纸打印,左侧装订。
摘要
超声波是一种频率高于20000赫兹的声波,它的方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。
在医学、军事、工业、农业上有很多的应用。
超声波因其频率下限大于人的听觉上限而得名。
科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。
我们人类耳朵能听到的声波频率为20Hz-20000Hz。
因此,我们把频率高于20000赫兹的声波称为“超声波”。
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。
目录
第一章:
超声波测距的意义和应用3
1.1意义:
3
1.2应用:
第二章:
超声波测距的原理3
2.1物理原理:
2.2超声波的接收与处理4
2.3超声波传感器5
2.4超声波测距系统原理6
2.5系统总体电路图设计7
2.6电路图分解:
8
2.7PCB电路板设计9
2.8焊制电路板10
2.9测试调试电路板10
第三章:
超声波测距仪制作及调试:
11
3.1软件设计思路:
3.2主程序框图11
3.3超声波发送及接收程序结构12
第四章:
误差分析13
4.1超声波测距误差分析13
4.2时间误差14
4.3超声波传播速度误差14
4.4提高测距精度的方法15
4.5实习体会:
15
4.6参考文献16
附录:
C语言程序16
超声波测距的意义和应用
随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给排水系统
也有较大发展,其状况不断改善。
但是,由于历史原因合成时间住的许多不可预见因素,城市给排水系统,特别是排水系统往往落后于城市建设。
因此,经常出现开挖已经建设好的建筑设施来改造排水系统的现象。
城市污水给人们带来了困扰,因此箱涵的排污疏通对大城市给排水系统污水处理,人们生活舒适显得非常重要。
而设计研制箱涵排水疏通移动机器人的自动控制系统,保证机器人在箱涵中自由排污疏通,是箱涵排污疏通机器人的设计研制的核心部分。
控制系统核心部分就是超声波测距仪的研制。
因此,设计好的超声波测距仪就显得非常重要了。
随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。
但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。
展望未来,超声波测距仪作为种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:
研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;
继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;
研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;
大力降低潜艇自噪声,改善潜艇声纳的工作环境。
无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。
随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。
在新的世纪里,面貌一新的测距仪将发挥更大的作用。
超声波测距的原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:
s=340t/2。
这就是所谓的时间差测距法。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。
由此可见,超声波测距原理与雷达原理是一样的。
测距的公式表示为:
L=C×
T
式中L为测量的距离长度;
C为超声波在空气中的传播速度;
T为测量距离传播的时间差(T为发射到接收时间数值的一半)。
超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。
由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。
在精密的液位测量中需要达到毫米级的测量精度,但是目前国内的超声波测距专用集成电路都是只有厘米级的测量精度。
通过分析超声波测距误差产生的原因,提高测量时间差到微秒级,我们设计的高精度超声波测距仪能达到毫米级的测量精度。
2.2超声波的接收与处理
接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大器IC1A和IC1B两极放大后加至IC2。
IC2是带有锁定环的音频译码集成块LM567,内部的压控振荡器的中心频率f0=1/1.1R8C3,电容C4决定其锁定带宽。
调节R8在发射的载频上,则LM567输入信号大于25mV,输出端8脚由高电平跃变为低电平,作为中断请求信号,送至单片机处理。
前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。
部分源程序如下:
RECEIVE1:
PUSHPSW
PUSHACC
CLREX1;
关外部中断1
JNBP1.1,RIGHT;
P1.1引脚为0,转至右测距电路中断服务程序
JNBP1.2,LEFT;
P1.2引脚为0,转至左测距电路中断服务程序
RETURN:
SETBEX1;
开外部中断1
2.3超声波传感器
超声波传感器主要有电致伸缩和磁致伸缩两类,电致伸缩采用双压电陶瓷晶片制成,具有可逆特性。
压电陶瓷片具有如下特性:
当在其两端加上大小和方向不断变化的交流电压时,就会产生“压电效应”,使压电陶瓷也产生机械变形,这种机械变形的大小以及方向与外加电压的大小和方向成正。
也就是说,若在压电晶片两边加以频率为的交流电电压时,它就会产生同频率的机械振动,这种机械振动推动空气的张弛,当落在音频范围内时便会发出声音。
反之,如果由超声波机械振动作用于陶瓷片使其发生微小的形变时,那么压电晶片也会产生与振动频率相同的微弱的交流信号。
超声波传感器结构如下:
图2-1:
元件内部结构
图2-2:
元件外部结构
2.4超声波测距系统原理
在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。
超声测距大致有以下方法:
①取输出脉冲的平均值电压,该电压(其幅值基本固定)与距离成正比,测量电压即可测得距离;
②测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔t,故被测距离为S=1/2vt。
本测量电路采用第二种方案。
由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变。
如果测距精度要求很高,则应通过温度补偿的方法加以校正。
超声波测距适用于高精度的中长距离测量。
因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。
超声波测距的算法设计:
超声波在空气中传播速度为每秒钟340米(15℃时)。
X2是声波返回的时刻,X1是声波发声的时刻,X2-X1得出的是一个时间差的绝对值,假定X2-X1=0.03S,则有340m×
0.03S=10.2m。
由于在这10.2m的时间里,超声波发出到遇到返射物返回的距离如下:
图2-3测距原理
超声波测距器的系统框图如下图所示:
图2-4系统框图
2.5系统总体电路图设计
图2-6:
总体电路图设计
图2-7超声波发射电路
图2-8:
超声波接收电路
2-9:
显示电路
2.7PCB电路板设计
图2-10:
PCB电路板
2.8焊制电路板
要求在焊制电路板的时候务必仔细,核对引脚,及其元件方向,防止焊接错误导致的电路板损坏,及造成的误差。
2.9测试调试电路板
图2-11:
焊接完成后的电路板
超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。
我们知道C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言。
能够实现对底层硬件的操作。
3.2主程序框图
图3-1:
主程序结构
3.3超声波发送及接收程序结构
图3-2:
发送程序结构
图3-3:
接收程序结构
误差分析
4.1超声波测距误差分析
根据超声波测距公式L=C×
T,可知测距的误差是由超声波的传播速度误差和测量距离传播的时间误差引起的。
4.2时间误差
当要求测距误差小于1mm时,假设已知超声波速度C=344m/s(20℃室温),忽略声速的传播误差。
测距误差s△t<
(0.001/344)≈0.000002907s即2.907μs。
在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1mm的误差。
使用的12MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用89C51定时器能保证时间误差在1mm的测量范围内。
4.3超声波传播速度误差
超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快,而空气的密度又与温度有着密切的关系,如表1所示。
已知超声波速度与温度的关系如下:
式中:
r—气体定压热容与定容热容的比值,对空气为1.40,
R—气体普适常量,8.314kg·
mol-1·
K-1,
M—气体分子量,空气为28.8×
10-3kg·
mol-1,
T—绝对温度,273K+T℃。
近似公式为:
C=C0+0.607×
T℃
C0为零度时的声波速度332m/s;
T为实际温度(℃)。
对于超声波测距精度要求达到1mm时,就必须把超声波传播的环境温度考虑进去。
例如当温度0℃时超声波速度是332m/s,30℃时是350m/s,温度变化引起的超声波速度变化为18m/s。
若超声波在30℃的环境下以0℃的声速测量100m距离所引起的测量误差将达到5m,测量1m误差将达到5cm。
图4-1:
温度声速的影响
4.4提高测距精度的方法
上节分析了超声波测距系统误差产生的一些原因,如何提高测量精度是超声测距的关键技术。
其提高测距精度的措施如下:
1.合理选择超声波工作频率、脉宽及脉冲发射周期。
据经验,超声测距的工作频率选择38kHz较为合适;
发射脉宽一般应大于填充波周期的10倍以上,考虑换能器通频带及抑制噪声的能力,选择发射脉宽1ms;
脉冲发射周期的选择主要考虑微机处理数据的速度,速度快,脉冲发射周期可选短些。
2.在超声波接收回路中串入增益调节(AGC)及自动增益负反馈控制环节。
因超声接收波的幅值随传播距离的增大呈指数规律衰减,所以采用AGC电路使放大倍数随测距距离的增大呈指数规律增加的电路,使接收器波形的幅值不随测量距离的变化而大幅度的变化,采用电流负反馈环节能使接收波形更加稳定。
3.提高计时精度,减少时间量化误差。
如采用芯片计时器,计时器的计数频率越高,则时间量化误差造成的测距误差就越小。
例如:
单片机内置计时器的计数频率只有晶振频率的十二分之一,当晶振频率6MHz时,计数频率为0.5MHz,此时在空气中的测距时间量化误差为0.68mm;
当晶振频率为12MHz时,计数频率为1MHz,此时测距时间量化误差为0.34mm。
若采用外部硬件计时电路,则计数频率可直接引用单片机的晶振频率,时间量化误差将会更小。
通过此次的认识实习,让我加深了对单片机课程的总体认识和把握,对C语言的对于硬件的强大操作能力有了更加深入的体会,通过自己动手焊接电路板,体会了动手的作用,同时在学习的过程中,扩展了对于这门课程的总体认识。
以及自己的知识面。
弥补了课堂学习的不足,更加充实了自己对单片机课程的知识。
同时综合以前学过的电路知识和DXP知识。
让所学过得知识点不再那么的零散。
对专业的整体发展方向有了一个大概的认识和把握。
同时还锻炼了我们合作的能力,在同学的帮助下,纠正了不少我的错误。
让我更加的体会到合作带来的共赢的效果。
4.6参考文献
1.谭浩强.C语言程序(第2版)[D].清华大学出版社,2009
2.李全利,单片机原理及接口技术,高等教育出版社,2004
3.于永,51单片机常用模块与综合系统设计实例精讲,电子工业出版社,2007
4.斯迈特S51E开发板技术手册
C语言程序
#include<
reg52.h>
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
#definenop_nop_()
sbitT=P1^0;
sbitR=P3^2;
sbitbeep=P1^1;
sbitshu4=P2^7;
sbitshu3=P2^6;
sbitshu2=P2^5;
sbitshu1=P2^4;
sbitk1=P3^4;
sbitk2=P3^5;
sbitk3=P3^6;
sbitk4=P3^7;
uintwarning_lenth=1000;
uintsel=0;
uintlabel=0;
uintdecimal,unit,decade,hundreds;
uintflag=0;
uinttimeh,timel,distance;
ucharcodename1=0x89;
ucharcodename2=0xe1;
ucharcodeled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0xbf};
//无小数点0~9
//0123456789-H
ucharcodefunc[]={0xf9,0x88,0x88,0xa4,0xc6,0xe1,0xb0,0x80,0xe1};
//1AA2CJ3BJ
voiddelay(uinttemp)
{
uchari;
while(temp--)
{
for(i=110;
i>
0;
i--)
;
}
}
voiddelayus()
{
for(i=8;
T=!
T;
nop;
voiddisplay(uinttemp)
decimal=temp%10;
//xiaoshu
unit=temp%100/10;
//ge
decade=temp%1000/100;
//shi
hundreds=temp/1000;
shu4=0;
shu3=1;
shu2=1;
shu1=1;
//百位部分
P0=led[hundreds];
delay
(2);
shu4=1;
shu3=0;
//十位部分
P0=led[decade];
shu3=1;
shu2=0;
//个位部分
P0=led[unit]+0x80;
shu2=1;
shu1=0;
//小数部分
P0=led[decimal];
shu1=1;
voidsend()
floattemp;
TH0=0;
TL0=0;
//清定时
TR0=1;
//开定时
delayus();
T=1;
delay
(1);
EX0=1;
//开中断
//if(flag==1)//中断标志位置,说明有回波
{
temp=timeh*256+timel;
//以下为路程计算
temp=temp*0.017;
distance=(uint)(temp*10);
voidkeyset()
uchartt=0;
if(k1)
delay(10);
while(k1)
{
delay(5);
if(label==1)
{
sel=3;
}
elseif(label==2)
sel=6;
else
{;
shu1=1;
shu2=1;
shu3=1;
shu4=0;
P0=func[sel];
delay
(2);
shu4=1;
shu2=0;
shu4=1;
P0=func[sel+1];
shu2=1;
shu1=0;
P0=func[sel+2];
if(label==0)//FUNC1:
displayname
if(!
k4)
{
delay(5);
shu4=0;
shu1=0;
P0=0xff;
shu4=1;
while(k3)
{
delay(5);
shu4=1;
P0=name1;
delay
(2);
P0=name2;
shu2=1;
if(!
k1)
{
delay(5);
break;
}
}
}
elseif(label==1)//FUNC2:
measurelenth
send();
display(distance);
if(distance<
150||distance>
warning_lenth)
{
beep=0;
for(tt=20;
tt>
tt--)
display(distance);
beep=1;
elseif(label==2)//FUNC3:
setwarninglenth;
warning_lenth=200;
while
(1)
k2)
if(warning_lenth<
=5900)
warning_lenth=warning_lenth+100;
while(!
k2);
k3)
if(warning_lenth>
=100)
warning_lenth=warning_lenth-100;
k3);
display(warning_lenth);
if(label==3)
label=0;
sel=0;
}
label=labe