基于超声波测距的倒车雷达
·
毕业设计(论文)
题 目 基于超声波测距的倒车雷达
系 (院)
专 业
班 级
学生姓名 学 号 指导教师 职 称 光电工程系 电子信息科学与技术 2011级1班 *** ********** ** 讲师
二〇一五年五月十八日
滨州学院本科毕业设计(论文)
独 创 声 明
本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指
导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽
我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他
个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献
的个人和集体均已在文中以明确方式标明。
本声明的法律后果由本人承担。
作者签名
二〇一二年六月十
八日
毕业设计(论文)使用授权声明
本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的
规定。
本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校
保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段
保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检
索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依
法合理使用。
(保密论文在解密后遵守此规定)
作者签名:
二〇一二年六月十
八日
基于超声波测距的倒车雷达设计
摘 要
本文设计了一个基于超声波测距的倒车雷达系统,他可以帮助驾
驶员获得小距离的视野盲区的障碍物信息,实现障碍物的距离实时传
送,并在距离过近时给与警报。本设计采用AT89S52单片机作为该系
统的主控芯片,超声波的发射与接收,距离显示以及报警都在单片机
的指挥下统一协调工作。另外,为了保证测距的准确性,还加入了声
速修正,使得测距更加精确。本设计使用C语言为编程语言,使用
keil软件为编译器,再将编译好的hex文件放入Proteus仿真的单
片机中,配合外围电路完成仿真。
关键词: 超声波 ,倒车雷达 ,单片机
Reversing radar design based on ultrasonic
ranging
Abstract
To help the driver get the obstacle information of the small distance
visual field,obstacles to achieve real-time transmission distance, and and
give the alarm when the distance is close.the design uses AT89S52
microcontroller as the main chip of the system, the transmission and
reception of ultrasonic, distance and alarm are unified and coordinated
under the command of SCM. In order to ensure the accuracy of the
ranging, the speed of sound is added, which makes the distance
measurement more accurate.. This design uses C language for
programming language, using keil software as the compiler, and then
compiled the hex file into the Proteus simulation microcontroller, with the
peripheral circuit simulation.
Key words: ultrasound; automobile-reversing rader; MCU
目 录
摘 要..................................................................................................................... I
引 言.................................................................................................................... 1
第一章 系统设计方案...................................................................................... 2
1.1超声波测距原理...................................................................................... 2
1.2系统总设计.............................................................................................. 2
第二章 系统硬件设计.......................................................................................... 4
2.1超声波发射模块...................................................................................... 4
2.2超声波接收模块...................................................................................... 5
2.3单片机模块.............................................................................................. 6
2.4报警模块.................................................................................................. 7
2.5显示模块.................................................................................................. 8
2.6声速修正.................................................................................................. 9
第三章 系统软件设计...................................................................................... 11
3.1系统主程序............................................................................................ 11
3.2超声波发送及接收中断程序................................................................ 12
第四章 软件仿真................................................................ 错误!未定义书签。
4.1 软件仿真............................................................................................... 14
结束语.................................................................................................................. 17
参考文献.............................................................................................................. 18
致谢...................................................................................................................... 19
附录...................................................................................................................... 20
引 言
随着当今社会的不断发展,汽车已成为了人们出行的首要交通工具,据统
计每年全国各地的汽车使用量都在大幅度增长,这很大程度上方便了人们的出
行,促进了汽车行业的发展。但汽车数量的增加,也使得各种各样的汽车碰撞事
故的增加。特别是汽车倒车时由于其后视性不足造成的生命财产损失更为严重。
倒车雷达,简单的说就是汽车在停车或倒车时能够提供帮助的一种装置。
它能以声音或高级一些能够以图像直观的显示告知汽车驾驶员倒车过程中车的
正后方、侧面的障碍物情况,使驾驶员更好的了解汽车周围障碍物情况,减少了
因视觉盲点带来的不必要的损失及伤害。
倒车雷达的工作原理:当驾驶员挂入倒挡时,倒车雷达装置启动,装置内
的超声波发射模块发出超声波,超声波遇到障碍物反射回来,接收模块接收到超
声波,单片机根据超声波传输的时间,计算出车与障碍物之间的距离,并将距离
报告给驾驶员,驾驶员根据实际情况做出相应操作。
第一章 系统设计方案
1.1超声波测距原理
超声波是一种频率较高的声波,一般来说频率高于20kHZ,它的方向性强,
获得的声能比较集中。
超声波测距原理:超声波发射模块在单片机方波信号激励下产生并发射超声
波,在超声波发射的同时给与计时,超声波在传播过程中遇到障碍物就会反射回
来,接收模块收到反射回来的超声波计时停止。设s为测量距离,t为超声波发
射到接受所需要的时间,超声波的传播速度为v,则可知s=vt/2。
在超声波测距的过程中,会有很多因素影响测距的准确性,其中最主要的
就是余波信号,这个问题我会在软件设计中介绍并解决。
1.2系统总设计
本系统采用模块化设计,根据功能及作用的不同,可以分为六大模块,即超
声波发射模块、接收模块、声速修正模块、单片机模块、显示模块和报警模块。
各模块都与单片机模块相连,在单片机的指挥下统一协调工作。
图1.1倒车雷达系统框图
以单片机P1.0端口作为输出口,产生40KH的间断方波信号,方波信号进
入超声波发射模块,经换能器处理发出超声波,同时单片机启动定时器开始计时,
超声波遇障碍物后反射,由超声波接收模块接收,并转换为单片机可处理的信号,
与此同时停止计时,单片机内的计时器计算从发射超声波到接收到超声波之间的
时间差t,通过声速修正得到超声波此时的传播速度v,得出超声波的传输距离,
即汽车与障碍物之间的距离s=vt/2.显示模块实时显示车与障碍物之间的距离,当
s小于设定值时,报警模块进行报警。
第二章 系统硬件设计
2.1超声波发射模块
AT89S52通过外部引脚P1.0 输出脉冲频率为40kHz的脉冲通过超声波驱动电路以推挽方式加到超声波换能器从而发射出超声波。
图2.1超声波发射电路
由单片机提供的40kHZ脉冲,在超声波发射模分成两路,一路经过一个反相器进入超声波换能器的一个引脚,另一路通过两个反相器进入超声波换能器的另外一个引脚。用这种推挽的方式将单片机提供的脉冲分别加到超声波换能器的两个引脚能够增强超声波的发射强度。
本设计采用的是压电式超声波换能器,它能进行声电转换,超声波换能器内部有两个压电晶片和一个共振板,压电晶片在电脉冲的激励下就会发生共振,并带动共振板振动产生超声波,这称为逆压电效应。在没有电压的情况下,共振板接收到超声波时,产生共振,压电晶片就会被迫振动,将机械能转化为电信号,这称为正压电效应,正压电效应一般用于超声波的接收。
2.2超声波接收模块
由于超声波经障碍物反射回来之后,强度大大的衰减,并且存在很多干扰信号,所以必须对接收到的超声波信号进行放大,检波,除噪等处理,在转换为单片机能可以处理的信号。考虑到以上各种情况,可以使用CX20106A集成电路,CX20106A是索尼公司的一款芯片,这是一款红外信号接收芯片,内部包括检波、除噪、放大电路。另外在电路中使用集成电路可以减少与其他电路之间的相互干扰。
图2.2 CX20106内部结构框图
图2.3 超声波接收电路
由接收电路图所示,CX20106芯片总共有8个引脚,引脚1用于超声波的输入,引脚4接地,引脚8接电源,引脚2外接了一个电阻R2与电容C7并接地,构成了RC串联网络,改变R2和C7可以改变放大器的增益。引脚3与地之间加了一个电容C8,可用于电路检波。引脚5通过一个电阻R3与电源相连,可以用来设置滤波器中心频率。引脚6结构与引脚3相似,而引脚6中的电容可以改变探测距离。引脚7外加一个上拉电阻到电源,而且输出信号到单片机引脚。
2.3单片机模块
本设计在选用处理器方面选用的经典的5l系列单片机的AT89S52单片机。AT89S52 单片机不仅功耗低而且性能还很高。 AT89S52具有以下性能: 8k字节闪存,256字节随机存储, 32 个可编程I/O 接口,双数据指针,三个16 位 定时器/计数器,8个中断源,掉电标识符,掉电后中断可唤醒。
单片机最小系统:任何一个控制器完成其基本的功能都不可缺少其工作的最小系统。如图2.4
图2.4 单片机最小系统
电源、时钟电路、复位电路组成了该系统的最小系统。
电源:对于一个电子设计来讲,电源是整个系统首先要解决的问题,稳定可靠的电源是系统平稳运行的基础和前提。最小系统的供电可以选择计算机的USB供给也可以选择稳定的5V电源供给。电源电路中接入了发光二极管,当电源接通后就会发亮,用于电源指示。
时钟电路:由图可以看出本系统采用的是内部时钟方式,通过在引脚XTAL1和XTAL2两端跨界晶体或陶瓷谐振器,再与芯片内部的振荡电路相结合,就构成了自激振荡器,其发出的脉冲直接送入内部时钟电路。另外,晶体和电容与单片机芯片靠近安装会减少寄生电容,有利于振荡器更好的工作。
复位电路:复位是单片机的初始化操作,为了使CPU或系统中其他部件都回到初始状态,所以在单片机在启动时,都要先复位,并从初始状态开始工作。单片机的复位只需要RST引脚端持续2个机器周期以上的高电平。本系统采用的是按键复位,即在复位电容旁边并联一个开关,当按下开关时RST连接到高电平,此时电容充电,会保持一段时间的高电平使单片机复位。
2.4报警模块
在众多的报警电路中,选用了最为广泛的蜂鸣器,因为蜂鸣器价格比较便宜,而且接线方便。有源蜂鸣器和无源蜂鸣器是蜂鸣器的两种类型。其中有源蜂鸣器内部带有震荡源,只需一通电就会发出声音,无源蜂鸣器则与有源蜂鸣器相反内部没有震荡源,如果采用直流信号不能使它发出声音,必须用2khz到5khz的方波去驱动它,才能使其发出声音。
本设计采用的是比较简单的无源蜂鸣器。
在报警模块中,除了蜂鸣器还有一个指示灯,简单地说就是一个发光二极管,发光二极管是半导体二极管的一种,具有单向导电性,不同的是发光二极管可以把电能转化为光能。
当超声波测的的距离小于0.6m时,单片机使P20引脚得到一个电平,这样,三极管导通,蜂鸣器和发光二极管形成回路,即发光二极管开始发光,蜂鸣器发出声音,给与人们警示,反之,三极管截止,蜂鸣器和发光二极管不在工作。
图2.5 报警电路
2.5显示模块
本系统中选用的显示模块是最简单的LED数码管显示,如图所示。LED显示器用直流驱动,结构简单,功耗低、寿命长,而且相应速度比较快。
图2.6 显示模块电路
LED显示器是由8个发光二极管组成的显示器件,其外形结构就像一个阿拉伯数字“8”它可以通过不同的组合来显示各种由0-9构成的数字,也可以显示A-F等英文字符。
本系统为了节约I/O口的占用量,采用了LED显示器动态显示。
动态显示是把所有显示器一样的段选采用并联的方式连在一起,并由一个8位I/O口控制,而其公共端由其他相应的I/O口控制,然后采用扫描方法轮流点亮各个LED,使每个分时显示该位应该显示的字符。
为了解决单片机电压不足的问题,在系统设计中又加了一个上拉电阻(RP1),使得数码管正常工作。
图2.6中7404逻辑非门为驱动器,为每一位数码管提供电流驱动。因为单片机I/O口电流限制较小,所以通过7404逻辑非门缓冲放大电流。
2.6声速修正
因为超声波也是一种声波,所以其传输速率也与温度有关,如果温度变化很
小,传输速率变化也就可以忽略不计,超声波在空气中传播时会有很多因素影响其传输速率,其中温度对超声波传输速率影响最大,查阅资料可知,如果温度每提升或下降1℃,传播速率就会增加会减小0.6m/s。
超声波温度与传输速率的关系为 V = 331.45 + 0.607T
表2.1 温度和声速的关系
为了电路和处理程序方面的简单,本设计采用了集成电路的温度传感器,这种传感器可以直接将温度转化为数字信号,单片机处理很方便,而且采用单总线与单片机相连,节约了单片机接口的占用量。
图2.7 声速修正电路
第三章 系统软件设计
本系统的软件设计和硬件设计相辅相成,共同采用了模块化设计,由主程序、超声波发射及接收中断程序、显示及报警程序等模块构成。
3.1系统主程序
图3.1 主程序
主程序是整个系统程序架构的基础,系统的初始化化,引脚值的定义,寄存器赋初值,其他子程序的接口与控制,信息的反馈,都是需要主程序完成的,所有的子程序模块都是在为主程序服务,各个子模块都被主模块所调用。 主程序运行流程:主程序对系统环境初始化,包括各个函数的引用声明,引脚电平的赋值,以及一些引脚的定义。完成初始化后,进入循环结构,首先调用超声波发射模块,单片机的p1.0口输出40KHZ的方波,启动超声波发射电路,同时开始计时,超声波经过一段时间反射回来,中断引脚接收到中断信号,停止计时,经程序运算得出距离,输送到显示模块,当距离小于设定值时,信息输送到报警模块。
3.2超声波发送及接收中断程序
本系统的核心技术就是距离的测量,在测距的过程中会有许多干扰信号,其中最主要的是余波信号,余波信号是超声波发射探头发射信号后,超声波接收探头立马就接收到了超声波信号,余波信号是超声波检测中信号干扰的主要原因。 而我们所需要的是超声波经过物体表面反射的回波信号。
超声波接收电路收到回波后,比较器做出比较发出有效信号,中断引脚测到回波信号的到达时间,中断发生后,立即停止计时,得到超声波由发送到接收的时间差,计算出距离。
图3.2
第四章 软件仿真
4.1 软件仿真
该设计选用了Keil软件和proteus软件,Keil软件可对单片机C语言程序进行编写,编译,程序编写成功后,生成hex文件。Proteus软件能仿真单片机及外围器件,是目前较好的单片机及外围器件的仿真工具。将keil软件程序编写完成后生成的hex文件放到peoteus软件中的单片机中,在配合外围电路就可以完成仿真。
如图4.1,这是proteus软件对整个倒车雷达系统进行的仿真。
图4.1 倒车雷达系统总电路
如图4.2,仿真过程中距离为855mm,此时大于设定值600mm,所以报警器及LED灯没有反映。
图4.2
如图4.3,测的距离为377mm,小于600mm,蜂鸣器发出声音,并且LED灯发亮。
图4.4
结束语
按照任务书要求,在查阅了大量书籍以及各种参考资料,再经过一个多月的努力奋斗后,我终于完成了 “基于超声波测距的倒车雷达系统设计”,该设计基本上达到了预期目标,实现了其该有的功能。
从论文选题到系统的仿真实现,再到论文内容的完成,每一步都包含了我的尝试与挑战,这也是我在大学期间独立完成的项目之一。在这段期间里,我学到了很多以前没有接触或不懂知识,在论文中用到的keil软件和proteus软件,一开始时感觉很难,不会使用,尤其是在找元器件时找了很长时间才能找到。最后,我就静下心来慢慢的学习、寻找。到了最后,我基本上可以使用它们,用proteus画的电路图变得越来越复杂。
尽管我的论文还不是很成熟,还有很多需要完善的地方,但我可以发自内心的说,这里面的每一个接线、引脚,每一个电路图,都有我的劳动。当看着自己画的电路图,可以完美的仿真时,内心是多么的的幸福和完美。
这次做论文的经历将会使我受益终身,做论文是一件真正用心去做的事,需要自己真正的学习和研究,不去学习就没有能力进行研究,自己不去研究,就不会得到收获,那也就完不成论文。
参考文献
[1]赵天池.传感器和探测器的物理原理和应用[M].北京:科学出版社,2008: 107-110 [2]李群芳.单片微型计算机与接口技术.北京:高等教育出版社,2001 [3]张迎新。单片机初级教程。北京:北京航空航天大学出版社2006.08
[4] 戴佳,戴卫恒.51单片机C语言应用设计实例精讲[M].北京:电子工业出版社,2007 [5]彭伟,单片机C语言程序设计实训100例;电子工业出版社
[6] 杨恢先,黄辉先.单片机原理及应用[M].上海:复旦大学出版社, 2002.36~52 [7] 童诗白,华成英.模拟电子技术基础[M].北京:高等教育出版社,2001 [8]余发山等.单片机原理及应用技术[M].北京:中国矿业大学出版社,2003. [9] 张毅刚.单片机原理及应用[M].北京:高等教育出版社,2001 .397~407 [10] 张谦琳.超声波检测原理和方法[M].北京:中国科技大学出版社,1993.10
致谢
匆匆之间 ,大学四年即将结束,与此同时我也完成了学校的最后一项学习任务毕业设计。在这份毕业设计的制作过程中,遇到了各种困难和障碍,但都在老师和同学的热心帮助下一一解决了。
完成这项设计,首先要感谢我的指导老师——郑老师,从论文的选题到搜集资料,从开题报告到论文的大体完成,郑老师一直不耐其烦对我进行悉心指导和帮助,提出严格的要求,引导我不停的扩展新思路,鼓舞我大胆创新,使我在制作论文的这段时间里,开阔了视野,增长了知识,锻炼了心态。
另外,还要感谢图书馆的图书管理人员,为了推荐了很多关于论文资料的宝贵书籍,还要感谢参考文献中的作者们,他们的著作,使我学到了很多知识以及软件的应用,是我的论文更加完美。
最后,再次感谢曾经帮助和支持我的同学和老师。
附录
系统主要程序
#include #define uchar unsigned char #define uint unsigned int #define alarmdistance 120 int time;
uchar succeed_flag; uchar timeL; uchar timeH;
sbit Trig=P2^0;//输出口 sbit Echo=P3^2;//输入口
sbit dula=P2^6;//段选锁存信号 sbit wela=P2^7;//位选锁存信号 sbit dp=P0^7;//小数点 sbit key=P3^7;//按键选择 sbit beer=P2^3; //蜂鸣器
uint distance;
void delay(uint z) //延时程序 {
uint x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--); }
void delay_20us() // 维持发射端高电平20us {
uchar a ;
for(a=0;a
void alarm()//报警程序 {
beer=0; P1=0x0f; delay(100); beer=1; P1=0xf0; delay(100); }
void display(uint y) //四位一体数码管显示程序 {
P0=0xff; wela=1; P0=0xfe; wela=0;
P0=0x00; dula=1;
P0=table[y/1000]; dp=1; dula=0; delay(3);
P0=0xff; wela=1; P0=0xfd; wela=0;
P0=0x00; dula=1;
P0=table[y%1000/100]; dula=0; delay(3);
P0=0xff; wela=1; P0=0xfb; wela=0;
P0=0x00; dula=1;
P0=table[y%100/10]; dula=0; delay(3);
P0=0xff; wela=1; P0=0xf7; wela=0;
P0=0x00; dula=1;
P0=table[y%10];
dula=0;
delay(1); }
void init() //测距程序的初始化 {
Trig=1; delay_20us(); Trig=0; while(Echo==0); succeed_flag=0; EA=1;
EX0=1; TH1=0; TL1=0; TF1=0; TR1=1; while(Echo==1); }
void automes() //自动测量程序 {
while(1) {
init();
if(succeed_flag==1) {
time=(timeH*256+timeL)*1.0851; distance=time*0.17; //毫米 } if(succeed_flag==0) {
distance=0; }
display(distance);
if(distance
void mes() {
init();
while(1)
{
if(0==key) { init(); }
if(succeed_flag==1) {
time=(timeH*256+timeL)*1.0851; distance=time*0.17; //毫米 display(distance);
} if(succeed_flag==0) {
distance=0; }
if(distance
void keyscan() {
int i=3; if(key==0) { delay(1500); if(key==0) { while(i--) { P1=0xff; delay(500); P1=0x00; delay(500); } automes(); } else { P1=0xf0; mes(); } } }
void main()
{
P1=0x00;
Trig=0; EA=1; TMOD=0x10; while(1) { keyscan(); } }
void exter(void)interrupt 0 {
TR1=0;
EX0=0; timeH =TH1; timeL =TL1; succeed_flag=1; }