单片机课程设计超声波测距仪.docx
《单片机课程设计超声波测距仪.docx》由会员分享,可在线阅读,更多相关《单片机课程设计超声波测距仪.docx(12页珍藏版)》请在冰豆网上搜索。
单片机课程设计超声波测距仪
课程设计成果说明书
题目:
超声波测距仪的设计
学生姓名:
学号:
学院:
班级:
指导教师:
2015年11月20日
摘要
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到日常使用的要求。
超声波测距仪,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。
利用超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制。
本设计的超声波测距仪利用超声波传输中距离与时间的关系,采用以STC12C5A单片机为核心进行控制及数据处理,最终完成超声波测距仪的硬件电路和软件设计。
该测距仪主要由超声波发射器电路、超声波接收器电路、单片机控制电路、系统电源电路及显示电路构成。
整个程序采用模块化设计,由主程序、发射子程序、接收子程序、显示子程序等模块组成。
各探头的信号经单片机综合分析处理,实现超声波测距器的各种功能。
在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。
关键词:
超声波;测距;传感器
1.选题背景
随着科技发展的不断进步,自动测量技术不断更新,非接触式测量技术也有了长足的发展。
在很多工控场合,测量的物体是不能够直接接触到的,或者是测量物体不宜直接接触,这个时候就要用到非接触式的测量仪器。
自物理学上发现了压电效应与反压电效应之后,人们解决了利用电子学技术产生超声波的办法,从此超声波技术得到广泛运用。
而在超声波测量领域,尤其是在测距领域,结合各种其他技术的应用,超声波测量变得十分普及。
超声波是一种在弹性介质中的机械振荡,传播速度仅为光波的百万分之一,纵向分辨率较高。
超声波对色彩、光照度、外界光线和电磁场不敏感,因此超声测距对于被测物处于黑暗、有灰尘或烟雾、强电磁干扰、有毒等恶劣的环境下有一定的适应能力,在液位测量、机器人避障和定位、倒车雷达、物体识别等方面有着广泛的运用。
与其他测距方法相比,超声波测距方法有其自己的特点:
(1)相对于声波,超声波具有定向性好、能量集中、在传输过程中的衰减较小、反射能力较强等优势。
(2)相对于光学方法,超声波的波速小,可以直接测量较近目标的距离,纵向分辨率较高;对色彩、光照度、电磁场不敏感,被测物体处于黑暗,有灰尘,烟雾,电磁干扰,有毒等恶劣的环境有一定的适应能力。
特别是在海洋勘测方面具有独特的优点。
(3)超声波传感器结构简单,体积小,费用低,信息处理简单可靠,易于小型化与集成化。
随着科学技术的快速发展,超声波的应用将越来越广。
但就目前技术水平来说,人们可以具体利用的超声波技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。
2.设计思路
超声波测距系统包括超声波的发射与接收系统、报警系统和显示系统。
其结构框图如图2-1所示:
2-1超声波测距系统的结构框图
本系统的设计主要分为系统硬件电路的设计和系统软件程序的设计两部分。
系统硬件电路部分由单片机最小系统模块、显示模块、语音报警模块、时钟模块、复位模块组成。
单片机为系统主控芯片,超声波传感器作为测量器件,通过单片机进行程序处理,最后通过显示模块显示出测量的距离值并进行报警。
如图:
3-1超声波测距系统软件框图。
图3-1超声波测距系统软件框图
3.基本原理
超声波测距系统能够在必要的时候(例如:
汽车倒车)通过单片机控制发射电路发射超声波,超声波向前传播。
当超声波遇到障碍物时会反射回来,由接收电路接收。
接收电路会把信号传送到单片机中,由单片机进行相关的数据处理。
所得到的结果会通过LED数码管显示出来。
如果距离小于一个特定的值,单片机会发出指令让报警装置发出相应的警报声。
在此过程中,如果发射装置与障碍物之间有相对运动,那么LED数码管会不断地显示两者之间最新的距离。
而单片机会对距离的变化情况发出不同的指令。
如果两者的距离超出一定的范围(本次设计是四米),就不再会进行报警。
但是如果两者之间的距离不断缩小,那么报警的声音就会发生变化,以便能够给人们提示。
超声波测距器是根据超声波遇到障碍物反射回来的特性进行测量的。
超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止时。
通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差△T,然后求出距离L。
基本的测距公式为:
S=(△T/2)*V
其中式中:
S:
为被测距离;
△T:
为发射波和反射波之间的时间间隔;
V:
为超声波在空气中的声速,常温下取为340m/s 。
声速确定后,只要测出超声波往返的时间,即可求得S 。
超声波测距原理图如图:
图1.1超声波测距原理图
4.超声波测距模块工作原理
这一部分采用HC-SR04超声波测距模块。
超声波测距模块可提供2cm--4m的非接触式距离感测功能,包括超声波发射器、接收器与控制电路。
其基本工作原理为给予此超声波测距模块一触发信号后发射超声波,当超声波投射到物体而反射回来时,模块输出一回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。
1)基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离=(高电平时间*声速(340M/S))/2;
2)参数设置:
(如图)
图4-2-1参数设置
3)时序图的说明:
图4-3-1超声波模块时序图
你只需要提供一个短期的10uS脉冲触发信号。
该模块内部将发出8个40kHz周期电平并检测回波。
一旦检测到有回波信号则输出回响信号。
回响信号是一个脉冲的宽度成正比的距离对象。
可通过发射信号到收到的回响信号时间间隔可以计算得到距离。
公式:
uS/58=厘米或者uS/148=英寸。
建议测量周期为60ms以上,以防止发射信号对回响信号的影响.
5.系统软件设计:
超声波测距系统的设计包括硬件设计和软件设计。
硬件电路的设计包含着软件的设计思路,软件的设计又能更好的发挥硬件的功能。
软件对整个系统来说是至关重要的,如果说硬件是一个系统的躯体,那么软件就是这个系统的灵魂,整个系统的执行操作都是在软件的协调指挥下进行的。
当系统的硬件电路确定之后,系统的主要功能还要靠软件来实现,软件的设计在很大程度上就决定了产品的性能。
5.1软件设计分析
系统软件的设计,它所需要完成的主要是针对系统功能的实现及数据的处理和应用。
根据以上所述系统硬件设计和各个电路功能,系统软件需要实现以下功能:
1)信号控制。
在系统硬件中,已经完成了发射电路、回波检测接收电路的设计。
在系统软件中,要完成发射脉冲信号及输出显示。
2)数据存储。
为了得到发射信号与接收回波间的时间差,要读出此刻计数器的计数值,然后存储在RAM中,而且每次发射周期的开始,需要对计数器清零,以备后续处理。
3)信号处理。
RAM中存储的计数值并不能作为距离值直接显示输出,超声波从发射出去碰到障碍物返回接收传感器的时间,需要通过软件定时器来记录。
根据这个时间才能计算出障碍物的距离。
4)数据传输与显示。
经软件处理得到的距离要以十进制的方式送LED显示。
5.2软件设计
5.2.1主程序:
图5.2.1主程序框图结构
5.2.2超声波产生子程序:
5.3主程序:
//****************主程序***********************//
voidmain()
{
//
Ultrasonic_out=0;
SP=0X80;
P4SW=0x70;//P4.4--P4.6为普通IO口X111xxxx;
P0M1=0X00;//P0为准IO口
P0M0=0X00;//P0为准IO口
setup();//液晶上电初始化
TMOD=0x11;//16位定时器设定
TH0=0X3C;//50毫秒定时值
TL0=0XB0;//50毫秒定时值
TH1=0X00;//超声回波计时用
TL1=0X00;//超声回波计时用
//flashing_lamp1=1;//关指示小灯1
LO_lamp=1;//关指示小灯或蜂鸣器
set_flashing_flag=0;//设定时调整单元闪烁标志,0正常显示,1熄灭
set_time_flag=0;//时间调整控制,值域:
0-8,分别为正常,调年、月、日、时、分、秒、星期、高温、低温
second_conter=0;//秒计数器
//
BLACK=0;//开液晶背光灯
_write(0x80,16,disdata1);//初始开机画面,写液晶第1行
_write(0x90,16,disdata2);//初始开机画面,写液晶第2行
_write(0x88,16,disdata3);//初始开机画面,写液晶第3行
_write(0x98,16,disdata4);//初始开机画面,写液晶第4行
//
//18B20温度传感器开机时先转换一次
ow_reset();//18B20复位
write_byte(0xCC);//18B20SkipROM
write_byte(0x44);//18B20发转换命令
//
delay1ms(3000);//LOGO显示约3秒
//
//读出EEPROM中存放的高低温报警设定值
//
temp_bj_max=IapReadByte(IAP_ADDRESS);//高温报警设定值
temp_bj_min=IapReadByte(IAP_ADDRESS+1);//低温报警设定值
//
Bj_D=IapReadByte(IAP_ADDRESS+2)|(IapReadByte(IAP_ADDRESS+3)<<8);////取报警距离数据
//
//初次写入程序时如数值不在规定域内则指定一个数据
if(Bj_D>max_D||Bj_Dif(temp_bj_max>max_temp||temp_bj_maxif(temp_bj_minmax_temp)temp_bj_min=0;//
//
BjD_set_BCD_disp();//设定参数显示
temp_set_data_BCD_disp();//设定参数显示
delay1ms(3000);//设定参数显示约3秒
//
BLACK=1;//关液晶背光灯
//
//
//
V=344;
Distance=0;
//
_write(0x80,16,disdata1);//工作画面,写液晶第1行
_write(0x90,16,DISP_DATA2);//工作画面,写液晶第2行
_write(0x88,16,DISP_DATA3);//工作画面,写液晶第3行
_write(0x98,16,DISP_DATA4);//工作画面,写液晶第4行
//
//***********以下主程序循环开始*********************//
while
(1)
{
read_temp();//读18B20温度数据
work_temp();//处理温度数据并显示刷新
//
Distance_display();//测距程序
if(KEY0==0)keywork();//日历时钟调整、高温低温报警值设定
//
//flashing_lamp1=~flashing_lamp1;//主程序运行指示灯,调试用。
经测试每循环一次为100MS
//
}
}
//以上主循环程序结束//
6.感悟心得
经过测试,本系统在电源供电的情况下能够实现自动测距、实时显示的功能,在4米距离内,测量速度快、准确、精度高。
但作品不足的地方是,由于受测量环境以及标定工具的限制,测量距离未能达到很远的指标,而系统测量距离拉长的一个很重要的就是自动增益控制模块的成败,鉴于所学知识和实验时间的限制,没能够做到更加完美。
本超声波系统在测量近距离时,显示很稳定且迅速、实时,但在测量远距离时显示不稳定,所以显示和测量的程序配合还有待提高。
通过总结,我还得出一重要结论,如果超声波的硬件系统如果再继续完善,那么程序写起来将更加顺手,结果也会更好。
所以,在今后的学习和实践过程中,不断加强理论基础,总结丰富实验经验将是我努力的目标。