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

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

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

A/D芯片的采集算法

電子工程師 ? 來源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2020-09-28 12:01 ? 次閱讀

理論上講單片機(jī)從A/D芯片上采集的信號(hào)就是需要的量化信號(hào),但是由于存在電路的相互干擾、電源噪聲干擾和電磁干擾,在A/D芯片的模擬輸入信號(hào)上會(huì)疊加周期或者非周期的干擾信號(hào),并會(huì)被附加到量化值中,給信號(hào)帶來一定的惡化??紤]到數(shù)據(jù)采集的實(shí)時(shí)性和安全性,有時(shí)需要對采集的數(shù)據(jù)進(jìn)行軟處理,一盡量減小干擾信號(hào)的影響,這一過程稱為數(shù)據(jù)采集濾波。

以下介紹十種數(shù)據(jù)采集濾波的方法和編程實(shí)例。這10種方法針對不同的噪聲和采樣信號(hào)具有不同的性能,為不同場合的應(yīng)用提供了較廣的選擇空間。選擇這些方法時(shí),必須了解電路種存在的主要噪聲類型,主要包括一下方面:

* 噪聲是突發(fā)隨機(jī)噪聲還是周期性噪聲

* 噪聲頻率的高低

* 采樣信號(hào)的類型是塊變信號(hào)還是慢變信號(hào)

* 另外還要考慮系統(tǒng)可供使用的資源等

通過對噪聲和采樣性能分析,選用最合適的方法以及確定合理的參數(shù),才能達(dá)到良好的效果。

目前用于數(shù)據(jù)采集濾波的主要方法有以下10種,這10種方法都是在時(shí)域上進(jìn)行處理的,相對于從頻域角度設(shè)計(jì)的IIR或者FIR濾波器,其實(shí)現(xiàn)簡單,運(yùn)算量小,而性能可以滿足絕大部分的場合的應(yīng)用要求

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

A、方法:

根據(jù)經(jīng)驗(yàn)判斷,確定兩次采樣允許的最大偏差值(設(shè)為A)

每次檢測到新值時(shí)判斷:

如果本次值與上次值之差<=A,則本次值有效

如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值

B、優(yōu)點(diǎn):

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

C、缺點(diǎn)

無法抑制那種周期性的干擾

平滑度差



2、中位值濾波法

A、方法:

連續(xù)采樣N次(N取奇數(shù))

把N次采樣值按大小排列

取中間值為本次有效值

B、優(yōu)點(diǎn):

能有效克服因偶然因素引起的波動(dòng)干擾

對溫度、液位的變化緩慢的被測參數(shù)有良好的濾波效果

C、缺點(diǎn):

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

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

A、方法:

連續(xù)取N個(gè)采樣值進(jìn)行算術(shù)平均運(yùn)算

N值較大時(shí):信號(hào)平滑度較高,但靈敏度較低

N值較小時(shí):信號(hào)平滑度較低,但靈敏度較高

N值的選?。阂话懔髁浚琋=12;壓力:N=4

B、優(yōu)點(diǎn):

適用于對一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波

這樣信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近上下波動(dòng)

C、缺點(diǎn):

對于測量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時(shí)控制不適用

比較浪費(fèi)RAM



4、遞推平均濾波法(又稱滑動(dòng)平均濾波法)

A、方法:

把連續(xù)取N個(gè)采樣值看成一個(gè)隊(duì)列

隊(duì)列的長度固定為N

每次采樣到一個(gè)新數(shù)據(jù)放入隊(duì)尾,并扔掉原來隊(duì)首的一次數(shù)據(jù).(先進(jìn)先出原則)

把隊(duì)列中的N個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,就可獲得新的濾波結(jié)果

N值的選?。毫髁?,N=12;壓力:N=4;液面,N=4~12;溫度,N=1~4

B、優(yōu)點(diǎn):

對周期性干擾有良好的抑制作用,平滑度高

適用于高頻振蕩的系統(tǒng)

C、缺點(diǎn):

靈敏度低

對偶然出現(xiàn)的脈沖性干擾的抑制作用較差

不易消除由于脈沖干擾所引起的采樣值偏差

不適用于脈沖干擾比較嚴(yán)重的場合

比較浪費(fèi)RAM



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

A、方法:

相當(dāng)于“中位值濾波法”+“算術(shù)平均濾波法”

連續(xù)采樣N個(gè)數(shù)據(jù),去掉一個(gè)最大值和一個(gè)最小值

然后計(jì)算N-2個(gè)數(shù)據(jù)的算術(shù)平均值

N值的選取:3~14

B、優(yōu)點(diǎn):

融合了兩種濾波法的優(yōu)點(diǎn)

對于偶然出現(xiàn)的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差

C、缺點(diǎn):

測量速度較慢,和算術(shù)平均濾波法一樣

比較浪費(fèi)RAM



6、限幅平均濾波法

A、方法:

相當(dāng)于“限幅濾波法”+“遞推平均濾波法”

每次采樣到的新數(shù)據(jù)先進(jìn)行限幅處理,

再送入隊(duì)列進(jìn)行遞推平均濾波處理

B、優(yōu)點(diǎn):

融合了兩種濾波法的優(yōu)點(diǎn)

對于偶然出現(xiàn)的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差

C、缺點(diǎn):

比較浪費(fèi)RAM

7、一階滯后濾波法

A、方法:

取a=0~1

本次濾波結(jié)果=(1-a)*本次采樣值+a*上次濾波結(jié)果

B、優(yōu)點(diǎn):

對周期性干擾具有良好的抑制作用

適用于波動(dòng)頻率較高的場合

C、缺點(diǎn):

相位滯后,靈敏度低

滯后程度取決于a值大小

不能消除濾波頻率高于采樣頻率的1/2的干擾信號(hào)



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

A、方法:

是對遞推平均濾波法的改進(jìn),即不同時(shí)刻的數(shù)據(jù)加以不同的權(quán)

通常是,越接近現(xiàn)時(shí)刻的數(shù)據(jù),權(quán)取得越大。

給予新采樣值的權(quán)系數(shù)越大,則靈敏度越高,但信號(hào)平滑度越低

B、優(yōu)點(diǎn):

適用于有較大純滯后時(shí)間常數(shù)的對象

和采樣周期較短的系統(tǒng)

C、缺點(diǎn):

對于純滯后時(shí)間常數(shù)較小,采樣周期較長,變化緩慢的信號(hào)

不能迅速反應(yīng)系統(tǒng)當(dāng)前所受干擾的嚴(yán)重程度,濾波效果差

9、消抖濾波法

A、方法:

設(shè)置一個(gè)濾波計(jì)數(shù)器

將每次采樣值與當(dāng)前有效值比較:

如果采樣值=當(dāng)前有效值,則計(jì)數(shù)器清零

如果采樣值<>當(dāng)前有效值,則計(jì)數(shù)器+1,并判斷計(jì)數(shù)器是否>=上限N(溢出)

如果計(jì)數(shù)器溢出,則將本次值替換當(dāng)前有效值,并清計(jì)數(shù)器

B、優(yōu)點(diǎn):

對于變化緩慢的被測參數(shù)有較好的濾波效果,

可避免在臨界值附近控制器的反復(fù)開/關(guān)跳動(dòng)或顯示器上數(shù)值抖動(dòng)

C、缺點(diǎn):

對于快速變化的參數(shù)不宜

如果在計(jì)數(shù)器溢出的那一次采樣到的值恰好是干擾值,則會(huì)將干擾值當(dāng)作有效值導(dǎo)入系

統(tǒng)

10、限幅消抖濾波法

A、方法:

相當(dāng)于“限幅濾波法”+“消抖濾波法”

先限幅,后消抖

B、優(yōu)點(diǎn):

繼承了“限幅”和“消抖”的優(yōu)點(diǎn)

改進(jìn)了“消抖濾波法”中的某些缺陷,避免將干擾值導(dǎo)入系統(tǒng)

C、缺點(diǎn):

對于快速變化的參數(shù)不宜





假定從8位AD中讀取數(shù)據(jù)(如果是更高位的AD可定義數(shù)據(jù)類型為int),子程序?yàn)間et_ad();

1、限副濾波



#define A 10

char value;

char filter()

{

charnew_value;

new_value = get_ad();

if ( ( new_value - value > A ) || ( value - new_value > A )

return value;

return new_value;



}

2、中位值濾波法



#define N11

char filter()

{

char value_buf[N];

char count,i,j,temp;

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;

}

}

}

return value_buf[(N-1)/2];

}

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

#define N 12

char filter()

{

intsum = 0;

for ( count=0;count

{

sum + = get_ad();

delay();

}

return (char)(sum/N);

}

4、遞推平均濾波法(又稱滑動(dòng)平均濾波法)



#define N 12

char value_buf[N];

char i=0;

char filter()

{

char count;

intsum=0;

value_buf[i++] = get_ad();

if ( i == N ) i = 0;

for ( count=0;count

sum = value_buf[count];

return (char)(sum/N);

}

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



#define N 12

char filter()

{

char count,i,j;

char value_buf[N];

intsum=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;count

sum += value[count];

return (char)(sum/(N-2));

}

6、限幅平均濾波法



略 參考子程序1、3

7、一階滯后濾波法

#define a 50

char value;

char filter()

{

charnew_value;

new_value = get_ad();

return (100-a)*value + a*new_value;

}

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

#define N 12

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};

char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

char filter()

{

char count;

char value_buf[N];

intsum=0;

for (count=0,count

{

value_buf[count] = get_ad();

delay();

}

for (count=0,count

sum += value_buf[count]*coe[count];

return (char)(sum/sum_coe);

}

9、消抖濾波法

#define N 12

char filter()

{

char count=0;

char new_value;

new_value = get_ad();

while (value !=new_value);

{

count++;

if (count>=N) return new_value;

delay();

new_value = get_ad();

}

return value;

}


原文標(biāo)題:AD采集算法

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    27

    文章

    865

    瀏覽量

    149826

原文標(biāo)題:AD采集算法

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    求助,請問采集交流電電壓和電流用什么芯片?

    采集條件:市電220V; 電流4-18A(電機(jī)電流) 運(yùn)放輸入:電流和電壓互感器,互感器輸出電流0-5mA 通過運(yùn)放輸出0-3.3V信號(hào) 求教參考電路和推薦芯片
    發(fā)表于 09-02 06:56

    DAC714單芯片數(shù)模(D/A)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DAC714單芯片數(shù)模(D/A)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-26 09:16 ?0次下載
    DAC714單<b class='flag-5'>芯片</b>數(shù)模(<b class='flag-5'>D</b>/<b class='flag-5'>A</b>)轉(zhuǎn)換器數(shù)據(jù)表

    藍(lán)牙信標(biāo)室內(nèi)定位算法如何確定 A,n 值

    一、距離d和RSSI的計(jì)算公式d=10^((ABS(RSSI)-A)/(10*n))其中d為距離,單位是m。RSSI為手機(jī)接收到藍(lán)牙信標(biāo)的信號(hào)強(qiáng)度,為負(fù)數(shù)。
    的頭像 發(fā)表于 05-21 20:13 ?416次閱讀
    藍(lán)牙信標(biāo)室內(nèi)定位<b class='flag-5'>算法</b>如何確定 <b class='flag-5'>A</b>,n 值

    微功耗運(yùn)算放大器芯片D8541和D8542介紹分析

    D8541和D8542是我們推的兩款微功耗軌至軌運(yùn)算放大器芯片,其中D8541為單運(yùn)放,D8542為雙運(yùn)放,它特別適用于NTC溫度
    發(fā)表于 03-16 15:59

    KEYSIGHT是德科技34970A采集軟件的使用

    ? ? ? ? ? ? ? ? 今天想與大家分享的是KEYSIGHT(原Agilent)34970A數(shù)字采集單元采集軟件BenchLink Data Logger的使用方法,KEYSIGHT
    的頭像 發(fā)表于 02-21 10:46 ?1541次閱讀
    KEYSIGHT是德科技34970<b class='flag-5'>A</b><b class='flag-5'>采集</b>軟件的使用

    地平線正式開源Sparse4D算法

    地平線將業(yè)內(nèi)領(lǐng)先的純視覺自動(dòng)駕駛算法——Sparse4D系列算法開源,推動(dòng)行業(yè)更多開發(fā)者共同參與到端到端自動(dòng)駕駛、稀疏感知等前沿技術(shù)方向的探索中。目前,Sparse4D
    的頭像 發(fā)表于 01-23 10:18 ?611次閱讀

    AD9240出現(xiàn)A/D采集故障的原因有哪些?

    在交付的一套產(chǎn)品中,出現(xiàn)A/D采集故障,針對故障情況,采用故障板卡和正常板卡進(jìn)行對比測試,請幫忙分析一下,這種情況是什么故障,可能原因有哪些?測試數(shù)據(jù)如下: 故障板卡 表1 序號(hào)41點(diǎn)電壓(V
    發(fā)表于 12-07 06:52

    AD8232 ECG采集芯片方波失真怎么解決?

    現(xiàn)有AD8232為前端采集芯片的便攜式監(jiān)護(hù)儀產(chǎn)品,在進(jìn)行產(chǎn)品檢測時(shí),輸入標(biāo)準(zhǔn)方波和脈沖方波時(shí)出現(xiàn)較大失真,無法達(dá)到合格標(biāo)準(zhǔn) 前端采集電路為芯片資料中 心電監(jiān)護(hù)儀配置方案,脈沖方波的實(shí)
    發(fā)表于 11-23 07:18

    3D結(jié)構(gòu)光工藝及構(gòu)成拆解方案

    圖像處理芯片,將普通鏡頭模組拍攝的2D彩色圖片和IR接收模組獲取的3D信息集合,通過復(fù)雜的算法將IR接收端采集的空間信息和鏡頭成像端
    發(fā)表于 11-13 10:45 ?1267次閱讀
    3<b class='flag-5'>D</b>結(jié)構(gòu)光工藝及構(gòu)成拆解方案

    SY9D06無線充電發(fā)射端控制芯片中文手冊

    SY9D06 是一款一芯雙充無線充電發(fā)射端 控制芯片, 兼容 WPC Qi v1.2.4 最新標(biāo)準(zhǔn),支持 A11 線圈,支持 5W、蘋果 5W、三星、華為、 小米等手機(jī) 5W 充電
    發(fā)表于 10-30 16:29 ?10次下載

    蘋果A系列芯片進(jìn)化史

    A4芯片是蘋果公司在2010年4月發(fā)布的第一款自主研發(fā)芯片,搭載于iPad第一代和iPhone 4等產(chǎn)品中。A4芯片采用了ARM Corte
    發(fā)表于 10-25 12:38 ?2574次閱讀

    標(biāo)準(zhǔn)系統(tǒng):Unionpi Tiger(A311D)

    開發(fā)板名稱(芯片型號(hào)) Unionpi Tiger(A311D) 芯片架構(gòu) ARM 4xCortex-A73+2xCortex-A53 CPU頻率 介紹(字?jǐn)?shù)請控制在200字以內(nèi))
    發(fā)表于 10-19 10:47

    A/D轉(zhuǎn)換的基本步驟

    在數(shù)字信號(hào)處理的過程中,首先要做的一步就是把模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),在這一過程中,A/D轉(zhuǎn)換(模數(shù)轉(zhuǎn)換)是至關(guān)重要的一步,下面就來簡單介紹一下A/D轉(zhuǎn)換的基本步驟。
    發(fā)表于 10-01 14:26 ?1962次閱讀
    <b class='flag-5'>A</b>/<b class='flag-5'>D</b>轉(zhuǎn)換的基本步驟

    Rust如何實(shí)現(xiàn)A*算法

    A 算法是一種啟發(fā)式搜索算法,常用于尋路問題。它的基本思路是從起點(diǎn)開始,每次選擇一個(gè)最優(yōu)的節(jié)點(diǎn)進(jìn)行擴(kuò)展,直到找到終點(diǎn)或者無法繼續(xù)擴(kuò)展。 A 算法
    的頭像 發(fā)表于 09-30 16:53 ?750次閱讀

    a17芯片提升多少 a17芯片a16芯片的比較

    ,相較于A16還多了一個(gè)GPU核心,A16芯片則只有4個(gè)“GT”GPU核心,這表明A17在3D圖形渲染和游戲方面
    的頭像 發(fā)表于 09-26 11:58 ?6075次閱讀