




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于單片機的數(shù)字濾波器設(shè)計PAGE24基于單片機數(shù)字濾波器設(shè)計摘要數(shù)據(jù)采集又稱數(shù)據(jù)獲取,是利用一種裝置,從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部的一個接口。數(shù)據(jù)采集技術(shù)廣泛應(yīng)用在各個領(lǐng)域。比如攝像頭,麥克風(fēng),都是數(shù)據(jù)采集工具。被采集數(shù)據(jù)是已被轉(zhuǎn)換為電訊號的各種物理量,如溫度,水位,風(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ù)字濾波器,也有模擬濾波器。本文采用了基于單片機和c語言來設(shè)計并開發(fā)數(shù)字濾波系統(tǒng)。針對于單片機數(shù)據(jù)采集系統(tǒng)中經(jīng)常出現(xiàn)的隨機干擾,通過交流信號發(fā)生器輸入來模擬數(shù)據(jù)采集過程,驗證了幾種使用較為普遍的克服隨機干擾的單片機數(shù)字濾波算法,并給出了相應(yīng)的c程序,同時也對這幾種濾波算法進行了比較,并指出每一種算法具體適用范圍和注意事項。另外本文使用了proteus進行仿真驗證這幾種濾波方法,用了AD和DA來采集及輸出數(shù)據(jù)。關(guān)鍵詞單片機/proteus/數(shù)字濾波?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第1頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第1頁。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.基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第2頁。KEYWORDSmicrocontroller,proteus,digitalfilter基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第2頁。目錄摘要 IABSTRACT II1緒論 11.1數(shù)字濾波器特點 11.2數(shù)字濾波器的設(shè)計 22數(shù)字濾波設(shè)計原理 32.1中值濾波 32.2算數(shù)平均濾波 42.3加權(quán)平均濾波 52.4中位值平均濾波 62.5限幅濾波 73濾波器硬件設(shè)計 83.1單片機AT89C51 83.2數(shù)據(jù)采集 93.3數(shù)模轉(zhuǎn)換輸出 103.4總體電路圖 104程序設(shè)計 114.1濾波算法設(shè)計 11基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第3頁。4.2AD轉(zhuǎn)換器 12基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第3頁。4.3濾波算法的選擇 124.4總體程序 134.5程序流程圖 135仿真結(jié)果和分析 146數(shù)字濾波器新算法分析 186.1滑動平均濾波 186.2一階滯后濾波 186.3加權(quán)遞推平均濾波 196.4消抖濾波 207總結(jié) 22致謝 23參考文獻 24附錄A 25附錄B 26基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第4頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第4頁。1緒論1.1數(shù)字濾波器特點現(xiàn)在工業(yè)控制系統(tǒng)中,電路系統(tǒng)變得越來越復(fù)雜,因而帶來的相互干擾也越來越強烈,模擬濾波電路已不能滿足要求,數(shù)字濾波應(yīng)運而生。數(shù)字濾波器是數(shù)字信號處理器的一種,在進行數(shù)據(jù)采集和數(shù)據(jù)傳輸過程中,經(jīng)常會受到各種外界干擾,當(dāng)干擾嚴重時,可導(dǎo)致系統(tǒng)的測控精度降低甚至無法正常工作,數(shù)字濾波器則通過計算機執(zhí)行一段相應(yīng)的程序來濾除夾雜在數(shù)字信號中的干擾信號。它所處理的對象是用序列表示的離散信號或是數(shù)字信號,因而可以實現(xiàn)一些高難度的復(fù)雜處理,而且具有工作穩(wěn)定,受環(huán)境因素小,抗干擾性能強精度可控等優(yōu)點。因而現(xiàn)階段被廣泛應(yīng)用,而用單片機實現(xiàn)數(shù)字濾波器與廣泛應(yīng)用的DSP處理器相比,具有成本低,體積小,可靠性強等優(yōu)點,因而在一定場合也有一定的實用價值?!?】從時間上看,數(shù)字信號是離散的,從幅度上看,它又是量化的。因此數(shù)字信號可用一個序列數(shù)來表示,而每個數(shù)又可表示成二進制碼的形式。數(shù)字濾波器的功能就是利用計算機軟件對一組輸入數(shù)字序列進行一定的運算,再變換成另一組輸出數(shù)字序列。對被測信號的處理,首先通過采樣/保持電路,送至模/數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,然后通過數(shù)字濾波器濾除其中的干擾信號,最后通過模/數(shù)轉(zhuǎn)換器獲得模擬量輸出。根據(jù)所用數(shù)學(xué)模型的不同,數(shù)字濾波器可劃分為兩大類:一種是遞歸性濾波器,其特點是濾波器的輸出不僅與輸入信號有關(guān),還與過去的輸出值有關(guān);另一種是非遞歸性濾波器,其特征是濾波器的輸出僅與輸入信號有關(guān),而與過去輸出值無關(guān)。設(shè)數(shù)字濾波器的輸入信號為,輸出信號為,則輸入序列與輸出序列之間的關(guān)系可用差分方程表示為公式一:(1.1)基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第5頁。輸入信號可以是模擬信號經(jīng)采樣和ADC變換后得到的數(shù)字序列,也可以是計算機的輸出信號,,均為系數(shù),由上述差分方程組組成的數(shù)字濾波器,稱為遞歸性濾波器。若將上述差分方程中系數(shù)取做0,則得到公式二:基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第5頁。(1.2)這種濾波器叫做非遞歸性濾波器。選擇不同的系數(shù),則可以設(shè)計低通,高通或帶通,帶阻式數(shù)字濾波器?!?】1.2數(shù)字濾波器的設(shè)計1.設(shè)計數(shù)字濾波器時,一般按下面步驟進行:(1)根據(jù)干擾信號的特征來選擇合適的濾波器。(2)建立起典型的差分方程數(shù)學(xué)模型,并對差分方程進行Z變換,寫出其Z傳遞函數(shù)。(3)根據(jù)有用信號與干擾信號的頻率特征,來確定系統(tǒng)期望的通頻帶。(4)根據(jù)Z傳遞函數(shù),確定其幅頻特性和相頻特性,再對Z進行反變換,求出濾波器的線性離散方程。(5)按照線性差分方程來編制相應(yīng)的軟件,最終實現(xiàn)數(shù)字濾波的功能。2.數(shù)字濾波器的軟件設(shè)計在測控系統(tǒng)中,由于各種參數(shù)的干擾成分不同,因而濾除這些干擾成分的方式也不同,本論文將用到中值濾波,算數(shù)平均濾波,加權(quán)平均濾波,中位值平均濾波,限幅濾波這五種方法,可根據(jù)具體情況加以選用?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第6頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第6頁。2數(shù)字濾波設(shè)計原理這里有很多種熟悉濾波方法,我們見選用其中幾種來進行設(shè)計,如中值濾波,算數(shù)平均濾波,加權(quán)平均濾波等等。所以下面我將詳細介紹它們。2.1中值位濾波是先對某中值濾波一參數(shù)連續(xù)采樣N次(一般N取奇數(shù)),然后把N次采樣值按從小到大排列,取中間值為本次采樣值。該濾波方法實際上是一種排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,沒出現(xiàn)一次前者數(shù)據(jù)大于后者數(shù)據(jù),就要進行兩者數(shù)據(jù)的交換。該算法樣例子程序如下:#defineN11
//N值可根據(jù)實際情況調(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;基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第7頁。
}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第7頁。returnvalue_buf[(N-1)/2];}中位值濾波能有效地克服偶然因素引起的波動或采樣器不穩(wěn)定引起的誤碼等脈沖干擾。對溫度、液位等緩慢變化的被測參數(shù)采用此算法能收到良好的濾波效果,但對于流量、壓力等快速變化的數(shù)據(jù),不宜采用中位值濾波?!?】2.2算數(shù)平均濾波算術(shù)平均濾波法適用于對一般的具有隨機干擾的信號進行濾波。這種信號的特點是信號本身在某一數(shù)值范圍附近上下波動,如測量流量、液位時經(jīng)常遇到這種情況。算術(shù)平均濾波法是要按輸入的N個采樣數(shù)據(jù),尋找這樣一個Y,使得Y與各個采樣值之間的偏差的平方和最小。具體實現(xiàn)此算法的子程序如下:#defineN12charfilter(){intcount;intsum=0;for(count=0;count<N;count++)
{
sum+=get_ad();
delay();
}
return(char)(sum/N);}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第8頁。算術(shù)平均濾波適用于對一般具有隨機干擾的信號進行濾波。這種信號的特點是有一個平均值,信號在某一數(shù)值范圍附近做上下波動,在這種情況下僅取一個采樣值做依據(jù)顯然是不準(zhǔn)確的。算術(shù)平均濾波對信號的平滑程序完全取決于N,當(dāng)N較大時,平滑度高,但靈敏度低;當(dāng)N較小時,平滑度低,但靈敏度高,應(yīng)視具體情況選取N,以便既少占用計算時間,又達到最好的效果?!?】基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第8頁。2.3加權(quán)平均濾波在算術(shù)平均濾波和移動平均濾波中,N次采樣值在輸出結(jié)果中的權(quán)重是均等的,取1/N。用這樣的濾波算法,對于時變信號會引入滯后,N值越大,滯后越嚴重。為了增加新采樣數(shù)據(jù)在移動平均中的權(quán)重,以提高系統(tǒng)對當(dāng)前采樣值中所受干擾的靈敏度,可采用加權(quán)平均濾波,它是移動平均濾波算法的改進。加權(quán)平均濾波是對連續(xù)N次采樣值分別乘上不同的加權(quán)系統(tǒng)之后再求累加和,加權(quán)系統(tǒng)一般先小后大,以突出后面若干采樣的效果,加強系統(tǒng)對參數(shù)變化趨勢的辨識。各個加權(quán)系統(tǒng)均為小于1的小數(shù),且滿足總和等于1的約束條件。這樣,加權(quán)運算之后的累加和即為有效采樣值。為方便計算,可取各加權(quán)系數(shù)均為整數(shù),且總和為256,加權(quá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);基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第9頁。}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第9頁。2.4中位值平均濾波它相當(dāng)于是“中位值濾波法”和“算術(shù)平均濾波法”的結(jié)合。它連續(xù)采樣N個數(shù)據(jù),然后去掉一個最大值和一個最小值,最后計算N-2個數(shù)據(jù)的算術(shù)平均值。一般N值選取:3-14。具體算法程序如下:基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第10頁。#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));
}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第10頁。這種濾波方法兼容了移動平均濾波算法和中位值濾波算法的優(yōu)點,所以無論對緩慢變化的信號,還是對快速變化的信號,都能取得較好的濾波效果。【1】2.5限幅濾波限幅濾波的基本原理是把兩次相鄰時刻(n和n-1)的采樣值Yn和Yn-1相減,求出其差值,以絕對值表示,然后將這個差值與兩次采樣允許的最大偏差值ΔY比較,如果兩次采樣值的差值超過了允許的最大偏差值ΔY,則認為發(fā)生了隨機干擾,并認為最后一次采樣值Yn非法,應(yīng)予剔除。剔除Yn后,可用Yn-1代替Yn;若未超過允許的最大偏差值范圍,則認為本次采樣值有效。可用如下公式表示:|Yn-Yn-1|≤ΔY;則Yn有效(2.1)|Yn-Yn-1|>ΔY;則Yn-1有效(2.2)此算法的樣例子程序如下:#defineA10
//A值可根據(jù)實際情況調(diào)整chardata;
//上一次的數(shù)據(jù)charfilter_1(){chardatanew;
//新數(shù)據(jù)變量datanew=get_data();
//獲得新數(shù)據(jù)//濾波算法if((datanew-data>A)||(data-datanew>A)returndata;returndatanew;}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第11頁。該算法主要用于處理變化比較緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時關(guān)鍵在于最大偏差值的Δy的選擇,通常可根據(jù)經(jīng)驗獲得,也可按照輸出參數(shù)可能的最大變化速度Vmax及采樣周期T來決定ΔY的值,即ΔY=VmaxT?!?】基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第11頁。3濾波器硬件設(shè)計通過對系統(tǒng)工作原理的了解,可以大致了解數(shù)字濾波器設(shè)計的整體框圖:圖3—1總體設(shè)計框圖3.1單片機AT89C51這里我們使用了51系列單片機——AT89C51,如下圖利用這個單片機進行編程,實現(xiàn)對輸入信號的濾波。我使用了P0口作為接受AD轉(zhuǎn)換的結(jié)果的端口,而P1口則輸出數(shù)據(jù)到DA轉(zhuǎn)換器。另外還利用了P2作為控制端口,P2.0-P2.2用來控制AD轉(zhuǎn)換器,而P2.3-P2.6外接四個開關(guān),用來實現(xiàn)濾波方式的選擇?!?】基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第12頁。圖3-2AT89C51引腳圖基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第12頁。3.2數(shù)據(jù)采集另外我還使用了ADC0808進行數(shù)據(jù)采集。這里ADC0808是并聯(lián)AD轉(zhuǎn)換器,ADC0808的引腳圖如下圖:圖3-3ADC0808的引腳圖基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第13頁。IN0-IN8是八個模擬量輸入端口,ADC0808可以一次對八個模擬量進行模數(shù)轉(zhuǎn)換,但是在這里我們只使用了其中的一個輸入端IN0,所以ADDDA、ADDB、ADDC都應(yīng)為0,所以我讓它們都接地。它的八個輸出端接在單片機上,CLOCK接數(shù)據(jù)采樣時鐘,它可以接在單片機上由單片機控制,也可接在另外的數(shù)字時鐘上,這里我選用外接別的時鐘。START為轉(zhuǎn)換啟動信號,在其上跳變時,所有內(nèi)部寄存器清零,在其下調(diào)變時,開始進行AD轉(zhuǎn)換。ALE是地址鎖存信號。這里我讓START和ALE均接在單片機的同一個端口上,即P2.1,讓單片機實現(xiàn)程序控制AD的轉(zhuǎn)換。OE是輸出允許信號,OE=1時,才能允許輸出,這里我讓它也接在單片機的端口P2.1上,也是為了讓單片機實現(xiàn)程序控制ADC0808的輸出。EOC是轉(zhuǎn)換結(jié)束信號,EOC=1時,表示轉(zhuǎn)換結(jié)束。這個信號可以用來提醒單片機AD已經(jīng)轉(zhuǎn)換完畢,程序中即可以用查詢方式,也可以用中斷方式,這里我使用查詢方式,所以把它接在P2.2上。VREF(+)和VREF(-)都是參考電壓信號端口,這里我讓VREF(-)的參考電壓為零,VREF(+)的參考電壓為+3V。基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第13頁。3.3數(shù)模轉(zhuǎn)換輸出這里我用了DAC0832來進行數(shù)模轉(zhuǎn)換。DAC0832的引腳圖如下圖所示:圖3-4DAC0832的引腳圖DAC0832有三種數(shù)模轉(zhuǎn)換方法,直通方式、單緩沖方式、雙緩沖方式,因為單片機輸出后可以直接進行數(shù)模轉(zhuǎn)換,所以這里我采用了不需要單片機控制的最為簡單的直通方式,但是DAC0832若用于直通方式,則在接單片機的輸出端口之間還要接一個緩沖器件,如74LS373。若用于直通方式下,則、、、和GND均接地,而VCC和ILE則接正電源。VREF是參考電源。IOUT1、IOUT2是兩個輸出端。DAC0832輸出的是電流,要利用運算放大器轉(zhuǎn)換成電壓。數(shù)模轉(zhuǎn)換輸出電路如下圖所示:圖3-5數(shù)模轉(zhuǎn)換輸出電路3.4總體電路圖總體電路圖見附錄A基于單片機的數(shù)字濾波器設(shè)基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第14頁。4程序設(shè)計4.1濾波算法設(shè)計這個在前面介紹濾波原理時已經(jīng)說過了,在此就不再次重復(fù)了。因為設(shè)計時采集的時鐘頻率很大,所以在一定范圍內(nèi)采集的數(shù)據(jù)都差不多,因此對一系列的數(shù)據(jù)進行濾波處理時就好像是在對同一個數(shù)據(jù)進行濾波處理。但是因為這些算法處理的數(shù)據(jù)時連續(xù)采集了N個的,所以要設(shè)立一個變量數(shù)組來存儲這些輸入的數(shù)據(jù),而且要記得及時更新。我利用了隊列的思想,如果輸入一個新的數(shù)據(jù),則丟棄最原始的一個數(shù)據(jù),把新數(shù)據(jù)插入進來,就好像隊列一樣,對頭刪除數(shù)據(jù),對位插入新的數(shù)據(jù)。這個程序如下:voidchange(){inti;for(i=0;i<N-1;i++)buf[i]=buf[i+1];buf[N-1]=a;}而獲得這一系列中的某一個數(shù)據(jù)就用了一個函數(shù)就可以了,直接返回隊列中的第n項的數(shù)據(jù)。這個程序如下:ucharget_data(n){change();returnbuf[n];基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第15頁。}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第15頁。4.2AD轉(zhuǎn)換器因為START為轉(zhuǎn)換啟動信號,在其上跳變時,所有內(nèi)部寄存器清零,在其下調(diào)變時,開始進行AD轉(zhuǎn)換。所以設(shè)計程序時,要先讓START為0,在讓START為1,最后讓START為0。開始采集數(shù)據(jù)后就要讓OE為1,進行數(shù)據(jù)輸入。同時數(shù)據(jù)采集結(jié)束時,利用查詢語句,查看EOC是否為1,如果是1,則處于等待狀態(tài),如果變成1,則可以進行數(shù)據(jù)輸入了。AD轉(zhuǎn)換的程序如下:START=0;START=1;START=0;while(EOC==0);OE=1;a=P0;這里a是一個變量,用來存儲AD輸入的數(shù)據(jù)。4.3濾波算法的選擇我在電路上采用的是開關(guān)控制選擇,所以這里只需要一系列的if選擇語句就可以完成率把算法的選擇。程序如下: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))基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第16頁。
res=filter6();基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第16頁。
if((con1==1)&&(con2==1)&&(con3==1))
res=filter8();}
else
res=a;con1、con2、con3三位用來控制濾波算法的選擇,而con用來控制是否要進行濾波。4.4總體程序總體程序見附錄B。4.5程序流程圖圖4-1程序流程圖基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第17頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第17頁。5仿真結(jié)果和分析輸入波形與未經(jīng)濾波器濾波波形如下:圖5-1輸入波形與未經(jīng)濾波器濾波波形基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第18頁。以下幾幅圖是經(jīng)濾波后的波形:基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第18頁。圖5-2經(jīng)限幅后的波形圖5-3經(jīng)中值濾波后的波形基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第19頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第19頁。圖5-4經(jīng)滑動平均濾波后的波形基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第20頁。圖5-5經(jīng)中位值平均濾波后的波形基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第20頁。圖5-6經(jīng)加權(quán)遞推平均濾波后的波形限幅濾波的效果是和A值有關(guān)的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會大大消耗時間,因此延時比較嚴重,但是總的來說選擇排序比冒泡排序的延時情況要好。中位值平均濾波,由于濾波算法中會求平均值在,所以在原波是方波時會出現(xiàn)某一次求平均后編程中間值,另外由于和中值濾波一樣要進行排序,因此也會產(chǎn)生很大的延時。加權(quán)遞推平均算法和上面一樣,因為會求平均值,因此也會有時候產(chǎn)生中間值,但是如果把當(dāng)前值得權(quán)值設(shè)的很大,而越久遠之前的權(quán)值設(shè)的越小,則可明顯改善此問題,另外由于加權(quán)遞推平均濾波中用到的乘法,因此會有一定的延時。
基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第21頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第21頁。6數(shù)字濾波器新算法分析6.1滑動平均濾波滑動平均濾波即把連續(xù)取N個采樣值看成一個隊列,隊列的長度固定為N,每次采樣到一個新數(shù)據(jù)放入隊尾,并扔掉原來隊首的一次數(shù)據(jù)(先進先出原則)。吧隊列中的N個數(shù)據(jù)進行算術(shù)平均運算,就可獲得新的濾波結(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);
}滑動平均值法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此他不適用于脈沖干擾比較嚴重的場合,而適用于高頻振蕩系統(tǒng)。6.2一階滯后濾波基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第22頁。一階滯后濾波即取a=0~1,本次濾波結(jié)果=(1-a)*本次采樣值+a*上次濾波結(jié)果。基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第22頁。具體算法程序如下:#definea50
charvalue;
charfilter()
{
charnew_value;
new_value=get_ad();
return(100-a)*value+a*new_value;
}一階之后濾波對周期性干擾具有良好的抑制作用,適用于波動頻率較高的場合。同時它的相位滯后,靈敏度低,滯后程度取決于a值大小,不能消除濾波頻率高于采樣頻率的1/2的干擾信號。6.3加權(quán)遞推平均濾波加權(quán)遞推平均濾波是對遞推平均濾波法的改進,即不同時刻的數(shù)據(jù)加以不同的權(quán),通常是,越接近現(xiàn)時刻的資料,權(quán)取得越大,給予新采樣值的權(quán)系數(shù)越大,則靈敏度越高,但信號平滑度越低。具體算法程序如下:基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第23頁。#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);
}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第23頁。加權(quán)遞推平均濾波適用于有較大純滯后時間常數(shù)的對象和采樣周期較短的系統(tǒng)。而對于純滯后時間常數(shù)較小,采樣周期較長,變化緩慢的信號,不能迅速反應(yīng)系統(tǒng)當(dāng)前所受干擾的嚴重程度,濾波效果差。6.4消抖濾波消抖濾波即設(shè)置一個濾波計數(shù)器,將每次采樣值與當(dāng)前有效值比較:如果采樣值=當(dāng)前有效值,則計數(shù)器清零。如果采樣值<>當(dāng)前有效值,則計數(shù)器+1,并判斷計數(shù)器是否>=上限N(溢出),如果計數(shù)器溢出,則將本次值替換當(dāng)前有效值,并清計數(shù)器。具體算法程序如下:基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第24頁。#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;
}基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第24頁。消抖濾波對于變化緩慢的被測參數(shù)有較好的濾波效果,可避免在臨界值附近控制器的反復(fù)開/關(guān)跳動或顯示器上數(shù)值抖動。對于快速變化的參數(shù)不宜,如果在計數(shù)器溢出的那一次采樣到的值恰好是干擾值,這種算法則會將干擾值當(dāng)作有效值導(dǎo)入系統(tǒng)?!?】所以,每種濾波算法都有其各自的特點,在實際應(yīng)用中,究竟選取哪一種數(shù)字濾波算法,應(yīng)根據(jù)具體的測量參數(shù)合理的選用。不適當(dāng)?shù)貞?yīng)用數(shù)字濾波,不僅達不到濾波效果,反而會降低控制品質(zhì),甚至失控,這點必須予以注意。基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第25頁。基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第25頁。7總結(jié)在微機控制系統(tǒng)的模擬輸入信號中,一般均含有各種噪聲和干擾,他們來自被測信號源本身,傳感器,外界干擾等。為了進行準(zhǔn)確測量和控制,必須消除被測信號中的噪聲和干擾。噪聲有2大類:一類為周期性的,其典型代表為50Hz的工頻干擾,對于這類信號,采用積分時間等于20ms整倍數(shù)的雙積分A/D轉(zhuǎn)換器,可有效地消除其影響;另一類為非周期的不規(guī)則隨機信號,對于隨機干擾,可以用數(shù)字濾波方法予以削弱或濾除。對于數(shù)字濾波系統(tǒng),其程序不是很難的,主要是解決程序設(shè)計中的問題,而程序設(shè)計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設(shè)計的靈魂所在。因此在整個設(shè)計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關(guān)鍵的問題所在,這需要對系統(tǒng)的結(jié)構(gòu)很熟悉。因此可以說系統(tǒng)的設(shè)計是軟件和硬件的結(jié)合,二者是密不可分的。所謂數(shù)字濾波,就是通過一定的計算或判斷程序減少干擾信號在有用信號中的比重,因此他實際上是一個程序濾波。
數(shù)字濾波器克服了模擬濾波器的許多不足,他與模擬濾波器相比有以下優(yōu)點:
(1)數(shù)字濾波器是用軟件實現(xiàn)的,不需要增加硬設(shè)備,因而可靠性高、穩(wěn)定性好,不存在阻抗匹配問題。(2)模擬濾波器通常是各通道專用,而數(shù)字濾波器則可多通道共享,從而降低了成本。(3)數(shù)字濾波器可以對頻率很低(如0.01Hz)的信號進行濾波,而模擬濾波器由于受電容容量的限制,頻率不可能太低。數(shù)字濾波器具有高精度,高可靠性,可程控改變特性或復(fù)用、便于集成等優(yōu)點。數(shù)字濾波器在語言信號處理、圖像信號處理、醫(yī)學(xué)生物信號處理以及其他應(yīng)用領(lǐng)域都得到了廣泛應(yīng)用?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第26頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第26頁。致謝本論文的工作是在我的導(dǎo)師XXX老師的悉心指導(dǎo)下完成的。在整個畢業(yè)設(shè)計過程中,X老師不斷引導(dǎo)我們,幫助我們梳理論文思路,耐心地給我解釋一些細節(jié)上的、我不理解的問題,并提出一些新的問題,使得我對畢業(yè)設(shè)計課題能夠有更深入的思考,幫助我順利完成畢業(yè)設(shè)計和論文。在此謹向X老師致以誠摯的謝意和崇高的敬意。一開始我們從參考書上找來了課題,但是畢竟是參考書,做到后來發(fā)現(xiàn)很多程序都是不完整的,這讓我傷透了腦筋。程序接線什么的都弄好了,調(diào)試也沒有問題,可是就是無法達到預(yù)期想要的結(jié)果。參考書畢竟只是一個參考,設(shè)計這種東西最后還是要靠自己動腦筋。然后我從平時做的實驗﹑老師上課的舉例﹑書本上的知識以及老師的輔導(dǎo)和其他同學(xué)的幫助下終于完成了。雖然內(nèi)容并不是很復(fù)雜,但是我們覺得設(shè)計的過程相當(dāng)重要,學(xué)到了很多,收獲了很多。我覺得課程設(shè)計反映的是一個從理論到實際應(yīng)用的過程。在此,我要感謝仲佳,范瑞娟,高東東等同學(xué)對我的幫助,這段時間我們之間的相互協(xié)作,不僅促進了畢設(shè)的順利完成,同時也增進我們之間的友誼。最后,感謝所有支持過我、幫助過我的老師、朋友和同學(xué)們,祝愿大家都會有一個美好而又光明的未來?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第27頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第27頁。參考文獻[1]李群芳.單片微型計算機與接口技術(shù).電子工業(yè)出版社.2007[2]彭冬明.單片機實驗教程.北京理工大學(xué)出版社.2007[3]何立民.單片機應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社.2000[4]余發(fā)山.單片機原理及及應(yīng)用技術(shù).中國礦業(yè)大學(xué)出版社.2003[5]周航慈.單片機程序設(shè)計基礎(chǔ).北京航空航天大學(xué)出版社.2001[6]劉松強數(shù)字信號處理系統(tǒng)及其應(yīng)用.清華大學(xué)出版社.1996[7]程佩青數(shù)字信號處理教程.清華大學(xué)出版社.1995[8]潘祖善,何紹雄,賈學(xué)堂微波技術(shù).上海交通大學(xué)出版社.1997[9]R.E包格勒,A.G康斯坦丁尼斯基數(shù)字濾波器導(dǎo)論.國防工業(yè)出版社.1982[10]ALANV.OPPENHEIM.ALANS.WILLSKY.SIGNALS&SYSTEM清華大學(xué)出版社.1999基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第28頁。基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第28頁。附錄A基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第29頁?;趩纹瑱C的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第29頁。附錄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)基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第30頁。{基于單片機的數(shù)字濾波器設(shè)計全文共35頁,當(dāng)前為第30頁。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;
//定義存儲數(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++)
//用冒泡法對數(shù)據(jù)進行排序,當(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項目管理重要考點復(fù)習(xí)試題及答案
- 小吃店經(jīng)營數(shù)據(jù)分析與應(yīng)用考核試卷
- 游樂設(shè)施施工中的合同履行考核試卷
- 玩具行業(yè)的跨境電商機遇考核試卷
- 新手村2024年農(nóng)藝師考試試題及答案
- 學(xué)習(xí)網(wǎng)絡(luò)2025年證券從業(yè)資格證考試試題及答案
- 資產(chǎn)配置與證券投資的關(guān)系試題及答案
- 2023年中國電信蚌埠分公司客戶經(jīng)理招聘筆試參考題庫附帶答案詳解
- 福建事業(yè)單位考試信息技術(shù)試題及答案
- 微生物檢驗有效性試題及答案盤點
- 2024年河南輕工職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 中醫(yī)藥行業(yè)數(shù)字化轉(zhuǎn)型的機遇與挑戰(zhàn)
- 育種學(xué) 課件 第9章 林木抗逆性育種學(xué)習(xí)資料
- 工程塑膠材料采購合同(2篇)
- 新污染物環(huán)境風(fēng)險評估:理論與制度構(gòu)建
- 2025中考英語沖刺-傳統(tǒng)文化詩詞
- 金融科技學(xué)知到智慧樹章節(jié)測試課后答案2024年秋重慶工商大學(xué)
- 2025屆北京市朝陽區(qū)高三語文一模議論文“說托舉”寫作導(dǎo)引(5篇范文)
- 2025年中考數(shù)學(xué)壓軸模擬試卷(含答案解析)
- 2025年四川滎經(jīng)縣國潤排水有限責(zé)任公司招聘筆試參考題庫含答案解析
- 宣傳工作流程及管理規(guī)范
評論
0/150
提交評論