超声波流量计的高精度算法以及系统详细说明
经查阅大量文献,发现超声波流量计仍然存在着波形检测不准确,到达时间检测不,运行速度慢等缺点[71][72]。本文根据以上几点,提出以下几个方案并进行实施。,针对波形信号检测不准确的缺点,提出了双阈值和周期相结合的边沿检测算法,提高了波形信号识别的准确度[73][74]。第二,针对到达时间检测不的特点,提出了改进的脉冲计数算法以实现在同等的硬件条件下的高精度的时间检测[75][76]。经过计算(第四章节将详细介绍),超声波到达时间精度***好达到 MHz 级别,那么就要求参考计时脉冲频率达到 GHz 级别,那么计数器的位数必然很大,消耗更多的内部资源[77][78]。本文确定的脉冲计数法测量传播时间,通过边沿检测算法实现在不增加计时脉冲频率的情况下来提高测时精度[79][80]。第三,针对运行速度慢的缺点,提出了单片机和 FPGA 相结合的硬件结构,其中 FPGA 有较高的晶振频率并采用的是并行处理结构,在高速信号接收和高速的信号处理方面有着明显的优势。因此,采用 FPGA 作为信号接收和处理的芯片。
而单片机有大量的数据线和地址线,可以实现与其它硬件相结合,作为整个系统的控制芯片。因此,采用单片机作为发射和接收超声波信号电路转换、与 PC 机之间的串口通信的芯片。下面,本文就到达信号检测算法和到达时间检测算法进行具体的介绍。考虑本文是基于 C8051F122 为主控芯片和和以 FPGA 为检测芯片的硬件结构对超声波流量计进行改进的,因此本文的超声波流量计的设计的整体方案可设置为如图 3.1 所示。

图 3.1 整体系统结构图
2 接收信号处理模块。 超声流量计中的超声波发出后经过流体后幅值会大幅度衰减,因此接收信号的电路中有信号放大电路。由于超声波在传播过程中伴随着噪声,因此接收信号的电路中有滤波电路。
3 传播时间的测量。 超声波传输信号时间测量分为顺、逆流传播时间测量。传播时间是从超声波发射时刻到超声波接收时刻之间的时间,本文设置发射电路连续发送 8 个正弦波信号作为超声波的发射信号,接收到的信号进行硬件滤波和软件滤波后,对信号进行进一步的处理,得到超声波的到达时间。
1、超声波流量计高精度算法:
本文采用的 FPGA 芯片具有并行处理特点,具有捕获信号和迅速处理数据的特点,因此采用 FPGA 作为信号检测和处理的芯片。不仅如此,流量计的接收模块很容易接收到外部环境、内部电路等噪声信号。因此,提高超声波流量计的测量精度,必须要做好两点工作:一是捕获超声波信号,确定到达时间。二是正确的处理超声波噪声信号以确保回波信号的准确性,达到获得超声波信号的到达时间。下面就如何获取准确的超声波信号和检测准确的到达时间进行介绍和分析。
2、信号捕获算法:
模块设计方案:FPGA 的 8 通道的模拟信号经过放大、滤波后,再经过 A/D 模数转换电路后将超声波换能器的声信号转变为电信号。单片机通过前期数据采集的长度和周期自调当前的采集信号周期。信号采集的算法是基于超声波流量计回波信号的特点设置的。超声波的发射是基于单片机的定时开关电路设计的,因此超声波的发射时间可以准确的得到。
超声波信号的到达时间的检测是超声波流量计的研究的重点。在查阅大量文献后,发现以往的算法都是根据阈值法检测超声波,算法的原理是设定一定的阈值 A,通过比较检测到的信号的幅值与 A 相比,一旦大于阈值 A,则认为超声波信号已经到来,进行信号的捕获与处理,如图 3.2 所示。阈值算法在一般情况下比较适用,有些情况下则不太适用。比如说,在超声波信号到来之前,噪声信号的幅值大于阈值 A,本文就认为超声波信号已经到来,一旦对判断错误的超声波信号进行处理,那么测量结果肯定存在误差。本文在此基础上提出了,双阈值算法与周期算法相结合的算法。
图 3.2 传统捕获算法示意图
图 3.3 双阈值与周期相结合的算法示意图
3、高精度测时算法:
要想提高超声波流量计测量精度,必须提高检测到达时间的准确性。脉冲计数法是计算超声波到达时间***基本的方法,适合测量频率较低的待测信号的。但是脉冲计数法因为其测量精度的局限性,无法满足高精度测量的要求,因此人们在处理此种计数方式都采用将误差量化并将量化误差变小,实现高精度测量。 脉冲计数法是用参考时钟来量化待测时间,脉冲计数法是一种粗测时方法,它的精度取决于计数脉冲的频率的大小,当频率大时,脉冲分辨率就高,测时精度也就越高。工作原理如图3.4 所示,待测时间长度为xT ,参考时钟周期为0T ,脉冲数为0N ,那么计算得到的待测时间为: x0 0T N T (3.1) 实际待测时间为: x0 0T N T T (3.2)
图 3.4 脉冲计数法
从上面的公式可以看出,脉冲计数法的测量误差为 T ,由图 3.4 可以看出参考时钟周期0T会影响测量到达时间的精度。从减少计算得到的时间和实际待测时间 T 的方面着手,方法大致分为两大类。
图 3.5 游标卡尺法
4、高精度测时算法实现过程:
边沿检测算法是将检测信号与参考信号设置在同一个时间点开始,检测两个信号是否同步。如果检测到的信号与参考信号不同步时,则继续检测,直到检测到同步信号为止。通过此种计算方法可将误差转换到参考时钟的周期的整数倍。本文将此种边沿检测算法运用到超声波流量计的信号的检测中,将得到更加准确的检测结果。 那么基于 FPGA 的超声波信号的边沿检测过程是:C8051F122 发射超声波脉冲的同时,同时启动 FPGA 进行超声波传播计数和发射次数计数。
超声波传播时间是将参考时钟周期乘以传播计数的次数,发射计数器计数了总的传播时间内超声波发射的次数。检测分为两个方面,一方面是当接收端接收到超声波信号的时候,立即通知发射端使其继续发射超声波信号。另一方面是检测参考时钟与发射信号1S ,接收信号2S 是否同步。如果不同步,则继续发射超声波,进行下一组信号的边沿检测。图 3.6 表示了边沿检测算法的具体过程。
图 3.6 到达时间检测算法
假定 P 时刻,本文检测到的发射信号2S 与参考时钟同步时,那么立刻关闭超声波信号发射次数计时器和超声波传播时间计数器。那么记录下传播时间计数器的值为tN ,发射次数计数器的值为sN ,参考时钟 0 的周期为0T 。那么在 P 时刻,超声波传播的总时间为 01tN T ,那么在总的传播时间内,发射超声波sN 次,换句话说,这段时间其实是sN 次声程的总传播时间。如果此刻本文用iT 代表超声波从发射到接收的单次声程的时间差,并且假定在接收到的超声波后再发射超声波的间隔时间为 ,那么边沿检测到的单程传播时间可以表示为式(3.3)。 01 1t ssN T NTN (3.3) 边沿检测算法是检测参考时钟与接收信号时钟的同步性,若不同步则继续检测,直到检测到同步为止。根据多次发射超声波时间和接收超声波时间之差,将误差转换到两者之差中,进一步提高了超声波流量计的测量精度。
本章小结:
本章结合周期检测算法和双阈值检测算法以提高波形检测的精度。采用了游标卡尺的原理高精度测量了超声波的到达时间,摒弃传统的芯片倍频方法,占用更少的主控芯片内存,提高了主控芯片的效率。
相关产品: