谁能给我一篇超声波测距的程序的谢谢了

谁能给我一篇超声波测距的程序的谢谢了,第1张

相关资料,请参考

超声波测距仪设计及其应用分析

[摘要] 本文利用超声波传输中距离与时间的关系,采用AT89C51单片机进行控制及数据处理,设计出了能精确测量两点间距离的超声波测距仪。该测距仪主要由超声波发射器电路、超声波接收器电路、单片机控制电路、环境温度检测电路及显示电路构成。利用所设计出的超声波测距仪,对不同距离进行了测试,并进行了详尽的误差分析。

[关键词] 超声波测距 单片机 温度传感器

随着社会的发展,人们对距离或长度测量的要求越来越高。超声波测距由于其能进行非接触测量和相对较高的精度,越来越被人们所重视。本设计的超声波测距仪,可以对不同距离进行测试,并可以进行详尽的误差分析。

一、设计原理

超声测距仪是根据超声波遇到障碍物反射回来的特性进行测量的。超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止计时。 通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离L。基本的测距公式为:L=(△t/2)*C

式中 L——要测的距离

T——发射波和反射波之间的时间间隔

C——超声波在空气中的声速,常温下取为340m/s

声速确定后,只要测出超声波往返的时间,即可求得L。

二、超声波测距仪设计目标

测量距离: 5米的范围之内通过LED能够正确显示出两点间的距离误差小于5%。

三、数据测量和分析

1.数据测量与分析

由于实际测量工作的局限性,最后在测量中选取了一米以下的30cm、50cm、70cm、80cm、90cm、100cm 六个距离进行测量,每个距离连续测量七次,得出测量数据(温度:29℃),如表所示。从表中的数据可以看出,测量值一般都比实际值要大几厘米,但对于连续测量的准确性还是比较高的。

对所测的每组数据去掉一个最大值和最小值,再求其平均值,用来作为最终的测量数据,最后进行比较分析。这样处理数据也具有一定的科学性和合理性。从表中的数据来看,虽然对超声波进行了温度补偿,但在比较近的距离的测量中其相对误差也比较大。特别是对30cm和50cm的距离测量上,相对误差分别达到了5%和4.8%。但从全部测量结果看,本设计的绝对误差都比较小,也比较稳定。本设计盲区在22.6cm左右,基本满足设计要求。

2.误差分析

测距误差主要来源于以下几个方面:

(1)超声波发射与接收探头与被测点存在一定的角度,这个角度直接影响到测量距离的精确值(2)超声波回波声强与待测距离的远近有直接关系,所以实际测量时,不一定是第一个回波的过零点触发(3)由于工具简陋,实际测量距离也有误差。影响测量误差的因素很多,还包括现场环境干扰、时基脉冲频率等等。

四、应用分析

采用超声波测量大气中的地面距离,是近代电子技术发展才获得正式应用的技术,由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,在较恶劣的环境(如含粉尘)具有一定的适应能力。因此,用途极度广泛。例如:测绘地形图,建造房屋、桥梁、道路、开挖矿山、油井等,利用超声波测量地面距离的方法,是利用光电技术实现的,超声测距仪的优点是:仪器造价比光波测距仪低,省力、 *** 作方便。

超声测距仪在先进的机器人技术上也有应用,把超声波源安装在机器人身上,由它不断向周围发射超声波并且同时接收由障碍物反射回波来确定机器人的自身位置,用它作为传感器控制机器人的电脑等等。由于超声波易于定向发射,方向性好,强度好控制,它的应用价值己被普遍重视。

总之,由以上分析可看出:利用超声波测距,在许多方面有很多优势。因此,本课题的研究是非常有实用和商业价值。

五、结论

本设计的测量距离符合市场要求,测量的盲区也控制在23cm以内。针对市场需求,本设计还可以加大发射功率,让测量的距离更加的远。在显示方面,也可以对程序做适当改动,使开始发射超声波时LED显示出温度值,到超声波回波接收到以后通过计算得出距离值时,LED自动切换显示距离值,这样在视觉效果上得到更加直观的了解。

参考文献:

[1]MCS一51/96系列单片机原理及应用(修订版)[M].北京:北京航空航天大学出版社.2002.46-170

[2]金篆芷王明时:现代传感器技术[M].电子工业出版社.1995.331—335

[3]MCS一51/96系列单片机原理及应用(修订版)[M].北京:北京航空航天大学出版社.2002.46-170

[4]超声波测距仪的设计[J].传感器技术.2002

//晶振=8M

//MCU=STC10F04XE

//P0.0-P0.6共阳数码管引脚

//Trig = P1^0

//Echo = P3^2

#include <reg52.h>//包括一个52标准内核的头文件

#define uchar unsigned char //定义一下方便使用

#define uint unsigned int

#define ulong unsigned long

//***********************************************

sfr CLK_DIV = 0x97//为STC单片机定义,系统时钟分频

//为STC单片机的IO口设置地址定义

sfr P0M1 = 0X93

sfr P0M0 = 0X94

sfr P1M1 = 0X91

sfr P1M0 = 0X92

sfr P2M1 = 0X95

sfr P2M0 = 0X96

//***********************************************

sbit Trig = P1^0//产生脉冲引脚

sbit Echo = P3^2//回波引脚

sbit test = P1^1//测试用引脚

uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}//数码管0-9

uint distance[4] //测距接收缓冲区

uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i //自定义寄存器

bit succeed_flag //测量成功标志

//********函数声明

void conversion(uint temp_data)

void delay_20us()

//void pai_xu()

void main(void) // 主程序

{ uint distance_data,a,b

uchar CONT_1

CLK_DIV=0X03//系统时钟为1/8晶振(pdf-45页)

P0M1 = 0 //将io口设置为推挽输出

P1M1 = 0

P2M1 = 0

P0M0 = 0XFF

P1M0 = 0XFF

P2M0 = 0XFF

i=0

flag=0

test =0

Trig=0 //首先拉低脉冲输入引脚

TMOD=0x11 //定时器0,定时器1,16位工作方式

TR0=1 //启动定时器0

IT0=0 //由高电平变低电平,触发外部中断

ET0=1 //打开定时器0中断

//ET1=1 //打开定时器1中断

EX0=0 //关闭外部中断

EA=1//打开总中断0

while(1) //程序循环

{

EA=0

Trig=1

delay_20us()

Trig=0//产生一个20us的脉冲,在Trig引脚

while(Echo==0)//等待Echo回波引脚变高电平

succeed_flag=0//清测量成功标志

EX0=1 //打开外部中断

TH1=0 //定时器1清零

TL1=0 //定时器1清零

TF1=0 //

TR1=1 //启动定时器1

EA=1

while(TH1 <30)//等待测量的结果,周期65.535毫秒(可用中断实现)

TR1=0 //关闭定时器1

EX0=0 //关闭外部中断

if(succeed_flag==1)

{

distance_data=outcomeH //测量结果的高8位

distance_data<<=8 //放入16位的高8位

distance_data=distance_data|outcomeL//与低8位合并成为16位结果数据

distance_data*=12 //因为定时器默认为12分频

distance_data/=58 //微秒的单位除以58等于厘米

} //为什么除以58等于厘米, Y米=(X秒*344)/2

// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58

if(succeed_flag==0)

{

distance_data=0 //没有回波则清零

test = !test //测试灯变化

}

/// distance[i]=distance_data//将测量结果的数据放入缓冲区

///i++

/// if(i==3)

/// {

/// distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4

///pai_xu()

///distance_data=distance[1]

a=distance_data

if(b==a) CONT_1=0

if(b!=a) CONT_1++

if(CONT_1>=3)

{ CONT_1=0

b=a

conversion(b)

}

/// i=0

/// }

}

}

//***************************************************************

//外部中断0,用做判断回波电平

INTO_() interrupt 0 // 外部中断是0号

{

outcomeH =TH1 //取出定时器的值

outcomeL =TL1 //取出定时器的值

succeed_flag=1 //至成功测量的标志

EX0=0 //关闭外部中断

}

//****************************************************************

//定时器0中断,用做显示

timer0() interrupt 1 // 定时器0中断是1号

{

TH0=0xfd//写入定时器0初始值

TL0=0x77

switch(flag)

{case 0x00:P0=geP2=0xfdflag++break

case 0x01:P0=shiP2=0xfeflag++break

case 0x02:P0=baiP2=0xfbflag=0break

}

}

//*****************************************************************

/*

//定时器1中断,用做超声波测距计时

timer1() interrupt 3 // 定时器0中断是1号

{

TH1=0

TL1=0

}

*/

//******************************************************************

//显示数据转换程序

void conversion(uint temp_data)

{

uchar ge_data,shi_data,bai_data

bai_data=temp_data/100

temp_data=temp_data%100 //取余运算

shi_data=temp_data/10

temp_data=temp_data%10 //取余运算

ge_data=temp_data

bai_data=SEG7[bai_data]

shi_data=SEG7[shi_data]

ge_data =SEG7[ge_data]

EA=0

bai = bai_data

shi = shi_data

ge = ge_data

EA=1

}

//******************************************************************

void delay_20us()

{ uchar bt

for(bt=0bt<100bt++)

}

/*

void pai_xu()

{ uint t

if (distance[0]>distance[1])

{t=distance[0]distance[0]=distance[1]distance[1]=t} /*交换值

if(distance[0]>distance[2])

{t=distance[2]distance[2]=distance[0]distance[0]=t} /*交换值

if(distance[1]>distance[2])

{t=distance[1]distance[1]=distance[2]distance[2]=t} /*交换值

}

*/

是医用超声波还是工业用超声波?CALL ME

钢锻件超声波检验作业指导书

一、适用范围和目的

本实施细则规定了钢锻件超声波检验的方法、对比试块、检验仪器和设备、检验条件和灵敏度调整、缺陷的评定、质量等级划分、检验报告等。本实施细则适用于脉冲反射式超声波检验法对厚度或直径大于100mm的碳钢和低合金钢一般锻件的超声波检验。本实施细则包括适用范围和目的、检验依据、检验原理、检验条件、检验项目及计算内容、检验程序、检验方法和注意事项等。

目的:通过对钢锻件的超声波检验,分析锻件在使用过程中受到的损坏程度,根据缺陷的种类和当量尺寸的大小,判定锻件的质量等级。

二、检验依据

GB/T6402—1991《钢锻件超声波检验方法》

三、检验原理

一般在均匀的材料中,缺陷的存在将造成材料的不连续,这种不连续往往又造成声阻抗的不一致,由反射定理我们知道,超声波在两种不同声阻抗的介质的交界面上将会发生反射,反射回来的能量的大小与交界面两边介质声阻抗的差异和交界面的取向、大小有关。当钢锻件底面光滑而且与探测面平行的条件下,探测图形中只有表示发射脉冲T及底面回波B两个信号,如图1(a)所示。

若钢锻件中存在一个缺陷,由于这个缺陷的存在,造成了缺陷和钢材料之间形成了一个不同介质之间的交界面,交界面之间的声阻抗不同,当发射的超声波遇到这个界面之后,就会发生反射,反射回来的能量又被探头接收到,在探测图形中,底面回波前则有表示缺陷的回波F,如图1(b)所示,图形中横坐标的一定的位置就会显示出来一个反射波的波形,横坐标的这个位置就是缺陷在被检测材料中的深度。这个反射波的高度和形状因不同的缺陷而不同,反映了缺陷的性质。

四、检验条件

钢锻件超声波检验既可以在现场进行检验,也可以在实验室进行,其要求有如下几个方面:

1)锻件检验一般应在热处理之后和钻孔、开槽等加工之前进行;

2)接触法检验时,锻件表面粗糙度Ra值应小于3.2um,液浸法检验时,锻件表面应平整,无影响声耦合的氧化皮,赃物等附着物,并满足检验要求;

3)在探头与检测面之间,应使用合适的耦合剂;

4)根据锻件加工工艺,选择最易发现缺陷的检测面,一般应从2个相互垂直的方向进行检验,如图2所示。

5)横波检验时,一般应从外表面按顺时针及逆时针方向做全面检验;

6)扫查方式分手工扫查和自动扫查,探头在检测面的扫查间距,应保证有15%的声束复盖;

7)扫查速度即探头相对于锻件的移动速度,应在150mm/s以下。

8)所用测试设备均应附有证明其精度符合本标准要求的报告和检定报告,并在检定周期内方可使用,所用设备一览表见表1。

序号

名称

型号

性能指标

检定证书编号

1

超声波探伤仪

TUD310

检测频率范围:1~5MHz

水平线性误差:≦1%

垂直线性误差:≦4%

Lsau2007-0445

2

钢卷尺

0-5m

1mm

01GC20070252

3

钢直尺

0-300mm

1mm

01GC20070256

4

温湿度计

TES—1360

修正-0.3

02RC20070073号

验项目及计算内容

1.缺陷的记录与评定

2.衰减系数的测定和计算

3.质量等级的评定

六、检验程序

检验程序如图3所示。

七、检验方法

1、仪器的连接和调校

1)仪器的连接

首先准备好待测工件,然后将探头电缆线插头插入主机的上方的插座中,旋紧插头,并在探头连接器BNC连接上合适的探头。注意使用单探头方式时,两个连接器插口同样适用(内部并联连接),使用连接双晶(TR)探头(一个晶片发射,一个晶片接收)或两个探头(一个发射,一个接收)时,要注意把发射探头连接到左边的插口上,把接收探头连接到右边的插口上。

连接好仪器后按下键,仪器发出短促的“嘀嘀”声后,松开按键手指,仪器自动开机;

2)仪器的基本设置

仪器开机后,首先根据实际检验工作的需要设置好仪器的扫描方式、显示范围、材料声速、探头方式、闸门宽度、闸门起始、闸门高度等基本参数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7988405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存