文档库 最新最全的文档下载
当前位置:文档库 › 车载超声波测距毕业论文2012

车载超声波测距毕业论文2012

本科生毕业设计

基于52单片机的车用超声波测距系统设计与实现Based on 52 single-chip ultrasonic distance measurement system for Car reversing

学生姓名

所在专业电气工程及其自动化

所在班级

申请学位工学学士

指导教师职称

副指导教师职称

答辩时间2012年 6 月 2 日

目录

目录

设计总说明 ............................................................................................................................ I INTRODUCTION .............................................................................................................. II 1设计的研究背景及意义 . (1)

1.1国内应用于汽车测距地方法对比 (1)

2整体方案设计及器件的选择 (1)

2.1超声波测距的原理 (1)

2.2HC-SR04超声波测距模块的原理及参数 (2)

2.3数据处理的核心:AT89S52芯片 (3)

2.4DS18B20芯片介绍 (5)

2.5语音报警模块板载ISD1820芯片 (6)

3超声波电路测距系统的硬件设计 (7)

3.1整体电路设计 (7)

3.2超声波模块电路 (7)

3.3超声波显示电路设计 (9)

3.4超声波温度补偿的电路设计 (10)

3.5报警电路设计语音报警模块板载ISD1820芯片 (10)

4超声波测距的软件系统设计 (11)

4.1软件设计分析 (11)

4.2软件设计思路 (11)

4.2.1主程序 (11)

4.2.2温度补偿流程图 (13)

5调试及误差分析 (13)

5.1软件调试 (13)

5.1.1超声波发射启动: (14)

5.1.2超声波模块工作 (14)

5.1.3测距计算 (15)

5.1.4距离溢出处理及报警 (15)

5.2测试分析 (16)

5.3误差分析 (17)

鸣谢 (18)

参考文献 (19)

设计总说明

随着汽车产业的快速发展和人们生活水平的不断提高,我国的汽车数量正逐年增加。同时汽车驾驶人员中非职业汽车驾驶人员的比例也逐年增加。在公路、街道、停车场、车库等拥挤、狭窄的地方倒车时,驾驶员既要前瞻,又要后顾,稍微不小心就会发生事故。据相关调查统计,15%的汽车碰撞事故是因倒车时汽车的后视能力不良造成的。因此,增加汽车的后视能力,研制汽车后部探测障碍物的倒车报警装置便成为近些年来的研究热点。安全避免障碍物的前提是快速、准确地测量障碍物与汽车之间的距离。国内外的学者开始逐步重视倒车报警器在实际方面的应用,在低成本的基础上力求高精度,这对于降低生产成本、促进技术发展和普及倒车雷达具有很重要的意义[1]。

本设计采用AT89S52芯片为核心,三个HC-SR04超声波测距模块为采样对象,lcd1602为显示模块。三个超声波模块分别位于汽车的后方的左中右,实时把汽车后部距离障碍物的距离显示给驾驶员,当某个距离少于10cm时,ISD1820语音报警模块播报录音对驾驶员提出预警。

经试验证明,这套系统软硬件设计合理,抗干扰能力强,实时性能好,可以有效地解决汽车倒车碰撞,能让汽车停靠的更加整齐,驾驶员更加轻松、安全地倒车。

关键词:(52单片机;汽车倒车;超声波模块)

INTRODUCTION

With the rapid development of industry and the improvement in people's living standards,more and more people have their cars in our country. The proportion of non-occupational car drivers also increased year by year. Reversing in the crowded, narrow roads, streets, parking lots, garages and other places make the drive pay too much attention and it is easily cause traffic accidents. According to surveys, 5% traffic accidents are due to the drivers can not see what is behind the car. So improving the sight behind the car is very important. If the drivers know the distance between the barrier and the car, they can avoid obstructions while Car reversing. The domestic and foreign scholars start to take the back-draft alarm apparatus used in the cars.

My design is using AT89S52 chip at the core, Three HC-SR04 ultrasonic ranging module as a sample object, cd1602 as the demonstration module. Three ultrasonic modules which are located in the left rear of the car to the right. Tell the distance to the drivers at anytime. When one of the distances is less than 10cm, ISD1820 voice alarm module broadcasts recorded on driver's early warning.

The test proved that this system is reasonable and it has strong anti-interference ability, it is a effective solution to the auto reversing collision. Drivers can be more easily and safely reverse while having this system.

KEYWORDS: 52 single-chip;Car reversing;Ultrasonic modules

基于52单片机的车用超声波测距系统设计与实现

电气工程及其自动化,

指导教师:

毕业设计说明书

1设计的研究背景及意义

超声波是指频率高于20Khz的声波,属于机械波的范畴,遵循一般机械波在弹性介质中的传播规律,如在介质中的分界面处发生的反射和折射现象,在进入介质后被介质吸收而发生的衰减等,正是因为有这些性质,使得超声波可以用于距离的测量,随着经济的发展,科技水平的不断提高,电子测量技术应用越来越广泛,超声波测量精度高,成本低,性能稳定则备受青睐,所以超声波测距技术被广泛应用于人们的生活和工作中[1]。

超声波测距是一种非接触检测技术,不受光线、被测对象颜色的影响,比其他仪器更加卫生,具有不污染、高可靠、寿命长等特点,被广泛应用于纸业、矿业等行业中,可在不同环境中进行距离测量的准确度的在线标定,可直接用于水、酒精、等液位控制,能达到工业实用的指标要求。因为超声波测距具有以上的这些特点,使得其在汽车防碰撞方面有广泛的应用[1]。

1.1国内应用于汽车测距地方法对比

目前,运用于汽车的测距的主要有以下四种方式:超声波测距、毫米波雷达测距、摄像系统测距、激光测距。雷达测距能够探测多目标,精度高,受天气影响较少,已达到实用水平。作为车载雷达,却存在着电磁波的干扰问题,必须防止因雷达间以及其他通讯设施的电磁波干扰而发生的误动作。目前,车载雷达测距主要作为防撞雷达,防止在高速公路上发生的追尾碰撞。摄像系统测距模仿人体视觉原理,测量精度高。但目前价格较高,同时由于受软件和硬件的制约,成像速度较慢。激光测距仪虽然具有测量时间短,量程大、精度高等优点,但同样被高昂的价格制约着他的发展。超声波测距原理简单,制作方便,成本较低,虽然受环境因素不能用于远距离和高精度测量,但由于其理想的测量距离为4-5米,用于汽车的倒车防碰撞刚好合适[1]。

2整体方案设计及器件的选择

2.1超声波测距的原理

谐振频率高于20Khz的声波称为超声波。超声波为直线传播方式,频率越高,反射

能力越强,而绕射能力越弱。利用超声波这种特性,常常利用检测其发射时间进行测量。其工作原理是:超声波模块向介质发射超声波,声波遇到目标后必然有反射回波作用在模块上。若已知介质中胜诉为c,回波到达时刻与发射波的时间差为t,就可以算出发射点与反射点的距离为s: s=c*t/2. [2]

式中的C为超声波在空气中的传播速度340m/s,其与温度有关。如果环境温度变化显著,必须考虑进行温度补偿。空气中声速与温度的关系可以表示为:

c=331.4+0.607t [2]

2.2HC-SR04超声波测距模块的原理及参数

图2-1 HR-SR04超声波集成模块正面外观图

图2-2 HR-SR04超声波集成模块背面外观图

HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感应测距功能,模块包括超声波发射器、接收器与控制电路。

基本工作原理:

(1)、采用IO口TRIG触发测距,至少给出10US的高电平信号;

(2)、模块自动发送8个40Khz方波,自动检测是都有信号返回;

(3)、有信号返回,通过IO口ECHO输出一个高电平,高电平的持续时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340m/s))/2;

HC-SR04超声波电气参数

2.3数据处理的核心:AT89S52芯片

图2-3 A T89S52 单片机引脚图及实物图

AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用[3]。

P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动PLCC封装4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash 编程和校验时,P3口也接收一些控制信号[4]。

第二功能:

P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)

P3.2 INTO(外中断0) P3.3 INT1(外中断1)

P3.4 T0(定时/计数器0) P3.5 T1(定时计数器1)

P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC 指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效[5]。

PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为

0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端[6]。

2.4DS18B20芯片介绍

由于考虑到汽车倒车环境的复杂性,对声速进行温度补偿将大大提高数据的准确性。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域[11]。

图2-4 DS18B20的引脚图及实物图

特点:独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源测量温度范围为-55 ° C至+125 ℃。华氏相当于是-67 ° F到257华氏度-10 ° C至+85 ° C范围内精度为±0.5 ° C

温度传感器可编程的分辨率为9~12位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统

描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条

口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制[18]。

2.5语音报警模块板载ISD1820芯片

板载ISD1820语音模块具有接线简单,容易控制等特点,只需在PLAYE引脚上连上单片机的某个IO口,当给出一个有效电平时,语音模块即可播放预先录制的声音。

1、板载咪头,可以直接录音

2、可以进行10秒左右的语音录放

3、高质量自然的语音还原,可用作喊话器模块

4、带循环播放,点动播放,单遍播放功能

5、芯片主要的引脚已经引出,可以通过单片机控制操作

6、工作电压:3~5V

图2-4 板载ISD1820芯片模块的正面实物图

整体电路的控制核心为单片机AT89S52,三个超声波发射和接收模块HC-SR04对汽车的左、中、右数据进行采集并发送到芯片处理。DS18B20则对实时温度采集保证声速误差尽量减少。所测得的数据全部显示在LED1602上面,当某个数据显示的距离少于10cm时,ISD1820语音报警模块播报录音对驾驶员提出预警。

3 超声波电路测距系统的硬件设计 3.1 整体电路设计

图3-1 整体电路设计系统框图

三个HC-SR04超声波模块发出40kHz 的信号,遇到障碍物后返回并发给单片机一个有效电平,单片机内部定时器记录期间的时间T ,结合被DS18B20修正了的声速计算出距离并显示在LED1602,一同显示的还有实时的温度。当某个测量距离少于10cm 时,ISD1820语音报警芯片播报预先录制的声音对驾驶员提出预警。

3.2 超声波模块电路

图3-2 超声波模块发射电路

图3-3超声波模块接收电路

图3-4 超声波时序图

以上时序图表明只要提供一个10us以上的脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测距离成正比。由此通过发射信号到回收的回响信号时间间隔可以计算得到距离。

3.3超声波显示电路设计

图3-5 LCD1602 模块正面图

图3-6 LCD1602模块的电路引脚接线

由于本设计连接三个超声波模块,一个温度检测芯片,要显示的内容较多,综合考虑采用LED1602显示。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。

1602采用标准的16脚接口,其中:

第1脚:VSS为电源地

第2脚:VDD接5V电源正极

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器

调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

第6脚:E(或EN)端为使能(enable)端。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

3.4超声波温度补偿的电路设计

DS18B20是美国DALLAS半导体公司推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可以根据实际要求通过简单的编程实现9-12位数字式读数方式。可以在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根接线的读写,温度变换功率来源于数据总线,总线本线也可以向所挂接的DS18B20供电,无需额外电源。因而使用DS18B20可以使系统结构更加简单,可靠性更高。由于声速受气温的影响比较大,所以通过IO口控制该芯片来对超声波测距中的声速进行校正,尽量减少测距中的误差。

图3-7 DS18B20的引脚接线

3.5报警电路设计语音报警模块板载ISD1820芯片

图3-8 ISD1820语音报警模块的引脚接线

当测量的距离少于系统设定的值(本系统预设值为10cm),给BEEP引脚一个高低电平(专门用于出发ISD1820),语音芯片收到信号,开始播报预先录制的音乐。

语音报警模块板载ISD1820芯片内部电路

图3-9 ISD1820语音报警模块的内部结构

4超声波测距的软件系统设计

4.1软件设计分析

完成了系统的硬件设计之后,接下来就是系统的软件设计,此设计所需要完成的主要是针对系统功能的实现及数据的处理和应用。由以上所述系统硬件设计和各个电路功能,系统软件需要实现以下功能:

1.信号控制。在系统硬件中,已经完成了hc-sr04与单片机的连接。在系统软件设计

中只需要完成循环控制触发或接收各个超声波模块的信号。

2.数据的存储。测量系统中需要得到发射信号和接收回波的时间差,需要读出计数器

的值,然后存储在RAM中,在发射下一个信号前,需要对定时器以及存储参数清零。

3.数据处理以及显示。RAM中的计数值通过程序得到真实值*CM,再通过LCD显示

出来,必要时启动语音芯片。

4.2软件设计思路

4.2.1主程序

主程序的流程图如下图所示。主程序首先对系统各个连接的硬件进行初始化,包括设置T0的工作方式,开中断,1602的初始化等。然后控制给超声波模块触发管脚一个TRIG一个持续10us的有效信号,超声波模块开始发射8个40Hkz的周期电平信号,一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测距离成正比。回响信号刚变高电平时,开启定时器,等到电平拉低,关闭定时器并记录时间T。程序进入计算子程序,中间首先执行记速程序,利用DS18B20修正当时速度。通过一系列判断(超过4m发生溢出,低于设定的10cm,启动语音报警)显示在lcd1602上面。

图4-1 系统程序流程图

4.2.2温度补偿流程图

图4-2 温度补偿流程图

考虑到温度对声速的影响,程序在一开始就进行温度采集,在关闭定时器后,修正声速后再进行数据处理。

5调试及误差分析

5.1软件调试

由于本设计采用的是模块连接,连接前首先保证GND都已连接,有万用表可以测试一下它们是否已经有效连接。连接前,可以先测试各个模块是否能够工作,其功能能否达到要求。硬件测试好后,便可以将程序便已下载到单片机中试运行。根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的时间间隔,以适应不同距离的测量需要。根据所设计的电路参数和程序,测距仪能测量的范围为0.04-----4m,测距仪最大的误差不应超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用效果要求。本设计使用KEIL3编译。

图5-1 Keil3的程序编译界面

设计采用调用多个头文件的方法,这样层次和思路比较清晰,其中的包括LED1602.h 是以前就编译后的,这让调用起来比较节省时间,修改也很方便。

5.1.1 超声波发射启动:

void StartModule1() //启动模块 1

{

unsigned char nop ;

TX1=1; //启动一次模块

for(nop=0;nop<21;nop++)

{

_nop_();

}

TX1=0;

}

根据模块工作的时序图,要求启动模块的前提是给TRIG引脚提供至少10us的高电平。程序利用循环执行空语句,达到21us延时以上,从而启动超声波模块工作。

5.1.2 超声波模块工作

while(!RX); //当RX为零时等待

TR0=1; //开启计数

while(RX); //当RX为1计数并等待

TR0=0; //关闭计数

当模块收到回响信号时,ECHO管脚输出一个高电平,脉冲的宽度与距离成比例。

5.1.3 测距计算

Time =TH0*256+TL0;

TH0=0;

TL0=0;

Speed =(331.4+0.607* wenduzhi )/200;

S=(time*speed)/100; //算出来是CM

定时器把计算好的值传给Time然后清零,通过DS18B20修正声速。由于定时器返回值单位为us,所以把声速连续除以10000,使其单位为cm/us,符合设计以厘米为单位,在于Time相乘,得到以cm为单位的距离。

5.1.4 距离溢出处理及报警

当返回的距离超出大于400cm或者定时器的值发生溢出,使中断标志位flag置1,定时器清零,1602显示“-.--M”

当返回值少于10cm时,启动语音报警模块。

距离正常或者少于10cm都会显示出来。

void Conut2(void) //m

{

speed();

if((S>=400)||flag==1) //超出测量范围显示“-”

{

flag=0;

DisplayOneChar(2, 1, ASCII[11]);

DisplayOneChar(3, 1, ASCII[10]); //显示点

DisplayOneChar(4, 1, ASCII[11]);

DisplayOneChar(5, 1, ASCII[11]);

DisplayOneChar(6, 1, ASCII[12]); //显示M

}

else

{

disbuff[0]=S%1000/100; //定义距离数组

disbuff[1]=S%1000%100/10;

disbuff[2]=S%1000%10 %10;

DisplayOneChar(2, 1, ASCII[disbuff[0]]);

DisplayOneChar(3, 1, ASCII[10]); //显示点

DisplayOneChar(4, 1, ASCII[disbuff[1]]);

DisplayOneChar(5, 1, ASCII[disbuff[2]]);

DisplayOneChar(6, 1, ASCII[12]); //显示M

S1=disbuff[0]*10+disbuff[1]+0.1* disbuff[2];

if(S1<10)

{

speak1();

}

}

}

5.2测试分析

基于上面设计的硬件电路和软件,连接好电路后,装在HEX文件,对系统进行测试。由于本设计针对的是车用倒车装置,所以测量距离集中于4-40cm。实际测试距离如表所示

图5-2 车用超声波实物演示图

相关文档