基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)PAGE24基于單片機(jī)數(shù)字濾波器設(shè)計(jì)摘要數(shù)據(jù)采集又稱數(shù)據(jù)獲取,是利用一種裝置,從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部的一個(gè)接口。數(shù)據(jù)采集技術(shù)廣泛應(yīng)用在各個(gè)領(lǐng)域。比如攝像頭,麥克風(fēng),都是數(shù)據(jù)采集工具。被采集數(shù)據(jù)是已被轉(zhuǎn)換為電訊號(hào)的各種物理量,如溫度,水位,風(fēng)速,壓力等,可以是模擬量,也可以是數(shù)字量。在互聯(lián)網(wǎng)行業(yè)快速發(fā)展的今天,數(shù)據(jù)采集已經(jīng)被廣泛應(yīng)用于互聯(lián)網(wǎng)及分布式領(lǐng)域,數(shù)據(jù)采集領(lǐng)域已經(jīng)發(fā)生重要變化。而在數(shù)據(jù)采集中存在各種噪聲。濾除噪聲的方法有很多種,既有數(shù)字濾波器,也有模擬濾波器。本文采用了基于單片機(jī)和c語(yǔ)言來設(shè)計(jì)并開發(fā)數(shù)字濾波系統(tǒng)。針對(duì)于單片機(jī)數(shù)據(jù)采集系統(tǒng)中經(jīng)常出現(xiàn)的隨機(jī)干擾,通過交流信號(hào)發(fā)生器輸入來模擬數(shù)據(jù)采集過程,驗(yàn)證了幾種使用較為普遍的克服隨機(jī)干擾的單片機(jī)數(shù)字濾波算法,并給出了相應(yīng)的c程序,同時(shí)也對(duì)這幾種濾波算法進(jìn)行了比較,并指出每一種算法具體適用范圍和注意事項(xiàng)。另外本文使用了proteus進(jìn)行仿真驗(yàn)證這幾種濾波方法,用了AD和DA來采集及輸出數(shù)據(jù)。關(guān)鍵詞單片機(jī)/proteus/數(shù)字濾波?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第1頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第1頁(yè)。BASEDONSCMDIGITALFILTERDESIGNABSTRACTDataacquisition,alsocalleddataacquisitionistheuseofadevicefromthesysteminputtoexternaldatacollectionandaninterfacethatinternalsystem.Datacollectiontechnologyiswidelyquotedinvariousfields.Suchascameras,microphones,aredataacquisitiontools.Arecollecteddatahasbeenconvertedtotelecommunicationsnumberofvariousphysicalquantitiessuchastemperature,pressure,water,windspeed,etc,canbeanalogue,alsocanbethedigitalquantity.IntheInternetindustryfastdevelopmenttoday,dataacquisitionhasbeenwidelyusedinInternetanddistributedfield,dataacquisitionfieldhaschangedinimportantchanges.Andindataacquisitionexistinallsortsofnoise.Filteroutthenoiseavarietyofways,bothdigitalfilters,alsohavesimulationfilter.HereweadoptedbasedonSCMandClanguagetodesignanddevelopdigitalfilteringsystem.Webasedonsingle-chipmicrocomputerdataacquisitionsystemoftenappearsintherandomdisturbance,throughthemanualinputtosimulatedataacquisitionprocess,andverifiestheseveralusecommonovercomerandomdisturbancesingle-chipdigitalfilteringalgorithm,andpresentsthecorrespondingCprogram,especiallyforthemedianvaluefilterandthemedianvalueaveragefilteringalgorithmprocedureswereimproved.Alsoonthiscomparesseveralfilteringalgorithm,andpointsouttheconcreteeachkindofalgorithmisapplicablerangeandprecautions.Inadditionweusethesimulationtestthisproteusseveralfilteringmethod.InadditionwestillusetheADandDAtoharvestandoutputdata.基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第2頁(yè)。KEYWORDSmicrocontroller,proteus,digitalfilter基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第2頁(yè)。目錄摘要 IABSTRACT II1緒論 11.1數(shù)字濾波器特點(diǎn) 11.2數(shù)字濾波器的設(shè)計(jì) 22數(shù)字濾波設(shè)計(jì)原理 32.1中值濾波 32.2算數(shù)平均濾波 42.3加權(quán)平均濾波 52.4中位值平均濾波 62.5限幅濾波 73濾波器硬件設(shè)計(jì) 83.1單片機(jī)AT89C51 83.2數(shù)據(jù)采集 93.3數(shù)模轉(zhuǎn)換輸出 103.4總體電路圖 104程序設(shè)計(jì) 114.1濾波算法設(shè)計(jì) 11基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第3頁(yè)。4.2AD轉(zhuǎn)換器 12基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第3頁(yè)。4.3濾波算法的選擇 124.4總體程序 134.5程序流程圖 135仿真結(jié)果和分析 146數(shù)字濾波器新算法分析 186.1滑動(dòng)平均濾波 186.2一階滯后濾波 186.3加權(quán)遞推平均濾波 196.4消抖濾波 207總結(jié) 22致謝 23參考文獻(xiàn) 24附錄A 25附錄B 26基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第4頁(yè)。基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第4頁(yè)。1緒論1.1數(shù)字濾波器特點(diǎn)現(xiàn)在工業(yè)控制系統(tǒng)中,電路系統(tǒng)變得越來越復(fù)雜,因而帶來的相互干擾也越來越強(qiáng)烈,模擬濾波電路已不能滿足要求,數(shù)字濾波應(yīng)運(yùn)而生。數(shù)字濾波器是數(shù)字信號(hào)處理器的一種,在進(jìn)行數(shù)據(jù)采集和數(shù)據(jù)傳輸過程中,經(jīng)常會(huì)受到各種外界干擾,當(dāng)干擾嚴(yán)重時(shí),可導(dǎo)致系統(tǒng)的測(cè)控精度降低甚至無法正常工作,數(shù)字濾波器則通過計(jì)算機(jī)執(zhí)行一段相應(yīng)的程序來濾除夾雜在數(shù)字信號(hào)中的干擾信號(hào)。它所處理的對(duì)象是用序列表示的離散信號(hào)或是數(shù)字信號(hào),因而可以實(shí)現(xiàn)一些高難度的復(fù)雜處理,而且具有工作穩(wěn)定,受環(huán)境因素小,抗干擾性能強(qiáng)精度可控等優(yōu)點(diǎn)。因而現(xiàn)階段被廣泛應(yīng)用,而用單片機(jī)實(shí)現(xiàn)數(shù)字濾波器與廣泛應(yīng)用的DSP處理器相比,具有成本低,體積小,可靠性強(qiáng)等優(yōu)點(diǎn),因而在一定場(chǎng)合也有一定的實(shí)用價(jià)值?!?】從時(shí)間上看,數(shù)字信號(hào)是離散的,從幅度上看,它又是量化的。因此數(shù)字信號(hào)可用一個(gè)序列數(shù)來表示,而每個(gè)數(shù)又可表示成二進(jìn)制碼的形式。數(shù)字濾波器的功能就是利用計(jì)算機(jī)軟件對(duì)一組輸入數(shù)字序列進(jìn)行一定的運(yùn)算,再變換成另一組輸出數(shù)字序列。對(duì)被測(cè)信號(hào)的處理,首先通過采樣/保持電路,送至模/數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,然后通過數(shù)字濾波器濾除其中的干擾信號(hào),最后通過模/數(shù)轉(zhuǎn)換器獲得模擬量輸出。根據(jù)所用數(shù)學(xué)模型的不同,數(shù)字濾波器可劃分為兩大類:一種是遞歸性濾波器,其特點(diǎn)是濾波器的輸出不僅與輸入信號(hào)有關(guān),還與過去的輸出值有關(guān);另一種是非遞歸性濾波器,其特征是濾波器的輸出僅與輸入信號(hào)有關(guān),而與過去輸出值無關(guān)。設(shè)數(shù)字濾波器的輸入信號(hào)為,輸出信號(hào)為,則輸入序列與輸出序列之間的關(guān)系可用差分方程表示為公式一:(1.1)基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第5頁(yè)。輸入信號(hào)可以是模擬信號(hào)經(jīng)采樣和ADC變換后得到的數(shù)字序列,也可以是計(jì)算機(jī)的輸出信號(hào),,均為系數(shù),由上述差分方程組組成的數(shù)字濾波器,稱為遞歸性濾波器。若將上述差分方程中系數(shù)取做0,則得到公式二:基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第5頁(yè)。(1.2)這種濾波器叫做非遞歸性濾波器。選擇不同的系數(shù),則可以設(shè)計(jì)低通,高通或帶通,帶阻式數(shù)字濾波器。【6】1.2數(shù)字濾波器的設(shè)計(jì)1.設(shè)計(jì)數(shù)字濾波器時(shí),一般按下面步驟進(jìn)行:(1)根據(jù)干擾信號(hào)的特征來選擇合適的濾波器。(2)建立起典型的差分方程數(shù)學(xué)模型,并對(duì)差分方程進(jìn)行Z變換,寫出其Z傳遞函數(shù)。(3)根據(jù)有用信號(hào)與干擾信號(hào)的頻率特征,來確定系統(tǒng)期望的通頻帶。(4)根據(jù)Z傳遞函數(shù),確定其幅頻特性和相頻特性,再對(duì)Z進(jìn)行反變換,求出濾波器的線性離散方程。(5)按照線性差分方程來編制相應(yīng)的軟件,最終實(shí)現(xiàn)數(shù)字濾波的功能。2.數(shù)字濾波器的軟件設(shè)計(jì)在測(cè)控系統(tǒng)中,由于各種參數(shù)的干擾成分不同,因而濾除這些干擾成分的方式也不同,本論文將用到中值濾波,算數(shù)平均濾波,加權(quán)平均濾波,中位值平均濾波,限幅濾波這五種方法,可根據(jù)具體情況加以選用?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第6頁(yè)。基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第6頁(yè)。2數(shù)字濾波設(shè)計(jì)原理這里有很多種熟悉濾波方法,我們見選用其中幾種來進(jìn)行設(shè)計(jì),如中值濾波,算數(shù)平均濾波,加權(quán)平均濾波等等。所以下面我將詳細(xì)介紹它們。2.1中值位濾波是先對(duì)某中值濾波一參數(shù)連續(xù)采樣N次(一般N取奇數(shù)),然后把N次采樣值按從小到大排列,取中間值為本次采樣值。該濾波方法實(shí)際上是一種排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,沒出現(xiàn)一次前者數(shù)據(jù)大于后者數(shù)據(jù),就要進(jìn)行兩者數(shù)據(jù)的交換。該算法樣例子程序如下:#defineN11

//N值可根據(jù)實(shí)際情況調(diào)整charfilter(){charvalue_buf[];charcount,i,j,k,temp;for(count=0;count<N;count++)//獲取數(shù)據(jù){value_buf[count]=get_data();delay();}for(i=0;i<N-1;i++)//選擇排序

{k=i;for(j=i+1;j<N;j++)

if(value_buf[j]<value_buf[k])k=j;

temp=value_buf[k];

value_buf[k]=value_buf[i];

value_buf[i]=temp;基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第7頁(yè)。

}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第7頁(yè)。returnvalue_buf[(N-1)/2];}中位值濾波能有效地克服偶然因素引起的波動(dòng)或采樣器不穩(wěn)定引起的誤碼等脈沖干擾。對(duì)溫度、液位等緩慢變化的被測(cè)參數(shù)采用此算法能收到良好的濾波效果,但對(duì)于流量、壓力等快速變化的數(shù)據(jù),不宜采用中位值濾波?!?】2.2算數(shù)平均濾波算術(shù)平均濾波法適用于對(duì)一般的具有隨機(jī)干擾的信號(hào)進(jìn)行濾波。這種信號(hào)的特點(diǎn)是信號(hào)本身在某一數(shù)值范圍附近上下波動(dòng),如測(cè)量流量、液位時(shí)經(jīng)常遇到這種情況。算術(shù)平均濾波法是要按輸入的N個(gè)采樣數(shù)據(jù),尋找這樣一個(gè)Y,使得Y與各個(gè)采樣值之間的偏差的平方和最小。具體實(shí)現(xiàn)此算法的子程序如下:#defineN12charfilter(){intcount;intsum=0;for(count=0;count<N;count++)

{

sum+=get_ad();

delay();

}

return(char)(sum/N);}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第8頁(yè)。算術(shù)平均濾波適用于對(duì)一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波。這種信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近做上下波動(dòng),在這種情況下僅取一個(gè)采樣值做依據(jù)顯然是不準(zhǔn)確的。算術(shù)平均濾波對(duì)信號(hào)的平滑程序完全取決于N,當(dāng)N較大時(shí),平滑度高,但靈敏度低;當(dāng)N較小時(shí),平滑度低,但靈敏度高,應(yīng)視具體情況選取N,以便既少占用計(jì)算時(shí)間,又達(dá)到最好的效果?!?】基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第8頁(yè)。2.3加權(quán)平均濾波在算術(shù)平均濾波和移動(dòng)平均濾波中,N次采樣值在輸出結(jié)果中的權(quán)重是均等的,取1/N。用這樣的濾波算法,對(duì)于時(shí)變信號(hào)會(huì)引入滯后,N值越大,滯后越嚴(yán)重。為了增加新采樣數(shù)據(jù)在移動(dòng)平均中的權(quán)重,以提高系統(tǒng)對(duì)當(dāng)前采樣值中所受干擾的靈敏度,可采用加權(quán)平均濾波,它是移動(dòng)平均濾波算法的改進(jìn)。加權(quán)平均濾波是對(duì)連續(xù)N次采樣值分別乘上不同的加權(quán)系統(tǒng)之后再求累加和,加權(quán)系統(tǒng)一般先小后大,以突出后面若干采樣的效果,加強(qiáng)系統(tǒng)對(duì)參數(shù)變化趨勢(shì)的辨識(shí)。各個(gè)加權(quán)系統(tǒng)均為小于1的小數(shù),且滿足總和等于1的約束條件。這樣,加權(quán)運(yùn)算之后的累加和即為有效采樣值。為方便計(jì)算,可取各加權(quán)系數(shù)均為整數(shù),且總和為256,加權(quán)運(yùn)算后的累加和除以256,即舍去低字節(jié)后便是有效采樣值?!?】具體的樣例子程序如下://code數(shù)組為加權(quán)系統(tǒng)表,存在ROM區(qū)。#defineN12charcodejq[N]={1,2,3,4,5,6,7,8,9,10,11,12};charcodesum_jp=1+2+3+4+5+6+7+8+9+10+11+12;charfilter_5(){charcount;charvalue_buf[N];intsum=0;for(count=0;count<N;count++){value_buf[count]=get_data();delay();}for(count=0;count<N;count++)sum+=value_buf[count]*jq[count];return(char)(sum/sum_jq);基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第9頁(yè)。}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第9頁(yè)。2.4中位值平均濾波它相當(dāng)于是“中位值濾波法”和“算術(shù)平均濾波法”的結(jié)合。它連續(xù)采樣N個(gè)數(shù)據(jù),然后去掉一個(gè)最大值和一個(gè)最小值,最后計(jì)算N-2個(gè)數(shù)據(jù)的算術(shù)平均值。一般N值選?。?-14。具體算法程序如下:基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第10頁(yè)。#defineN12

charfilter()

{

charcount,i,j;

charvalue_buf[N];

intsum=0;

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;

}

}

}

for(count=1;count<N-1;count++)

sum+=value[count];

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

}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第10頁(yè)。這種濾波方法兼容了移動(dòng)平均濾波算法和中位值濾波算法的優(yōu)點(diǎn),所以無論對(duì)緩慢變化的信號(hào),還是對(duì)快速變化的信號(hào),都能取得較好的濾波效果?!?】2.5限幅濾波限幅濾波的基本原理是把兩次相鄰時(shí)刻(n和n-1)的采樣值Yn和Yn-1相減,求出其差值,以絕對(duì)值表示,然后將這個(gè)差值與兩次采樣允許的最大偏差值ΔY比較,如果兩次采樣值的差值超過了允許的最大偏差值ΔY,則認(rèn)為發(fā)生了隨機(jī)干擾,并認(rèn)為最后一次采樣值Yn非法,應(yīng)予剔除。剔除Yn后,可用Yn-1代替Yn;若未超過允許的最大偏差值范圍,則認(rèn)為本次采樣值有效。可用如下公式表示:|Yn-Yn-1|≤ΔY;則Yn有效(2.1)|Yn-Yn-1|>ΔY;則Yn-1有效(2.2)此算法的樣例子程序如下:#defineA10

//A值可根據(jù)實(shí)際情況調(diào)整chardata;

//上一次的數(shù)據(jù)charfilter_1(){chardatanew;

//新數(shù)據(jù)變量datanew=get_data();

//獲得新數(shù)據(jù)//濾波算法if((datanew-data>A)||(data-datanew>A)returndata;returndatanew;}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第11頁(yè)。該算法主要用于處理變化比較緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時(shí)關(guān)鍵在于最大偏差值的Δy的選擇,通??筛鶕?jù)經(jīng)驗(yàn)獲得,也可按照輸出參數(shù)可能的最大變化速度Vmax及采樣周期T來決定ΔY的值,即ΔY=VmaxT。【4】基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第11頁(yè)。3濾波器硬件設(shè)計(jì)通過對(duì)系統(tǒng)工作原理的了解,可以大致了解數(shù)字濾波器設(shè)計(jì)的整體框圖:圖3—1總體設(shè)計(jì)框圖3.1單片機(jī)AT89C51這里我們使用了51系列單片機(jī)——AT89C51,如下圖利用這個(gè)單片機(jī)進(jìn)行編程,實(shí)現(xiàn)對(duì)輸入信號(hào)的濾波。我使用了P0口作為接受AD轉(zhuǎn)換的結(jié)果的端口,而P1口則輸出數(shù)據(jù)到DA轉(zhuǎn)換器。另外還利用了P2作為控制端口,P2.0-P2.2用來控制AD轉(zhuǎn)換器,而P2.3-P2.6外接四個(gè)開關(guān),用來實(shí)現(xiàn)濾波方式的選擇?!?】基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第12頁(yè)。圖3-2AT89C51引腳圖基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第12頁(yè)。3.2數(shù)據(jù)采集另外我還使用了ADC0808進(jìn)行數(shù)據(jù)采集。這里ADC0808是并聯(lián)AD轉(zhuǎn)換器,ADC0808的引腳圖如下圖:圖3-3ADC0808的引腳圖基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第13頁(yè)。IN0-IN8是八個(gè)模擬量輸入端口,ADC0808可以一次對(duì)八個(gè)模擬量進(jìn)行模數(shù)轉(zhuǎn)換,但是在這里我們只使用了其中的一個(gè)輸入端IN0,所以ADDDA、ADDB、ADDC都應(yīng)為0,所以我讓它們都接地。它的八個(gè)輸出端接在單片機(jī)上,CLOCK接數(shù)據(jù)采樣時(shí)鐘,它可以接在單片機(jī)上由單片機(jī)控制,也可接在另外的數(shù)字時(shí)鐘上,這里我選用外接別的時(shí)鐘。START為轉(zhuǎn)換啟動(dòng)信號(hào),在其上跳變時(shí),所有內(nèi)部寄存器清零,在其下調(diào)變時(shí),開始進(jìn)行AD轉(zhuǎn)換。ALE是地址鎖存信號(hào)。這里我讓START和ALE均接在單片機(jī)的同一個(gè)端口上,即P2.1,讓單片機(jī)實(shí)現(xiàn)程序控制AD的轉(zhuǎn)換。OE是輸出允許信號(hào),OE=1時(shí),才能允許輸出,這里我讓它也接在單片機(jī)的端口P2.1上,也是為了讓單片機(jī)實(shí)現(xiàn)程序控制ADC0808的輸出。EOC是轉(zhuǎn)換結(jié)束信號(hào),EOC=1時(shí),表示轉(zhuǎn)換結(jié)束。這個(gè)信號(hào)可以用來提醒單片機(jī)AD已經(jīng)轉(zhuǎn)換完畢,程序中即可以用查詢方式,也可以用中斷方式,這里我使用查詢方式,所以把它接在P2.2上。VREF(+)和VREF(-)都是參考電壓信號(hào)端口,這里我讓VREF(-)的參考電壓為零,VREF(+)的參考電壓為+3V。基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第13頁(yè)。3.3數(shù)模轉(zhuǎn)換輸出這里我用了DAC0832來進(jìn)行數(shù)模轉(zhuǎn)換。DAC0832的引腳圖如下圖所示:圖3-4DAC0832的引腳圖DAC0832有三種數(shù)模轉(zhuǎn)換方法,直通方式、單緩沖方式、雙緩沖方式,因?yàn)閱纹瑱C(jī)輸出后可以直接進(jìn)行數(shù)模轉(zhuǎn)換,所以這里我采用了不需要單片機(jī)控制的最為簡(jiǎn)單的直通方式,但是DAC0832若用于直通方式,則在接單片機(jī)的輸出端口之間還要接一個(gè)緩沖器件,如74LS373。若用于直通方式下,則、、、和GND均接地,而VCC和ILE則接正電源。VREF是參考電源。IOUT1、IOUT2是兩個(gè)輸出端。DAC0832輸出的是電流,要利用運(yùn)算放大器轉(zhuǎn)換成電壓。數(shù)模轉(zhuǎn)換輸出電路如下圖所示:圖3-5數(shù)模轉(zhuǎn)換輸出電路3.4總體電路圖總體電路圖見附錄A基于單片機(jī)的數(shù)字濾波器設(shè)基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第14頁(yè)。4程序設(shè)計(jì)4.1濾波算法設(shè)計(jì)這個(gè)在前面介紹濾波原理時(shí)已經(jīng)說過了,在此就不再次重復(fù)了。因?yàn)樵O(shè)計(jì)時(shí)采集的時(shí)鐘頻率很大,所以在一定范圍內(nèi)采集的數(shù)據(jù)都差不多,因此對(duì)一系列的數(shù)據(jù)進(jìn)行濾波處理時(shí)就好像是在對(duì)同一個(gè)數(shù)據(jù)進(jìn)行濾波處理。但是因?yàn)檫@些算法處理的數(shù)據(jù)時(shí)連續(xù)采集了N個(gè)的,所以要設(shè)立一個(gè)變量數(shù)組來存儲(chǔ)這些輸入的數(shù)據(jù),而且要記得及時(shí)更新。我利用了隊(duì)列的思想,如果輸入一個(gè)新的數(shù)據(jù),則丟棄最原始的一個(gè)數(shù)據(jù),把新數(shù)據(jù)插入進(jìn)來,就好像隊(duì)列一樣,對(duì)頭刪除數(shù)據(jù),對(duì)位插入新的數(shù)據(jù)。這個(gè)程序如下:voidchange(){inti;for(i=0;i<N-1;i++)buf[i]=buf[i+1];buf[N-1]=a;}而獲得這一系列中的某一個(gè)數(shù)據(jù)就用了一個(gè)函數(shù)就可以了,直接返回隊(duì)列中的第n項(xiàng)的數(shù)據(jù)。這個(gè)程序如下:ucharget_data(n){change();returnbuf[n];基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第15頁(yè)。}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第15頁(yè)。4.2AD轉(zhuǎn)換器因?yàn)镾TART為轉(zhuǎn)換啟動(dòng)信號(hào),在其上跳變時(shí),所有內(nèi)部寄存器清零,在其下調(diào)變時(shí),開始進(jìn)行AD轉(zhuǎn)換。所以設(shè)計(jì)程序時(shí),要先讓START為0,在讓START為1,最后讓START為0。開始采集數(shù)據(jù)后就要讓OE為1,進(jìn)行數(shù)據(jù)輸入。同時(shí)數(shù)據(jù)采集結(jié)束時(shí),利用查詢語(yǔ)句,查看EOC是否為1,如果是1,則處于等待狀態(tài),如果變成1,則可以進(jìn)行數(shù)據(jù)輸入了。AD轉(zhuǎn)換的程序如下:START=0;START=1;START=0;while(EOC==0);OE=1;a=P0;這里a是一個(gè)變量,用來存儲(chǔ)AD輸入的數(shù)據(jù)。4.3濾波算法的選擇我在電路上采用的是開關(guān)控制選擇,所以這里只需要一系列的if選擇語(yǔ)句就可以完成率把算法的選擇。程序如下:if(con==0){

if((con1==0)&&(con2==0)&&(con3==0))

res=filter1();

if((con1==0)&&(con2==0)&&(con3==1))

res=filter2();

if((con1==1)&&(con2==0)&&(con3==0))

res=filter5();

if((con1==1)&&(con2==0)&&(con3==1))基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第16頁(yè)。

res=filter6();基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第16頁(yè)。

if((con1==1)&&(con2==1)&&(con3==1))

res=filter8();}

else

res=a;con1、con2、con3三位用來控制濾波算法的選擇,而con用來控制是否要進(jìn)行濾波。4.4總體程序總體程序見附錄B。4.5程序流程圖圖4-1程序流程圖基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第17頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第17頁(yè)。5仿真結(jié)果和分析輸入波形與未經(jīng)濾波器濾波波形如下:圖5-1輸入波形與未經(jīng)濾波器濾波波形基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第18頁(yè)。以下幾幅圖是經(jīng)濾波后的波形:基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第18頁(yè)。圖5-2經(jīng)限幅后的波形圖5-3經(jīng)中值濾波后的波形基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第19頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第19頁(yè)。圖5-4經(jīng)滑動(dòng)平均濾波后的波形基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第20頁(yè)。圖5-5經(jīng)中位值平均濾波后的波形基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第20頁(yè)。圖5-6經(jīng)加權(quán)遞推平均濾波后的波形限幅濾波的效果是和A值有關(guān)的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會(huì)大大消耗時(shí)間,因此延時(shí)比較嚴(yán)重,但是總的來說選擇排序比冒泡排序的延時(shí)情況要好。中位值平均濾波,由于濾波算法中會(huì)求平均值在,所以在原波是方波時(shí)會(huì)出現(xiàn)某一次求平均后編程中間值,另外由于和中值濾波一樣要進(jìn)行排序,因此也會(huì)產(chǎn)生很大的延時(shí)。加權(quán)遞推平均算法和上面一樣,因?yàn)闀?huì)求平均值,因此也會(huì)有時(shí)候產(chǎn)生中間值,但是如果把當(dāng)前值得權(quán)值設(shè)的很大,而越久遠(yuǎn)之前的權(quán)值設(shè)的越小,則可明顯改善此問題,另外由于加權(quán)遞推平均濾波中用到的乘法,因此會(huì)有一定的延時(shí)。

基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第21頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第21頁(yè)。6數(shù)字濾波器新算法分析6.1滑動(dòng)平均濾波滑動(dòng)平均濾波即把連續(xù)取N個(gè)采樣值看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度固定為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。具體算法程序如下:#defineN12

charvalue_buf[N];

chari=0;

charfilter()

{

charcount;

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

}滑動(dòng)平均值法對(duì)周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對(duì)偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此他不適用于脈沖干擾比較嚴(yán)重的場(chǎng)合,而適用于高頻振蕩系統(tǒng)。6.2一階滯后濾波基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第22頁(yè)。一階滯后濾波即取a=0~1,本次濾波結(jié)果=(1-a)*本次采樣值+a*上次濾波結(jié)果?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第22頁(yè)。具體算法程序如下:#definea50

charvalue;

charfilter()

{

charnew_value;

new_value=get_ad();

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

}一階之后濾波對(duì)周期性干擾具有良好的抑制作用,適用于波動(dòng)頻率較高的場(chǎng)合。同時(shí)它的相位滯后,靈敏度低,滯后程度取決于a值大小,不能消除濾波頻率高于采樣頻率的1/2的干擾信號(hào)。6.3加權(quán)遞推平均濾波加權(quán)遞推平均濾波是對(duì)遞推平均濾波法的改進(jìn),即不同時(shí)刻的數(shù)據(jù)加以不同的權(quán),通常是,越接近現(xiàn)時(shí)刻的資料,權(quán)取得越大,給予新采樣值的權(quán)系數(shù)越大,則靈敏度越高,但信號(hào)平滑度越低。具體算法程序如下:基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第23頁(yè)。#defineN12

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

charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;

charfilter()

{

charcount;

charvalue_buf[N];

intsum=0;

for(count=0,count<N;count++)

{

value_buf[count]=get_ad();

delay();

}

for(count=0,count<N;count++)

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

return(char)(sum/sum_coe);

}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第23頁(yè)。加權(quán)遞推平均濾波適用于有較大純滯后時(shí)間常數(shù)的對(duì)象和采樣周期較短的系統(tǒng)。而對(duì)于純滯后時(shí)間常數(shù)較小,采樣周期較長(zhǎng),變化緩慢的信號(hào),不能迅速反應(yīng)系統(tǒng)當(dāng)前所受干擾的嚴(yán)重程度,濾波效果差。6.4消抖濾波消抖濾波即設(shè)置一個(gè)濾波計(jì)數(shù)器,將每次采樣值與當(dāng)前有效值比較:如果采樣值=當(dāng)前有效值,則計(jì)數(shù)器清零。如果采樣值<>當(dāng)前有效值,則計(jì)數(shù)器+1,并判斷計(jì)數(shù)器是否>=上限N(溢出),如果計(jì)數(shù)器溢出,則將本次值替換當(dāng)前有效值,并清計(jì)數(shù)器。具體算法程序如下:基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第24頁(yè)。#defineN12

charfilter()

{

charcount=0;

charnew_value;

new_value=get_ad();

while(value!=new_value);

{

count++;

if(count>=N)returnnew_value;

delay();

new_value=get_ad();

}

returnvalue;

}基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第24頁(yè)。消抖濾波對(duì)于變化緩慢的被測(cè)參數(shù)有較好的濾波效果,可避免在臨界值附近控制器的反復(fù)開/關(guān)跳動(dòng)或顯示器上數(shù)值抖動(dòng)。對(duì)于快速變化的參數(shù)不宜,如果在計(jì)數(shù)器溢出的那一次采樣到的值恰好是干擾值,這種算法則會(huì)將干擾值當(dāng)作有效值導(dǎo)入系統(tǒng)?!?】所以,每種濾波算法都有其各自的特點(diǎn),在實(shí)際應(yīng)用中,究竟選取哪一種數(shù)字濾波算法,應(yīng)根據(jù)具體的測(cè)量參數(shù)合理的選用。不適當(dāng)?shù)貞?yīng)用數(shù)字濾波,不僅達(dá)不到濾波效果,反而會(huì)降低控制品質(zhì),甚至失控,這點(diǎn)必須予以注意?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第25頁(yè)。基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第25頁(yè)。7總結(jié)在微機(jī)控制系統(tǒng)的模擬輸入信號(hào)中,一般均含有各種噪聲和干擾,他們來自被測(cè)信號(hào)源本身,傳感器,外界干擾等。為了進(jìn)行準(zhǔn)確測(cè)量和控制,必須消除被測(cè)信號(hào)中的噪聲和干擾。噪聲有2大類:一類為周期性的,其典型代表為50Hz的工頻干擾,對(duì)于這類信號(hào),采用積分時(shí)間等于20ms整倍數(shù)的雙積分A/D轉(zhuǎn)換器,可有效地消除其影響;另一類為非周期的不規(guī)則隨機(jī)信號(hào),對(duì)于隨機(jī)干擾,可以用數(shù)字濾波方法予以削弱或?yàn)V除。對(duì)于數(shù)字濾波系統(tǒng),其程序不是很難的,主要是解決程序設(shè)計(jì)中的問題,而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個(gè)設(shè)計(jì)的靈魂所在。因此在整個(gè)設(shè)計(jì)過程中大部分時(shí)間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個(gè)子程序才是關(guān)鍵的問題所在,這需要對(duì)系統(tǒng)的結(jié)構(gòu)很熟悉。因此可以說系統(tǒng)的設(shè)計(jì)是軟件和硬件的結(jié)合,二者是密不可分的。所謂數(shù)字濾波,就是通過一定的計(jì)算或判斷程序減少干擾信號(hào)在有用信號(hào)中的比重,因此他實(shí)際上是一個(gè)程序?yàn)V波。

數(shù)字濾波器克服了模擬濾波器的許多不足,他與模擬濾波器相比有以下優(yōu)點(diǎn):

(1)數(shù)字濾波器是用軟件實(shí)現(xiàn)的,不需要增加硬設(shè)備,因而可靠性高、穩(wěn)定性好,不存在阻抗匹配問題。(2)模擬濾波器通常是各通道專用,而數(shù)字濾波器則可多通道共享,從而降低了成本。(3)數(shù)字濾波器可以對(duì)頻率很低(如0.01Hz)的信號(hào)進(jìn)行濾波,而模擬濾波器由于受電容容量的限制,頻率不可能太低。數(shù)字濾波器具有高精度,高可靠性,可程控改變特性或復(fù)用、便于集成等優(yōu)點(diǎn)。數(shù)字濾波器在語(yǔ)言信號(hào)處理、圖像信號(hào)處理、醫(yī)學(xué)生物信號(hào)處理以及其他應(yīng)用領(lǐng)域都得到了廣泛應(yīng)用?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第26頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第26頁(yè)。致謝本論文的工作是在我的導(dǎo)師XXX老師的悉心指導(dǎo)下完成的。在整個(gè)畢業(yè)設(shè)計(jì)過程中,X老師不斷引導(dǎo)我們,幫助我們梳理論文思路,耐心地給我解釋一些細(xì)節(jié)上的、我不理解的問題,并提出一些新的問題,使得我對(duì)畢業(yè)設(shè)計(jì)課題能夠有更深入的思考,幫助我順利完成畢業(yè)設(shè)計(jì)和論文。在此謹(jǐn)向X老師致以誠(chéng)摯的謝意和崇高的敬意。一開始我們從參考書上找來了課題,但是畢竟是參考書,做到后來發(fā)現(xiàn)很多程序都是不完整的,這讓我傷透了腦筋。程序接線什么的都弄好了,調(diào)試也沒有問題,可是就是無法達(dá)到預(yù)期想要的結(jié)果。參考書畢竟只是一個(gè)參考,設(shè)計(jì)這種東西最后還是要靠自己動(dòng)腦筋。然后我從平時(shí)做的實(shí)驗(yàn)﹑老師上課的舉例﹑書本上的知識(shí)以及老師的輔導(dǎo)和其他同學(xué)的幫助下終于完成了。雖然內(nèi)容并不是很復(fù)雜,但是我們覺得設(shè)計(jì)的過程相當(dāng)重要,學(xué)到了很多,收獲了很多。我覺得課程設(shè)計(jì)反映的是一個(gè)從理論到實(shí)際應(yīng)用的過程。在此,我要感謝仲佳,范瑞娟,高東東等同學(xué)對(duì)我的幫助,這段時(shí)間我們之間的相互協(xié)作,不僅促進(jìn)了畢設(shè)的順利完成,同時(shí)也增進(jìn)我們之間的友誼。最后,感謝所有支持過我、幫助過我的老師、朋友和同學(xué)們,祝愿大家都會(huì)有一個(gè)美好而又光明的未來?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第27頁(yè)。基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第27頁(yè)。參考文獻(xiàn)[1]李群芳.單片微型計(jì)算機(jī)與接口技術(shù).電子工業(yè)出版社.2007[2]彭冬明.單片機(jī)實(shí)驗(yàn)教程.北京理工大學(xué)出版社.2007[3]何立民.單片機(jī)應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社.2000[4]余發(fā)山.單片機(jī)原理及及應(yīng)用技術(shù).中國(guó)礦業(yè)大學(xué)出版社.2003[5]周航慈.單片機(jī)程序設(shè)計(jì)基礎(chǔ).北京航空航天大學(xué)出版社.2001[6]劉松強(qiáng)數(shù)字信號(hào)處理系統(tǒng)及其應(yīng)用.清華大學(xué)出版社.1996[7]程佩青數(shù)字信號(hào)處理教程.清華大學(xué)出版社.1995[8]潘祖善,何紹雄,賈學(xué)堂微波技術(shù).上海交通大學(xué)出版社.1997[9]R.E包格勒,A.G康斯坦丁尼斯基數(shù)字濾波器導(dǎo)論.國(guó)防工業(yè)出版社.1982[10]ALANV.OPPENHEIM.ALANS.WILLSKY.SIGNALS&SYSTEM清華大學(xué)出版社.1999基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第28頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第28頁(yè)。附錄A基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第29頁(yè)?;趩纹瑱C(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第29頁(yè)。附錄B總體程序如下:#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineA0.005#defineN11sbitcon1=P2^3;sbitcon2=P2^4;sbitcon3=P2^5;sbitcon=P2^6;sbitOE=P2^0;sbitSTART=P2^1;sbitEOC=P2^2;uchara;ucharbuf[N]={0};

voidchange(){inti;for(i=0;i<N-1;i++)buf[i]=buf[i+1];buf[N-1]=a;}

ucharget_data(n)基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第30頁(yè)。{基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)全文共35頁(yè),當(dāng)前為第30頁(yè)。change();returnbuf[n];}

//限幅濾波ucharfilter1()

{

ucharnew_value,value;value=get_data(N-2);

new_value=get_data(N-1);

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

returnnew_value;

}

//中值濾波uchar

filter2(){ucharvalue_buff[N],temp;

//定義存儲(chǔ)數(shù)據(jù)的數(shù)組intcount,i,j,k;for(count=0;count<N;count++)

//獲取數(shù)據(jù)

{value_buff[count]=get_data(count);

}for(j=0;j<N-1;j++)

//用冒泡法對(duì)數(shù)據(jù)進(jìn)行排序,當(dāng)然最好用其他排序方法

{k=j;for(j=i+1;j<N;j++)if(value_buff[j]<value_buff[k])

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論