摘 要
倒车雷达又称泊车辅助系统,是汽车泊车安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,提高了安全性。
本文介绍了以STC89C51RC单片机为核心的一种低成本、高精度、微型化,并有数字显示和声光报警功能的倒车雷达系统。倒车雷达一般由超声波传感器(俗称探头)、控制器和显示器等部分组成,现在市场上的倒车雷达大多采用超声波测距原理,驾驶者在倒车时,启动倒车雷达,在控制器的控制下,由装置于车尾保险杠上的探头发送超声波,遇到障碍物,产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,得到及时警示,从而使驾驶者倒车时做到心中有数,使倒车变得更轻松。倒车雷达的提示方式可分为液晶、语言和声音三种;接收方式有无线传输和有线传输等。本方案采用语音提示的方式,利用STC89C51RC单片机所具备的功能,外接超声波测距模组,即超声波发射模块和超声波接收模块,加上显示模块和语音报警模块,组成一个示例的倒车雷达系统,语音提示报警(0.27m~1.0m)范围内的障碍物,并通过数码管显示与障碍物之间的距离。 关键词:倒车雷达 超声波 单片机STC89C51RC
I
ABSTRACT
Parking sensor, also known as parking assist system is secure car parking assist device, capable of voice or tell the driver a more intuitive display cases around the obstacle, to lift the driver start the vehicle parking and access around, caused when the Trouble, and to help the driver to remove the dead and blurred vision defectsand improve security.
Generally by the ultrasonic sensors(commonly known as probes), controllers and monitors and other components, reversing radar on the market today are mostly using ultrasonic ranging principle, the driver in reverse, start reversing radar, under the control of the controller, the device in Rear bumpersend ultrasonic probe encountered obstacles, resulting echo signals, the sensor receives the echo signal by the controller for data processing, determine the location of obstructions, the distance from the display and issued warning signals Timelywarning, so be aware of the driver when reversing to makereversing easier. Tips for reversing radar can be divided into liquid crystal, three kinds of language and sound; receive mode wirelesstransmission and wired transmission. The program uses voice prompt manner, this paper introduces the microcontroller coreSTC89C51RC a low cost, high accuracy, miniaturization, and adigital display and sound and light alarm function reversing radar system. The use of available STC89C51RC single-chipmicrocontroller voice capabilities, external three ultrasonic rangingmodules to form a sample of reversing radar system, voice alarm(0.27m ~ 1.0m) within the barrier.
KEY WORDS: parking sensor ultrasonic SCM STC89C51RC
II
目录
摘要 ..................................................................................................................................... I ABSTRACT ....................................................................................................................... II 目录 ..................................................................................................................................... i 1绪论 ................................................................................................................................. 3
1.1倒车雷达的研究意义以及国内外发展现况 ...................................................... 3 1.2本设计主要内容及概述 ...................................................................................... 5 2倒车雷达的基本工作原理 ............................................................................................. 6
2.1单片机的发展及其应用 ...................................................................................... 6 2.2超声波研究发展及其测距工作原理 .................................................................. 6
2.2.1国内外超声波研究历史及发展现状 ....................................................... 6 2.2.2超声波测距的基本原理 ........................................................................... 8 2.2.3利用超声波测距的设计实现 ................................................................. 10 2.3超声波倒车雷达系统工作原理 .........................................................................11
2.3.1超声波倒车雷达的工作原理 ..................................................................11 2.3.2系统原理框图 ......................................................................................... 12 2.4本章小结 ............................................................................................................ 13 3系统硬件设计 ............................................................................................................... 14
3.1单片机系统及显示电路 .................................................................................... 14
3.1.1单片机控制芯片选择 ............................................................................. 14 3.1.2单片机系统及其外围电路 ..................................................................... 16 3.1.3显示电路 ................................................................................................. 17 3.2超声波发射电路 ................................................................................................ 18 3.3超声波检测接受电路 ........................................................................................ 20 3.4语音部分原理图 ................................................................................................ 22 3.5电源电路 ............................................................................................................ 22 3.6本章小结 ............................................................................................................ 23 4系统软件设计 ............................................................................................................... 24
4.1超声波测距仪的算法设计 ................................................................................ 25
i
4.2主程序设计 ........................................................................................................ 26 4.3超声波发生子程序和超声波接收中断程序设计 ............................................ 28
4.3.1超声波发生子程序设计 ......................................................................... 28 4.3.2外部中断子程序设计 ............................................................................. 30 4.4倒车距离显示及语音报警控制程序设计 ........................................................ 31
4.4.1显示报警子程序设计 ............................................................................. 31 4.4.2 LED显示子程序设计 ............................................................................ 33 4.5本章小结 ............................................................................................................ 34 5安装调试及分析 ........................................................................................................... 35
5.1硬件部分 ............................................................................................................ 35 5.2软件实现与操作 ................................................................................................ 36 5.3整机调试 ............................................................................................................ 37 5.4记录并分析实验结果 ........................................................................................ 37 5.5本章小结 ............................................................................................................ 38 6测距仪改进的设想 ....................................................................................................... 39
6.1对倒车雷达的测距改进的设想 ........................................................................ 39 6.2本章小结 ............................................................................................................ 40 心得体会与总结 .............................................................................................................. 41 致谢 .................................................................................................................................. 42 参考文献 .......................................................................................................................... 43 附录A .............................................................................................................................. 44 附录B .............................................................................................................................. 45
ii
1 绪论
1.1 倒车雷达的研究意义以及国内外发展现况
自从 1886 年 2 月 9 日卡尔•本茨发明了人类第一辆汽车,至今世界汽车工业经过了近127年的发展,当代汽车已经非常成熟和普遍了。汽车已经渗透于国防建设、国民经济以及人类生活的各个领域之中,成为人类生存必不可少的、最主要的交通工具,为人类生存和社会的发展与进步起到了至关重要的作用。当今,汽车已经成为人们生活中不可缺少的一部分,近年来,我国的汽车数量正逐年增加。在公路、街道、停车场、车库等拥挤、狭窄的地方倒车时,驾驶员既要前瞻,又要后顾,稍微不小心就会发生追尾事故。它给人们带来方便快捷的同时,也出现了许多问题。如越来越多的汽车使道路上有效的使用空间越来越小,新手也越来越多,由此引起的刮伤事件也越来越多,由此引起的纠纷也在不断地增加。原来不是问题的倒车也逐渐变成了问题。尽管每辆车都有后视镜,但不可避免地都存在一个后视盲区,倒车雷达则可以在一定程度上帮助驾驶员扫除视角死角和视线模糊的缺陷,提高驾驶的安全性,减少刮、擦事件。倒车事故发生的原因是多方面的,倒车镜有死角,驾车者目测距离有误差,视线模糊等原因造成倒车时的事故率远大于汽车前进时的事故率,尤其是非职业驾驶员以及女性更为突出。而倒车事故给车主带来的许多麻烦,例如撞上别人的车、消防水笼头,如果伤及儿童更是不堪设想,有鉴于此,汽车高科技产品家族中,专为汽车倒车泊位设置的“倒车雷达”应运而生,倒车雷达的加装可以解决驾驶人员后顾之忧,大大降低了倒车事故的发生。
倒车雷达是汽车泊车或者倒车时的安全辅助装置,能以声音或者更为直观的显示告知驾驶员驾驶车辆周围障碍物的情况,解除了驾驶员泊车、倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了使用死角和视线模糊的缺陷,提高驾驶的安全性。倒车雷达的发明是迫在眉睫的,是必不可少的设备。倒车雷达的原理与普通雷达一样,是根据蝙蝠在黑夜里高速飞行而不会与任何障碍物相撞的原理设计开发的。通过感应装置发生超声波,然后通过反射回来的超声波判断前方是否有障碍物,以及障碍物的距离、大小、方向、形状等。只不过由于倒车雷达体积大小及实用性的限制,目前其主要功能仅为判断障碍物与车的距离,并做出提示。
通常的倒车雷达主要由感应器(探头)、主机、显示设备等三部分组成。感应器发出和接受超声波信号,并将接受到的信号传输到主机,再通过显示设备显示出来。感应
3
器装在后保险杠上,以角45度辐射,检测目标,能探索到那些低于保险杠而驾驶员从后窗又难以看见的障碍物并报警,如花坛、蹲在车后玩耍的儿童等;显示设备装在仪表板上,提醒驾驶员汽车距后面物体还有多少距离,到危险距离时,蜂鸣器就开始鸣叫,提示驾驶员停车。根据感应器种类不同,倒车雷达可分为粘贴式、钻孔式和悬挂式。粘贴式感应器后有1层胶,可直接粘在后保险杠上;钻孔式感应器是在保险杠上钻一个洞,然后把感应器嵌进去;悬挂式感应器主要用于载货车。根据显示设备种类不同,倒车雷达又可分为数字式、颜色式和蜂鸣式。数字式显示设备是一只如传呼机大小的盒子,安装在驾驶台上,直接有数字表示汽车与后面物体的距离,并可精确到1厘米,让驾驶员一目了然。倒车防撞雷达发展到现在已经历经5代。
第一代的倒车雷达系统是轰鸣器。倒车时,如果车后1.5米-1.8米处有障碍物,轰鸣器就会开始工作,轰鸣越急,表示车辆离障碍物越近。没有语音提示,也没有距离显示,虽然司机知道有障碍物,但不能确定障碍物离车有多远,对驾驶员帮助不大。
第二代倒车雷达可以显示车后障碍物离车的距离。这一代产品有两种显示方式,数码显示产品显示距离数字,而波段显示产品由三种颜色来区别:绿色代表安全距离,表示障碍物离车体距离有0.8米以上;黄色代表警告距离,表示离障碍物的距离只有0.6米-0.8米;红色代表危险距离,表示离障碍物只有不到0.6米的距离,必须停止倒车。
第三代用液晶荧屏显示,特别是荧屏显示开始出现动态显示系统。不用挂倒档,只要发动汽车,显示器上就会出现汽车图案以及车辆周围的障碍物的距离。该雷达动态显示,色彩清晰漂亮,外表美观,可以直接粘贴在仪表盘上,安装很方便。不过液晶显示器外观虽精巧,但灵敏度较高,抗干扰能力不强,所以误报也较多。
第四代魔幻镜倒车雷达,采用了最新仿生超声雷达技术,配以高速电脑控制,可全天候准确地测知2米内的障碍物,并用不同的声音提示和直观的显示提醒驾驶员。魔幻镜倒车雷达把后视镜倒车雷达、免提电话、温度显示和车内空气污染显示等多功能整合在一起,并设计了语音功能,是目前市面上最先进的倒车雷达系统。其外型就是一块倒车镜,所以可以不占用车内空间,直接安装在车内倒视镜的位置。
第五代倒车雷达是专门为高档轿车生产的,它的整合了高档轿车具备的影音系统,可以在显示器上观看DVD影像。因为是新品,售价也较高。倒车雷达的发展实际上已经融入了整车的设计,随着技术的成熟,价格的降低,倒车雷达将会逐渐普及成为标准配置。
4
1.2 本设计主要内容及概述
本设计是以STC89C51RC单片机为核心,一种低成本、高精度、微型化,并有数字显示和声光报警功能的倒车雷达系统。利用STC89C51RC单片机所具备的功能,外接超声波测距模组,即超声波发射模块和超声波接收模块,加上显示模块和语音报警模块,组成一个示例的倒车雷达系统,语音提示报警(0.27m~1.5m)范围内的障碍物,并通过数码管显示与障碍物之间的距离。设计共分六章,主要内容包括:绪论,倒车雷达的基本工作原理,系统硬件设计,系统软件设计,安装调试及分析,以及对测距仪改进的一些设想。
5
2 倒车雷达的基本工作原理
2.1 单片机的发展及其应用
单片机又称微控制器,是在一块硅片上集成了各种部件化微型计算机,这些部件包括中央处理器CPU、数据存贮器RAM、程序存贮器ROM、定时器/计数器和多种I/O接口电路。单片机体积小、重量轻、具有很强的灵活性而且价格不高,越来越得到广泛的应用。8051在小中型应用场合很常见,已成为单片机领域的实际标准。80年代中期,Intel公司将8051内核使用权以专利互换或出售形式转给世界许多著名IC制造厂商,如PHILIPS、西门子、AMD、OKI、NEC、Atmel等,这样8051就变成有众多制造厂商支持的、发展出上百个品种的大家族。90年代,PHILIPS推出支持16位计算的X4系列。XA系列是16位单片机,又可完全兼容8051的指令系统。Intel推出的80C51也是与8051在机器代码级兼容,这样保证了8051用户到21世纪技术的领先性。随着硬件的发展,8051软件工具已有C级编译器及实时多任务操作系统(RIOS),单片机的程序设计更简单、更可靠、实时性更强。因而8051系列是单片机教学的首选机型。而有内部可擦写RAM的89C51/52是目前我们常用的芯片。
2.2超声波研究发展及其测距工作原理
2.2.1国内外超声波研究历史及发展现状
一般认为,关于超声波的研究最初起始于1876年F.Galton的气哨实验,这是人类首次有效产生的高频声波。在之后的三十年中,超声波仍然是一个鲜为人知的东西,由于当时电子技术发展缓慢,对超声波的研究造成了一定程度的影响。在第一次世界大战中,对超声波的研究逐渐受到重视。法国人Langevin使用一种晶体传感器在水下发射和接收相对低频的超声波。他提出的这种方法可以用来检测水中是否存在潜艇并进行水下通信。
1929年,Sokolov首先提出用超声波探查金属物内部缺陷的建议。相隔2年,1931年Mulhauser获准一项关于超声检测方法的德国专利,不过他并未做更多的工作。4年之后,1934年sokolov首次发表了关于在液体槽子里用穿透法作实物试验的结果,他用了各种方法做了实验,用来检测穿过试件的超声能量,其中之一是用简单的光学方法观
6
察液体表面由超声波形成的波纹。德国人Bergrnann在他的论著《ULTRASONIC》中,详细的论述了有关超声波的大量早期资料,该论著一直被认为是该领域的经典之作。
美国的Firestone首次介绍了脉冲回波探伤仪,使超声波检测技术发展到了更重要的阶段。在各种系统中,这是最成功的一种,因为它有最广泛的通用性,其检测结果也最容易解释。这种方法除可用于手工检测外,还可与采用先进技术的自动系统联用,自第一种脉冲回波仪器问世以来,根据相同的原理,有无数种其他仪器得到了发展,并有许多改进和精化。目前,在超声无损检测中,脉冲回波系统仍是使用最为广泛的一种。
八十年代后期,由于计算机技术和高速器件的不断发展,使超声波信号的数字化采集和分析成为可能。目前国内也相继出现了各类数字化超声波测距设备,并已成为超声波检测的发展方向。厦门大学的某位学者研究了一种回波轮廓分析法。该方法在测距中通过两次探测求取回波包络曲线来得到回波的起点,通过这样处理后超声波传播时间的精度得到了很大的提高。另外,也有大量的文献研究采用数字信号处理技术和小波变换理论来提高传输时间的精度。这些处理方法都取得了较好的效果。
目前国内外在超声波检测领域都向着数字化方向发展,数字式超声波测距系统的发展速度很快。国内近几年也相继出现了许多数字式超声波仪器和分析系统。随着测距技术研究的不断深入,对超声测距系统功能要求越来越高,单数码显示的超声测距系统会带来较大的测试误差。进一步要求以后生产的超声测距仪能够具有双显及内带有单板机的微处理功能。随后具有检测,记录,存储,数据处理与分析等多项功能的智能化检测分析仪相继研制成功。超声仪研制呈现一派繁荣景象。其中,煤炭科学研究院研制的 2000A 型超声分析检测仪,是一种内带微处理器的智能化测量仪器,全部操作都处于微处理器的控制管理之下,所有测量值,处理结果,状态信息都在显像管上显示出来,并可接微型打印机打印。其数字和波形都比较清晰稳定,操作简单,可靠性高,具有断电存储功能,其串口可以方便用户对仪器的测试数据进行后处理及有关程序的开发。与国内同类产品相比,设计新颖合理,功能齐全,在仪器设计上有重大突破和创新,达到了国际先进水平。
超声波测距由于其能够进行非接触测量和相对较高的测量精度,越来越被人们所重视。就目前形势来看,汽车市场的快速发展将带动倒车雷达市场的繁荣。国内倒车雷达主流市场已经开始有进口高档汽车向中低档汽车发展。技术上向着单芯片功能成灵敏度更高、可视化发展,设备趋于小型化、人性化、智能化等方向发展。由此可见,超声波汽车倒车雷达系统将会在人类今后的生活中扮演越来越重的角色,为人类的发展作出重要贡献。
7
2.2.2 超声波测距的基本原理
(1)认识超声波
超声波是指振动频率大于20KHz以上的,其每秒的振动次数(频率)甚高,超出了人耳听觉的上限(20000Hz),人们将这种听不见的声波叫做超声波。超声和可闻声本质上是一致的,它们的共同点都是一种机械振动,通常以纵波的方式在弹性介质内会传播,是一种能量的传播形式,其不同点是超声频率高,波长短,在一定距离内沿直线传播具有良好的束射性和方向性。
超声波由于其指向性强、能量消耗缓慢、传播距离较远等优点,而经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如液位、井深、管道长度等场合。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在测控系统的研制上得到了广泛应用。
(2) 超声波发生器
为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。 (3)超声波传感器的特性
超声波传感器的基本特性有频率特性和指向特性,这里以课题中选用的传感器T/R40发射型超声波传感器的特性为例加以说明。
①频率特性
图2-1 超声波传感器的升压能级和灵敏度
8
图2-1是超声波发射传感器的升压能级和灵敏度。其中,40KHz处为超声波发射传感器的中心频率,在40KHz处,超声发射传感器所产生的超声机械波最强,也就是说在40KHz处所产生的超声声压能级最高。而在40KHz两侧,声压能级迅速衰减。其频率特性如图2-2所示。因此,超声波发射传感器一定要使用非常接近中心频率40KHz的交流电压来激励。
发射灵敏度(dB)
图2-2 超声发射传感器频率特性
另外,超声波接收传感器的频率特性与发射传感器的频率特性类似。超声发射传感器频率特性如图2-2所示,曲线在40KHz处曲线最尖锐,输出电信号的振幅最大,即在40KHz处接收灵敏度最高。因此,超声波接收传感器具有很好的频率选择特性。超声接收传感器的频率特性曲线和输出端外接电阻R也有很大关系,如果R很大,频率特性是尖锐共振的,并且在这个共振频率上灵敏度很高。如果R较小,频率特性变得光滑而且有较宽的带宽,同时灵敏度以随之降低。并且最大灵敏的向稍低的频率移动。因此,超声接收传感器应与输入阻抗的前置放大器配合使用,才能有较高的接收灵敏度。考虑到实际工程测量的要求,可以选用超声波频率f = 40KHz,波长λ = 0.85cm。
② 指向特性
实际的超声波传感器中的压电晶片是一个小圆片,可以把表面上每个点看成一个振荡器,辐射出一个半球波(子波),这些子波没有指向性。但离开超声传感器的空间某一点的声压是这些子波迭加的结果(衍射),却有指向性。超声传感器的指向图由一个主瓣和几个副瓣构成,其物理意义是0度时电压最大,角度逐渐增大时,声压减小。超声传感器的指向角一般为40度到80度,本设计要求传感器的指向角为75度。图2-3是电路中选用的发射传感器的指向特性及结构。
9
图2-3 超声波传感器指向特性及结构
(4) 超声波传感器的应用
超声波传感技术应用在生产实践的不同方面,而医学应用是其最主要的应用之一,以医学为例子说明超声波传感技术的应用。超声波在医学上的应用主要是诊断疾病,它已经成为了临床医学中不可缺少的诊断方法。超声波诊断的优点是:对受检者无痛苦、无损害、方法简便、显像清晰、诊断的准确率高等。因而推广容易,受到医务工作者和患者的欢迎。超声波诊断可以基于不同的医学原理,其中有代表性的一种所谓的A型方法。这个方法是利用超声波的反射。当超声波在人体组织中传播遇到两层声阻抗不同的介质界面是,在该界面就产生反射回声。每遇到一个反射面时,回声在示波器的屏幕上显示出来,而两个界面的阻抗差值也决定了回声的振幅的高低。
在工业方面,超声波的典型应用是对金属的无损探伤和超声波测厚两种。过去,许多技术因为无法探测到物体组织内部而受到阻碍,超声波传感技术的出现改变了这种状况。当然更多的超声波传感器是固定地安装在不同的装置上,“悄无声息”地探测人们所需要的信号。在未来的应用中,超声波将与信息技术、新材料技术结合起来,将出现更多的智能化、高灵敏度的超声波传感器。 (5)超声波测距原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。假设某环境下超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2
2.2.3 利用超声波测距的设计实现
超声波测距是单片机控制超声波传感器发射出超声波束,遇到障碍后返回,然后接收它的回波,利用发、收过程中产生的时间差,就可以计算出前方物体离超声波传感器
10
的实际距离。经分析可知:频率为40KHZ左右的超声波在空气中传播的效率最佳,因此,为了方便处理,发射的超声波被调制成40KHZ左右、具有一定间隔的调制脉冲波信号,如图2-4所示。
10us的TTL触发信号循环发出2个40KHz脉冲模块内部发出信号输出回响信号回响电平输出与检测距离成正比
图2-4 超声波通道工作时序图
以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出2个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号,回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
2.3超声波倒车雷达系统工作原理
倒车雷达只需要在汽车倒车时工作,为驾驶员提供汽车后方的信息。由于倒车时汽车的行驶速度较慢,和声速相比可以认为汽车是静止的,因此在系统中可以忽略多普勒效应的影响。在许多测距方法中,脉冲测距法只需要测量超声波在测量点与目标间的往返时间,实现简单,因此本系统采用了这种方法。
该设计的应用背景是基于STC89C51RC的超声信号检测的。因此初步计划实在室内小范围的测试,限定在1.5米左右。单片机(STC89C51RC)发出短暂的40KHz信号,反射后的超声波经超声波接收器作为系统的输入,锁相环对此型号进行技术判断后,把相应的计算结果送到LED显示电路显示,并进行声光报警。
2.3.1 超声波倒车雷达的工作原理
声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射;反射波称为回声。假如声波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测量得到,从声波到目标的距离就可以精确地计算出来。这就是本系统的测量原理。
11
超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差T,然后求出距离S=VT/2,式中的V为超声波波速。由于超声波也是一种声波,其声速C与温度有关,在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的机理。图2-5即为超声波测距的具体流程图。
定时器调制器控制计时器显示器图2-5 超声波测距流程图
振荡器电声换能器接收检测器声电换能器
倒车雷达只需要在汽车倒车时工作,为驾驶员提供汽车后方的信息。由于倒车时汽车的行驶速度较慢,和声速相比可以认为汽车是静止的,因此在系统中可以忽略多普勒效应的影响。在许多测距方法中,脉冲测距法只需要测量超声波在测量点与目标间的往返时间,实现简单,因此本系统采用了这种方法。
2.3.2系统原理框图
如图2-6所示,驾驶员将手柄转到倒车档后,系统自动启动,超声波发送模块向后发射40kHz的超声波信号,经障碍物反射,由超声波接收模块收集,进行放大和比较,单片机STC89C51RC将此信号送入显示模块,同时触发语音电路,发出同步语音提示,当与障碍物距离小于1m、大于0.27m时,发出不同的报警声,提醒驾驶员停车。系统的工作原理框图如图2-6所示:
超声波发送模块驱动电路倒车档STC89C51RC显示模块
超声波接收模块放大比较语音电路 图2-6 系统工作原理框图
12
2.4本章小结
本章主要学习了单片机的发展及其应用,超声波研究发展及其测距工作原理,超声波倒车雷达系统工作原理,包括国内外超声波研究历史及发展现状,超声波测距的基本原理,利用超声波测距的实现,超声波倒车雷达的工作原理,并完成了系统工作原理基本框图。基本熟悉了超声波倒车雷达所涉及的理论知识,为后面的设计打下了一定基础。
13
3 系统硬件设计
3.1 单片机系统及显示电路
3.1.1 单片机控制芯片选择
在系统的设计中,选择合适的系统核心器件就成为能否成功完成设计任务的关键,而作为控制系统核心的单片机的选择更是重中之重。目前各半导体公司、电气商都向市场上推出了形形色色的单片机,并提供了良好的开发环境。一般来说,选择单片机需要考虑以下几个方面:
(1)单片机的基本性能参数。例如指令执行速度、程序存储器容量、I/O引脚数量等。
(2)单片机的存储介质。对于程序存储器来说,Flash存储器和OTP(一次性可编程)存储器相比较,最好是Flash存储器。
(3)芯片的封装形式。如DIP(双列直插)封装,PLCC(PLCC有对应插座)封装及表面贴附等。
(4)芯片的功耗。比如设计并口加密狗时,信号线取电只能提供几毫安的电流,选用STC单片机就是因为它能满足低功耗的要求。
(5)供货渠道是否畅通、价格是否低廉。 (6)芯片保密性能好、单片机的抗干扰性能好。
综合考虑以上因素,选择STC89C55作为本系统的控制部件。
STC89C51RC是采用8051核的ISP(In System Programming)的系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C51RC系列单片机是单时钟/机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
14
D单片机STC89C51RC的管脚图如图3-1所示: 12345678131215143119189171620U2P10P11P12P13P14P15P16P17INT1/P33INT0/P32T1/P35T0/P34EA/VPX1X2RESETVCCP00P01P02P03P04P05P06P07P27P26P25P24P23P22P21P20RXDTXD403938373635343332282726252423222110113029CRDWR/P36ALE/PGNDPSENSTC89C51RC 图3-1 单片机STC89C51RC管脚图 特点: (1)增强型1T 流水线/精简指令集结构8051 CPU。 (2)工作电压:3.4V-5.5V (5V单片机)/ 2.0V-3.8V (3V 单片机)。 (3)工作频率范围:0 -35 MHz,相当于普通8051 的0~420MHz.实际工作频率可达48MHz。 (4)用户应用程序空间12K / 10K / 8K / 6K / 4K / 2K字节。 (5)片上集成512 字节RAM。 B(6)通用I/O 口(27/23个),复位后为:准双向口/ 弱上拉(普通8051 传统I/O 口),可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/高阻,每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过55mA。 (7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器。可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成。 (8)EEPROM 功能。 (9)看门狗。 (10)内部集成MAX810 专用复位电路(外部晶体20M 以下时,可省外部复位电路)。 (11)时钟源:外部高精度晶体/ 时钟,内部R/C 振荡器。用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟。常温下内部R/C 振荡器频率为:A5.2MHz ~6.8MHz。精度要求不高时,可选择使用内部时钟,因为有温漂,请选4MHz ~NumberTitleSizeB Revision15 Date:File:4-Jun-2013 Sheet of C:\\PROGRAM FILES\\DESIGN EXPLORER 9Drawn 9 SE\\EXAMPLES\\By:最终原~111.DDB6
8MHz。
(12)有2个16 位定时器/ 计数器。
(13)外部中断2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒。
(14)PWM( 4 路)/ P C A(可编程计数器阵列),也可用来再实现4个定时器或4个外部中断(上升沿中断/ 下降沿中断均可支持) 。
(15)STC89Cc516AD具有ADC功能。10 位精度ADC,共8 路。 (16)通用异步串行口(UART) 。 (17)SPI同步通信口,主模式/ 从模式。 (18)工作温度范围:0 -75℃/ -40 -+85℃。
(19)封装:PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封装)。 它的超低功耗性能表现在:
(1)掉电模式:典型功耗<0.1uA,可由外部中断唤醒,中断返回后,继续执行原程序。
(2)空闲模式:典型功耗2mA。
(3)正常工作模式:典型功耗4mA—7mA。
(4)掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。
3.1.2 单片机系统及其外围电路
复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,即可使单片机复位。除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。在系统中,为了实现上述的两项功能,采用常用的按键电平复位电路,本设计复位电路由一个按键、一个10uF电容、一个10k电阻组成,接到单片机的RESET管脚,如图3-2所示。
时钟电路是用于产生单片机工作时所必需的时钟信号。时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。单片机采用STC89C51RC系列。采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。本设计振荡电路由两个30pF电容和一个12MHZ的晶振组成时钟电路,接到单片机的XTAL1和XTAL2管脚。单片机用P1.0 端口输出超声波转化器所需的40KHz方波信号,利用外中断0 口检测超声波接受电路输出的返回信号。利用P0口输出控制四位
16
共阳极数码管的段选,用P2.0到P2.3的输出控制四位数码管的位选。通过P1.1端口输出控制蜂鸣器报警。 单片机系统及其外围电路如图3-2所示: P101P11234567813P3212C710ufC3RST30PFY112MC4VCC15143119189171620U2P10P11P12P13P14P15P16P17INT1/P33INT0/P32T1/P35T0/P34EA/VPX1X2RESETVCCP00P01P02P03P04P05P06P07P27P26P25P24P23P22P21P20RXDTXD403938373635343332282726252423222110113029VCCS5复位电路R1310kRST30PFRDWR/P36ALE/PGNDPSENSTC89C51RC振荡电路图3-2 单片机系统及其外围电路 主电路 3.1.3 显示电路 超声波测距仪显示模块电路如图3-3所示。通过单片机的21、22、23、24四个管脚的信号控制四个三极管的B极,利用三极管的开关特性,实现数码管的点亮,从而实现动态显示。采用LED 动态显示,数据经过芯片的计算后传到LED上,显示精度是厘米。 单片机STC89C51RC采用12MHz高精度的晶振,以获得较稳定的时钟频率,减少测量误差。单片机用P1.0端口输出超声波换能器所需的40KHz方波信号,利用外中断0口检测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,用于显示车尾障碍物的距离,由单片机P0.0—P0.6接LED的a~g七个笔段,单片机的P0.7口接LED的dp段,P2.0~P2.3接四个8550三极管的公共端,通过软件以动态34 扫描方式显示。段码用74LS04驱动,位码用PNP三极管8550驱动。 17
显示部分电路如图3-3所示: P00P01P02P03P04P05P063303P07810330R4R5R6R7R8R9R10R113303303303303301112345678131215143119189171620U2P10P11P12P13P14P15P16P17INT1/P33INT0/P32T1/P35T0/P34EA/VPX1X2RESETJ1VCCP00P01P02P03P04P05P06P07P27P26P25P24P23P22P21P20RXDTXD403938373635343332282726252423222110113029VCCP00P01P02P03P04P05P06P07VCCP00P01P02P03P04P05P06P0712345678912269330fgbDS1SMG_4com4com3com2edcdp145com1Q48550R173kVCC排阻P23P22P21P204.7KQ18550R143kQ28550R153kQ38550R163kRDWR/P36ALE/PGNDPSENSTC89C51RCP23P22P21主电路显示部分图3-3 显示电路 P207gdpacbdeaf 3.2 超声波发射电路 发射电路通常分为调谐式和非调谐式。在调谐式电路中有调谐线圈(有时装在探头内),谐振频率由调谐电路的电感、电容决定,发射的超声脉冲频带较窄。在非调谐式电路中没有调谐元件,发射出的超声频率主要由压电晶片的固定参数决定,频带较宽。将一定频率、隔度的交流电压加到发射传感器的固有频率40KHz,使其工作在谐振频率,达到最优的特性。发射电压从理论上说是越高越好,因为对同一支发射传感器而言,电45压越高,发射的超声功率就越大,这样能够在接受传感器上接受的回波功率就比较大,对于接受电路的设计就相对简单一些。但是每一支实际的发生传感器有其工作电压的极限值,同时发射电路中的阻尼电阻决定了电路的阻尼情况。通常采用改变阻尼电阻的方法来改变发射强度。
发射部件的点脉冲电压很高,但是由于障碍物回波引起的压电晶片产生的射频电压不过几十毫伏,要对这样小的信号进行处理就必须放大到一定的幅度。接收部分就是由两级放大电路,检波电路及锁相环构成,其中包括杂波抑制电路。最终达到对回波进行
18
6
放大检测,产生一个单片机(STC89C51RC)能够识别的中断信号作为回波到达的标志。
超声波发射电路原理图如下图所示。
图3-4 超声波发射电路原理图
发射电路主要由反向器74LS04和超声波发射换能器T构成,单片机P1. 0端口输出的40 kHz方渡信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后进到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力。上拉电阻R10、R11,一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。
超声传感器是一种将其他形式的能转变为所需频率的超声能或是把超声能转变为同频率的其他形式的能的器件。目前常用的超声传感器有两大类,即电声型与流体动力型。电声型主要有:压电传感器、磁致伸缩传感器、静电传感器。流体动力性中包括有气体与液体两种类型的哨笛。由于工作频率与应用目的不同,超声传感器的结构形式是多种多样的,并且名称也有不同,例如在超声检测和诊断中习惯上都把超声传感器称作探头,而工业中采用的流体动力型传感器称为“哨”或“笛”。
压电超声波转换器的功能:利用压电晶体谐振工作。它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。超声波发射转换器与接受转换器其结构稍有不同。
19
发射部分电路硬件接线图如图3-5所示: VCCC10104U3C1234567141312111098VCCP10CCAAR211KTransmitT_40KHZCAA1AAR201K2T_40_1674LS04发射部分图3-5 发射部分电路硬件连接图 3.3超声波检测接受电路 电路采用集成电路CX20106A。这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38kHz 与测距超声波频率40kHz 较为接近,可以利用它作为超声波检测电路。实验证明,其具有很高的灵敏度和较强的抗干扰能力。适当改变C1 的大小,可改变接收电路的灵敏度和抗干扰能力。R1 和C5 控制CX20106A内部的放大增益,R2 控制带通滤波器的中心频率。一般取R1=4.7 Ω,C5=3.3μF。其余元件按图3-5取值。超声波接收头,当收到超声波时产生一个下降沿,接到单片机的外部中断INT0上。当超声波接收头接收到40kHz方波信号时,将会将此信号通过CX20106A驱动放大送入单片机的外部中断0口。单片机在得到外部中断0的中断请求后,会转入外部中断0 的中断服务程序进行处理,在移动机器人的避障工作中,可以在中断服务程序设定需要单片机处理的最短距离,比如1.0m。对于距离大于1.0m的障碍物,可以不做处理直接跳出中断服务程序;对于距离小于或等于1.0m.又做另外一种处理等。 23使用 CX20106A 作为超声波接收处理的典型电路。当 CX20106A 接收到40KHz的信号时,会在第7脚产生一个低电平下降脉冲,这个信号可以接到单片机的外部中断引脚作为中断信号输入。
使用CX20106A集成电路对接收探头受到的信号进行放大、滤波。其总放大增益
20
80db。以下是CX20106A的引脚注释:
1脚:超声信号输入端,该脚的输入阻抗约为40kΩ。
2脚:该脚与地之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。增大电阻R1或减小C1,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C1的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R1=4.7Ω,C1=3.3μF。
3脚:该脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3μf。
4脚:接地端。 235脚:该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。例如,取R=200kΩ时,f0≈42kHz,若取R=220kΩ,则中心频率f0≈38kHz。 6脚:该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。 7脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为10kΩ,没有接受信号是该端输出为高电平,有信号时则产生下降。 8脚:电源正极,4.5~5V。 接收部分电路如图3-6所示: 接收部分U1CX20106A12345678ReciveR_40KHZVCC12473P32C14.7220kR_40_16R1R2C210kC11104R3330PF3.3ufC53.3ufC6 图3-6 超声波接收部分电路图 21 43.4语音部分原理图 蜂鸣器与家用电器上的喇叭在用法上也有相似的地方,通常工作电流比较大,工作时电路上通过的电流基本上驱动不了蜂鸣器,需要增加一个电流放大的电路才可以,即由于一个管脚很难驱动蜂鸣器发出声音,所以增加了一个三极管来增加通过蜂鸣器的电流。 通过将蜂鸣器连接到三极管的集电极,一旦有被检测物体进入,单片机P1.1口为0,三极管导通,这样蜂鸣器的电流形成回路,发出声音。实现报警。当P1.1管脚为高时,三极管截至,蜂鸣器不发出声音。报警电路如下如图3-7所示: VCCQ5Bell85504.7KR22P11蜂鸣器报警部分FMQ图3-7 蜂鸣器报警电路原理图 3.5 电源电路 在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一的能量来源,稳压电源的主要任务是将50Hz 的电网电压转换成稳定的直流电压和电流,从而满足负载的需要,直流稳压电源一般由整流、滤波、稳压等环节组成。由于本设计实际要求电源电压较低,在实际操作中用五号电池+电池盒模式代替。同时,为了显示外接电源给实训板提供了电源,在系统中增加了电源指示灯电路,由于发光二极管工作在正常工作状态时,流过LED的电流只需要5~10mA左右就行,在电路中采用红色高亮LED,所以可以取5mA左右的电流值,通过计算,可知:连接LED的限流电阻的阻值可以采用1kΩ。电路如图3-8所示: 22 Z1DY_5V电源部分R191KC8C9104D1LED220UF 图3-8 电源电路 3.6本章小结 本章主要完成了系统的硬件电路设计,包括单片机系统,单片机外围电路及显示电路,超声波发射电路,超声波检测接受电路,语音部分原理图及应用外接功放电路图,电源电路等。这期间遇到了许多问题,最后通过网络以及参考各方面书籍,完成了各电路的设计,完成了本设计中的系统硬件设计部分。 23
4 系统软件设计
超声波测距器的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序、显示子程序及语音控制程序组成。我们知道C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序运行的时间,而超声波测距器的程序既有较复杂的计算(计算距离时),又要求精确计算程序运行时间(超声波测距时),本设计在计算部分比较复杂,所以控制程序采用C语言编程。软件设计的总体结构框图如图4-1:
系统各功能模块系统初始化程序数码管显示模块按键扫描模块发射接收控制模块运算结果处理模块声光报警模块 图4-1 系统模块框图
(1) 系统初始化模块:即系统刚上电的时候对系统的各个引脚的电平分配和对各寄存器的初值赋值。
(2) 数码管显示模块:通过该模块的设计能够让所测得的距离显示在数码管上。 (3) 按键扫描模块:此模块用来通过键盘控制倒车雷达的工作。
(4) 发射接收控制模块:发射控制模块是软件控制超声波发射电路发射超声脉冲启动定时器工作,同时启动接收电路工作,当接收电路有信号输入时,对输入信号进行处理。
(5) 运算结果处理模块:运算结果处理模块将多次所测得时间进行处理,进行软件取大值工作,根据公式计算出距离,然后再对计算得出的结果进行修正处理,数据处理后送至数码显示模块。
(6) 声光报警模块:当所测距离小于一定值时,通过声光报警来挺行驾驶员。
24
4.1超声波测距仪的算法设计
下图示意了超声波测距的原理
图4-2 测距的原理
即超声波发生器T在某一时刻发出一个超声渡信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。
距离的计算公式为:
d=s/2=(c×t)/2 (4-1)
其中d为被测物与测距器的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。
距离计算程序如下: void calculation() { }
25
distance*=172; distance/=10000; buf[0]=distance/1000;
//高位
buf[1]=distance%1000/100; buf[2]=distance%100/10; buf[3]=distance%10; //低位 if(buf[0]==0)buf[0]=11;
if((buf[0]==11)&&(buf[1]==0))buf[1]=11; //控制 不需要显示的数据 0 if((buf[1]==11)&&(buf[2]==0))buf[2]=11;
4.2 主程序设计
主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清零。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声渡从发射器直接传送到接收器引起的直射波触发,需要延时约0. l ms(这也就是超声波测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12MHz的晶振,计数器每计一个数就是1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(4-2)计算,即可得被测物体与测距器之间的距离,设计时取20℃时的声速为344m/s(不同温度下超声波产波速率不同)则有:
D=(c×t)/2=172TO/10 000 cm (4-2)
其中TO为计数器T0的计数值。
测出距离后结果将以十进制BCD码方式送往LED显示约0.5 s,然后再发超声波脉冲重复测量过程。为了有利于程序结构化和容易计算出距离,主程序采用c语言编写。下图为主程序流程图。
开始单片机初始化定时中断子程序Flag=1?Y外部中断子程序计算距离并输出显示报警子程序 图4-3 主程序流程图
N测量失败26
主程序如下: void main() {
P0=0xff; P1=0xff; P2=0xff; P3=0xff;
TMOD=0x11;//time0/time1都工作方式1
flag = 0;
IT0 = 1;//负跳变触发外中断0
TH0 = 0;TL0 = 0;//定时器0,清0,用于计时 TH1 = 0;TL1 = 0;//定时器1,清0 counter=0;
PX0 = 1;//外中断0优先 ET1 = 1;//允许定时器1中断 EA = 1;//开总中断
TR1 = 1;//启动定时器1,测距 while(1) {
if(flag == 1)//说明成功接收 {
uchar i; EA = 0; calculation();
if(distance<=100)//当距离小于 100cm 时蜂鸣器响 { } else {
p1_1=1;
27
p1_1=0;
}
}
}
for(i = 0;i < 100;i++)//控制显示 { }
flag = 0;//清除接收成功标志
TR1 = 1;//启动定时器T1,开启测距定时器 EA = 1;
scan();
else //如果测量失败,显示 .... {
p1_1=0;//测量失败蜂鸣器响 buf[0] = 10; buf[1] = 10; buf[2] = 10; buf[3] = 10; scan();
}
}
4.3超声波发生子程序和超声波接收中断程序设计
4.3.1 超声波发生子程序设计
超声波的产生是由定时器1完成的,要求产生的超声波频率为40kHz,因此,一个脉冲周期即为25us,可得:所需单个脉冲宽度为12us左右,超声波发生子程序的作用是通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),同时把计数器T0打开进行计时,通过所记时间计算距离。超声波发生子程序较简单,但要求程序运行时间准确。
28
流程图如下图4-4所示:
定时中断入口定时器初始化发射超声波2周期均发射完否?Y停止发射返回N
图4-4 定时中断服务子程序流程图
定时器中断子程序发送测距超声波,函数如下: void time1_interrupt() interrupt 3 {
EA = 0;//关总中断,防止发送超声波时被干扰
TR0 = 0;//关定时器0
EX0 = 0;//关外中断
TH0 = 0;TL0 = 0;//定时器0,清0,用于计时 TH1 = 0;TL1 = 0;//重装初值,中断一次65.536ms EA = 1;//开总中断
TR0 = 1;//开定时器0,计时 for(counter = 0;counter < 4;counter++) {
p1_0 = ~p1_0;//取反输出驱动脉冲,频率为 40KHZ _nop_(); _nop_(); _nop_();
_nop_();
_nop_();
29
_nop_();
_nop_();
_nop_(); _nop_();
// _nop_(); // _nop_(); // _nop_(); }
counter = 0;
delay();//延时,避开发射的直达声波信号 EX0 = 1;//开外中断0,用于接收超声波
}
4.3.2 外部中断子程序设计
超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。 外部中断服务子程序流程图如下图所示:
外部中断入口关外部中断读取时间值输出时间值Flag置1返回 图4-5 外部中断服务子程序
30
外部中断0用来检测是否接收到了超声波,并存储时间,中断函数如下: void external_interrupt0()interrupt 0 { }
TR0 = 0; EA = 0; EX0 = 0; distance = TH0;
distance = (distance<<8)|TL0; TH0 = 0;TL0 = 0;//定时器0 ,清0 flag = 1;//接收到超声波标记置1
4.4 倒车距离显示及语音报警控制程序设计
4.4.1 显示报警子程序设计
显示报警设备是用单片机控制脉冲,通过单片机内部程序进行举例计算,由LED进行距离显示,并在一定的距离内让蜂鸣器接通,来作为报警信号,提示具体位置。显示报警子程序如图4-6所示:
显示报警子程序NFlag=1?Y取测量值显示....LED显示子程序Y蜂鸣器报警距离小于1m?N返回 图4-6 显示报警子程序框图
31
显示报警子程序函数如下: while(1)
{
if(flag == 1)//说明成功接收 { }
else //如果测量失败,显示 .... {
p1_1=0;//测量失败蜂鸣器响 buf[0] = 10; buf[1] = 10; buf[2] = 10; buf[3] = 10;
32
uchar i; EA = 0; calculation();
if(distance<=100)//当距离小于 100cm 时蜂鸣器响 { } else { }
for(i = 0;i < 100;i++)//控制显示 { }
flag = 0;//清除接收成功标志
TR1 = 1;//启动定时器T1,开启测距定时器 EA = 1;
scan(); p1_1=1; p1_1=0;
}
}
}
scan();
4.4.2 LED显示子程序设计
显示部分要求先进行动态显示初始化将指针指向缓冲区首地址,然后去显示位指针,取要显示的数,再将数变成段码,然后将段码送段控制器,位码送位控制器,在延时,然后判断是否是最后一位,是否显示完毕,没有的话修改该缓冲区指针和位码,直到显示完毕。LED显示子程序流程图如图4-7所示:
LED显示子程序开位选查表送段码位选左移一位修正段码指针N显示完毕?Y返回 图4-7 显示子程序框图
通过数码管逐位扫描完成距离显示,显示部分子程序如下:
void scan()//扫描从低往高位即先个后十位........以此类推 { }
33
led = display[buf[3]];p2_0=0;Delay_ms(2);p2_0=1; led = display[buf[2]];p2_1=0;Delay_ms(2);p2_1=1; led = display[buf[1]];p2_2=0;Delay_ms(2);p2_2=1; led = display[buf[0]];p2_3=0;Delay_ms(2);p2_3=1;
4.5 本章小结
本章主要完成了各个环节的流程图及程序设计,主要包括超声波测距仪的算法设计,主程序设计,超声波发生子程序和超声波接收中断程序设计,以及倒车语音及报警控制程序设计。通过在KEIL环境下多次执行及修正,以及向多名同学和老师的请教,最终很好的完成了设计目的。
34
5 安装调试及分析
5.1 硬件部分
一个系统要良好运行,就需每一个模块或每一个部分都要调试正确。它可以进行单独调试,将程序下载入STC89C51RC芯片,将所测距离显示在数码管上。采用数码管显示的是障碍物到超声波探头的距离.可以很直观地显示出距离的大小.与实际调试时完全相符,效果良好,直观且精确,符合标准。
超声波测距仪的制作和调试,其中超声波发射和接收采用Φ15 的超声波换能器TCT40-10F1(T 发射)和TCT40-10S1(R 接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距4~8cm,其余元件无特殊要求。若将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C4 的大小,以获得合适的接收灵敏度和抗干扰能力。
如果这个板不管前面有无遮挡物总是显示27,这是因为标有T字样的超声波接收头没有收到正确的回波信息导致工作异常引起的,我们发现接收头比较娇嫩,轻微的磕碰就会导致内部器件错位影响正常工作,但是只要稍稍旋转或者上下拨动一下接收头,很多情况就会排除故障又能正常工作了。最小检测距离为27厘米,是为了防止超声波发射传感器发出超声波沿电路板或者外壳直接进入超声波接收传感器内引起误判断,所以程序要求超声波发射若干时间后必须停止若干时间,这个时间大约是超声波在空气中传播20多厘米的时间,这段时间内是不接受信号的,主要就是为了躲开直接传导的信号避免引起误判断。
本测距仪理论上最小测量距离为27 cm ,测量误差为 1cm ,最大测量距离 250cm 左右,但在实际操作中受各种外界条件及因素的影响很难达到该最大测量距离。(测试时尽量选择平坦的阻挡超声波致其反射的物体,测量中如遇系统假死机现象可按复位按钮激活)。
硬件完成部分主要是将所设计电路中各个模块分别进行连接,在焊接过程中一定要时刻注意虚焊等问题的发生。并在各个模块完成后用数字万用表测量各引脚之间是否连接正常。
汽车倒车雷达硬件实物如下图 5-1 所示:
35
图5-1(a) 汽车雷达实物图
图5-1(b) 汽车雷达实物图
5.2 软件实现与操作
系统软件的整体结构各模块在前面已介绍。先在KEIL下编完程序,然后编译好通过后,生成目标文件十二和十六进制,烧录到STC89C51RC片子中时,先下载监控程序加上我们编译好的十六进制程序,再写入芯片中即可调试,通过不断修改完善,最终很好地实现了我们的目标。
根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔
36
时间,以适应不同距离的测量需要。根据所设计的电路参数和程序,测距仪能测的范围为27cm-100cm,测距仪最大误差不超过3cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。
5.3 整机调试
(1)连接好各硬件电路。
(2)将各个模块的功能进行程序编写,使其能够按照需要的功能进行运行,并将其下载到 STC89C51RC 芯片中观察其功能。
(3)再进行整体程序的编写,将程序进行模块程序的移植和调用。使其能够完整的实现其所需的功能。
(4)在下载程序调试的过程中,由于显示距离的变量定义不正确,导致无法正常的显示其距离。通过调整之后能在 LED 中正常的显示其距离。
5.4 记录并分析实验结果
对测量结果和误差进行分析:对于超声波测距主要是根据超声波在空气中的传播速度和时间决定,超声波在空气中传播的速度受到磁场、温度和风速的影响。但起决定性作用的是风速和气温。在测量的过程中可以忽略磁场和风速的影响,其测量误差主要是由以下一些原因造成:
(1) 温度:在测量过程中,由于对温度的测量也存在着一定的误差,对实验结果也造成一定的误差。
(2)测量工具:超声波在空气中的传播是以平面度方式进行传播的,由于测量卷尺、超声波传感器的垂直位置、人眼的观测角度等都会对实验结果造成一定的误差。因此在试验过程中要注意测量的方式和结果的读取。
(3)干扰:超声波的发射波形是一种 40KHZ 的方波,但实验过程中用我们采用的是约为40KHZ的波形,在空气可能受到一些近似波形的干扰对试验的结果造成误差。因此可以在试验过程中对方波进行载波调制,接受时候在接收端对其进行解调,可以提高测距的精确度。
在本设计中,对汽车倒车的安全距离设定为 100cm,当汽车与障碍物的距离小于100cm 是就会发出警报,因此可以对上述一些除温度外的误差忽略不计,总的来说本设计是成功的,基本实现了所需要的功能。
37
5.5本章小结
本章主要完成了倒车雷达的硬件安装与焊接,调试及分析,包括硬件部分的完成,软件烧入与调试。最初出现了许多问题,例如数码管显示很不稳定,最后发现大都属于焊接问题,经过多次调试,最终基本实现了所要求的功能。
38
6 测距仪改进的设想
6.1对倒车雷达的测距改进的设想
电路板上包括超声波收发传感器、接收放大电路、四位LED数码显示、一位按键(一个按钮和蜂鸣器属于功能预留,程序中无定义),电路板上可以添加四个按钮,这是为后续开发应用所预留的,我们可以在程序中定义为开关功能,按下一个按键,电路板开始测距、按下另一个按键电路板停止测距,或者定义为多档距离报警设定,当检测到低于设定距离时,驱动蜂鸣器以不同的声音频率报警。其电源部分自带整流、滤波、稳压电路,允许交流7~15V或者直流9~16V输入。其实我们的电路板也可以再加以改进,例如用1602的液晶模块代替数码管显示、增加语音电路实现语音播报探测距离,温度控制等等。
由于超声波的传播速度V受到空气中的温度、湿度、压强等因素的影响,其中温度的影响最为突出,温度每升高1℃,速度增加约0.6m/s。因此在测量精度要求很高的场合,应通过温度补偿对超声波的传播速度进行校正,以提高测量精度,减小误差。不同温度下超声波声速表如表6-1所示:
表6-1 不同温度下超声波声速表
目前,大多数温度测控系统在检测温度时,都采用温度传感器将温度转化为电量,经信号放大电路放大到适当的范围,再由A/D转换器转换成数字量来完成。这种电路结构复杂,调试繁杂,精度易受元器件参数的影响。为此,利用一线性数字温度计即集成温度传感器DS18B20和单片机,构成一个高精度的数字温度检测系统。DS18B20数字式温度传感器与传统的热敏电阻温度传感器不同,能够直接读出被测温度值,并且可根据实际要求,通过简单的编程,实现9~12位的A/D转换。因而,使用DS18B20可使系统结构更简单,同时可靠性更高。因此如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。
今后我们可以加上采用温度传感器将温度转化为电量,经信号放大电路放大到适当
39
的范围,再由A/D转换器转换成数字量来完成,进行结果补偿,构成一个高精度的数字温度检测系统。可以将这一设计用于其它精度要求较高的应用,这正好符合我们把学习举一反三的宗旨,这一方面是我们改进的主要方向。
6.2 本章小结
本章主要对已完成的倒车雷达设计进行改进了一些设想。主要包括语音播报探测距离,或者定义为多档距离报警设定,当检测到低于设定距离时,驱动蜂鸣器以不同的声音频率报警,用1602的液晶模块代替数码管显示,以及温度控制减小测量误差等。通过改进进一步的完善设计的功能及性能。
40
心得体会与总结
此次毕业设计的课题为基于单片机的汽车倒车雷达的设计与实现控制系统的开发,这个课题是专业知识(单片机的应用)和实际很好的一次结合。由于学习中这一块的知识接触的比较少,所以做起来难度较大,对我们来说是一个很大的挑战。
为了完成毕业任务,我们一组的同学在一起共同的学习讨论,遇到比较棘手的问题往往求助我们的指导老师,为了克服困难,专门在图书馆查找相关书籍,在互联网上查资料,我们在这样的条件下进行着。
虽然时间比较紧迫,任务量比较大,但是我们还是认真的完成了学校布置的任务,看到自己的毕业的作品心理还是很高兴,尽管有些地方是现成的模板,有些地方我们还没有完全的吸收掉,但总体上还是很不错的,已经达到了我们的预期目的。第一,使我们基本掌握了一项电子设计方面的技能,巩固了我们所学的专业知识,培养了我们的创新素质和钻研精神。第二,很好的培养了我们综合应用相关专业知识的能力。为我们能够进一步精通和掌握相关专业课程的知识并能够举一反三,学会全方位、更有深度的知识的能力打下了坚实的基础。第三,通过基本完成软硬件设计、电路安装、调试等完整环节,形成电子整机。虽然在制作过程中,我们大家都尽心尽力,团结一致克服困难,但在硬件调试时遇到了不少的阻力。显示部分不稳定的问题始终找不出原因。但在老师和同学的帮助下通过使用现有的单片机应用板,将自己的程序下载进去,不断校改,多次调试后基本得到了想要的结果, 从而完成了毕业设计的项目要求。经过自己亲手的实践过程,使我学到了许多课本里学不到的东西,积累了一定的经验和教训,可以说是受益匪浅,对自己将来走向工作岗位能够更快、更好地投入到工作当中起到了不可磨灭的作用。
41
致谢
经过半学期的努力,我顺利的完成了这次毕业设计。从总体上来说,我对自己的成果还是比较满意的。这段时间我翻阅了许多的书籍,搜集了许多资料,从对倒车雷达测距系统的生疏,到了解,再到深入研究,第一次完成了一件实际应用的设计。不过由于本人经历、阅历、实际操作能力有限。难免存在一些不近人意的地方,还请老师批评指正。
在做本设计过程中,曾得到封老师和不少同学的大力支持,并提供了大量的资料和有益的建议,对此,表示衷心的感谢。
42
参考文献
[1] 刘守义主编.单片机应用技术.西安电子科技大学出版社,2002
[2] 童诗白,华成英.模拟电子技术基础[M],第三版.北京:高等教育出版,2001.1 [3] 姜威.实用电子系统设计基础.北京理工大学出版社,2002.10 [4] 杨凌霄.微型计算机原理及应用.中国矿业大学出版社,2004.05 [5] 沈小丰.电子技术实践基础.清华大学出版社,2005
[6] 徐国华.超声波测距系统的设计与实现电子技术应用. 中国电力出版社,l995 [7] 秦宣云 何永强.基于超声波测距系统的温度补偿田胜军. 中国电力出版社,2007 [8] 苏长赞.红外线与超声波遥控.人民邮电出版社,1993.7.
[9] 张谦琳.超声波检测原理和方法.北京:中国科技大学出版社,1993.10. [10] 丁义元.高精度测距雷达研究.电子测量与仪器学报,2000.10 [11] 张洪润,蓝清华.单片机应用技术教程. 清华大学出版社,1997 [12] 陈丽芳.单片机原理与控制技术.东南大学出版社,2003 [13] 余发山.单片机原理及应用技术.中国矿业大学出版社,2003.12. [14] 冯诺.超声手册.南京大学出版社,2002
[15] 肖质红.超声波测距仪在汽车安全系统中的应用.万里学院学报出版,2007 [16] 李勇.车载单片机与车载网络技术.电子工业出版社,2011
[17] 王懿川.基于单片机控制的超声波测距报警系统.上海计量测试,2011年第5期 [18] 陈明计.单片机应用设计基础.第一版.北京航空航天大学出版社, 2011 [19] 胡佳文.51系列单片机原理及设计实例.北京航空航天大学出版社,2010 [20] 周润景.单片机设计分析与制作.机械工业出版社,2010
[21] 陈涛.单片机应用及C51程序设计.第二版. 机械工业出版社, 2010 [22] 龚运新.单片机接口C语言开发技术.第一版.清华大学出版社,2009
[23] 徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,1999. 6.
[24] 胜全.D18B20数字温度计在微机温度采集系统中的序编制,南京:南京大学出版社,1998. 3.
[25] 张靖.加强单片机系统抗干扰能力的方法.通化师范学院学报,2004 .10. [26] 袁慧梅.单片机系统的印制板设计与抗干扰技术.电子工艺技术,2004 .6. [27] 刘霞.单片机系统软件抗干扰措施分析.电子测量技术,2003.
43
123456DD接收部分Z1DY_5VVCCQ5P11Bell8550P00P01P02P03P04P05P06P07U1CX20106A4.7KR22电源部分ReciveP32R2C2R3220UF104FMQ33033033033033033010k220k12345678VCCR191KC11104C8C9R_40KHZ12330PFR4R5R6R7R8R9330C1473R_40_16R1蜂鸣器报警部分R10R11330CD1LED4.7C3.3uf26911123edfJ1aabccom4com3com2CS5R211KC7TransmitC3RSTVCC311918EA/VPX1X2RESETRDWR/P36ALE/PGNDPSENSTC89C51RC30299171620P23P22P21P201AA2T_40_16RSTR201K30PFT1/P35T0/P34151410ufINT1/P33INT0/P3213P32124.7KP10CCAAP101P112345678fgbedcdpU2P10P11P12P13P14P15P16P17VCCP00P01P02P03P04P05P06P071com145附录A
P23P22P21发射部分振荡电路主电路显示部分ATitleP2044
141312111098CAA1234567排阻Q18550R143kQ28550R153kQ38550R163kQ48550R173kVCCT_40KHZ74LS04复位电路R1310k30PFY112MC4B7
VCCC10104VCCVCCgdp810C53.3ufC6DS1SMG_4U3
403938373635343332123456789VCCP00P01P02P03P04P05P06P07VCCP00P01P02P03P04P05P06P07P27P26P25P24P23P22P21P20RXDTXD28272625242322211011BASizeBDate:File:345NumberRevision4-Jun-2013 Sheet of C:\\PROGRAM FILES\\DESIGN EXPLORER D99ra wSEn\\ EBXyA:MPLES\\BACKUP~114.DDB612
附录B
//定时器1,用来产生超声波
//定时器0,用来计时(即:发出超声波至接收到超声波时差) //外部中断int0,用来检测接收到了超声波,并存储时间 //数码管: 高----低 p2_3----p2_0 #include typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit p1_0 = P1^0;//产生超声波 sbit p1_1 = P1^1;//蜂鸣器控制端 sbit p2_0 = P2^0;//低位 sbit p2_1 = P2^1; sbit p2_2 = P2^2; sbit p2_3 = P2^3;//高位 bit flag ;//是否接收到了超声波,标记 uchar counter;//超声波脉冲个数 uchar code display[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0xff};//0-------9---.---灭 uchar buf[]={0,0,0,0};//数码管需要显示的数字缓存,高------低 ulong distance;//时间缓存,即时差 //=========================================== 延时函数 ============================================ void delay() { uchar i; 45 } for(i = 0;i< 250;i++) { } _nop_();_nop_();_nop_(); /********以下是延时函数********/ void Delay_ms(uint xms) //延时程序,xms是形式参数 { } //=========================================== 数码管扫描显示函数 ================================== void scan()//扫描从低往高位即先个后十位........以此类推 { } //============================================= 计算距离函数 ======================================= void calculation() { distance*=172; distance/=10000; buf[0]=distance/1000; //高位 46 uint i, j; for(i=xms;i>0;i--) for(j=115;j>0;j--); //此处分号不可少 led = display[buf[3]];p2_0=0;Delay_ms(2);p2_0=1; led = display[buf[2]];p2_1=0;Delay_ms(2);p2_1=1; led = display[buf[1]];p2_2=0;Delay_ms(2);p2_2=1; led = display[buf[0]];p2_3=0;Delay_ms(2);p2_3=1; buf[1]=distance%1000/100; buf[2]=distance%100/10; buf[3]=distance%10; //低位 //============================================================================ if(buf[0]==0)buf[0]=11; if((buf[0]==11)&&(buf[1]==0))buf[1]=11; //控制 不需要显示的数据 0 if((buf[1]==11)&&(buf[2]==0))buf[2]=11; //============================================================================ } //=================================== 主函数 ==================================================== void main() { P0=0xff; P1=0xff; P2=0xff; P3=0xff; TMOD=0x11;//time0/time1都工作方式1 flag = 0; IT0 = 1;//负跳变触发外中断0 TH0 = 0;TL0 = 0;//定时器0,清0,用于计时 TH1 = 0;TL1 = 0;//定时器1,清0 counter=0; PX0 = 1;//外中断0优先 ET1 = 1;//允许定时器1中断 EA = 1;//开总中断 TR1 = 1;//启动定时器1,测距 while(1) 47 { if(flag == 1)//说明成功接收 { } else //如果测量失败,显示 .... { p1_1=0;//测量失败蜂鸣器响 buf[0] = 10; buf[1] = 10; buf[2] = 10; buf[3] = 10; scan(); uchar i; EA = 0; calculation(); if(distance<=100)//当距离小于 100cm 时蜂鸣器响 { } else { } for(i = 0;i < 100;i++)//控制显示 { } flag = 0;//清除接收成功标志 TR1 = 1;//启动定时器T1,开启测距定时器 EA = 1; scan(); p1_1=1; p1_1=0; } 48 } } //========================================== 定时器1中断函数,发送测距超声波 =================================== void time1_interrupt() interrupt 3 { EA = 0;//关总中断,防止发送超声波时被干扰 TR0 = 0;//关定时器0 EX0 = 0;//关外中断 TH0 = 0;TL0 = 0;//定时器0,清0,用于计时 TH1 = 0;TL1 = 0;//重装初值,中断一次65.536ms EA = 1;//开总中断 TR0 = 1;//开定时器0,计时 for(counter = 0;counter < 4;counter++) { p1_0 = ~p1_0;//取反输出驱动脉冲,频率为 40KHZ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); // _nop_(); // _nop_(); // _nop_(); 49 } } counter = 0; delay();//延时,避开发射的直达声波信号 EX0 = 1;//开外中断0,用于接收超声波 //=========================================== 外部中断0,中断函数 ============================= void external_interrupt0()interrupt 0 { } TR0 = 0; EA = 0; EX0 = 0; distance = TH0; distance = (distance<<8)|TL0; TH0 = 0;TL0 = 0;//定时器0 ,清0 flag = 1;//接收到超声波标记置1 50 因篇幅问题不能全部显示,请点此查看更多更全内容