基于单片机的倒车防撞报警系统的设计Word下载.docx
《基于单片机的倒车防撞报警系统的设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的倒车防撞报警系统的设计Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
4.4超声波测距子程序设计14
4.5显示程序设计15
4.6报警程序设计16
5结论与展望18
5.1结论18
5.2展望18
参考文献20
致谢21
1绪论
随着国民经济的高速发展,我国汽车的拥有量在大幅增加,造成道路拥堵,交通事故频发,给人们的生命和财产安全带来了巨大的损失。
安全驾驶成为大家关注的焦点,其中汽车防撞系统(CollisionAvoidanceSys-temCAS)的设计和需求显得非常重要和迫切。
针对这种情况,设计一种响应快、可靠性高且较为经济的汽车防撞报警系统势在必行。
所谓的汽车倒车防撞预警系统即是俗称的倒车雷达,是汽车泊车辅助装置。
在汽车倒车时,倒车雷达采用超声波测距原理探测汽车尾部离障碍物的距离,当汽车尾部离障碍物的距离达到探测范围时,倒车雷达通过数码管实时动态显示距离。
当汽车尾部离障碍物的距离达到设定的安全警告值时,倒车雷达发出报警声,以警示驾驶员,辅助驾驶员安全倒车,为驾驶员的倒车安全提供保证和方便。
因此有市场需求的产品,必然会带动产品的开发设计,现在市场上的的倒车雷达种类较多。
几乎道路上的所有的中高档小轿车都配置有各种倒车雷达。
需求的提高必然会迫使产品的技术不断更新。
本文主要设计是一种新型的基于单片机控制的倒车雷达系统,该系统采用通用型单片机作为控制电路,方便系统功能扩展。
系统电路主要采用集成器件构成,外围元件少,电路简洁、调试方便、成本低,利于商品化生产。
2系统组成及工作原理
本文设计的倒车防撞预警系统是由四路收发一体封闭(防水)型超声波传感器及其超声波发射与回波接收电路、超声波电信号放大电路、单片机控制电路、LED数码管显示电路和蜂鸣器声音报警电路组成。
系统组成框图如图2-1所示。
图2-1倒车雷达系统组成框图
当汽车倒车时由倒车换挡装置自动接通系统电源,系统上电复位,进入工作状态。
单片机编程产生一串40kHz的矩形脉冲电压,经四选一模拟开关加到超声波发射与回波接收电路,经放大驱动超声波传感器发射出超声波,同时单片机开始计时。
发射出的超声波碰到障碍物后形成反射波,部分反射波返回作用于超声波传感器,经超声波传感器的声/电转换,变成微弱的电信号,该微弱的电信号经放大、整形产生负跳变电压,向单片机发出中断申请。
单片机收到中断申请的信号后,立即响应中断,执行外部中断服务程序,停止计时,得到超声波发送和返回的时间T,计算出发射点离障碍物的距离S,即:
S=(C·
T)/2。
C是超声波在空气中的传播速度,在常温25℃时,C约为346m/s。
若发射出的超声波在测距范围内未遇到障碍物,直到单片机定时中断产生,执行定时中断服务程序,选择下一路,依次按后左路、后左中路、后右中路、后右路的顺序继续发射和接收超声波,并经过计算处理。
四路探测处理完毕,选择四路中测出的最小距离值通过LED数码管显示出来。
当最小距离值小于预先设定的报警距离时,单片机接通蜂鸣器的电源,蜂鸣器发出报警声。
若四路探测无回波中断申请,则显示“—.——”,表明在安全距离内没有障碍物,再继续下一轮循环探测处理[1]。
2.1超声波测距原理
超声波测距原理有两种方式:
共振式和脉冲反射式。
因为共振式的应用要求复杂,因此使用脉冲反射式,而本系统选用的是压电式超声波传感器。
其超声波测距原理如图2-2所示。
图2-2超声波测距原理图
图2-2中被测距离为H,两探头中心距离的一半用M表示,超声波单程所走过的距离用L表示,由图中关系可得:
H=Lcosθ(2-1)
θ=arctan(M/H)(2-2)将式(2-2)代入式(2-1)可得:
H=Lcos[arctan(M/H)](2-3)
在整个传播过程中,超声波所走过的距离为:
2L=vt(2-4)
式中:
v为超声波的传播速度;
t为传播时间,即为超声波从发射到接收的时间。
将式(2-4)代入式(2-3)可得:
H=12vtcos[arctan(M/H)](2-5)
当被测距离H远远大于M时,cos[arctan(M/H)]=1,于是式(2-5)变为:
H=12vt(2-6)
由此可见,要想测得距离H,只要测得超声波的传播时间即可[2,3]。
2.2测速原理
汽车车速的测量是通过霍尔集成传感器来实现的。
将装有永久磁铁的转盘的输入轴与车轮的转轴相连,当车轮转动时,转盘随之转动,此时,转盘上的永久磁铁会经过霍尔集成传感器,从而在霍尔集成传感器的输入端得到一个磁信号,如果转盘不停转动,霍尔集成传感器便会输出转速信号。
可以说,对汽车车速的测量实质上是对转速信号的频率的测量[4]。
2.3报警器工作原理
报警器的主要工作原理是由单片机控制发射电路将超声波信号发射出去,遇到障碍物则返回由接收电路接收,根据发射和接收超声波的时间差,以及它在空气中传播的速度来计算汽车尾部与障碍物的距离。
系统软件主程序完成系统的初始化、控制超声波的发射与接收,以及处理后产生BCD码和相应频率的脉冲信号,以驱动后续电路,实现整个装置的功能。
温度补偿电路是用来补偿因为环境温度的不同使得超声波在空气中传播的速度变化而引起的测距误差,从而保证测距精度。
显示采用动态扫描方式,小数点为固定的一直点亮显示,数码显示的单位是m,范围为0.1~9.9m,显示精度为0.1m。
报警器工作原理示意图如图2-3所示[5]。
图2-3报警器工作原理示意图
3系统硬件电路的设计
3.1系统总体电路构成
系统由主控单片机、超声波发射电路、接收电路、测速电路、报警电路、LED显示电路组成,电路原理框图如图3-1所示。
图3-1电路原理框图
超声波发射电路由CC7555时基电路和超声波发射探头组成。
单片机AT89C2051的P1.7引脚控制CC7555时基电路产生40KHz的频率信号给超声波发生器,由超声波探头发射的超声波射向障碍物。
利用超声波测距具有以下特点:
测量灵敏度高、穿透力强、测量速度快、测量角度大,可对较大范围内的物体进行检测[1,6]。
超声波接收电路由超声波接收探头、放大器和整形器组成。
由障碍物反射回来的超声波经接收探头,变换为电脉冲信号,再由放大器、整形器放大和整形后送入到单片机AT89C2051的P3.2引脚。
放大器宜选用有足够增益和较低噪声的宽带放大器,以保持脉冲信号尤其是信号前沿不发生畸变,以提高测距的精度[7]。
测速电路由传感器、脉冲放大器、整形器、CC7555时基信号电路、选通门组成。
霍尔集成传感器将车轮转速信号变成脉冲信号输出,经放大、整形电路后送入选通门,由CC7555时基电路产生的单位时基信号控制选通门的开与闭,以控制转速信号在单位时间内通过选通门,送入单片机AT89C2051的P3.5引脚,控制T1计数器计数,实现了在单位时间内的计数。
报警电路由CC7555电路和扬声器组成。
AT89C2051的P1.6控制CC7555电路并根据测量结果,产生一定频率的信号驱动扬声器发出报警声。
在扬声器发出报警声时,时基电路CC7555处于暂稳态,此时电源向电容充电,从而使CC7555结束暂稳态回复到稳定状态,输出低电平,使扬声器停止发出报警声,直到下一次测距结束产生新的报警声。
LED显示电路由数码管和驱动电路组成。
用两个数码管显示距离,数码管采用静态显示,由芯片MCS14495驱动显示,P1.4、P1.5分别作为驱动芯片MCS14495的锁存信号,用于控制产生的BCD(BinaryCodeDecimal,二进制编码表示的十进制数码)是显示高位还是低位[8]。
图3-2AT89C2051外围接口电路图
主控单片机AT89C2051主要是完成程序的执行、数据的处理和对外部电路的实时控制。
内部定时器T0工作在定时方式,T0在超声波发射时开始计数,当P3.2引脚收到回波后,停止计数,T0所计时间即为超声波往返传输时间,单片机对该数据进行处理,即可测出距离。
内部定时器T1工作在计数方式,由P3.5引脚输入的脉冲信号控制T1计数,由T1所计数值确定汽车的车速[9]。
单片机根据所测距离和车速进行比较,判断是否驱动报警电路报警,如设定:
当车速小于等于30km/min时,安全距离应大于等于1m;
当车速小于等于80km/min时,安全距离应大于等于2m;
当车速大于80km/min时,安全距离应大于等于5m等。
主控单片机外围接口电路图如上图3-2所示。
3.2AT89C2051单片机的性能及特点
AT89C205是一种低功耗、高性能CMOS8位微控制器,具有2K的系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C205为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89C205具有以下标准功能:
2K字节Flash,128字节RAM,32位I/O口线,两个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
AT89C2051是一个低功耗、高性能的CMOS8位微处理器,与MCS-51系列指令集和引脚兼容,具有以下特点:
128bytes内部RAM,2kbytesEPROM,15根I/O线,2个16位定时/计数器,5个两级中断源,1个全双工串行口,一个片内精密模拟比较器和片内振荡器,低功耗的闲置和掉电模式。
工作电压范围4.25V~5.5V,工作频率取12MH[10]。
AT89C2051中的两个16位定时/计数器寄存器T0和T1,作定时器时,可计数机器周期,计数频率为振荡频率的1/12;
作计数器时,可对外部输入引脚P3.4/T0和P3.5/T1上出现从1至0的变化时增1,计数频率为振荡频率的1/24。
T89C2051的引脚排列如图3-3所示。
其主要功能特性如表3-1所示。
对管脚的说明如下:
(1)端口P1可以用作为8位双向I/O引脚控制,P1.2至P1.7用于内部提升电阻,P1.0及P1.1则需要外加提升电阻,P1.0也作为内部模拟比较器的负端(AIN1)输入,P1的输出缓冲器可以吸入20mA而直接驱动LED显示器,P3.6是比较器输出端。
(2)端口引脚P3.0~P3.5及P3.7可以作为7位双向I/O引脚控制,并提供内部提升电阻,P3.6位用于内部比较器输出控制,无法做一般I/O控制,P3口输出缓冲器可以吸入20mA电流。
3.3超声波传感器
超声波传感器是超声波倒车防撞雷达中的重要部件,每套含1个发射头(T)和1个接收头(R),应配对使用。
为防止泥水污染宜选用防水型结构。
超声波传感器的主要参数有:
发射、接收的中心频率通常为40.0±
1kHz、带宽1kHz(-3dB);
发射头的最大余振时间0.5~1.2ms(因生产厂家、型号不同而异)。
图3-3标准工作模式引脚图
表3-1AT89C2051主要功能特性
由于车后障碍物(或人)的反射面积或大或小,为提高检测的可靠性、不留盲区,需要在车辆后尾架或底盘上安装左、中、右3套超声波传感器。
3.4超声波谐振频率发生与调理电路设计
超声波谐振频率的发生与调理电路如图3-4所示。
NE555和电容电阻组成的电路产生40KHz的方波,以使超声波传感器产生谐振;
而后面的CD4049则对40KHz频率信号进行调理。
PLUS_EN1是超声波信号发射的使能控制端口,当该端口接低电平时,模组将不能发射超声波信号,即40KHz的方波[2]。
图3-4超声波谐振频率发生与调理电路
3.5超声波回波接收与处理电路设计
超声波回波接收与处理电路如图3-5所示。
超声波接收处理部分电路前级采用NE5532构成10000倍放大器,对接收信号进行放大;
后级采用LM311比较器对接收信号进行调整,比较电压为LM311的3管脚处,可由J1跳线选择不同的比较电压以选择不同的测距模式。
在放大器与比较器之间用PNP三极管(8550)作为通路选择,本方案需要将此通路选择跳线短接上,即把J2短接,固定使三极管导通即可[5]。
3.6显示电路和报警电路设计
电路如图3-6所示。
由于系统用到单片机的输入/输出端口不多,在不考虑功能扩展时,从功能够用和低成本的角度考虑,采用AT89C2051单片机作为控制电路的核心器件。
AT89C2051单片机共有20个引脚,其中有15个I/O端口(P3.6无引出脚)。
两个16位定时器/计数器,其体积小、价格低。
采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。
单片机的P3.3端口周期性的输出一串40kHz的矩形脉冲,通过双路四选一模拟开关CD4052周期性地加到四路超声波发射与回波接收电路。
单片机的P3.4和P3.5端口输出双路四选一模拟开关CD4052的选通信号。
单片机的P3.2端口为外部中断0中断申请信号输入端。
三位LED数码管采用动态扫描显示。
U4的小数点常亮,U4的单位为m,U5的单位为dm,U6的单位为cm。
采用有源蜂鸣器作为报警发音器件,一是器件成本低,二是便于动态扫描显示的软件编程。
图3-5超声波回波接受处理电路
图3-6单片机控制、显示与报警电路
4系统软件的设计
系统软件采用模块化设计,方便扩展移植。
采用汇编语言编程,主要有主程序、T0中断服务程序、外部中断0服务程序、超声波测距子程序、显示程序和报警程序[11]。
4.1主程序设计
本系统有四路测距通道,采用分时工作,按后左→后左中→后右中→后右顺序循环测距。
每一路发射超声波后的等待外部中断时间应大于超声波在最大有效探测距离内往返时间。
所以按最大有效探测距离可以估算出最短的循环间隔时间。
因为超声波在空气中传播能量会不断衰减,所以超声波测距存在最大有效探测距离。
最大有效探测距离与多种因数有关:
与超声波传感器性能的好坏、与驱动超声波传感器的脉冲电压幅值(功率)的大小、障碍物大小和形状、障碍物吸波特性以及反射波与入射波之间的夹角、与超声波放大和整形电路的灵敏度等有关。
设定最大有效探测距离为8m(收发一体封闭型超声波传感器比较难达到,实际上也没有必要探测很远的障碍物,只是设计留有裕量。
由于显示位数有限,也必须对最大探测距离做限制),则循环工作的间隔时间Tm=2S/C=2×
8/346l46ms,加上避免接收超声波传感器余振的延时和程序执行时间,留足裕量,设定Tm=56ms。
主程序流程图如图4-1所示。
首先是对系统初始化。
端口P1.0、P3.3置0;
设置堆栈,中断允许总控制位EA允许中断(EA=1);
允许外部中断0中断(EX0=1),采用边沿触发方式(IT0=1);
设置定时器T0允许中断(ET0=1),以16位工作方式定时约56ms;
设置定时器T1以16位工作方式定时/计数,计数初值0000H,然后启动T0定时。
设置显示数据初值为三位BCD码999(cm),对应字形段码显示“---”。
四路探测处理完毕后,将四组数据中的最小值送入显示缓冲区,通过LED数码管显示。
同时该值与设定的100cm值比较,若四组数据中的最小值小于100cm,P3.7端口置0,Q2三极管导通,有源蜂鸣器得电发出报警声。
由于单片机采用12MHz的晶振,1个机器周期为1μs,所以计数器每计一个数就是1μs,定时器T1工作模式设置为16位定时/计数器模式,则其最大定时65.536ms。
由于定时器T0每56ms产生中断,执行T0中断服务程序时停止T1计时,所以T1计时不会产生溢出中断。
一轮四路探测处理完毕所用时间大约是56ms×
4=224ms,用时很短,而倒车速度又比较慢,所以可以做到实时动态显示。
图4-1 主程序流程图
4.2T0中断服务程序设计
T0中断服务程序流程图如图4-2所示。
每隔56ms分别按后左→后左中→后右中→后右顺序选通下一路超声波发射与回波接收电路,调用超声波发生子程序,送出16个40kHz的超声波脉冲电压,定时器T1开始计时,定时器T0开始定时56ms,使每路工作56ms。
为了避免接收到超声波传感器余振的直射波产生的中断申请,延时2.8ms后,才允许外部中断0中断,等待汽车接收返回的超声波信号。
所以,最小探测距离(盲区)Smin=Ct/2=346×
0.0028/2l0.48m。
四路探测处理完毕,将四路中最小值送入显示缓冲区。
若在四路探测中有些路在有效探测范围内发射的超声波未遇障碍物,无返回波,外部中断0不产生中断申请信号,或者是进入探测盲区,外部中断0产生的中断申请不被受理,则定时器T1计时到定时器T0产生中断,在T0中断服务程序中,用三位BCD码999(三位十进制数最大值999cm)置够四组数据。
若显示缓冲区的四组数据都是999时,则对应字形段码显示“---”。
倒车伊始,LED数码显示器就显示“-.--”,表明在安全距离内没有障碍物;
若发出报警声后,又显示“-.--”,表明进入了探测盲区[7]。
图4-2T0中断服务程序
4.3外部中断0程序设计
外部中断0服务程序流程图如图4-3所示:
图4-3外部中断0服务程序流程图
单片机一旦接收到返回超声波信号(即INT0引脚由高电平跳变为低电平),立即进入外部中断0服务程序。
首先停止定时器T1计时,禁止外部中断0中断。
然后将定时器T1中的数N,也即将超声波往返所用的时间N(单位:
μs),按式S=CT/2=(346×
N×
10-6)/2=173×
N÷
10000计算,即得被测物的距离(单位:
cm),将计算结果以百位、十位、个位BCD码方式送入比较大小的缓冲区,以备比较大小使用。
然后等待定时器T0定时56ms中断的产生,继续下一路的探测处理。
4.4超声波测距子程序设计
超声波发生子程序通过P3.3端口发送16个周期是25μs(即频率40kHz,1个周期内高电平持续13μs、低电平持续12μs)的矩形脉冲电压。
脉冲串个数在10~20个比较合适。
脉冲个数太少,发射强度小,探测距离短;
脉冲个数太多,发射持续时间长,在离障碍物距离近时,脉冲串尚未发射完毕,先发射出去的脉冲产生的回波就到达接收端,影响测距结果,造成测距盲区增大。
测距电路系统中的反射式超声波传感器采用UCM40的压电陶瓷传感器,它的工作电源是40kHz的脉冲信号,是由单片机定时器产生振荡频率为40kHz的脉冲串,经脉冲变压器生压驱动超声波发送器,并由P1.0口以疏密波形式向外传播。
下面是由定时器产生的40kHz振荡频率的脉冲信号经P1.1口输出的子程序[1]:
INTT0:
CLR
EA
TR0
MOV
TH0,#00H
TL0,#00H
SETBET1
SETBEA
SETBTR0
SETBTR1
OUT:
RET;
T1中断,发超声波用
INTT1:
CPL
VOUT
DJNZR4,RETIOUT
TR1
ET1
R4,#04H
SETBEX0
RETIOUT:
RETI;
外中断0,收到回波时进入
PINT0:
CLRTR0
CLRTR1
CLRET1
EX0
44H,TL0
45H,TH0
SETB00H
RETI
4.5显示程序设计
DISPLAY:
MOVR1,#40H;
G
MOVR5,#0F7H;
PLAY:
MOVA,R5
MOVP0,#0FFH
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1MS
INCR1
JNBACC.0,ENDOUT;
RRA
MOVR5,A
AJMPPLAY
ENDOUT:
MOVR2,#0FFH
RET
TAB:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH;
共阳段码管
"
0"
"
1"
2"
3"
4"
5"
6"
7"
8"
9"
不亮"
A"
-"
4.6报警程序设计
AJMPMAIN;
主程序入口
ORG0003H
AJMPINT0;
转外部中断0服务程序
ORG000BH
AJMPITOP;
转T0中断服务程序
ORG001BH
转T1中断服务程序
ORG0100H
MAIN:
MOVSP,#60H;
堆栈初始化
ACALLPTOM2;
对T0,T1初始化
RESET:
AJMPMAIN;
复位入口转主程序
转INT0中断服务程序
PTOM2:
MOVTMOD,#16H;
T0初始化程序
MOVTL0,#FFH;
T0初始化
MOVTH0,#FFH,
SETBTR0;
启动T0
SETBET0;
允许T0中断
MOVTL1,#0E3H;
T1置初值
MOVTH1;
#FEH
CLRP1.0
SETBEA;
CPU开放中断
RET
TOINT:
CLRTR0;
停止T0计数
SETBP1.1;
建立标志
RET
ITOP:
MOVTL1,#0E3H
MOVTH1,#0FEH
CPLP1