梁志勋,闭吕庆
(1.河池学院计算机与信息工程学院,广西河池546300;2.玉林师范学院电子与通信工程学院,广西玉林537000)
目前市场上销售的中、高档汽车均配有可视化倒车影像装备,这种装备具有直观、方便的特点,但价格昂贵,因此一些低档的桥车及大型卡车并未安装倒车雷达装置[1],存在较大的安全隐患。
超声波测距是利用超声波测量距离的一种非接触式距离测量方法[2]。文献[2-5]中均采用了单片机作为测距信号的处理器件,其测量原理均采用了触发定时器启停计数的方法进行测量,并且由于受单片机本身时钟频率和无法精确估算执行若干指令时间长短的限制,因此很难保证测距结果的准确性。文献[6-7]中利用FPGA作为测距信号处理器件,利用DS18B20作为温度测量器件,并在测距过程中进行了温度补偿,其测距精度达到了要求,但FPGA的成本明显较高,不利于应用推广。本系统采用价格较为低廉的CPLD为测距信号处理器件,对常用的周期法原理进行改进,利用STC12C5A60S2作为核心处理器完成显示、声光报警和语音播报等功能,使所设计的系统具有集成度高、可靠性高、精度高、响应速度快和成本低廉等特点。
系统主要由STC12C5A60S2单片机作为主控制器组成的硬件平台,其系统组成如图1所示,主要有CPLD信号处理模块、超声波模块、显示模块、语音播报模块、声光报警模块和温度传感器模块。CPLD信号处理模块在接收到单片机发测距指令后进入测距状态,并将测得的数据报送给单片机处理。单片机收到CPLD发来的数据处理后,将数据发到语音播报模块,由语音播报模块实时播报汽车尾部和障碍物的距离,同时启动声光报警模块,对设定的距离,利用声光报警模块产生声光报警信号。超声波传输介质的密度、温度及气体分子成份等对超声波的传播速度影响很大[8-9],因此超声波测距在精确度高要求的情况下,必须要将超声波传输介质的温度因素考虑进系统,作为超声波测距的修正参数。温度传感器模块采用LM35C作为温度传感器件,采集环境温度。
图1 倒车防撞系统组成框图
40 kHz的超声波经过空气介质经过T1时间的传播后遇到障碍物后,又经过T2时间回到接收器,已知超声波的传播速度为v,那么发射端和障碍物的距离:
考虑超声波在空中介质中传播的温度因素,传播的速度为:
式中v0=334m/s为0℃时候的超声波传播速度,T为当前环境温度,由温度传感器测量获得,因此v为加入环境温度因素后的修正超声波传播速度。
图2为测距时序图,利用发射8个周期40 kHz的脉冲波,经过一段时间间隔t后收到回波,该时间间隔可通过CPLD的计数功能获得。波形的好坏将直接影响时间间隔t的准确性,因此在软硬件设计时务必能够消除干扰,以准确获得时间间隔t。
图2 测距时序图
文献[10-13]中使用专用芯片或者NE555等分立元件设计超声波模块电路,这些电路设计具有集成度高,设计简单的优点,皆采用外部LC/RC分立元件震荡来获得40 kHz脉冲,但其起振时间无法预测,时延部分无法估算,影响超声波测距准确度,因此本设计采用CPLD的时钟分频产生40 kHz脉冲,经外部简单的功率三极管驱动即可得到满足要求的超声发射波。如图3所示为超声波电路的具体设计,40 kHz脉冲波经Q1幅度放大再经Q2的功率放大,由变压器T1升压后推动超声波发射模块即可发射超声波信号。
接收部分由具有增益功能的巴特沃斯滤波器和施密特触发器构成。两级放大器将经由超声波接收头收到并转换的微弱电信号进行幅度放大,由负反馈放大电路原理可知,图中每级放大倍数为20倍,两级串联,放大倍数为400倍,满足设计要求。为了滤除40 kHz以外的干扰信号,本设计的滤波器为带通滤波器,其中心频率为40 kHz,-3 dB带宽为30 kHz。
语音播报芯片为ISD2560,该芯片具有录音、播放和直接驱动喇叭的功能,其最长的语音播放时长为60秒,具有十位寻址能力,最多分段能力为600段。使用其进行电路设计时,无需外接AD、DA和存储芯片,具有简单可靠,放音清晰等优点[14],具体设计如图4所示,仅需简单的电阻电容进行外围电路设计。
图3 超声波发射接收电路
图4 语音播报及其他模块电路图
使用该芯片播放语音,事先将要播放的语音录入其中,单片机只要给出录音地址,即可播放该段语音,如图4所示,单片机的P0.0~P0.5控制ISD2560的录、放音地址A0~A5,P1.0~P1.4控制着ISD2560的工作状态。事先要将语音素材0~9、米、厘米等录入分配的地址,具体地址和时间长度分配如表1所示,语音素材的分配地址由00 H至4 AH。
表1 语音地址分配表
温度补偿的传感器件采用LM35C,其最大线性误差为±0.5℃,输出覆盖-40℃~110℃,输出为电压范围为6 V至-1.0 V,温度和输出电压的关系为[15-16]:
由式(3)可知,传感器的电压输出与被测温度成线性关系,单片机通过AD转换并换算后即可获得被测温度值,本系统采用STC12C5A60S2单片机内部集成的10位AD作为模数转换器件,简洁设计,提高了系统的稳定性,电路设计如图4所示,分别为温度传感器电路、显示电路和声光报警电路的设计。
超声波测距控制器是系统的核心模块,直接影响着测距的精度,其设计如图5所示,主要由外部SPI接口单元、状态寄存器、启停寄存器、计数器、计数寄存器和状态机等部分组成。单片机通过SPI接口和CPLD外部接口进行通信,单片机通过该接口单元,完成对超声波测距控制器的启停控制和测距的数据信息的读取任务。超声波测距控制器的工作流程为:1)接到单片机发来测距指令,存储在状态寄存器里面,状态机进入start模式,经50 MHz分频得到40 kHz方波驱动超声波发射模块;2)发射出40 kHz脉冲后,状态机进入counter模式;3)直到回波触发信号FTRIG后,进入save模式,将计数的最后数据存储在计数寄存器里面;4)保存好数据后,进入clear状态,将计数器清理;5)将计数器清理后,进入Idle模式,等待下一次测量;在整个过程中,状态寄存器都存放着状态机的状态标志。
图5 超声波测距控制器与状态转移图
系统程序采用C语言进行软件设计,利用Keil c51作为开发环境。如图6所示,系统完成初始化后,读取是否有倒车信号送来,如果有,则进入测距模式,先读取当前环境温度值,然后单片机通过SPI通信协议向发送启动测距信号,由CPLD完成测距任务,单片机则等待CPLD返回测距的计数值。单片机收到测距的计数值后,利用当前温度值和计数值,根据公式(2),可计算出修正后的测距值,将测距值进行显示并通过语音模块播报出来并根据设定的障碍物距离的阈值判断是否需要进行声光报警。
图6 系统程序流程图
如图7所示,利用Multisim仿真软件对接收电路进行仿真测试,所设计的带通滤波器的中心频率为40.491 kHz,±3 dB带宽的截止频率在25.6 kHz和55.8 kHz,对40 kHz以外的干扰信号具有较强的抑制能力。
利用altera的CPLD集成开发环境Quartus II,进行超声波测距控制器的时序仿真分析,图8位发射接收时序图,其中图(a)为超声波发射时序图,在start信号的触发下,50 MHz经分频获得40 kHz的8个脉冲。图(b)为超声波接收时序图,TRIG信号触发计数开始,并被FTRIG信号触发停止计数,读取的计数值经计算,数值完全正确。
图7 接收信号处理滤波器特性
图8 超声波发射和接收时序仿真图
为了进一步验证所设计倒车防撞系统的测距精度,将设计好的样机系统进行实测,数据如表2所示,经计算,系统测距平均相对误差仅为2.4%,完全满足倒车防撞的精度要求。
表2 系统测距数据表
在综合分析现存的超声波测量系统的基础上,提出了一种由单片机和CPLD结合为核心的超声测距系统,分别对超声波发射和接收电路进行了详细设计,利用Verilog HDL硬件描述语言进行测距超声波测距控制器详细设计,最后通过仿真测试得出结论,该系统完全满足汽车防撞系统的设计要求,由于采用CPLD作为独立的测距控制器,可以完成多路超声波信号的发射和处理,避免倒车时,出现测量盲区,所设计的硬件架构具有很好的性价比,具有一定的实用推广价值。