使用CPLD器件和晶体震荡器实现超声波测距系统的设计

可编程逻辑

1364人已加入

描述

1引言

以往利用超声波测量距离往往采用单片机单机系统(由单片机软件控制发射、接收及计数器的关停与启动),这种方法所带来的误差在厘米级。原因主要有:单片机计数器频率较低造成的误差;计数与发射信号由软件控制动作而产生的不同步;超声波传感器接收到信号与单片机检测到信号之间不同步等。本文给出一种以CPLD为控制核心的基于超声波测距原理的测量方法。经过制版测试,所得结果提高到毫米级,而且电路原理较为简单。

2 超声波测距的原理

超声波测距的原理一般采用回波测距法,即测量超声波发射到遇到障碍物返回的时间间隔t,然后根据(1)式计算距离值。

cpld

本文给出的系统以CPLD为核心来控制超声波的发射,在发射时刻的同时开始计时,超声波在空气中传播遇到障碍物时则返回。当CPLD检测到第一个反射波时立即停止计时,测得时间t。

3.系统结构及原理

总系统框图如图1所示。系统由CPLD控制电路模块、单片机控制模块(包括DS18B20温度传感器和显示部分)和超声波传感器模块(包括信号的发送,接收与整形)组成。CPLD控制电路模块通过控制超声波发射器发射超声波到固定端面,同时启动高精度计数器开始计数。超声波波前经反射后由接收端接收,当CPLD接收到第一个反射波信号即停止计数,并将计数器值送入单片机。单片机根据计数器值计算出时间间隔△T。再经过温度修正计算出超声波速度c,最后利用(1)式计算出发射器到反射点的距离,并显示结果。

3.1 CPLD模块设计

CPLD模块包括5个部分,分别为32位计数器,40KHZ标准方波发生器,32-8四选一数据选择器,计数器控制电路和一个简单的有限状态机。其内部框图如图1所示。工作原理:有限状态机输出清零信号CLR后,置START为高电平,D触发器在下一个时钟脉冲下降沿置Q端为高电平。使能信号ENA=1控制计数器开始计数,同时打开缓冲门让40KHZ方波信号驱动发射超声波。整形接收电路对接收器接收到的波前进行整形并输出一高电平到计数器控制电路,此低电平作为计数器控制电路的时钟信号。控制电路在时钟信号到达后STOP引脚输出一低电平使使能信号ENA=0,关闭计数器和方波驱动的发送。有限状态机等待单片机取走计数值后开始下一个循环计数工作。

cpld

3.1.1 32位标准频率计数器

此处采用100MHZ的晶体震荡器作为标准频率信号源。这一频率精度影响系统的测量精度。计数和发射动作同时进行。因为一个脉冲的周期为0.01uS,假定超声波的速度为0.34mm/uS,一个脉冲丢失造成的误差仅为0.0034mm。计数器模块结构简单,VHDL描述如下:

count: process(clr,clk)

begin:

if clr=’0’ then counter《=(others=》’0’)

elsif clk’event and clk=’1’ then

if ena=’1’ then counter《=counter+1;

end if;

end if;

end process;

3.1.2 有限状态机

状态机状态转换图如图2所示[4]。和单片机的握手信号直接取自40KHZ的方波驱动信号,以确保同步性。当系统复位或接收到单片机发出的读数据完成信号COMP有效时,状态机进入状态S1同时清零并置START为低电平。在下一时钟状态机进入状态S2,同时置START=1,启动D触发器开始发射方波信号并计数。

cpld

当反射波波前到达接收电路后计数器控制电路使STOP为低电平,此时状态机进入状态S3,并向单片机发出信号FINISH通知单片机读取计数器数据。有限状态机VHDL描述如下:

state:process(clk)

begin

if clk=’1’then

case state is

when s1=》clr=0;finish=0;start=0;

if reset=’1’ then state《=s1;

elsif reset=’0’ state《=s2;

end if;

when s2=》……

end if;

……

end case;

end if;

end process state;

3.1.3计数器控制电路

D触发器在START信号置1以后,在40KHZ时钟信号的上升沿使Q端输出高电平。同时此高电平被使能信号送入超声波发射器。此波前被固定端面反射后有半波损失,到达接收应产生180度相移。当计数器控制电路的时钟信号由低变为高电平时,在时钟信号的上升沿输出STOP=0,停止计数器计数。计数器控制电路VHDL描述如下:

Con_counter process(clk,clr,)

Beigin:

If clr=0 then stop=1

Elsif clk’event and clk=1 then

Stop=0 else

Stop=1;

End if;

End process;

3.1.4 32—8数据选择器

多路数据选择器的数据选择信号线由单片机的两个引脚控制。在单片机两个引脚上的不同逻辑组合输入下,CPLD模块将32位数据逐次送入单片机。32—8数据选择器的VHDL描述语言如下:

data《=counter(7 downto 0) when sel=”00” else

counter(15 downto 8) when sel=”01” else

counter(23 downto 16) when sel=”10” else

counter(31 downto 24) when sel=”11” else

counter(31 downto 24)

3.2单片机控制模块

单片机控制模块硬件包括距离显示、CPLD模块接口、和读取温度三部分。单片机显示电路较为简单,在此不做介绍。单片机和CPLD模块接口控制由软件实现。由CPLD状态机发送过来的FINISH信号设置为外部中断,单片机完成一次距离显示后即开中断接收下一组计数器数据。用于温度补偿的温度测量传感器采用DALLAS的一线式传感器DS18B20。它具有接口简单(仅须一根数据线)测量范围广、精度高的(在-10℃—85℃内精度为±0.5℃)特点。在温度变化范围不大的场合单片机得到温度值后,可以通过查表实现声波在空气中传输速率的测量。

3.3超声波发射与接收

本系统采用的超声波传感器(换能器)是中心频率为40KHZ的专用型超声波探头T40和R40[5]。因为超声波接收器接收的反射波信号很微弱并含有干扰信号,所以必须进行放大调整。接收电路采用了两级放大电路和波形整形电路,最后输出到CPLD的计数控制电路的时钟端CLK。当CLK没有接收到信号变化时,引脚是低电平;接收到第一个信号是40KHZ方波脉冲信号的上升沿。为了消除干扰,采用了硬件滤波。如图3所示。超声波信号经电压提升、放大、整形、滤波后作为时钟信号送入CPLD的计数器控制模块。

cpld

4系统测试结果

本系统采用ALTERA公司的的CPLD EP2K30E芯片和常用的89C51单片机实现。采用自制的PCB板对系统的距离测量进行验证并和单片机单机测量系统测量数据进行比较。实验环境:室内,室温:27℃;相对湿度:45%。;距离单位:CM ;根据距离不同记录下了9次实验结果。每次实验测量数据20组(此处省略)取平均值,结果如下表:

cpld

数据结果表明,在每次实验的20组数据中本系统测量数据方差明显小于单片机单机测量方差;每次实验中本系统测量数据绝对误差较小,更接近于真值。

5 存在问题及分析

1) 由于空气湍流可能吹散回波,故超声波传感器不适合户外使用。

2) 40KHZ超声波波长在1CM左右,如果干扰造成接收电路误动作造成的误差至少是1CM。所以接收整形电路的稳定性、有效性极其关键。40KHZ超声波适用于测量较长距离。

3) 对于距离不发生突变的场合,单片机软件可以利用中值滤波技术减少误差。

4) 接收整形电路造成的时延也是误差来源之一。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分