作者:罗淳,熊庆国
1 引 言
汽车防撞报警器的核心部件是汽车防撞雷达。汽车防撞雷达(俗称电子眼)之所以能实现防撞报警功能,主要有超声波这把无形尺子,它测量最近障碍物的距离,并告知车主。超声测距原理简单:它发射超声波并接收反射回波,通过单片机计数器获得两者时间差t,利用公式S=Ct/2计算距离(S为汽车与障碍物之间的距离;C为声波在介质中的传播速度,C=331.4(1+θ/273);θ为摄氏温度。本文介绍的超声测距系统共有4只超声波换能器(俗称探头),分别布置在汽车的前左、前右、后左、后右4个位置上。能检测前进和倒车方向障碍物的距离,通过后视镜内置的显示单元显示距离和方位,发出一定的声响,起报警防撞作用。
2 天车防撞报警仪的总体方案设计
2.1 防撞报警仪的主要设计指标
(1)报警距离:5~30 m,根据用户的具体需要连续可调;
(2)根据用户的需要选用分档:0.6 m,1.0 m,1.5 m,1.8m,2.4 m;
(3)电源:车载电瓶12 V;
(4)环境温度:-20~+70℃;
(5)报警器尺寸:155 mm×155 mm×63 mm,重量:3.5 kg。
2.2 系统总体方案
汽车防撞报警仪采用由AT89C52单片机为核心组成的微机系统,对仪器进行控制,其硬件系统如图1所示。
2.3 工作原理
本防撞装置利用声波作为检测波,利用超声波作为机械波,其频率为20 kHz~20 MHz。随着频率的增加,检测距离减小,使用频率在15~40 kHz之间,检测距离为0.5~3.0 m,由发射器、接收器、控制器和反射板组成。发射器、接收器和控制器安装在防撞主体(指由产品控制能实现防撞功能的汽车面板)上。发射器发出检测波,经反射面反射给接收器,通过判断处理后,发送控制器执行规定的功能。基于单片机的天车防撞系统采用AT89C52单片机和专用芯片测量超声波发射到反射回所需的时间t,由S=vt(v=314 m/s,计算时加入温度补偿)得到从声波发射到反射面的距离。此距离随时显示在汽车驾驶室内,软件可以设置几级提示和报警,当车障之间距离小于安全距离时,设置在驾驶室的声光报警仪即发出声光信号,通知驾驶员谨慎操作,从而有效地防止碰撞事故发生,保证人身及设备的安全。
3 硬件设计
3.1 固有频率正反馈发生器电路
在硬件电路结构上,很重要的一点是保证超声波发射频率与换能器固有频率的一致和稳定,不随时间或因温度而漂移,同时也有利于超声波换能器发射能量的转换。为达到这个目的,固有频率正反馈发生器电路是措施之一。
3.2 换能器
只使用一个换能器也有利于达到这个目的,因为反射回的声波就是它本身发射的声波,共振频率相同,压电效应最佳。从电路结构讲,发射与接收切换器,使得一个换能器起到发射与接收的两个作用。
3.3 线性电路
线性电路包括前置放大、噪音过滤、线性放大、整形电路。将微弱的声发射和接收信号进行处理,使之能与单片机部分的后续电路相匹配。
3.4 微机处理器(主AT89C52)
通过软件编程,使之能控制系统的正常工作。具体功能如下:声发射控制、报警距离级别选择、声光语音报警、车位距离显示、汽车和串口中断传送数据。
3.5 显示部分
显示部分由从AT89C52和LED数码管组成,能将主AT89C52传过来的信号经过驱动传送给位于驾驶室的从AT89C52的串口,再点亮LED数码管,起提示作用。
以上电路(除位于驾驶室的显示部分外)采用集成电路芯片,使之结构紧凑,工作可靠。对超声波进行编码和解码,能完全克服各类频谱的汽车光源和自然光源的干扰。因带有单片机电路结构的系统必须保证抗干扰,故在本仪器中,电源电路和相应的抗干扰电路是不可少的,软件程序编写也要与硬件配合,同时解决抗电磁干扰问题。既然是利用声波测量距离,就要考虑使用现场的声波环境,因为它们同样能被超声波换能器接收到。用于测量距离的超声波换能器的固有频率一般都在 15~40 kHz,而路面的噪音频率是十分丰富的,它们中的声谱频率有与使用的换能器的固有频率相同的部分,则干扰回波测量。因此,在硬件电路上要解决这个问题,同时在软件程序的编制上也要有抗干扰部分。报警距离级别选择是为了用户在不修改程序的情况下,根据用户自己的意愿来选择。
4 软件设计
为了达到前述仪器的主要功能,程序采用C51的功能模块逐一实现。程序分为主程序(chret.c)和另外三个模块文件,即display.c,eraseint.a51,transplant.c。
4.1 主程序
主程序框图如图2所示。
本程序对工作过程分了8个状态:准备状态(t0~t1)、发射超声波(t1~t2)、不接收信号时间(t2~t3)、等待声波反射时间(t3~t4)、测反射的个数(t4~t5)、不计反射波个数,间歇一段时间(t5~t6)、再测波的个数(t6~t7)、间歇时间(t7~t0)。为测得超声波收发时间差 t,换算成距离s和判断是否报警,程序中使用了两个函数:
一个是void t0Interrupt(void)interTupt:1 using 1,它是t0计时中断函数,通过switch语句处理由工作过程分成的8种状态。
另外一个是函数void intInterrupt(void)interrupt2 using 2,它处理反射回来的输入信号,发生在t3~r4阶段,主要是由int1外部中断来得出时间distanceIn-time,并启动T1计数器,它用来计算反射波个数。
通过以上两个函数可获得t,后面转换成s和判断是否报警便迎刃而解。Chret.c的函数组成:
主程序对抗干扰采取了3个措施(防止误报警):
(1)t4~t5状态,给反射回来的波定个窗口,对于高于33.3 Hz或小于11.1 Hz的波不计数;
(2)t6~t7状态,通过测10 ms来判断:若是干扰在此时能测到;若是正常反射,此时应根本测不到波;
(3)对报警判断两次(1.3 s会自动清0一次)。
4.2 串口通信模块——transplant.c
主要将主AT89C52的程序中chDis准确无误传给显示部分(位于驾驶室),设计一个通信协议,以保证不收乱码,即在chDis这个数据前面添加一个报头数据Head,而后面添加一个检验数据check,这样显示部分就只在Head出现时才接收,且检验正确才显示。由于测t时,程序的时序已经固定,在此基础上进行串口通信,就只能够采用中断方式,而不能采用查询方式,否则将出现“死机”现象。
对于display.c,eraseint.a51这两个模块,在主程序中调用即可,功能单一:一个用来显示数据;一个用来执行iret指令。
5 结 语
本文设计的防撞装置在结构上采用微电脑技术和专用芯片设计,具有结构简单,小型化的特点,非常适合用于测控系统;在软件设计上,突出模块的灵活性,并且 C51语言简洁,大大简化了编写程序的工作量。比较现在市场上已有的汽车防撞器,该系统结构紧凑,成本低,可靠性好,通信能力强,能有效地避免汽车相撞事故的发生,具有一定的市场价值。