色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

常用的ADC濾波算法有哪些

CHANBAEK ? 來源:網絡整理 ? 2024-10-08 14:35 ? 次閱讀

ADC模數轉換器)濾波算法信號處理中起著至關重要的作用,它們能夠幫助我們提取出有用的信號,同時濾除噪聲和干擾。以下是常用的ADC濾波算法詳解,這些算法各具特色,適用于不同的應用場景。

一、限幅濾波法(又稱程序判斷濾波法)

1. 方法

根據經驗判斷,確定兩次采樣允許的最大偏差值(設為A)。每次檢測到新值時判斷:如果本次值與上次值之差小于等于A,則本次值有效;如果本次值與上次值之差大于A,則本次值無效,放棄本次值,用上次值代替本次值。

2. 優點

  • 能有效克服因偶然因素引起的脈沖干擾。

3. 缺點

  • 無法抑制周期性干擾,平滑度差。

4. 示例程序

#define A 10  
char value;  
char filter() {  
    char new_value;  
    new_value = get_ad(); // 獲取采樣值  
    if (abs(new_value - value) > A)  
        return value; // abs()取絕對值函數  
    return new_value;  
}

二、中位值濾波法

1. 方法

連續采樣N次(N取奇數),把N次采樣值按大小排列,取中間值為本次有效值。

2. 優點

  • 能有效克服因偶然因素引起的波動干擾。
  • 對溫度、液位等變化緩慢的被測參數有良好的濾波效果。

3. 缺點

  • 對流量、速度等快速變化的參數不宜使用。

4. 示例程序

#define N 11  
char filter() {  
    char value_buf[N];  
    char count, i, j, temp;  
    for (count = 0; count < N; count++) {  
        value_buf[count] = get_ad();  
        delay();  
    }  
    for (j = 0; j < (N - 1); j++) {  
        for (i = 0; i < (N - j); 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;  
            }  
        }  
    }  
    return value_buf[(N - 1) / 2];  
}

三、算術平均濾波法

1. 方法

連續取N個采樣值進行算術平均運算。N值較大時,信號平滑度較高,但靈敏度較低;N值較小時,信號平滑度較低,但靈敏度較高。N值的選取通常根據被測參數的特性來確定,如一般流量N=12,壓力N=4。

2. 優點

  • 適用于對一般具有隨機干擾的信號進行濾波。這類信號的特點是有一個平均值,信號在某一數值范圍附近上下波動。

3. 缺點

  • 對于測量速度較慢或要求數據計算速度較快的實時控制不適用。
  • 比較浪費RAM。

4. 示例程序

#define N 12  
char filter() {  
    int sum = 0;  
    for (count = 0; count < N; count++) {  
        sum += get_ad();  
    }  
    return (char)(sum / N);  
}

四、遞推平均濾波法(又稱滑動平均濾波法)

1. 方法

把連續取N個采樣值看成一個隊列。隊列的長度固定為N,每次采樣到一個新數據放入隊尾,并扔掉原來隊首的一次數據(先進先出原則)。把隊列中的N個數據進行算術平均運算,就可獲得新的濾波結果。N值的選取同樣根據被測參數的特性來確定,如流量N=12,壓力N=4,液面N=4~12,溫度N=1~4。

2. 優點

  • 對周期性干擾有良好的抑制作用,平滑度高。
  • 適用于高頻振蕩的系統。

3. 缺點

  • 靈敏度低。
  • 對偶然出現的脈沖性干擾的抑制作用較差,不易消除由于脈沖干擾所引起的采樣值偏差。
  • 不適用于脈沖干擾比較嚴重的場合。
  • 比較浪費RAM。

4. 示例程序 (注意:此示例程序與上述示例有所不同,但原理相同)

#define N 12  
char filter() {  
    int sum = 0;  
    for (count = 0; count < N; count++) {  
        sum += get_ad();  
    }  
    return (char)(sum / N);  
}

五、中位值平均濾波法(又稱防脈沖干擾平均濾波法)

1. 方法

相當于“中位值濾波法”+“算術平均濾波法”。連續采樣N個數據,去掉一個最大值和一個最小值,然后計算N-2個數據的算術平均值。N值的選取通常為3~14。

2. 優點

  • 融合了兩種濾波法的優點。
  • 對于偶然出現的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差。

3. 缺點

  • 測量速度較慢。
  • 比較浪費RAM。

4. 示例程序 (注意:此示例程序為簡化版,未包含所有細節)

#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; count < N; count++) {  
        sum += value_buf[count];  
    }  
    return (char)(sum / N);  
}

六、限幅平均濾波法

1. 方法

相當于“限幅濾波法”+“遞推平均濾波法”。每次采樣到的新數據先進行限幅處理,再送入隊列進行遞推平均濾波處理。

2. 優點

  • 融合了兩種濾波法的優點。
  • 對于偶然出現的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差。

3. 缺點

  • 比較浪費RAM。

4. 示例程序 (注意:此示例程序結合了限幅和遞推平均濾波的特點)

#define A 10  
#define N 12  
char value, i = 0;  
char value_buf[N];  
char filter() {  
    char new_value, sum = 0;  
    new_value = get_ad();  
    if (abs(new_value - value) < A) {  
        value_buf[i++] = new_value;  
        if (i == N)  
            i = 0;  
        for (count = 0; count < N; count++) {  
            sum += value_buf[count];  
        }  
        return (char)(sum / N);  
    } else {  
        return value; // 或者使用其他處理方式,如返回上次有效值等  
    }  
}  
// 注意:此示例程序中的“value”變量需要在外部進行初始化和更新,以確保其有效性。同時,為了簡化代碼,未包含所有錯誤處理和邊界檢查。

七、一階滯后濾波法

1. 方法

取a=0~1,本次濾波結果=(1-a)×本次采樣值+a×上次濾波結果。

2. 優點

  • 對周期性干擾具有良好的抑制作用。
  • 適用于波動頻率較高的場合。

3. 缺點

  • 相位滯后,靈敏度低。滯后程度取決于a值大小。
  • 不能消除濾波頻率高于采樣頻率的1/2的干擾信號。

4. 示例程序 (注意:此示例程序中的a值可以根據需要進行調整)

#define a 30 // 取0~100之間的值進行換算,如a=30表示0.3的系數  
char value;  
char filter() {  
    char new_value;  
    new
#define a 30 // 取0~100之間的值進行換算,如a=30表示0.3的系數  
char value; // 上次濾波結果,需要在外部進行初始化和更新  
char filter() {  
    char new_value = get_ad(); // 本次采樣值  
    value = (100 - a) * new_value / 100 + a * value / 100; // 按照公式進行計算,注意這里將a換算為了百分比形式  
    // 或者等價地寫作:value = new_value * (1 - a/100) + value * (a/100);  
    return value;  
}

注意

  • 在實際使用中,a的值通常需要根據具體情況進行調整,以達到最佳的濾波效果。
  • 一階滯后濾波法雖然能夠抑制周期性干擾,但會引起相位滯后,這在某些對實時性要求較高的應用中可能是一個缺點。

八、加權遞推平均濾波法

1. 方法

對連續N個采樣值,分別乘以不同的加權系數,然后進行算術平均運算。各加權系數的取值通常根據被測參數的特性來確定,如流量測量中的加權系數可以設為中間大兩頭小,即越接近當前時刻的采樣值,其加權系數越大。

2. 優點

  • 能夠更靈活地適應被測參數的變化特性。
  • 通過選擇合適的加權系數,可以優化濾波效果。

3. 缺點

  • 加權系數的選擇需要一定的經驗和試驗。
  • 計算量相對較大,可能影響實時性。

4. 示例程序 (注意:此示例程序為簡化版,未包含所有細節和加權系數的具體選擇)

#define N 5  
char value_buf[N];  
int weight[N] = {1, 2, 3, 2, 1}; // 示例加權系數,可以根據需要調整  
char i = 0;  
char filter() {  
    char count;  
    int sum = 0, weighted_sum = 0;  
    value_buf[i++] = get_ad();  
    if (i == N)  
        i = 0;  
    for (count = 0; count < N; count++) {  
        sum += value_buf[count];  
        weighted_sum += value_buf[count] * weight[count];  
    }  
    // 可以選擇返回算術平均值或加權平均值  
    // return (char)(sum / N); // 算術平均值  
    return (char)(weighted_sum / (weight[0] + weight[1] + weight[2] + weight[3] + weight[4])); // 加權平均值  
}

九、消抖濾波法

1. 方法

設置一個濾波計數器,將每次采樣值與當前有效值進行比較。如果采樣值與當前有效值相等,則計數器清零;如果采樣值與當前有效值不相等,則計數器加1。當計數器達到預設的上限值(如5次)時,本次采樣值被認定為有效值,并用其更新當前有效值。

2. 優點

  • 能夠有效消除因按鍵抖動或傳感器不穩定引起的誤判。

3. 缺點

  • 對于快速變化的信號可能不適用。
  • 濾波計數器上限值的選擇需要一定的經驗和試驗。

4. 示例程序 (注意:此示例程序以按鍵消抖為例)

#define FILTER_THRESHOLD 5 // 濾波計數器上限值  
char current_value = 0; // 當前有效值  
unsigned char filter_counter = 0; // 濾波計數器  
  
char filter(char new_value) {  
    if (new_value == current_value) {  
        filter_counter = 0; // 采樣值與當前有效值相等,計數器清零  
    } else {  
        filter_counter++; // 采樣值與當前有效值不相等,計數器加1  
        if (filter_counter >= FILTER_THRESHOLD) {  
            current_value = new_value; // 計數器達到上限值,更新當前有效值  
            filter_counter = 0; // 計數器清零  
        }  
    }  
    return current_value;  
}

總結

以上介紹了九種常用的ADC濾波算法,每種算法都有其特點和適用場景。在實際應用中,需要根據被測參數的特性、采樣頻率、實時性要求以及系統資源等因素綜合考慮,選擇最合適的濾波算法。同時,也需要注意濾波算法可能帶來的相位滯后、靈敏度降低等副作用,并采取相應的措施進行優化。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • adc
    adc
    +關注

    關注

    99

    文章

    6533

    瀏覽量

    545454
  • 模數轉換器
    +關注

    關注

    26

    文章

    3218

    瀏覽量

    126952
  • 濾波算法
    +關注

    關注

    2

    文章

    89

    瀏覽量

    13758
收藏 人收藏

    評論

    相關推薦

    STM32的ADC項目應用,用什么算法濾波和穩定數據抖動?

    STM32的ADC項目應用,大家都用什么算法濾波和穩定數據抖動。 ADC數據的抖動有時候應用在項目上讓人很是頭疼,什么度娘十大濾波
    發表于 04-17 08:20

    常用的經典濾波算法哪些??

    常用的經典濾波算法哪些??
    發表于 07-01 15:15

    AD轉換常用濾波算法

    非常經典的濾波算法!
    發表于 05-05 14:29

    AD轉換常用濾波算法

    AD轉換常用濾波算法
    發表于 08-01 10:46

    介紹幾種嵌入式常用濾波算法的matlab實現

    隨著基于模型設計的廣泛應用,模型在環仿真也逐漸多了起來,我們今天介紹幾種嵌入式常用濾波算法的matlab實現。一、采用數字濾波算法克服隨機干
    發表于 12-21 08:32

    分享幾種較簡單而常用濾波算法

    在單片機開發中,經常需要對輸入的數據進行過濾處理,如傳感器數據輸出,AD采樣等,合適的濾波處理能達到更好效果。下面分享幾種較簡單而常用濾波算法:文章目錄@[toc]一、限幅
    發表于 12-21 06:10

    什么現成的濾波算法來消除ADC采集溫度的波動呢

    圖上是adc采集多組原始數據的平均值,隨著溫度漸變也會上下波動,什么現成的濾波算法來消除波動呢?ADC采集溫度用什么
    發表于 07-27 10:23

    ADC數據進行濾波可以用中值濾波算法嗎?

    ADC數據進行濾波可以用中值濾波算法
    發表于 10-09 06:29

    卡爾曼濾波算法對比其他的濾波算法什么優點?

    卡爾曼濾波算法對比其他的濾波算法什么優點
    發表于 10-11 06:42

    常用的Σ-Δ ADC數字濾波器類型

    您有沒有想過Σ-Δ模數轉換器(ADC)如何才能在不同帶寬下獲得如此高的分辨率?秘訣就在于數字濾波器。Σ-Δ ADC之所以與其他類型的數據轉換器不同,是因為它們通常集成有數字濾波器。本系
    發表于 06-09 03:37 ?9757次閱讀
    <b class='flag-5'>常用</b>的Σ-Δ <b class='flag-5'>ADC</b>數字<b class='flag-5'>濾波</b>器類型

    常用的Σ-Δ_ADC數字濾波器類型

    常用的Σ-Δ_ADC數字濾波器類型,學習資料,感興趣的可以瞧一瞧。
    發表于 10-26 17:00 ?0次下載

    單片機常用PID濾波算法資料匯總

    單片機常用PID濾波算法資料匯總
    發表于 05-21 11:45 ?26次下載

    單片機哪些常用濾波算法詳細資料說明

    本文檔的主要內容詳細介紹的是單片機哪些常用濾波算法詳細資料說明包括了:1、限幅濾波法,2、中位值濾波
    發表于 07-29 17:36 ?4次下載
    單片機<b class='flag-5'>有</b>哪些<b class='flag-5'>常用</b><b class='flag-5'>濾波</b><b class='flag-5'>算法</b>詳細資料說明

    單片機ADC,十大C語言濾波算法

    單片機ADC,十大C語言濾波算法
    的頭像 發表于 10-24 15:53 ?1330次閱讀

    STM32的ADC采樣及各式濾波算法實現

    本文為手把手教學ADC采樣及各式濾波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL庫的ADC采樣函數為基礎進行教學,通過各式常見
    的頭像 發表于 10-28 10:51 ?3009次閱讀
    STM32的<b class='flag-5'>ADC</b>采樣及各式<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>實現
    主站蜘蛛池模板: 一二三四在线观看高清电视剧 | 亚洲精品色播一区二区 | 国产精品人成在线播放新网站 | 中国xxxxxx片免费播放 | 亚洲免费成人 | 日本精品卡一卡2卡3卡四卡三卡 | 色偷偷综合网 | 蜜桃传媒星空传媒在线播放 | 婷婷色色狠狠爱 | 一级性生活毛片 | 黄色天堂在线 | 高h原耽肉汁动漫视频 | 我的奶头被客人吸的又肿又红 | 恋夜影视列表免费安卓手机版 | 国产午夜a理论毛片在线影院 | 狠狠爱亚洲五月婷婷av | 99九九免费热在线精品 | 国产一区二区三区四区五在线观看 | 蜜臀AV999无码精品国产 | 国模孕妇模特季玥之粉红 | 美女被爽cao免费漫画 | 美女逼逼毛茸茸 | 国产中文视频无码成人精品 | 女同给老师下媚药 | 我与恶魔的h生活ova | 亚洲视频精选 | 色网址在线观看 | 午夜福利体检 | 天龙八部慕容属性加点 | 午夜福利理论片在线播放 | 热の中文 AV天堂 | 日本wwwxx| 岳打开双腿开始配合日韩视频 | 97视频精品 | 一边吃奶一边添P好爽故事 一边吃奶一边啪啪真舒服 一本之道加勒比在线观看 一本之道高清在线观看一区 | 久久精品国产亚洲AV天美18 | 亚洲午夜性春猛交XXXX | 黄色天堂在线 | 久久这里只有精品国产99 | 天美传媒在线完整免费观看网站 | 秋霞网站一级一片 |