欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

常用的ADC濾波算法有哪些

CHANBAEK ? 來源:網(wǎng)絡(luò)整理 ? 2024-10-08 14:35 ? 次閱讀

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

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

1. 方法

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

2. 優(yōu)點

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

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()取絕對值函數(shù)  
    return new_value;  
}

二、中位值濾波法

1. 方法

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

2. 優(yōu)點

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

3. 缺點

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

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];  
}

三、算術(shù)平均濾波法

1. 方法

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

2. 優(yōu)點

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

3. 缺點

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

4. 示例程序

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

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

1. 方法

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

2. 優(yōu)點

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

3. 缺點

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

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

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

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

1. 方法

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

2. 優(yōu)點

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

3. 缺點

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

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

#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. 方法

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

2. 優(yōu)點

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

3. 缺點

  • 比較浪費RAM。

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

#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,本次濾波結(jié)果=(1-a)×本次采樣值+a×上次濾波結(jié)果。

2. 優(yōu)點

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

3. 缺點

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

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

#define a 30 // 取0~100之間的值進行換算,如a=30表示0.3的系數(shù)  
char value;  
char filter() {  
    char new_value;  
    new
#define a 30 // 取0~100之間的值進行換算,如a=30表示0.3的系數(shù)  
char value; // 上次濾波結(jié)果,需要在外部進行初始化和更新  
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的值通常需要根據(jù)具體情況進行調(diào)整,以達到最佳的濾波效果。
  • 一階滯后濾波法雖然能夠抑制周期性干擾,但會引起相位滯后,這在某些對實時性要求較高的應(yīng)用中可能是一個缺點。

八、加權(quán)遞推平均濾波法

1. 方法

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

2. 優(yōu)點

  • 能夠更靈活地適應(yīng)被測參數(shù)的變化特性。
  • 通過選擇合適的加權(quán)系數(shù),可以優(yōu)化濾波效果。

3. 缺點

  • 加權(quán)系數(shù)的選擇需要一定的經(jīng)驗和試驗。
  • 計算量相對較大,可能影響實時性。

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

#define N 5  
char value_buf[N];  
int weight[N] = {1, 2, 3, 2, 1}; // 示例加權(quán)系數(shù),可以根據(jù)需要調(diào)整  
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];  
    }  
    // 可以選擇返回算術(shù)平均值或加權(quán)平均值  
    // return (char)(sum / N); // 算術(shù)平均值  
    return (char)(weighted_sum / (weight[0] + weight[1] + weight[2] + weight[3] + weight[4])); // 加權(quán)平均值  
}

九、消抖濾波法

1. 方法

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

2. 優(yōu)點

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

3. 缺點

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

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

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

總結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6534

    瀏覽量

    545810
  • 模數(shù)轉(zhuǎn)換器

    關(guān)注

    26

    文章

    3218

    瀏覽量

    127026
  • 濾波算法
    +關(guān)注

    關(guān)注

    2

    文章

    89

    瀏覽量

    13779
收藏 人收藏

    評論

    相關(guān)推薦

    STM32的ADC項目應(yīng)用,用什么算法濾波和穩(wěn)定數(shù)據(jù)抖動?

    STM32的ADC項目應(yīng)用,大家都用什么算法濾波和穩(wěn)定數(shù)據(jù)抖動。 ADC數(shù)據(jù)的抖動有時候應(yīng)用在項目上讓人很是頭疼,什么度娘十大濾波
    發(fā)表于 04-17 08:20

    常用的經(jīng)典濾波算法哪些??

    常用的經(jīng)典濾波算法哪些??
    發(fā)表于 07-01 15:15

    AD轉(zhuǎn)換常用濾波算法

    非常經(jīng)典的濾波算法
    發(fā)表于 05-05 14:29

    AD轉(zhuǎn)換常用濾波算法

    AD轉(zhuǎn)換常用濾波算法
    發(fā)表于 08-01 10:46

    介紹幾種嵌入式常用濾波算法的matlab實現(xiàn)

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

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

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

    什么現(xiàn)成的濾波算法來消除ADC采集溫度的波動呢

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

    ADC數(shù)據(jù)進行濾波可以用中值濾波算法嗎?

    ADC數(shù)據(jù)進行濾波可以用中值濾波算法
    發(fā)表于 10-09 06:29

    卡爾曼濾波算法對比其他的濾波算法什么優(yōu)點?

    卡爾曼濾波算法對比其他的濾波算法什么優(yōu)點
    發(fā)表于 10-11 06:42

    常用的Σ-Δ ADC數(shù)字濾波器類型

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

    常用的Σ-Δ_ADC數(shù)字濾波器類型

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

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

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

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

    本文檔的主要內(nèi)容詳細介紹的是單片機哪些常用濾波算法詳細資料說明包括了:1、限幅濾波法,2、中位值濾波
    發(fā)表于 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語言濾波算法
    的頭像 發(fā)表于 10-24 15:53 ?1365次閱讀

    STM32的ADC采樣及各式濾波算法實現(xiàn)

    本文為手把手教學(xué)ADC采樣及各式濾波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL庫的ADC采樣函數(shù)為基礎(chǔ)進行教學(xué),通過各式常見
    的頭像 發(fā)表于 10-28 10:51 ?3170次閱讀
    STM32的<b class='flag-5'>ADC</b>采樣及各式<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>實現(xiàn)