基于嵌入式系统的模拟量滤波方法及装置与流程

文档序号:23758412发布日期:2021-01-29 19:18阅读:147来源:国知局
基于嵌入式系统的模拟量滤波方法及装置与流程

[0001]
本发明涉及模拟信号处理技术领域,尤其涉及一种基于嵌入式系统的模拟量滤波方法及装置。


背景技术:

[0002]
在智能化控制系统中,传感器是用来感知、测定各种变化量的重要器件,在其使用中的噪声直接影响着智能化。传感器噪声的主要来自系统内外的干扰。在传感器回路中,噪声的强弱与信号和噪声的叠加方式有关。
[0003]
目前,对于噪声的滤波通常采用采用卡尔曼滤波、平均值滤波等方法,即采用卡尔曼算法对ad转换后的模拟量数据进行滤波,或者对一定数量的ad转换后的模拟量值通过求取平均值的方式结果。
[0004]
在实现本发明的过程中,发明人发现如下技术问题:卡尔曼滤波是一种常见的滤波算法,影响其滤波效果的关键参数为过程噪声矩阵和观测噪声矩阵的估计,当二者设计合理的时候,卡尔曼滤波会取得令人满意的效果。但是往往合适的滤波器参数无法获得,导致卡尔曼滤波难以发挥良好的效果,甚至会造成滤波发散,导致ad转换后的模拟量数据无法使用。并且卡尔曼滤波需要引进矩阵运算,对于嵌入式系统来说,其运算量偏大,影响到嵌入式系统的正常运行。
[0005]
平均值滤波算法也是一种常见的滤波算法,其通过对一定数量的ad转换后的模拟量求取平均值,滤除随机噪声的影响。但是其存在以下问题,当求取平均值的ad转换结果数量较少的时候,通过平均值滤波算法难以滤除随机噪声,尤其是波动范围较大的随机噪声的影响。反之,当求取平均值的ad转换结果数量较多的时候,一方面会造成测量结果的严重滞后,对测量的实时性造成影响;另一方面,由于平均值计算需要大量存储float型数据,也会使本就捉襟见肘的嵌入式系统资源更加紧张。平均值滤波算法的改进型,滑动平均值滤波算法也存在相似问题。


技术实现要素:

[0006]
本发明实施例提供了一种基于嵌入式系统的模拟量滤波方法及装置,以解决现有技术中模拟量滤波方法占用嵌入式系统大量资源的技术问题。
[0007]
第一方面,本发明实施例提供了一种基于嵌入式系统的模拟量滤波方法,包括:
[0008]
获取前值采样数据序列均值,所述前值采样数据序列的采样信号个数处于预设的个数阈值范围内;
[0009]
获取当前采样数据序列均值,所述当前采样数据序列的采样信号个数与前值采样数据的采样个数数量相同;
[0010]
根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新;
[0011]
根据更新后的滤波系数、前值采样数据序列和当前采样数据序列对当前采样数据
序列进行滤波。
[0012]
进一步的,所述根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新,包括:
[0013]
采用如下方式对滤波系数进行更新:
[0014]
a=a+(presentvakye-prevalue)*a*k/presentvakye
[0015]
其中,a为滤波系数,k为修正系数,其区间在0%至100%间,prevalue为前值采样数据序列均值,presentvakye为当前采样数据序列均值。
[0016]
进一步的,述获取前值采样数据序列均值,包括:
[0017]
对前值采样数据序列的采样信号进行最大最小值滤波,得到滤波前值采样数据序列,并计算最大最小值滤波后的前值采样数据序列均值。
[0018]
进一步的,所述获取当前采样数据序列均值,包括:
[0019]
对当前采样数据序列的采样信号进行最大最小值滤波,得到滤波当前采样数据序列,并计算最大最小值滤波后的当前采样数据序列均值。
[0020]
进一步的,所述前值采样数据序列的采样信号个数根据采样频率设定,以使得所述前值采样数据序列的初始数据和当前采样数据序列初始数据对应的时间差值满足预设的时间差值阈值。
[0021]
进一步的,在获取前值采样数据序列均值之前,所述方法还包括:
[0022]
设定初始一阶互补滤波器的滤波系数。
[0023]
更进一步的,所述根据更新后的滤波系数、前值采样数据序列和当前采样数据序列对当前采样数据序列进行滤波,包括:
[0024]
利用如下方式进行滤波:
[0025]
滤波结果=presentvakye*a+prevalue*(1-a)
[0026]
第二方面,本发明实施例还提供了一种基于嵌入式系统的模拟量滤波装置,包括:
[0027]
第一获取模块,用于获取前值采样数据序列均值,所述前值采样数据序列的采样信号个数处于预设的个数阈值范围内;
[0028]
第二获取模块,用于获取当前采样数据序列均值,所述当前采样数据序列的采样信号个数与前值采样数据的采样个数数量相同;
[0029]
更新模块,用于根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新;
[0030]
滤波模块,用于根据更新后的滤波系数、前值采样数据序列和当前采样数据序列对当前采样数据序列进行滤波。
[0031]
进一步的,所述更新模块用于:
[0032]
采用如下方式对滤波系数进行更新:
[0033]
a=a+(presentvakye-prevalue)*a*k/presentvakye
[0034]
其中,a为滤波系数,k为修正系数,其区间在0%至100%间,prevalue为前值采样数据序列均值,presentvakye为当前采样数据序列均值。
[0035]
进一步的,所述第一获取模块,包括:
[0036]
第一最大值滤波单元,用于对前值采样数据序列的采样信号进行最大最小值滤波,得到滤波前值采样数据序列,并计算最大最小值滤波后的前值采样数据序列均值。
[0037]
进一步的,所述第二获取模块,包括:
[0038]
第二最大值最小值单元,用于对当前采样数据序列的采样信号进行最大最小值滤波,得到滤波当前采样数据序列,并计算最大最小值滤波后的当前采样数据序列均值。
[0039]
进一步的,所述前值采样数据序列的采样信号个数根据采样频率设定,以使得所述前值采样数据序列的初始数据和当前采样数据序列初始数据对应的时间差值满足预设的时间差值阈值。
[0040]
进一步的,所述装置还包括:设定初始一阶互补滤波器的滤波系数。
[0041]
更进一步的,所述滤波模块用于:
[0042]
利用如下方式进行滤波:
[0043]
滤波结果=presentvakye*a+prevalue*(1-a)。
[0044]
本发明实施例提供的基于嵌入式系统的模拟量滤波方法及装置,通过采集到的时间间隔较短的前值采样数据序列和当前采样数据序列,并计算前值采样数据序列均值和当前采样数据序列均值,由于前值采样数据序列和当前采样数据序列时间间隔非常短,可以将二者分别视作相关的参考量,利用一阶互补滤波器进行滤波计算。由于一阶互补滤波器运算较为简单,且涉及浮点运算的步骤较少,有限较少了嵌入式系统的运算负荷。同时可根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行实时更新,在兼顾运算量的同时,提升了模拟量滤波的准确性。
附图说明
[0045]
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0046]
图1是本发明实施例一提供的基于嵌入式系统的模拟量滤波方法的流程示意图;
[0047]
图2是本发明实施例二提供的基于嵌入式系统的模拟量滤波方法的流程示意图;
[0048]
图3是本发明实施例三提供的基于嵌入式系统的模拟量滤波装置的结构示意图。
具体实施方式
[0049]
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0050]
实施例一
[0051]
图1是本发明实施例一提供基于嵌入式系统的模拟量滤波方法的流程示意图,本实施例可适用于基于嵌入式系统对模拟量进行滤波的情况,该方法可以由基于嵌入式系统的模拟量滤波装置来执行,并可集成于嵌入式系统中,具体包括如下步骤:
[0052]
s110,获取前值采样数据序列均值,所述前值采样数据序列的采样信号个数处于预设的个数阈值范围内。
[0053]
嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求、功能、可靠性、成本、体积、功耗、环境等灵活裁剪软硬件模块的专用计算机系统。
[0054]
嵌入式系统由硬件和软件组成.是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的多方面
的内容。相比于一般的计算机处理系统而言,嵌入式系统存在较大的差异性,它不能实现大容量的存储功能,因为没有与之相匹配的大容量介质。同时由于应用涉及要求,其运算功能也与常用的计算机存在较大的差异。
[0055]
在嵌入式系统中,a/d或d/a模块主要用于测控方面。由于传感器存在系统内外噪声,因此,需要对其进行滤波。
[0056]
在本实施例中,可以利用一阶互补滤波器进行滤波。一阶互补滤波器具有运算量少,响应速度快的优点。适用于嵌入式系统滤波。传统的一阶互补滤波器通常以不同类型的信号,或者将同一类型分别进行不同处理的信号作为运算因子进行滤波计算。在本实施例中,考虑到前后采样时间间隔较短,可以将前值和当前值分别作为运算因子进行计算。
[0057]
同时,考虑到一阶互补滤波器中的比例系数,需要根据实际采样的信号进行更新调整。因此,需要获取前值采样数据系列和当前采样数据系列。
[0058]
在本实施例中,可以预先设定滤波长度n(n不小于3),滤波长度代表了滤波算法每次处理的ad转换后获得的模拟量的数量,n过大会使滤波器产生较大滞后,n过小会造成大量噪声的混入。获取前值采样数据序列,并计算得到前值采样数据序列均值。
[0059]
可选的,所述前值采样数据序列的采样信号个数根据采样频率设定,以使得所述前值采样数据序列和当前采样数据序列对应的时间差值满足预设的时间差值阈值。以满足二者之间的时间间隔要求。
[0060]
s120,获取当前采样数据序列均值,所述当前采样数据序列的采样信号个数与前值采样数据的采样个数数量相同。
[0061]
s130,根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新。
[0062]
滤波系数表明前值采样数据序列和当前采样数据序列的可信度。因此,其需要根据采样数据序列实时变化进行更新,以实现滤波后的数值能够更加贴近实际结果。
[0063]
所述根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新,可以采用如下方式对滤波系数进行更新:
[0064]
a=a+(presentvakye-prevalue)*a*k/presentvakye
[0065]
其中,a为滤波系数,k为修正系数,其区间在0%至100%间,prevalue为前值采样数据序列均值,presentvakye为当前采样数据序列均值。
[0066]
其中,k可以根据实际变化程度进行手动调整。利用当前采样数据序列均值与前值前值采样数据序列均值的差值与滤波系数和修正系数的乘积,进而计算其与当前采样数据序列均值的比值,对滤波系数进行更新。
[0067]
s140,根据更新后的滤波系数、前值采样数据序列和当前采样数据序列对当前采样数据序列进行滤波。
[0068]
所述根据更新后的滤波系数、前值采样数据序列和当前采样数据序列对当前采样数据序列进行滤波,可以利用如下方式进行滤波:
[0069]
滤波结果=presentvakye*a+prevalue*(1-a)。
[0070]
在本实施例中,可以利用重复上述所有步骤,实现连续对采集到的模拟量进行滤波。相应的,在获取前值采样数据序列均值之前,所述方法还包括:设定初始一阶互补滤波器的滤波系数。由于在起始阶段,没有更新的滤波系数,可以人工设定一起始滤波系数。起
始滤波系数可以设定在0-1之间。
[0071]
本实施例通过采集到的时间间隔较短的前值采样数据序列和当前采样数据序列,并计算前值采样数据序列均值和当前采样数据序列均值,由于前值采样数据序列和当前采样数据序列时间间隔非常端,可以将二者分别视作相关的参考量,利用一阶互补滤波器进行滤波计算。由于一阶互补滤波器运算较为简单,且涉及浮点运算的步骤较少,有限较少了嵌入式系统的运算负荷。同时可根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行实时更新,在兼顾运算量的同时,提升了模拟量滤波的准确性。
[0072]
实施例二
[0073]
图2为本发明实施例二提供的基于嵌入式系统的模拟量滤波方法的流程示意图。本实施例以上述实施例为基础进行优化,在本实施例中,将所述获取当前采样数据序列均值,具体优化为:对当前采样数据序列的采样信号进行最大最小值滤波;计算最大最小值滤波后的当前采样数据序列均值。并且将所述获取前值采样数据序列均值,具体优化为:对前值采样数据序列的采样信号进行最大最小值滤波;计算最大最小值滤波后的前值采样数据序列均值。
[0074]
相应的,本实施例所提供的基于嵌入式系统的模拟量滤波方法,具体包括:
[0075]
s210,对前值采样数据序列的采样信号进行最大最小值滤波,得到第一滤波前值采样数据序列,并计算最大最小值滤波后的前值采样数据序列均值,所述前值采样数据序列的采样信号个数处于预设的个数阈值范围内。
[0076]
由上述一阶互补滤波公式可以看出,与卡尔曼滤波相比,由于其运算更为简单,一阶互补滤波跟随较快但是抗干扰能力差。为避免偶发的噪声对滤波结果造成影响,在本实施例中,可以利用最大最小值滤波,剔除掉明显的噪声数据。以使得滤波结果更为准确。
[0077]
相应的,在本实施例中,对前值采样数据序列的采样信号进行最大最小值滤波,得到滤波前值采样数据序列,并计算最大最小值滤波后的前值采样数据序列均值。
[0078]
s220,对当前采样数据序列的采样信号进行最大最小值滤波,得到滤波当前采样数据序列,并计算最大最小值滤波后的当前采样数据序列均值。
[0079]
相应的,对当前采样数据序列进行最大最小值滤波,并得到滤波当前采样数据序列,并计算最大最小值滤波后的当前采样数据序列均值。
[0080]
s230,根据最大最小值滤波后前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新。
[0081]
s240,根据更新后的滤波系数、滤波当前采样数据序列和滤波当前采样数据序列对当前采样数据序列进行滤波。
[0082]
本实施例通过将所述获取当前采样数据序列均值,具体优化为:对当前采样数据序列的采样信号进行最大最小值滤波;计算最大最小值滤波后的当前采样数据序列均值。并且将所述获取前值采样数据序列均值,具体优化为:对前值采样数据序列的采样信号进行最大最小值滤波;计算最大最小值滤波后的前值采样数据序列均值。可以减少由于噪声对一阶互补滤波产生的干扰,减少由于噪声产生的滤波偏差,在保留一阶互补滤波跟随速度快的前提下,减少噪声对于滤波结果影响的偏差。
[0083]
实施例三
[0084]
图3是本发明实施例四提供的基于嵌入式系统的模拟量滤波装置的结构示意图,如图3所示,所述装置包括:
[0085]
第一获取模块310,用于获取前值采样数据序列均值,所述前值采样数据序列的采样信号个数处于预设的个数阈值范围内;
[0086]
第二获取模块320,用于获取当前采样数据序列均值,所述当前采样数据序列的采样信号个数与前值采样数据的采样个数数量相同;
[0087]
更新模块330,用于根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行更新;
[0088]
滤波模块340,用于根据更新后的滤波系数、前值采样数据序列和当前采样数据序列对当前采样数据序列进行滤波。
[0089]
本实施例提供的基于嵌入式系统的模拟量滤波装置,通过采集到的时间间隔较短的前值采样数据序列和当前采样数据序列,并计算前值采样数据序列均值和当前采样数据序列均值,由于前值采样数据序列和当前采样数据序列时间间隔非常端,可以将二者分别视作相关的参考量,利用一阶互补滤波器进行滤波计算。由于一阶互补滤波器运算较为简单,且涉及浮点运算的步骤较少,有限较少了嵌入式系统的运算负荷。同时可根据前值采样数据序列均值和当前采样数据序列均值对一阶互补滤波器的滤波系数进行实时更新,在兼顾运算量的同时,提升了模拟量滤波的准确性。
[0090]
在上述各实施例的基础上,所述更新模块用于:
[0091]
采用如下方式对滤波系数进行更新:
[0092]
a=a+(presentvakye-prevalue)*a*k/presentvakye
[0093]
其中,a为滤波系数,k为修正系数,其区间在0%至100%间,prevalue为前值采样数据序列均值,presentvakye为当前采样数据序列均值。
[0094]
在上述各实施例的基础上,所述第一获取模块,包括:
[0095]
第一最大值滤波单元,用于对前值采样数据序列的采样信号进行最大最小值滤波,得到滤波前值采样数据序列,并计算最大最小值滤波后的前值采样数据序列均值。
[0096]
在上述各实施例的基础上,所述第二获取模块,包括:
[0097]
第二最大值最小值单元,用于对当前采样数据序列的采样信号进行最大最小值滤波,得到滤波当前采样数据序列,并计算最大最小值滤波后的当前采样数据序列均值。
[0098]
在上述各实施例的基础上,所述前值采样数据序列的采样信号个数根据采样频率设定,以使得所述前值采样数据序列的初始数据和当前采样数据序列初始数据对应的时间差值满足预设的时间差值阈值。
[0099]
在上述各实施例的基础上,所述装置还包括:设定初始一阶互补滤波器的滤波系数。
[0100]
在上述各实施例的基础上,所述滤波模块用于:
[0101]
利用如下方式进行滤波:
[0102]
滤波结果=presentvakye*a+prevalue*(1-a)。
[0103]
本发明实施例所提供的基于嵌入式系统的模拟量滤波装置可执行本发明任意实施例所提供的基于嵌入式系统的模拟量滤波方法,具备执行方法相应的功能模块和有益效果。
[0104]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台嵌入式控制器执行本发明各个实施例所述的方法。
[0105]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1