小信号去噪的ADC滤波方法与流程

文档序号:11146765阅读:4953来源:国知局
小信号去噪的ADC滤波方法与制造工艺

本发明属于电源信号处理的技术领域,特别涉及一种小信号的采集和滤波处理方法。



背景技术:

生活离不开信号的处理,在数字计算机飞速发展的时代,几乎所有的事物都可以作为信号,信号只有经过处理才能变成有用的信息被采用,于是信号的处理尤为重要。信号处理的主要目的就是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者将信号变换成容易处理、传输、分析与识别的形式,以便后续的其他处理。对于信号处理,在我们面前出现了不受物理制约的纯数学的加工,即算法,并确立了信号处理的领域。

对于小信号的处理,由于信号越小时,对其测量的精度要求就越高,但由于小信号很容易受到噪声干扰,故而经常会出现采集到的小信号数据受到噪声干扰产生很多的跳变信号的情况,例如MCU在采集小电流信号时,由于内部ADC模块本身也存在OFFSET,而且电路上的其他干扰也会导致产生较大噪声,影响小电流信号的AD检测,导致进一步影响产品的其他功能,所以对于小信号的AD采集和处理算法尤为重要。

例如,专利申请201410589811.X公开了一种电源剩余电量的检测方法和装置,实现移动电源实时电量的精确测量。所述方法包括:定义执行目标次数的信号采样流程为一组循环,在一组循环中,执行当前信号采样流程;其中,所述信号采样流程包括:按照预设采样周期对电源的充电电流进行多次采样得到多个采样值;取所述多个采样值的均值;对所述均值进行平衡滤波;每执行完一组循环,输出一次实时电源电量。

然而上述的方法仅仅能实现电量的计算,并不能解决不同PCBA板上噪声带来小信号AD采集数据噪声大,不准确的问题。



技术实现要素:

基于此,因此本发明的首要目地是提供一种小信号去噪的ADC滤波方法,该方法可以去除小信号采集过程中的一些跳动噪声,使采集到的小信号ADC更加精确,避免因为AD值跳动导致程序处理的迟滞或错误。

本发明的另一个目地在于提供一种小信号去噪的ADC滤波方法,该方法不仅滤除AD数据中的噪声,还能根据实际情况,通过跳变阈值的调整,来控制跳变范围,得到较为稳定的小信号AD数据。

经研究发现,小信号AD采集不准主要原因为:采集小信号时,ADC采集模块容易受电路上的微小噪声影响,当受到噪声影响时,会导致采集到的AD值不准确,出现跳动,比如突然出现一个很大的采集值,而实际上这种跳动的信号是不存在的,所以需要将这些跳动值通过算法去掉。

为实现上述目的,本发明的技术方案为:

一种小信号去噪的ADC滤波方法,其特征在于该方法采用了两个窗口对AD数据进行加强滤波处理,利用两个窗口对AD数据的对比判断出跳变点,并将跳变点前一点的数值赋值给跳变点,从而去信号采集过程中的除跳动噪声。

由此,该方法的具体实现步骤如下:

步骤1、完成AD检测模块的配置,这里所描述的完成配置,包括配置好AD检测通道,配置好ADC模块的时钟源和ADC转换时间;

步骤2、小信号采集;第一次采集数据时,连续采集N1笔小信号数据,并把这些数据存储在寄存器中,获得临时数据;并定义这组临时数据即为窗口1的数据,其中N1即为窗口1的窗口大小;

上述步骤中,每采集的一笔数据都是通过连续采8次AD后求8次平均得到一个小信号数据,这样连续采集N1个小信号数据,然后对这几个数据进行进一步处理,具体处理步骤在后文阐述,然后再对N1个小信号数据的前M1个数据求平均得到均值R1(M1﹤N1)。

步骤3、通过窗口1获得的数据进一步采集AD数据,获得第二组数据,定义这组临时数据即为窗口1的数据,N2即为窗口2的窗口大小;

具体地说,由窗口1得到一个均值R1后,继续采集AD数据,把新采到的AD数据继续存储在窗口1中,并把原来第一个采到的AD数据替代掉,相当于把窗口向后滑动,然后再对此时的窗口1求均值,得到均值R2;然后再采集新的AD数据,以此类推,得到N2个窗口1的均值。

步骤4、把步骤2中得到的窗口1的均值R1存入窗口2的寄存器,窗口2有N2个寄存器存储数据;最终由窗口2的处理得出一个最终输出值。

在算法验证过程中,采用N2(N2﹤N1)进行验证,即窗口2每次进行处理时,存储N2个窗口1的均值数据。得到这N2个数据后,窗口2同样对这些数据进行进一步处理,这种处理与窗口1数据的处理类似,但是不尽相同,在后文中会对处理方法进行具体阐述。

通过这样两个窗口先后的处理和均值滤波,输出的AD数据可以把跳动的数据去除,得到较为稳定的数据。上述步骤中,都会对窗口1和窗口2中的数据先进行处理,这种处理主要为去除跳变值处理。

对于窗口1中数据的处理方法,具体为:

101、窗口1存储的临时数据为N1个,并对应于N1个数据寄存器,定义这些数据寄存器分别为Sdata[0-N1-1],当每8次平均采集到一个小信号数据时,会把这个小信号数据存进最后一个寄存器Sdata[N1-1],在存入Sdata[N1-1]之前,必须先把原来寄存器里的值都往前面的寄存器存储,即用后一个寄存器的值替代前一个寄存器的值,这样会把第一个寄存器的值淘汰出去,并把最新的AD小信号数据存储进来,相当于把窗口向后滑动,把原来的数据移出窗口,把最新的数据包含进来,由此窗口1得到新的一组临时数据。

102、对于新采集到的窗口1中的数据组,要进行去除跳变值处理,首先是去除单个跳变,方法为将相邻三个寄存器的值两两作对比,设置跳变阈值TH,若发现中间寄存器的值有跳变超过阈值的,则把中间寄存器的值判定为跳变值,并把前一个寄存器的值赋给中间寄存器,把原来中间寄存器的值淘汰掉;若跳变不超过阈值,则判定为非跳变值,对这三个寄存器的值不做处理,并进入下一个比较。例如在N1=5的情况下,首先要比较Sdata[0],Sdata[1],Sdata[2]这三个寄存器的值,若Sdata[1]相对Sdata[0]和Sdata[2]的跳变都超过阈值,则判定为跳变值,把Sdata[0]的值赋给Sdata[1],然后进入下一个比较,即比较Sdata[1],Sdata[2],Sdata[3];若Sdata[1]不是跳变值,则直接进入下一个比较。

103、判定单挑变并处理数据后,再进行双跳变值的判定和处理。判定方法为将相邻的四个寄存器的值两两作比较,设置跳变阈值TH,若发现中间两个寄存器的值相近,相差在阈值范围内,但相比两边寄存器的值有跳变,且跳变超过阈值的,则判定中间两个寄存器的值为双跳变值,并把双跳变值的前一个寄存器的值赋给这两个双跳变的寄存器,把原来双跳变的值淘汰掉;若跳变不超过阈值的,则判定为非跳变值,对四个寄存器的值不做处理,并进入下一个比较。例如在N1=5的情况下,首先要比较Sdata[0],Sdata[1],Sdata[2],Sdata[3]这四个寄存器的值,若Sdata[1]与Sdata[2]的值相近,即跳变不超过阈值,而Sdata[1]与Sdata[0]的值比较,跳变超过阈值,同时Sdata[2]与Sdata[3]的值比较,跳变也超过阈值,则把Sdata[1]和Sdata[2]判定为双跳变值,并把寄存器Sdata[0]的值赋给Sdata[1]和Sdata[2],然后进入下一个比较,即比较Sdata[1],Sdata[2],Sdata[3],Sdata[4];若Sdata[1]和Sdata[2]不是双跳变值,则直接进入下一个比较。

104、对窗口1的AD数据进行去单跳变和双跳变处理后,取前四个寄存器的值进行求平均得到均值R1,并把R1存入窗口2的寄存器中,进行窗口2的处理。

以上为在窗口1中所做的数据处理方法,经过窗口1处理的数据会被存入窗口2,在窗口2中再进行处理,窗口2的数据具体处理方法为:

201、窗口2存储的临时数据为N2(通常N2﹤N1)个,并对应于N2个数据寄存器,定义这些数据寄存器分别为Bdata[0-N2-1]。每当窗口1处理完得到一个新的数据R1输出到窗口2时,会把这个数据存进最后一个寄存器Bdata[N2-1],在存入Bdata[N2-1]之前,必须把原来寄存器里的值都往前面的寄存器存储,即用后一个寄存器的值替代前一个寄存器的值,这样会把第一个寄存器的值淘汰出去,把最新的数据R1存储进来,相当于把窗口向后滑动,由此窗口2得到一组新的临时数据。

202、与窗口1的处理类似的,窗口2首先也要进行单跳变值的判断,判定方法与窗口1一致,若遇到跳变点,同样把前一个寄存器的值赋给跳变点寄存器,而把跳变值淘汰,并输出寄存器Bdata[0]的值作为最终的AD数据。若不是跳变点,则进入双跳变值的判断。

203、判断完单跳变后,接着对窗口2进行双跳变值判断,判断方法同样和窗口1的一致,若Bdata[1]和Bdata[2]为双跳变值,则把Bdata[0]的值赋给这两个寄存器,并输出Bdata[0]的值作为最终的AD数据。若不是双跳变点,则说明Bdata[0]之后的数据有整体向偏大跳动或整体向偏小跳动的趋势,则把窗口2的4个数据直接求平均,并把这个均值赋给窗口2的每一个寄存器,然后输出Bdata[0]的值作为最终AD数据。

上述步骤中,窗口1和窗口2的窗口大小N1、N2和判定跳变的跳变阈值TH这几个值都是客户可以自行根据情况设定的。已经验证过在N1、N2越大的情况下,去噪效果会相对更好,但是会占用更多的寄存器。

本发明不仅实现对小信号AD数据中的不正常跳变数值的去除,滤除AD数据中的噪声,还能根据实际情况,通过跳变阈值的调整,来控制跳变范围,得到较为稳定的小信号AD数据。

附图说明

图1是本发明所实施的处理流程图。

图2是滤波之前的AD数据波形图。

图3为本发明滤波效后的波形图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为本发明所实现的流程图,图中所示,本发明实现的具体步骤如下:

1、配置好ADC采集模块的寄存器配置,包括AD检测通道,时钟源和ADC转换时间等;

2、开启AD转换,连续采集8个AD值并求平均,得到一个临时AD值,这一步骤是做简单滤波,得到的临时AD值将存入窗口1中;

3、窗口1存储的临时数据为5个,每个数据对应一个数据寄存器,定义这5个数据寄存器分别为Sdata[0-4]。将窗口1窗口向后滑动,即将每个寄存器的值赋给前一个寄存器,把Sdata[1]的值赋给Sdata[0],把Sdata[2]赋给Sdata[1],以此类推,把窗口1的数据都向前递推一个寄存器,这样淘汰了最前面的寄存器的数据,也是使用了最久的数据,而空出了最后一个寄存器Sdata[4]来存储新采集到的AD值;

4、对窗口1做单跳变值判断,求Sdata[1]-Sdata[0]的绝对值是否大于阈值TH,此处把阈值设为0.5,即只要AD值有一个值的跳变都会被抑制。同时求Sdata[2]-Sdata[1]的绝对值是否大于TH,如果这两个条件同时满足了,则认为Sdata[1]为跳变值,把Sdata[0]的值赋给Sdata[1],从而把Sdata[1]的跳变值覆盖掉,如果有其中一个条件不满足,则进入下一个判断,判断Sdata[3]-Sdata[2]的绝对值,以此类推,判断完三组数据;

5、当进行单跳变值判断时,可以同时进行双跳变值的判断,如若Sdata[1]-Sdata[0]的绝对值大于阈值TH,则继续判断Sdata[2]-Sdata[1]的绝对值是否大于TH,若是则说明Sdata[1]为单跳变值,若不是则有可能为双跳变值,接着判断Sdata[3]-Sdata[2]的绝对值是否大于TH,如果是则说明Sdata[2]和Sdata[1]为双跳变值,把寄存器Sdata[0]的值赋给Sdata[2]和Sdata[1],覆盖掉双跳变值,若不是,则仍进入下一个判断;

6、对窗口1做去跳变值处理后,最后对窗口1前四个寄存器的值做求平均处理,得到一个临时数据R1;

7、窗口2存储的临时数据为4个,每个数据对应一个数据寄存器,定义这四个数据寄存器分别为Bdata[0-3]。对窗口2作步骤三的操作,空出最后一个寄存器Bdata[3],并把步骤6中得到的均值R1存入Bdata[3]中;

8、对窗口2同样进行单跳变值的判断,但在窗口2中只需要判断一次,即判断前三个寄存器,判断Bdata[1]-Bdata[0]的绝对值是否大于TH,若不是则说明没有单跳变也没有双跳变,直接输出Bdata[0]的值作为这一次AD采集的最终值;若是则说明有跳动,继续判断Bdata[2]-Bdata[1]的绝对值是否大于TH,若是则说明Bdata[1]为跳变值,把Bdata[0]的值赋给Bdata[1],然后输出Bdata[0]作为这一次AD采集的最终值;若不是则可能有双跳变值,继续判断Bdata[3]-Bdata[2]的绝对值是否大于TH,若是则说明Bdata[2]和Bdata[1]为双跳变值,把Bdata[0]的值赋给这两个寄存器,覆盖掉双跳变值,然后输出Bdata[0]作为这一次AD采集的最终值;

9、接着上一个步骤,若Bdata[3]-Bdata[2]的绝对值不大于TH,则说明AD数据已经整体发生变化,需要对原来的值进行更新,把窗口2的四个值进行求平均处理,并把得到的均值赋给窗口2的四个寄存器,然后输出Bdata[0]作为这一次AD采集的最终值,即输出的为均值。

窗口1和窗口2的窗口大小N1、N2和判定跳变的跳变阈值TH这几个值都是客户可以自行根据情况设定的。为了节省数据存储空间和程序空间,这里采用N1=5,N2=4这两种值进行验证。其中N1选择5是为了在窗口1中多一次判断双跳变的情况,但实际上做平均时,窗口1只选择前四个数据做平均处理。而阈值TH的选择直接影响了数据的波动,故TH的值不能选值过大,选值太大会导致算法对跳变的判定范围变大,无法达到去噪声的效果,所以应当选择合适的阈值以保证算法的效果。

可以发现,每一次采集新AD数据并进行处理后,窗口2的数据不一定会有改动,只有到有跳变值出现时才有值被改动,或当数据整体发生变化时,所有数据才会发生变化,在每次采集中,最后输出的数据为Bdata[0],Bdata[0]在这次采集中很难被改动,它是上一次采集AD时的Bdata[1],所以这种方法输出的数据是有一定滞后的,可以更加充分的去除AD小信号数据的噪声,保证了数据的稳定性。

如图2、图3所示,图2为原始AD数据,图3为算法处理后输出的AD数据,采集的数据量有一万个以上,为了清晰显示,这里图片只截取六千个数据,从图2的波形可以看出原来的数据跳动噪声非常大,而经过算法处理后,数据基本稳定在一个较为准确的小范围,如图3所示。

因此,本发明不仅实现对小信号AD数据中的不正常跳变数值的去除,滤除AD数据中的噪声,还能根据实际情况,通过跳变阈值的调整,来控制跳变范围,得到较为稳定的小信号AD数据。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1