新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AD數據采集的“數字濾波”:10個“軟件濾波程序”

        AD數據采集的“數字濾波”:10個“軟件濾波程序”

        作者: 時間:2016-12-01 來源:網絡 收藏

        4、遞推平均濾波法(又稱滑動平均濾波法)
        A、方法:把連續取N個采樣值看成一個隊列,隊列的長度固定為N ,每次采樣到一個新數據放入隊尾,并扔掉原來隊首的一次數據.(先進先出原則)
        把隊列中的N個數據進行算術平均運算,就可獲得新的濾波結果
        N值的選取:流量,N=12;壓力:N=4;液面,N=4~12;溫度,N=1~4
        B、優點:對周期性干擾有良好的抑制作用,平滑度高,適用于高頻振蕩的系統
        C、缺點:靈敏度低,對偶然出現的脈沖性干擾的抑制作用較差,不易消除由于脈沖干擾所引起的采樣值偏差,不適用于脈沖干擾比較嚴重的場合
        比較浪費RAM

        程序:

        #define N 12

        char value_buf[N];
        char i=0;

        char filter()
        {
        char count;
        int sum=0;
        value_buf[i++] = get_ad();
        if ( i == N ) i = 0;
        for ( count=0;countsum = value_buf[count];
        return (char)(sum/N);
        }

        5、中位值平均濾波法(又稱防脈沖干擾平均濾波法)
        A、方法:相當于“中位值濾波法”+“算術平均濾波法”,連續采樣N個數據,去掉一個最大值和一個最小值,然后計算N-2個數據的算術平均值
        N值的選取:3~14
        B、優點:融合了兩種濾波法的優點
        對于偶然出現的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差
        C、缺點:測量速度較慢,和算術平均濾波法一樣,比較浪費RAM

        程序:


        #define N 12

        char filter()
        {
        char count,i,j;
        char value_buf[N];
        int sum=0;
        for (count=0;count{
        value_buf[count] = get_ad();
        delay();
        }
        for (j=0;j{
        for (i=0;i{
        if ( value_buf[i]>value_buf[i+1] )
        {
        temp = value_buf[i];
        value_buf[i] = value_buf[i+1];
        value_buf[i+1] = temp;
        }
        }
        }
        for(count=1;countsum += value[count];
        return (char)(sum/(N-2));
        }

        6、限幅平均濾波法
        A、方法:相當于“限幅濾波法”+“遞推平均濾波法”,每次采樣到的新數據先進行限幅處理,再送入隊列進行遞推平均濾波處理
        B、優點:融合了兩種濾波法的優點 對于偶然出現的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差
        C、缺點:比較浪費RAM

        程序略 參考子程序1、3

        7、一階滯后濾波法
        A、方法:取a=0~1,本次濾波結果=(1-a)*本次采樣值+a*上次濾波結果
        B、優點:對周期性干擾具有良好的抑制作用 適用于波動頻率較高的場合
        C、缺點:相位滯后,靈敏度低 滯后程度取決于a值大小 不能消除濾波頻率高于采樣頻率的1/2的干擾信號



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 贺州市| 通州市| 呼和浩特市| 沁源县| 易门县| 永城市| 宜黄县| 铁岭县| 万州区| 靖宇县| 惠东县| 怀集县| 施秉县| 镇宁| 体育| 静海县| 平乐县| 永胜县| 长治市| 融水| 托里县| 高陵县| 山丹县| 靖西县| 永嘉县| 介休市| 且末县| 宣汉县| 镇赉县| 民乐县| 三门峡市| 长岭县| 四会市| 西乌珠穆沁旗| 葵青区| 卫辉市| 洛南县| 依兰县| 德州市| 富源县| 河北区|