10米超声波测距仪设计实现一、功能要求设计一个超声波测距仪,可以测量测距仪与被测物体间的距离。
要求测量范围0.1~10.00米,测量精度1cm,测量时与被测物体不接触,并将测量结果显示出来。
二、系统硬件电路1.单片机系统及显示电路单片机采用89C51或89S51。
采用12MHz高精度晶振,以获得较稳定的时钟频率,减小测量误差。
单片机用p1.0端口输出超声波换能器所需的40Hz方波信号,利用外中断0口监测超声波接受电路输出的返回信号。
显示电路采用简单实用的4位共阳极LED数码管,段码用74LS244驱动,位用PNP8550驱动。
2.超声波发射电路主要由74LS04和超声波换能器T构成。
这种推挽形式的方波信号可以提高发射强度。
反相器并联提高驱动能力。
上拉电阻R1、R2提高74LS04输出高电平的驱动能力。
3.超声波接收电路CX20106A是接收38KHz超声波的芯片,可利用它做接收电路。
4.系统程序超声波测距仪的软件主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。
主程序:开始系统初始化发送超声波脉冲等待反射超声波计算距离显示结果丢系统初始化,设置T0为方式1,EA=1,P0,P2清0。
为避免超声波发射器直接接传送到接收器,需要延时0.1ms。
由于时钟的频率是12MHz,计数器每计一个数就是1us。
如果按声速344m/s,则d=c*t/2=172T0 cm超声波发生子程序:通过P1.0端口发送2个左右超声波脉冲信号,脉宽12us,同时T0计数。
超声波测距仪利用中断0检测返回的超声波,一旦接收到返回的信号,立即进入中断。
中断后就立即关闭T0停止计时。
如果计数器益出则测试不成功。
3方案设计和选择根据本次设计的要求,方案的选择应力求实用性强,性价比高,使用简单。
3.1 超声波测距的基本原理谐振频率高于20kHz的声波被称为超声波。
超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强。
利用超声波的这种性能就可制成超声传感器,或称为超声换能器,它是一种既可以把电能转化为机械能、又可以把机械能转化为电能的器件或装置。
换能器在电脉冲激励下可将电能转换为机械能,向外发送超声波;反之,当换能器处在接收状态时,它可将声能(机械能)转换为电能。
3.1.1 超声波发生器为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。
总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。
电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。
它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。
目前较为常用的是压电式超声波发生器。
3.1.2 压电式超声波发生器原理压电式超声波发生器实际上是利用压电晶体的谐振来工作的。
超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。
3.1.3超声波测距原理超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停 止计时。
超声波在空气中的传播速度为340m/s ,根据计时器记录的时间t ,就可以计算出发射点距障碍物的距离(s),即:s=340t/2最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。
超声波在空气中的传播速度为340m/s ,根据计时器记录的时间t ,就可以计算出发射点距障碍物面的距离s ,即:s=340t/2。
由于超声波也是一种声波,其声速V 与温度有关。
在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。
如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。
声速确定后,只要测得超声波往返的时间,即可求得距离。
这就是超声波测距仪的基本原理。
如图3-1所示:t 超声波发射 障碍物 SHθ超声波接收 图3-1 超声波的测距原理θcos S H = (3-1))(H L arctg =θ(3-2)式中:L---两探头之间中心距离的一半.又知道超声波传播的距离为:vt S =2( 3-3)式中:v —超声波在介质中的传播速度;t —超声波从发射到接收所需要的时间.将(3—2)、(3—3)代入(3-1)中得:]cos[21H L arctg vt H = ( 3-4)其中,超声波的传播速度v 在一定的温度下是一个常数(例如在温度T=30度时,V=349m/s);当需要测量的距离H 远远大于L 时,则(3—4)变为:vt H 21= ( 3-5)所以,只要需要测量出超声波传播的时间t,就可以得出测量的距离H.3.2单片机AT89S52单片机一词最初源于“Single-Chip Microcomputer ”,简称“SCM ”。
单片机也叫做“微控制器”或者“嵌入式微控制器”。
它不是完成某一个逻辑功能的芯片(芯片也称为集成电路块,它是1958年9月12日,在Robert Noyce 的领导下,科研小组发明集成电路后开始出现的一个名称),而是把一个微型计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它体积小、质量轻、价格便宜,为学习、应用和开发提供了便利条件。
近年来,微处理器已广泛应用于多种领域,尤其是在智能仪器仪表中的应用更是如此,这不仅引起了产品本身的变革,也深深地影响设计的理念的变革。
智能仪器仪表作为一种智能系统,其核心在于微处理器。
基于微处理器的智能系统设计,已成为目前电子设计领域的一个热点。
智能系统是一个复杂的系统,一般包含微处理器、按键与显示人机界面、A/D 转换、D/A 转换等基本功能部件,同时也包含与应用领域相关的其他特殊部件。
智能系统一般需要在恶劣的环境下长期连续地工作,因此在满足功能的基础上,其可靠性也是设计时需要考虑的一个方面,目前已经普遍应用于通信、雷达、遥控和自动控制等各个领域中。
在本次毕业设计中我选用的是AT89S52单片机。
AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
4.1 整体电路设计整体电路的控制核心为单片机AT89S52。
超声波发射和接收电路中都对相应信号进行整形及放大,以保证测量结果尽可能精确。
超声波探头接OUT口实现超声波的发射和接收。
另外还有温度测量电路测量当时的空气温度,等到把数据送到单片机后使用软件对超声波的传播速度进行调整,使测量精度能够达到要求。
整体结构图包括超声波发射电路,超声波接收电路,单片机电路,显示电路与温度测量电路等几部分模块组成。
而超声波发射与接收电路还要加入放大电路。
在发射后把信号放大,接收前也要把还再次放大。
整体电路结构图如图4-1。
图4-1超声波测距原理图单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED显示。
图4-2 超声波发送原理图5.4 实现重要功能的程序的分析5.4.1实现温度读取功能uint Read_Temperature(void) //读取温度,返回整数值{uint c;reset(); //复位18b20芯片tu=0; //先置位温度正负标示为正if(r){write(0xCC); // 跳过多传感器识别skio romwrite(0xBE); //发读内部9字节内容指令c=read(); //读两个字reset(); //读完两个字节后复位write(0xCC); // 跳过多传感器识别skio romwrite(0x44); // 发启动温度变换指令图5-1 程序流程框图if(c>0x1000){c=c+1;tu=1;} //若温度小于0,tu=1c>>=4; //去掉低四位即为整数温度值,无需*0.0625return c;}else{return r; } //返回0XFF表示未检测到18B20芯片}5.4.2实现根据温度转化声速int C_speed(void) //根据温度查算声速值{uchar y;y=Read_Temperature(); //采温度if(r){ //若温度有变化则按温度值取声速{T_C=y; //温度值=变化后的温度值if(tu==0)speed=332+T_C*0.607; //温度为正则+声速else speed=332-T_C*0.607; //温度为负则-声速}}else speed=346.5; //若1820不存在即无法读取温度,声速=346.5M/S(取25度)return speed;}5.4.3实现距离计算float Dis_count() //距离计算函数{float cm;cm=TH1*256+TL1;cm-=7610; //减去限制10M的初值+可调误差值cm*=speed; //计算距离uS*34650mcm/=20000; //转换为s 单程return cm;}5.4.4 主函数的结构与内容void main(void) //主函数{uchar w;Read_Temperature(); //先采一次温度for(w=11;w<255;w--) //启动显示9~0,H~A,-{LED_Data=LED0[w];led_1H=0;led_2H=0;led_3H=0;time(400);bell=0;LED_Data=0xff;time(20);bell=1;OFF=0xff; //关闭P3口}//--------------------------------------------key();T_show: //标号EA=0; //关总中断TR1=0; //停止计数do{LED_T_C(Read_Temperature());//采温度并转换为LED显示值show(25); //显168次后采一次温度key();show(25);key();show(25);key();show(25);key();show(25);key();show(25);key();show(25);key();}while(show_temperature==1); //如WD 为0只显示温度//------------------测距部分开始TMOD=0X11; //设定时器T0、T1工作于16位定时/计数模式EA=1; //开总中断IT1=1; //外部中断下降沿触发方式w=0;while(1){TT1(); //装T1初值TR1=1; //启动定时器T1Send_40K(); //发送测量方波time_11uS(6); //延时66uS,限制最小测量ET1=1; //允许T1中断EX0=1; //允许外部中断0中断do{ led_display();}while(flag==0&&TO==0); //判断是否有收到回波如有则计算判断是否超出测量范围if(flag==1){if(w>27){C_speed();w=0;} //测Wu次距后取一次温度声速w++;dis=Dis_count(); //转换距离flag=0;if(dis<=8||dis>=996){temp[0]=0xF7;temp[1]=0xF7;te mp[2]=0xF7;}//溢出处理else{bell=0;LED_temp(dis);bell=1;show(10); //测量数据显示}}TO=0;show(10);key();if(show_temperature==1)goto T_show; //如果WD为0则只显示温度}}第1部分系统整体方案设计与比较一、实验目的1.用所学知识结合所查阅的资料提出设计方案2.掌握系统整体方案设计的方法3.培养分析系统设计方案的能力并从方案中选择一个最优的设计方案二、实验内容针对本次课题,提出几种总体设计方案,并比较其优缺点,确定两套方案中的一套为本课题采纳的方案并对主要思想进行初步的阐序。