一种ad采样的软件滤波方法
【专利摘要】本发明提供一种AD采样的软件滤波方法,将采集到的AD采样值存入数组ADCLSB及数组ADCCOM中,包括以下步骤:步骤S1、判断数组ADCLSB是否已满,若已满,则转入步骤S5;若没满,则转入步骤S2;步骤S2、判断数组ADCCOM是否已满,若没满,则跳出;若已满,则转入步骤S3;步骤S3、对数组ADCCOM中的采样值进行判断,得出当前数组ADCCOM中采样值的判断值;步骤S4:根据判断值判断采样值为干扰值还是信号正常变化,并更新数组ADCCOM和数组ADCLSB;步骤S5、对数组ADCLSB中的数据进行算术平均滤波及RC滤波,从而得到最终的AD采样值。本发明的AD采样的软件滤波方法易实现、响应快、抗干扰性高,且可有效地抑制噪声。
【专利说明】一种AD采样的软件滤波方法
【技术领域】
[0001]本发明涉及一种滤波方法,特别是涉及一种AD采样的软件滤波方法。
【背景技术】
[0002]传统仪表中采用单片机控制AD转换电路的方法来采集模拟信号,并将采集到的数字序列存入单片机中。单片机再对上述数字序列的进行滤波处理。软件滤波就是用软件来识别有用信号和干扰信号,并滤除干扰信号。常见的滤波方法有中位值滤波、算数平均滤波法、消抖滤波法。
[0003]具体地,中位值滤波法连续采样N次(N取奇数),并把N次采样值按大小排列,取中间值为本次有效值。该滤波法能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果。
[0004]算术平均滤波法连续取N个采样值进行算术平均运算。该滤波法适用于对一般具有随机干扰的信号进行滤波。但是对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM。
[0005]消抖滤波法设置一个滤波计数器将每次采样值与当前有效值比较:如果采样值等于当前有效值,则计数器清零;如果采样值不等于当前有效值,则计数器加1,并判断计数器是否溢出,如果计数器溢出,则将本次采样值替换为当前有效值,并清零计数器。
[0006]但是,上述滤波方法往往存在响应不及时、工业抗干扰性能指标不高,对噪声的抗干扰程度低等缺点。
【发明内容】
[0007]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种AD采样的软件滤波方法,其易实现、响应快、EMC性能高,且可有效地抑制噪声。
[0008]为实现上述目的及其他相关目的,本发明提供一种AD采样的软件滤波方法,将采集到的AD采样值存入数组ADCLSB及数组ADCCOM中,包括以下步骤:
[0009]步骤S1、判断数组ADCLSB是否已满,若已满,则转入步骤S5 ;若没满,则转入步骤S2 ;
[0010]步骤S2、判断数组ADCCOM是否已满,若没满,则跳出;若已满,则转入步骤S3 ;
[0011]步骤S3、对数组ADCCOM中的采样值进行判断,得出当前数组ADCCOM中采样值的判断值;
[0012]步骤S4:根据判断值判断采样值为干扰值还是信号正常变化,并更新数组ADCCOM和数组ADCLSB ;
[0013]步骤S5、对数组ADCLSB中的数据进行算术平均滤波及RC滤波,从而得到最终的AD采样值。
[0014]根据上述的AD采样的软件滤波方法,其中:步骤S4中,若无法判断数据的变化为干扰还是信号的正常变化,则更新数组ADCCOM及ADCLSB,等待下次判断;若判断某一数据为干扰值,则剔除干扰值,并用当前采样值替换干扰值,更新数组ADCCOM及ADCLSB ;若判断数据的变化为信号发生正常变化,更新数组ADCCOM及数组ADCLSB。
[0015]根据上述的AD采样的软件滤波方法,其中:数组ADCCOM的长度要小于数组ADCLSB的长度。
[0016]根据上述的AD采样的软件滤波方法,其中:步骤S3中,设定数组ADCCOM的长度为d,则通过如下规则获得当前数组ADCCOM中采样值的判断值:
[0017]设ADCCOM[i]表示数组ADCCOM中的第i+Ι个值;
[0018]若IADCCOM[I]-ADCCOM[O] I >n成立,则将该情况的判断结果记为1,反之记为O ;
[0019]若IADCCOM[2]-ADCCOM[O] | >n成立,则将该情况的判断结果记为1,反之记为O ;
[0020]以此类推,
[0021]若IADCCOM[d-1]-ADCCOM[O] I >n成立,则将该情况的判断结果记为1,反之记为O ;
[0022]依次将上述d-Ι个判断结果组合起来即可得到当前数组ADCCOM中采样值的判断值;
[0023]其中,η为设定值。
[0024]根据上述的AD采样的软件滤波方法,其中:步骤S4中,通过观察判断值得到采样值的变化情况,
[0025]若采样值的明显变化发生在数组ADCCOM的中间,则认为明显变化的采样值为干扰值;
[0026]若整个数组ADCCOM中的采样值均发生了明显变化,则认为是信号的正常变化;
[0027]在其他情况下,则认为无法判断是干扰还是信号的正常变化,须等待下次判断。
[0028]根据上述的AD采样的软件滤波方法,其中:步骤S4中,若无法判断数据的变化为干扰还是信号的正常变化,则更新数组ADCCOM时,将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值;数组ADCLSB保持不变。
[0029]根据上述的AD采样的软件滤波方法,其中:步骤S4中,若判断某一数据为干扰值,则更新数组ADCCOM时,剔除干扰值,并用当前采样值替换干扰值,再将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值,并更新数组ADCLSB中的相应值。
[0030]根据上述的AD采样的软件滤波方法,其中:步骤S4中,若判断数据的变化为信号发生正常变化,则更新数组时,将数组ADCCOM中所有的数据改成当前AD采样值,并更新数组ADCLSB中的相应值。
[0031]如上所述,本发明的AD采样的软件滤波方法,具有以下有益效果:
[0032](I)能够识别信号正常变化,及时响应信号变化,并能保证信号平滑度;
[0033](2)能够有效识别AD采样中信号的干扰值,并剔除干扰,具有很强的抗干扰性能、噪声抑制性能。
【专利附图】
【附图说明】
[0034]图1显示为本发明的AD采样的软件滤波方法的步骤流程图;
[0035]图2显示为本发明的AD采样的软件滤波方法的软件流程图。
【具体实施方式】
[0036]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0037]需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0038]在本发明的AD采样的软件滤波方法中,首先需要对AD采样值进行分组判断,得到相应的判断值。
[0039]单片机将当前采集到的AD采样值存入数组ADCLSB及数组ADCCOM中。其中,数组ADCLSB中的采样值用于进行平均滤波及RC滤波。数组ADCCOM中的采样值用于判断信号的变化情况。数组ADCCOM的长度要小于数组ADCLSB的长度。在实际使用中,数组ADCCOM的长度一般取为4,但不限于4。保存后,单片机对数组ADCCOM中的采样值进行判断,判断其中的采样值哪些为干扰值,哪些为正常值。若采样值为干扰值,则将其替换为正常值,并更新数组ADCLSB中的相应值,以保证数组ADCLSB中存储的为无干扰的值。在本发明中,采用当前采样值来替换干扰值。
[0040]设定数组ADCCOM的长度为d,则通过如下规则获得当前数组ADCCOM中采样值的判断值:
[0041]设ADCCOM[i]表示数组ADCCOM中的第i+Ι个值;
[0042]若IADCCOM[I]-ADCCOM[O] | >n成立,则将该情况的判断结果记为1,反之记为O ;
[0043]若IADCCOM[2]-ADCCOM[O] | >n成立,则将该情况的判断结果记为1,反之记为O ;
[0044]以此类推,
[0045]若|ADCC0M[d-l]_ADCC0M[0] |>n成立,则将该情况的判断结果记为1,反之记为O。
[0046]依次将上述d-Ι个判断结果组合起来即可得到当前数组ADCCOM中采样值的判断值。
[0047]其中,η为一个设定值,由日常经验值来确定,通常为现场信号最大AD采样值的1/100,但不限于此值。只要能有效去除采样值中的干扰值的η,均可选取。若采样值变化大于η,则认为信号由于干扰或信号正常变化而发生了变化,并且被AD转换电路识别了。
[0048]分析得到的当前数组ADCCOM中的采样值的判断值,判断采样值的变化为干扰还是信号的正常变化。通常,根据下述规则来判断采样值的变化:
[0049]若采样值的明显变化发生在数组ADCCOM的中间,则认为明显变化的采样值为干扰值;更新数组ADCCOM时,剔除干扰值,并用当前采样值替换干扰值,再将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值,并更新数组ADCLSB中的相应值。
[0050]若整个数组ADCCOM中的采样值均发生了明显变化,则认为是信号的正常变化;更新数组时,将数组ADCCOM中所有的数据改成当前AD采样值,并更新数组ADCLSB中的相应值。
[0051]在其他情况下,则认为无法判断是干扰还是信号的正常变化,须等待下次判断;更新数组ADCCOM时,将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值;数组ADCLSB保持不变。
[0052]具体地,假设数组ADCCOM的长度为4,则判断规则如下:
[0053]若IADCCOM[I]-ADCCOM[O] | >n成立,则单片机将该情况的判断结果记为1,反之记为O ;
[0054]若IADCCOM[2]-ADCCOM[O] | >n成立,则单片机将该情况的判断结果记为1,反之记为O ;
[0055]若IADCCOM[3]-ADCCOM[O] | >n成立,则单片机将该情况的判断结果记为1,反之记为O。
[0056]上述三位二进制码的组合即为数组ADCCOM中的采样值的判断值。具体地,判断值有以下8种组合结果:
[0057]000:此时 ADCC0M[0] ,ADCCOM[I] ,ADCCOM[2] ,ADCCOM[3]无明显变化,单片机更新数组ADCC0M,等待下次判断。
[0058]001:此时 ADCC0M[0] ,ADCCOM[I] ,ADCCOM[2]无明显变化,ADCCOM[3]变化明显,但并不能判断出其为干扰或信号的正常变化,单片机更新数组ADCC0M,等待下次判断。
[0059]010:此时 ADCCOM[O]、ADCCOM[I]、ADCCOM[3]无明显变化,ADCCOM[2]变化明显。由于数据在中间发生变化,可以判断ADCC0M[2]为干扰数据,剔除该数据,并替换为ADCCOM[3],单片机更新数组ADCC0M,同时反馈给数组ADCLSB。
[0060]011:此时 ADCC0M[0] ,ADCCOM[I]无明显变化,ADCCOM[2] ,ADCCOM[3]变化明显,但并不能判断出其为干扰或信号的正常变化,单片机更新数组ADCC0M,等待下次判断。
[0061]100:此时 ADCCOM[O]、ADCCOM[2]、ADCCOM[3]无明显变化,ADCCOM[I]变化明显。由于数据在中间发生变化,可以判断ADCC0M[1]为干扰数据,剔除该数据,并替换为ADCCOM[3],单片机更新数组ADCC0M,同时反馈给数组ADCLSB。
[0062]101:此时 ADCC0M[0]和 ADCC0M[2]无明显变化,ADCCOM[I]和 ADCC0M[3]变化明显。由于数据在中间及结尾均发生变化,此时不能判断其为为干扰或信号的正常变化,单片机更新ADCCOM数组,等待下次判断。
[0063]110:此时ADCC0M[1]、ADCC0M[2]变化明显,ADCCOM[3]变化不明显,此时不能判断其为为干扰或信号正常变化,单片机更新数组ADCC0M,等待下次判断。
[0064]111:此时ADCC0M[1] ,ADCCOM[2] ,ADCCOM[3]变化明显,此时可以判断现场信号变化,保留ADCC0M[0],并将ADCC0M[1] ,ADCCOM[2] ,ADCCOM[3]中的数据均替换为当前的采样值,单片机更新数组ADCC0M,同时反馈给数组ADCLSB。
[0065]其中,在判断值为000-110的情况下更新数组ADCCOM时,将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值。
[0066]在判断值为111的情况下更新数组AQDCC0M时,将数组ADCCOM中的数据均更新为当前AD采样值。
[0067]参照图1和图2,本发明的AD采样的软件滤波方法包括如下步骤:
[0068]步骤S1、判断数组ADCLSB是否已满,若已满,则转入步骤S5 ;若没满,则转入步骤S2 ;
[0069]步骤S2、判断数组ADCCOM是否已满,若没满,则跳出;若已满,则转入步骤S3 ;
[0070]步骤S3、对数组ADCCOM中的采样值进行判断,得出当前数组ADCCOM中采样值的判断值;
[0071]步骤S4:根据判断值判断采样值为干扰值还是信号正常变化,并更新数组ADCCOM和数组ADCLSB ;
[0072]其中,在数组ADCCOM的长度为4的情况下,若判断值为O、1、3、5、6,则认为无法判断为干扰值还是信号的正常变化,更新数组ADCC0M,等待下次判断。
[0073]若判断值为2、4,则认为有干扰值,剔除干扰值,并用当前采样值替换干扰值,更新数组 ADCCOM 及 ADCLSB ;
[0074]若判断值为7,则认为信号发生正常变化,更新数组ADCCOM及数组ADCLSB。
[0075]步骤S5、对数组ADCLSB中的数据进行算术平均滤波及RC滤波,从而得到最终的AD采样值。
[0076]综上所述,本发明的AD采样的软件滤波方法易实现、响应快、抗干扰性高,且可有效地抑制噪声。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0077]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属【技术领域】中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【权利要求】
1.一种AD采样的软件滤波方法,将采集到的AD采样值存入数组ADCLSB及数组ADCCOM中,其特征在于,包括以下步骤: 步骤S1、判断数组ADCLSB是否已满,若已满,则转入步骤S5 ;若没满,则转入步骤S2 ; 步骤S2、判断数组ADCCOM是否已满,若没满,则跳出;若已满,则转入步骤S3 ; 步骤S3、对数组ADCCOM中的采样值进行判断,得出当前数组ADCCOM中采样值的判断值; 步骤S4:根据判断值判断采样值为干扰值还是信号正常变化,并更新数组ADCCOM和数组 ADCLSB ; 步骤S5、对数组ADCLSB中的数据进行算术平均滤波及RC滤波,从而得到最终的AD采样值。
2.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:步骤S4中,若无法判断数据的变化为干扰还是信号的正常变化,则更新数组ADCCOM及ADCLSB,等待下次判断;若判断某一数据为干扰值,则剔除干扰值,并用当前采样值替换干扰值,更新数组ADCCOM及ADCLSB ;若判断数据的变化为信号发生正常变化,更新数组ADCCOM及数组ADCLSB。
3.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:数组ADCCOM的长度要小于数组ADCLSB的长度。
4.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:步骤S3中,设定数组ADCCOM的长度为d,则通过如下规则获得当前数组ADCCOM中采样值的判断值: 设ADCC0M[i]表示数组ADCCOM中的第i+Ι个值; 若|ADCC0M[1]-ADCC0M[0] |>n成立,则将该情况的判断结果记为1,反之记为O ; 若|ADCC0M[2]-ADCC0M[0] |>n成立,则将该情况的判断结果记为1,反之记为O ;以此类推, 若|ADCC0M[d-l]_ADCC0M[0] |>n成立,则将该情况的判断结果记为1,反之记为O ;依次将上述d-Ι个判断结果组合起来即可得到当前数组ADCCOM中采样值的判断值;其中,η为设定值。
5.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:步骤S4中,通过观察判断值得到采样值的变化情况, 若采样值的明显变化发生在数组ADCCOM的中间,则认为明显变化的采样值为干扰值; 若整个数组ADCCOM中的采样值均发生了明显变化,则认为是信号的正常变化; 在其他情况下,则认为无法判断是干扰还是信号的正常变化,须等待下次判断。
6.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:步骤S4中,若无法判断数据的变化为干扰还是信号的正常变化,则更新数组ADCCOM时,将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值;数组ADCLSB保持不变。
7.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:步骤S4中,若判断某一数据为干扰值,则更新数组ADCCOM时,剔除干扰值,并用当前采样值替换干扰值,再将数组ADCCOM中的第一个数据扔掉,后面的数据依次向前移,最后一个数据采用当前AD采样值,并更新数组ADCLSB中的相应值。
8.根据权利要求1所述的AD采样的软件滤波方法,其特征在于:步骤S4中,若判断数据的变化为信号发生正常变化,则更新数组时,将数组ADCCOM中所有的数据改成当前AD采样值,并更新数组ADCLSB中的相应值。
【文档编号】H03M1/54GK104378115SQ201310347971
【公开日】2015年2月25日 申请日期:2013年8月12日 优先权日:2013年8月12日
【发明者】陈小全, 陈出新, 杜刚, 周婷, 王竹平 申请人:上海辰竹仪表有限公司