基于单片机的超声倒车报警系统设计.docx
《基于单片机的超声倒车报警系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的超声倒车报警系统设计.docx(35页珍藏版)》请在冰豆网上搜索。
基于单片机的超声倒车报警系统设计
序言
自超声波测距技术问世以来,该技术在国外被广泛应用于速度测量、浅海探测、精度定位、军事武器等各方面,同时在其他各个科技领域也有涉及。
在中国,超声波测距技术起步较晚,技术掌握不够成熟,但是由于超声波测距技术应用广泛、实用价值较高、功能强大,越来越多的人对其产生浓厚兴趣,技术得到了突飞猛进的发展,特别是在公路超速监控、感应测量等领域得到广泛应用。
对完善我国现代工业化建设有着极其重要的意义【1】。
现实生活中绝大部分的汽车倒车过程都是通过后视镜观测来判断,由于这种方法多数要求驾驶者具有很好的驾驶技能[1],很多情况下无法一个人单独实现倒车过程,实际操作中存在观测盲区、操控不便、安全隐患等较多因素,于是,人们逐渐把目光投向了超声波测距报警方向的研究。
本设计就是采用基于单片机的超声测距对目前市场上倒车报警系统的研究。
本说明书共分为4章,第1章讲述课题分析与方案设计;第2章主要对硬件电路各个模块进行详细说明;第3章模块化的对软件设计进行分析;第4章讲述性能调试与结果分析,针对性的把实验中出现的问题加以解释说明;设计的最终效果是能实现LCD液晶实时显示测量距离,以蜂鸣器的形式完成倒车报警及按钮修改报警距离等功能,而且报警频率随着离障碍物距离的不同报警频率也不同。
第1章课题分析与方案设计
1.1课题任务分析
本设计主要实现一个基于单片机技术控制的超声波倒车报警系统,具体内容要求:
1.利用超声波测距原理,测量汽车离障碍物的距离,当测得汽车与障碍物的距离在所设定的报警范围内时,系统会以蜂鸣器形式发出声音报警;
2.能够实时显示出离障碍物的距离;
3.离障碍物距离的不同,声音报警系统的程度也不同,并且离障碍距离越近,蜂鸣器鸣响频率越大;
4.报警距离可以在3米范围内进行修改;
5.系统工作稳定;
1.2系统整体方案设计
系统硬件方案框图如图1-1所示:
图1-1系统硬件框图
(1)测距模块:
采用现成的HC-SR04超声波模块,该模块能够实现2cm-300cm的非接触式超声波感应测距的功能,最高精度达到5mm【2】。
其中发射模块完成超声波的产生、发射功能,主要包含发射器、发射电路;接收模块实现从超声波的接受和数据处理的功能,包括接收器、接受电路部分组成。
(2)控制模块:
采用AT89C52单片机为控制中心,负责着命令的产生、接受、处理及数据运算,是整个系统的核心控制中心;
(3)报警模块:
主要由无源蜂鸣器组成,驾驶员可以根据蜂鸣器是否鸣响状况,来判断汽车后方距离障碍物的的情况,从而做到提前采取措施,使倒车过程更加快捷、高效。
(4)显示模块:
主要由LCD1602液晶组成,起到实时显示测量距离的功能,进一步提示距离障碍物的距离;
(5)按键模块:
采用四引脚贴片开关,实现启动电源,控制功能的作用;
系统软件方案框图如图1-2所示:
本次设计的超声波倒车报警系统软件设计部分使用Keiluvision4作为开发平台,采用的是模块化的思路来进行设计和程序编写。
软件设计主要由系统初始化、超声波发射接收、运算结果处理、显示及预警模块五个主要模块组成。
1.系统初始化模块:
实现对系统的各寄存器的初值赋值和对各个引脚的电平分配的功能。
2.运算结果处理模块:
运算结果处理模块将多次所测得时间进行处理,进行软件取大值工作,根据公式计算出距离,然后再对计算得出的结果进行修正处理,数据处理后送至显示模块。
3.发射接收控制模块:
发射控制模块是软件控制超声波发射电路发射超声脉冲启动定时器,同时启动接收电路,当接收电路有信号输入时,对输入信号进行处理。
4.显示模块:
该模块的功能是把超感器距离障碍物的距离实时的显示在LED液晶上,进一步提示驾驶者。
5.报警模块:
当所测距离小于预先设定值时,通过声音报警来提醒驾驶员。
图1-2软件设计框图
第2章硬件电路设计
2.1AT89C52单片机最小系统设计
4.5v
vvv
本次设计的最小系统主要由AT89C52单片机和晶振电路及复位电路组成,是整个超声波倒车报警系统的的核心电路,主控制最小系统电路如图2-1所示。
4.5v
图2-1最小系统电路
2.1.1AT89C52单片机介绍
AT89C52是由一个CPU(微处理器)、一个8k的RAM(数据存储器)、一个64k的ROM(程序存储器)、32个I/O口、3个16位定时计数器、特殊功能寄存器(SFR)组成【5】。
其结构框图如图2-2所示:
图2-2AT89C52结构框图
(1)主要特性
1.具有兼容MCS-51特性2.32个编程I/O线
3.可以实现上千次写与擦循环4.10年的保存时间
5.可以全静态工作6.运行速度快可以达到24M
7.两个16位计数器/定时器8.具有多个中断源
(2)引脚及功能
图2-3AT89C52引脚排列
2.1.2晶振电路设计
查阅资料可知,单片机的指令要想运行,都必须外界提供它一个晶振频率,此时就引出了最小单片机系统所需要的晶振电路。
它结合单片机内部的电路,能够产生系统工作所需要的晶振频率,单片机的内部所有命令的执行都是在这个基础上完成的,而且晶振的提供的时钟频率越高,单片机运行的速度就越快。
一个单片机一共有6个状态周期,其中每个状态周期包含2个振荡周期,所以一个机器周期共有2×6=12个振荡周期[4]。
本次选用的晶体振荡器的震荡频率是12MHZ,经计算可知每一个振荡周期的时间是1/12us,刚好每一个震荡周期时间为1us。
如图2-4所示为晶振电路,XATL1、XATL2用来接石英晶体Y1和瓷片电容,其中瓷片电容C1=C2=20pf,晶振Y1=12M。
图2-4晶振电路图
2.1.3复位电路设计
复位电路的目的就是把系统恢复到初始状态,复位电路通常有手动复位和上电自动复位两种方法[7]。
单片机中有一个Reset引脚专门用于连接系统复位,RESET端如果能够持续接收到2个机器周期的高电平,那么系统就会恢复到初始状态,并能够重新工作。
由于晶振频率选择的是12MHz,那么reset端口至少接收到2us以上的高电平才能完成复位功能。
本设计采用的是手动复位电路,如图2-5所示,即当S1被按下时,电容C3会迅速放电,等到S1被弹起后,C3会再次充电,即完成手动复位功能。
本次设计C1=10uf,R2=10
。
4.5v
图2-5手动复位电路
2.2超声波测试模块介绍
超声波测模块使用的是HC-SR04模块,该模块可实现2cm-300cm的非接触式超声波感应测距功能,最高精度可达到5mm。
HC-SR04测距模块通常包含超声波发射器、接收器【6】。
图2-6超声波模块实物图
工作原理:
使用IO口的TRIG触发超声波测距方式,当单片机提供大于10us的高电平信号时,此时HC-SR04超声波测距模块会自动发送8个40khz的方波,于此同时HC-SR04模块的接收器检测是否有信号返回,如果收到信号的返回,一个高电平会通过HC-SR04超声波测距模块的ECHOIO口得以输出到单片机,超声波从产生到遇到障碍物反射回来所用的时间就是高电平持续的时间,根据距离公式S=VT/2,即可算出汽车离障碍物的距离。
HC-SR04超声波测距模块实物图如图2-6所示:
VCC:
连接4.5V电源;
GND:
连接地线;
TRIG:
触发信号的输入;
ECHO:
回响信号的输出;
超声波测距的原理是根据超声波从发射到超声波遇到障碍物后反射回波所经历的
时间,然后根据距离计算公式S=CT/2计算可得(其中C为超声波波速)。
资料显示表明超声波的速度受温度的影响较大,如表2-1所示列出几种常见温度下的声速【7】。
表2-1常见温度下的声速
气温(℃)
0
5
10
15
20
声速(m/s)
331
334
337
340
343
通常情况下,我们一般认为温度一定,即所采用的超声波传输速度一定,(如果检测精度要求很高,可以利用温度补偿的方法得意补偿)声速确定后,只要获得超声波在空中传输的往返时间,即可求得距离。
本次设计的超声波测距模块采用是渡越时间检测法,其原理是当超声波发射器向某一方向发射超声波的同时开始计时,当超声波在空气中传播碰到障碍物返回来,超声波接收器收到发射器发射的超声波后会立即停止计时。
此检测方具有较为直接、简单、高效的优点,无论是硬件控制还是软件设计都比较简单实现。
其具体的算法如下:
假设超声波在空气中的传播速度为v,根据计时器记录的时间
,发射点距障碍物的距离
,如图2-7所示:
图2-7超声波测距原理
图2-1中两探头中心距离的一半用M表示,超声波单程所走过的距离用
表示,由图可得:
(2-1)
(2-2)
将式(2-2)带入式(2-1)得:
(2-3)
在整个传播过程中,超声波所走过的距离为:
(2-4)
式中:
为超声波的传播速度,
为传播时间,即为超声波从发射到接收的时间。
将式(2-4)带入式(2-3)可得:
(2-5)
当被测距离H远远大于M时,式(2-5)变为:
(2-6)
本设计由单片机负责计时,采用12MHZ的晶振,所以此系统的测量精度理论上可以达到毫米级。
2.3显示模块设计
由于LCD1602液晶显示屏具有成本便宜、体积精巧、操作简单,美观大方等优点,所以本设计采用LCD1602液晶作为显示屏。
LCD1602液晶显示模块用点阵图形显示字符,显示模式分为2行16个字符[2]。
它具有16个引脚,其正面左起为第一脚。
第一脚GND:
接地;第二脚VCC:
+5V电源;
第三脚VO:
对比度调整端,使用时通过接一个5K的电阻调节亮度;
第四脚RS:
寄存器选择信号线;第五脚RW:
读写信号线;
第六脚E:
使能端,当E由高电平跳变为低电平时执行命令;
第七~十四脚:
8位数据线D0~D7;第十五脚BLA:
背光电源正极输入端;
第十六脚BLK:
背光电源负极输入端;
LCD1604液晶显示器显示原理:
(1)字符显示
用LCD显示一个字符时是相当比较复杂的,因为一个字符由8×8或6×8点阵组成,不仅要清楚每个字符对应位置对应的RAM区的8个字节,还要确定每个字节的不同位置处于点亮状态还是非点亮状态,通常“1”表示点亮,“0”表示非点亮状态[7]。
经过这样一系列的转换即可显示出字,但控制器内部带有字符生成器来说,显示字符会简单很多,可以根据在LCD上开始显示的每一行列号和每行的列数,找出相对应显示RAM的地址,把此设成光标,最后在把该字符对应的代码送出就可以。
(2)汉字显示
汉字的显示一般采用图形的方式,可以用自模提取软件提取要显示的汉字的点阵码,每个汉字占32B,左边占16B,右边占16B,左边为1、3、5到15,右边为2、4、6到16。
查阅LCD上开始显示的行列号和每行的列数,即可得到所显示RAM对应的地址,以此设置光标,根据每送上显示的汉字的第一字节,光标位置加1的原则,以此类推,直到32B显示完,就把想要显示的汉子显示在LCD1602液晶上[9]。
(3)线段显示
点阵图形式液晶由N×M个显示单元组成[6],例如LCD1602显示屏有64行,每行有128列,每8列对应1字节的8位,每行由16字节控制,共16×8=128个点组成。
显示RAM区1024字节与屏上64×16个显示单元相对应,显示屏上相应位置的亮暗和每一字节的内容对应。
例如LCD1602显示屏第1行的亮暗由RAM区的000H—00FH的16字节的内容决定。
当(000H)=FFH时,则LCD1602显示屏的左上角显示一条长度为8个点短亮线;当(3FFH)=FFH时,则LCD1602显示屏的右下角显示一条短亮线;以此类推下去,即可得到想要的线段。
本设计采用的LCD1602液晶显示模块接口电路图如图2-8所示:
VO与GND之间需要串联一个电阻R用于调节LCD1602液晶对比度的调节,本设计中R=2
D0-D7与单片机的P0-P7相连,用于地址/数据传送;RS、RE、E分别于单片机的P1.0、P1.1、P1.2相连;BLA端口、BLK端口分别连接电源正负极,用于背光灯控制;
图2-8LCD1602显示电路
2.4报警电路设计
如图2-9所示,报警模块用的是声音报警模式,由源蜂鸣器、S8550三极管及电阻构成。
查阅资料可知,单片机AT89C52的IO口驱动能力无法使蜂鸣器达到鸣响的条件,此时,我们通常需要串联一个S8550三极管用于放大驱动电流。
当IO口输出的是低电平,三极管处于导通状态,集电极电流通过三极管流经蜂鸣器从而可以是蜂鸣器发出鸣响,起到蜂鸣报警状态;当IO口输出的是高电平时,三极管处于截止状态,无电流流经蜂鸣器,此时不报警。
为了保护因三极管产生的电流过大造成对单片机IO端口的损害,此时在单片机IO端口与三极管基极之间串联一个2K的电阻,起到限流、保护电路的作用。
4.5v
图2-9声音报警电路图
2.4电源电路设计
电源部分的设计采用3节5号干电池4.5V供电,实物图如图2-10所示:
图2-10电源电路
2.6按键电路设计
本设计采用的是独立按键电路,为了能使运行中的系统,经人工干预,强制系统进行复位,达到修改设计参数的功能。
电路如图3-11所示:
S1:
增加报警范围值;
S2:
减少报警范围值;
S3:
选择/确定;
图3-11按键电路
第三章软件设计
3.1主程序设计
主程序设计采用模块化设计的思想进行程序编写,主程序设计主要完成单片机系统初始化、超声波复位、发射超声波启动T0中断、接收回波中断停止、数据计算、显示及蜂鸣器报警的编程。
系统主程序流程图思路如图3-1所示:
图3-1系统主程序流程图
3.2测距程序设计
测距程序是关于障碍物精确测量的关键部分,不仅完成超声波从产生到被接收器接收所经历时间的计算,还要把计算出的距离值传输到其他功能模块,进行其他功能的设置。
测距程序的流程图如图3-2所示:
图3-2测距程序流程图
3.3显示模块程序设计
显示模块程序主要完成串口、读取数据、控制字符显示等功能的编程,能够显示距离和设置的报警值。
显示模块的设计流程图如图3-3所示:
图3-3显示模块流程图
3.4报警模块程序设计
报警模块程序设计是根据测距模块测量的距离值,把测量的距离显示在LCD液晶上,通过判断是否在设计的0.5米报警范围内进行判断蜂鸣报警与否。
报警流程图如图3-4所示:
图3-4报警子程序框图
第4章性能调试与结果分析
4.1性能调试
(1)硬件调试
本此设计的超声波倒车报警装置以HC-SR04型的超声波测距传感器模块为主体,中心频率基本稳定在40kHz,安装时需要整个电路板保持水平安装,这样可以尽可能的减少误差。
其中硬件的连线焊接和组装基本情况如下:
单片机的P00一P07引脚与LED显示器的D0-D7相对应,掌控着LED显示器字符的显示;P3.2端口接超声波模块的发射端;P3.3端口接超声波接收端,用作判断超声波是否接收到了回波的信号,并控制计数器停止计时;P1口的P1.4通过一个三极管连接到蜂鸣器上,构成蜂鸣器报警电路,进行蜂鸣器鸣叫报警;P3.5-P3.7端口接按键,实现功能的控制。
现对电路进行如下几点检查:
a.上电前检查
为了防止电路板因焊接问题而把电路板烧坏,一般通电前需要对电路进行无电检测,先用观察法观察电路板是否有虚焊、错连等现象,然后仔细检查电路图与焊接图是否一致,最后用万用表对各电路进行逐一检测,判断是否存在短路等状况。
经测量发现各个电路无短路现象,电路连接正确。
b.上电检查
上电后应首先用手触摸电路板各个元器件是否处在正常温度范围内,如有异常则需立刻断电检查,若无异常,然后用万用表对各个电路的工作电压进行检测,观察LCD1602液晶是否工作正常,检查重要元器件是否工作正常等工作。
(2)软件调试
当硬件制作完成后,软件制作也是不可轻视的部分,是实现电路的功能的关键部分,通过本次毕业设计,总结经验如下:
a.先进行人工检查。
写好程序后,不要立刻烧入单片机,先对纸面上的程序进行人工检查。
于采用C语言编程,所以要特别小心地检查语法错误,如括号不配对,漏写分号等,通过仔细的检查,发现并排除这些错误;
b.人工检查无误后,上机调试。
在编译时给出的语法错误的信息,根据提示的信息具体找出程序中错误之处并改之,从上至下逐一改正。
应当注意的是:
有的提示出错行并不是真正出错的行,如果在提示出错的行上找不到错误的话,则应该到上行再找;
c.当确认程序无语法错误和逻辑错误时,通过直接下载到单片机来调试。
采用的是自下到上的调试方法,即单独调好每一个模块,然后再连接成一个完整的系统调试;
d.程序烧入单片机后,观察各个部件的工作是否正常,功能是否实现。
如不能正常工作,则继续检查程序中的相应模块,必要时从上到下重新检查程序;
注意:
电路焊接完成,仔细检查无误后,才可通电调试。
4.2结果与误差分析
(1)结果分析
现象一:
电路检查无短路、错接现象,但是把程序下载到AT89C52后,发现虽然电路工作指示灯正常,但是却无法正常完成工作,液晶显示乱码,蜂鸣器也不报警;
分析:
a.断电检测和上电检测都是正常的,并且电路指示灯正常,说明电路焊接没有问题;
b.由于LCD出现乱码,可能是程序编写出问题;
经检查发现本设计软件部分显示模块的对单片机和LCD1602的引脚编写错误,及时修改后,从新下载到单片机中发现此时液晶显示“juli:
0.45mset:
0.50m”字样,此时蜂鸣器报警,一切工作正常。
现象二:
电路能够实现显示和蜂鸣器报警功能,出现液晶显示不稳定,且蜂鸣器一直报警现象。
分析:
a.由于电路能够实现显示和蜂鸣器报警,而且检查报警电路电压一切正常,明电路设计方案是正常的。
b.由于蜂鸣器一直报警,电路又无误,说明电路一直处于程序判断的报警范围内,最后分析程序可知,软件部分缺少延时程序,以至超声波发射与接收几乎同时进行,所以以至处于报警状态。
最终添加了一个延时程序,发现系统能够正常完成功能。
在已知既定的一米距离,用此装置测量的一米距离显示为0.99米,比较稳定,精度较高。
图5.1测量的一米距离显示
(2)误差分析
本设计存一些无法避免的误差,对设计作品的性能有着一定的影响,下面分析一下对可能产生误差的原因进行分析:
a.外界温度所引起的误差
超声波的传送速度与温度有着较为直接的联系。
查阅资料可知,当温差每升高一摄氏度,速度就会增加一米每秒【10】。
鉴于此,可以设计一个稳步补偿装置,尽可能的减小误差,由于实际情况可知,一般汽车尾部距离障碍物的距离只需要注意2米左右的范围,对误差的影响很小,所以本设计就未采用温度补偿模块进行设计。
b.超声波模块的感应角的影响
两个超声波探头即发射探头和接收探头和障碍物之间存在一个几何角度,反射波入射到探头存在一定的角度,当这个角度过大时,这就会造成测量较大的误差,或者说根本接收不到回波信号。
特别是在障碍物的距离较小的时候这个误差就成为了距离测量的主要误差的原因,但是这种误差是可以尽量减小的,利用发射能力强、散射小的探头,或者多用几个探头[11]。
结论
本毕业设计设计的基于单片机的超声波汽车倒车报警系统是方便驾驶者更好的观察汽车后方障碍物的一种汽车安全辅助系统。
AT89C52单片机的P1.0口产生一个高电平,传送到HC-SR04超声波传感器的Eric端口,内部超声波发生器会产生8个40KHZ的超声波,经过发射探头反射超声波,当超声波在空中传播遇到障碍物反射回来被超声波接收器接受,HC-SR04超声波接收到反射回来的超声波信号经放大、滤波、检波后送入单片机,AT89C52单片机根据计算超声波从发射到被接受时经历的时间,根据距离计算公式S=CT/2,即可计算出汽车距离障碍物的距离【12】。
最后把计算出来的距离显示在LCD1602液晶上。
当探测到距离障碍物的距离在预设值的报警范围内时,蜂鸣器会鸣响报警,并且本设计的一大优点是随着距离障碍物的逼近,蜂鸣器鸣响的频率会变大,驾驶者可以根据蜂鸣器的鸣响程度,仅凭听觉就可以判断距离障碍物的程度,这样可以使驾驶者做到心中有数,更加高效、方便的完成倒车过程。
通过几个月的努力,终于完成了本次毕业设计,本次设计的基于单片机的汽车倒车报警系统具有以下优点:
1.成本低、性价比比较高;
2.本电路操作简单,稳定性和可靠性比较高;
3.测量精度高,能够比较准确测出汽车后面障碍物距离;
4.有完整的距离和报警双重提示,提高驾驶的安全性;
5.蜂鸣器的报警频率是可以改变的;
当然本设计也存在以下缺点:
1.探测盲区:
可能对过于低矮的障碍物、过细的障碍物、沟坎等检测不到距离。
2.存在误差:
由于超声波传播速度受温度等因素的影响,一致存在一定的误差。
致谢
几个月的时间转眼间即将逝去,看着自己的设计的超声波倒车雷达系统作品的完成,内心除了小小的自豪感,更多的是充满了无限的感激之情。
在此,我想表达我对李月红老师衷心的感谢。
从选题、选题审批表、开题报告、作品设计、论文撰写,整个过程李老师虽然工作繁多,但是一直都对我很认真细心的指导,特别是开题报告和论文细节方面李老师不耐其烦的一遍又一遍帮我指出细节小错,给予了我方向性的指导和建设性的建议和意见,这一切让作为学生的我看在心里不由得想表达我的感激之情。
特别是软件设计部分,遇到了一些问题,困惑我近一周的时间,当李老师知道这些后,主动与我沟通,不仅给我知识上的指导帮助我开拓研究思路,同时也鼓励我,告诉我遇到困难应该以积极乐观的心态,任何设计都是在经历无数次失败之后才能获得成功。
李月红老师以其高度的敬业精神、严谨求实的治学态度、兢兢业业、认认真真的工作学习态度和勇于创新的进取精神对我产生了深深的影响,不仅授我以文,也教会我很多做人做事的道理,给以我终生受益无穷之道。
再者,我还想感谢和我一起做毕业设计的同学们。
毕业设计的这些时间里,给我了很多的帮助,不惜利用自己宝贵的时间帮我指导设计的困惑和不足,给我提出很多宝贵的看法,在此我还想真诚的感谢你们。
四年的大学生活即将结束,感谢在我成长过程中认真教学的老师们,正是你们的无私奉才有我们今天的成果。
同时也要感谢在生活和学习中给予我帮助的同学们,是你们陪伴我度过人生最美好的时光。
最后,经过几个月的努力付出,超声波倒车报警系统已经接近尾声,作为一个电子信息工程专业的本科生的毕业设计,由于知识有限、经验的匮乏,设计中还是存在一些考虑不周全的地方;毕竟这次设计是我第一次进行如此全面和系统的设计,还可能存在一些不足,还希望各位老师能够多多指导,帮助以后更好的提升自我,完善作品。
我相信这次毕业设计对我的人生有着深远的影响,衷心祝愿各位辛苦的老师们身体健康、万事如意、阖家欢乐,同时也预祝毕业设计的同学们能够顺利通过毕业答辩,有个美好的未来。
参考文献
[1]宋培义,刘立新.现代汽车工业进步与发展[M].北京:
中国广播电视台出版社,1999
[2]潘新民,王燕芳.传感器与检测技术[M].北京:
人民邮电出版社,1999
[3]马志良.单片机原理与控制技术[M].北京:
机械工业出版社,2002
[4]李广弟,朱月秀,王秀山.单片机基础(第二版)[M].北京:
北京航空航天大学出版社,2001