![基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/40a29bd8-a912-4973-bb1a-8bd9bfd677e4/40a29bd8-a912-4973-bb1a-8bd9bfd677e41.gif)
![基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/40a29bd8-a912-4973-bb1a-8bd9bfd677e4/40a29bd8-a912-4973-bb1a-8bd9bfd677e42.gif)
![基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/40a29bd8-a912-4973-bb1a-8bd9bfd677e4/40a29bd8-a912-4973-bb1a-8bd9bfd677e43.gif)
![基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/40a29bd8-a912-4973-bb1a-8bd9bfd677e4/40a29bd8-a912-4973-bb1a-8bd9bfd677e44.gif)
![基于單片機(jī)的數(shù)字濾波器設(shè)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/40a29bd8-a912-4973-bb1a-8bd9bfd677e4/40a29bd8-a912-4973-bb1a-8bd9bfd677e45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上基于單片機(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)換為電訊號的各種物理量,如溫度,水位,風(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語言來設(shè)計(jì)并開發(fā)數(shù)字濾波系統(tǒng)。針對于單片機(jī)數(shù)據(jù)采集系統(tǒng)中經(jīng)常出現(xiàn)的隨機(jī)干擾,通過
2、交流信號發(fā)生器輸入來模擬數(shù)據(jù)采集過程,驗(yàn)證了幾種使用較為普遍的克服隨機(jī)干擾的單片機(jī)數(shù)字濾波算法,并給出了相應(yīng)的c程序,同時(shí)也對這幾種濾波算法進(jìn)行了比較,并指出每一種算法具體適用范圍和注意事項(xiàng)。另外本文使用了proteus進(jìn)行仿真驗(yàn)證這幾種濾波方法,用了AD和DA來采集及輸出數(shù)據(jù)。關(guān)鍵詞 單片機(jī)/proteus/數(shù)字濾波。BASED ON SCM DIGITALFILTER DESIGNABSTRACTData acquisition, also called data acquisition is the use of a device from the system input to ext
3、ernal data collection and an interface that internal system. Data collection technology is widely quoted in various fields. Such as cameras, microphones, are data acquisition tools. Are collected data has been converted to telecommunications number of various physical quantities such as temperature,
4、 pressure, water, wind speed, etc, can be analogue, also can be the digital quantity. In the Internet industry fast development today, data acquisition has been widely used in Internet and distributed field, data acquisition field has changed in important changes. And in data acquisition exist in al
5、l sorts of noise. Filter out the noise a variety of ways, both digital filters, also have simulation filter. Here we adopted based on SCM and C language to design and develop digital filtering system. We based on single-chip microcomputer data acquisition system often appears in the random disturban
6、ce, through the manual input to simulate data acquisition process, and verifies the several use common overcome random disturbance single-chip digital filtering algorithm, and presents the corresponding C program, especially for the median value filter and the median value average filtering algorith
7、m procedures were improved. Also on this compares several filtering algorithm, and points out the concrete each kind of algorithm is applicable range and precautions. In addition we use the simulation test this proteus several filtering method. In addition we still use the AD and DA to harvest and o
8、utput data. KEY WORDS microcontroller, proteus, digital filter 目 錄專心-專注-專業(yè)1 緒 論1.1 數(shù)字濾波器特點(diǎn) 現(xiàn)在工業(yè)控制系統(tǒng)中,電路系統(tǒng)變得越來越復(fù)雜,因而帶來的相互干擾也越來越強(qiáng)烈,模擬濾波電路已不能滿足要求,數(shù)字濾波應(yīng)運(yùn)而生。數(shù)字濾波器是數(shù)字信號處理器的一種,在進(jìn)行數(shù)據(jù)采集和數(shù)據(jù)傳輸過程中,經(jīng)常會(huì)受到各種外界干擾,當(dāng)干擾嚴(yán)重時(shí),可導(dǎo)致系統(tǒng)的測控精度降低甚至無法正常工作,數(shù)字濾波器則通過計(jì)算機(jī)執(zhí)行一段相應(yīng)的程序來濾除夾雜在數(shù)字信號中的干擾信號。它所處理的對象是用序列表示的離散信號或是數(shù)字信號,因而可以實(shí)現(xiàn)一些高難度的復(fù)
9、雜處理,而且具有工作穩(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),因而在一定場合也有一定的實(shí)用價(jià)值?!?】 從時(shí)間上看,數(shù)字信號是離散的,從幅度上看,它又是量化的。因此數(shù)字信號可用一個(gè)序列數(shù)來表示,而每個(gè)數(shù)又可表示成二進(jìn)制碼的形式。數(shù)字濾波器的功能就是利用計(jì)算機(jī)軟件對一組輸入數(shù)字序列進(jìn)行一定的運(yùn)算,再變換成另一組輸出數(shù)字序列。對被測信號的處理,首先通過采樣/保持電路,送至模/數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,然后通過數(shù)字濾波器濾除其中的干擾信號,最后通過模/數(shù)轉(zhuǎn)換器獲得模擬量輸出。根據(jù)所用數(shù)學(xué)
10、模型的不同,數(shù)字濾波器可劃分為兩大類:一種是遞歸性濾波器,其特點(diǎn)是濾波器的輸出不僅與輸入信號有關(guān),還與過去的輸出值有關(guān);另一種是非遞歸性濾波器,其特征是濾波器的輸出僅與輸入信號有關(guān),而與過去輸出值無關(guān)。設(shè)數(shù)字濾波器的輸入信號為,輸出信號為,則輸入序列與輸出序列之間的關(guān)系可用差分方程表示為公式一: (1.1)輸入信號可以是模擬信號經(jīng)采樣和ADC變換后得到的數(shù)字序列,也可以是計(jì)算機(jī)的輸出信號, 均為系數(shù),由上述差分方程組組成的數(shù)字濾波器,稱為遞歸性濾波器。若將上述差分方程中系數(shù)取做0,則得到公式二: (1.2)這種濾波器叫做非遞歸性濾波器。選擇不同的系數(shù),則可以設(shè)計(jì)低通,高通或帶通,帶阻式數(shù)字濾波
11、器。【6】1.2 數(shù)字濾波器的設(shè)計(jì)1.設(shè)計(jì)數(shù)字濾波器時(shí),一般按下面步驟進(jìn)行:(1)根據(jù)干擾信號的特征來選擇合適的濾波器。(2)建立起典型的差分方程數(shù)學(xué)模型,并對差分方程進(jìn)行Z變換,寫出其Z傳遞函數(shù)。(3)根據(jù)有用信號與干擾信號的頻率特征,來確定系統(tǒng)期望的通頻帶。(4)根據(jù)Z傳遞函數(shù),確定其幅頻特性和相頻特性,再對Z進(jìn)行反變換,求出濾波器的線性離散方程。(5)按照線性差分方程來編制相應(yīng)的軟件,最終實(shí)現(xiàn)數(shù)字濾波的功能。2. 數(shù)字濾波器的軟件設(shè)計(jì)在測控系統(tǒng)中,由于各種參數(shù)的干擾成分不同,因而濾除這些干擾成分的方式也不同,本論文將用到中值濾波,算數(shù)平均濾波,加權(quán)平均濾波,中位值平均濾波,限幅濾波這五種
12、方法,可根據(jù)具體情況加以選用。2 數(shù)字濾波設(shè)計(jì)原理 這里有很多種熟悉濾波方法,我們見選用其中幾種來進(jìn)行設(shè)計(jì),如中值濾波,算數(shù)平均濾波,加權(quán)平均濾波等等。所以下面我將詳細(xì)介紹它們。2.1 中值位濾波是先對某中值濾波一參數(shù)連續(xù)采樣N次(一般N取奇數(shù)),然后把N次采樣值按從小到大排列,取中間值為本次采樣值。該濾波方法實(shí)際上是一種排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,沒出現(xiàn)一次前者數(shù)據(jù)大于后者數(shù)據(jù),就要進(jìn)行兩者數(shù)據(jù)的交換。該算法樣例子程序如下:#define N 11 /N值可根據(jù)實(shí)際情況調(diào)整char filter()char value_buf;char count,i
13、,j,k,temp;for(count=0;count<N;count+) /獲取數(shù)據(jù)value_bufcount=get_data();delay();for(i=0;i<N-1;i+) /選擇排序 k=i;for(j=i+1;j<N;j+) if(value_bufj<value_bufk) k=j; temp=value_bufk; value_bufk=value_bufi;
14、 value_bufi=temp; return value_buf(N-1)/2; 中位值濾波能有效地克服偶然因素引起的波動(dòng)或采樣器不穩(wěn)定引起的誤碼等脈沖干擾。對溫度、液位等緩慢變化的被測參數(shù)采用此算法能收到良好的濾波效果,但對于流量、壓力等快速變化的數(shù)據(jù),不宜采用中位值濾波。【2】2.2 算數(shù)平均濾波 算術(shù)平均濾波法適用于對一般的具有隨機(jī)干擾的信號進(jìn)行濾波。這種信號的特點(diǎn)是信號本身在某一數(shù)值范圍附近上下波動(dòng),如測量流量、液位時(shí)經(jīng)常遇到這種情況。算術(shù)平均濾波法是要按輸入的N
15、 個(gè)采樣數(shù)據(jù),尋找這樣一個(gè)Y,使得Y 與各個(gè)采樣值之間的偏差的平方和最小。具體實(shí)現(xiàn)此算法的子程序如下:#define N 12char filter()int count;int sum=0;for(count=0;count<N;count+) sum+=get_ad(); delay(); return (char)(sum/N); 算術(shù)平均濾波適用于對一般具有隨機(jī)干擾的信號進(jìn)行濾波。這種信號的特點(diǎn)是有一個(gè)平均值,信號在某一數(shù)值范圍附近做上下波動(dòng),在這種情況下僅取一個(gè)采樣值做依據(jù)顯然是不準(zhǔn)確的。算術(shù)平均濾波對信號的平滑程序完
16、全取決于N,當(dāng)N較大時(shí),平滑度高,但靈敏度低;當(dāng)N較小時(shí),平滑度低,但靈敏度高,應(yīng)視具體情況選取N,以便既少占用計(jì)算時(shí)間,又達(dá)到最好的效果?!?】2.3 加權(quán)平均濾波 在算術(shù)平均濾波和移動(dòng)平均濾波中,N次采樣值在輸出結(jié)果中的權(quán)重是均等的,取1/N。用這樣的濾波算法,對于時(shí)變信號會(huì)引入滯后,N值越大,滯后越嚴(yán)重。為了增加新采樣數(shù)據(jù)在移動(dòng)平均中的權(quán)重,以提高系統(tǒng)對當(dāng)前采樣值中所受干擾的靈敏度,可采用加權(quán)平均濾波,它是移動(dòng)平均濾波算法的改進(jìn)。加權(quán)平均濾波是對連續(xù)N次采樣值分別乘上不同的加權(quán)系統(tǒng)之后再求累加和,加權(quán)系統(tǒng)一般先小后大,以突出后面若干采樣的效果,加強(qiáng)系統(tǒng)對參數(shù)變化趨勢的辨識。各個(gè)加權(quán)系統(tǒng)均
17、為小于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ū)。#define N 12char code jqN=1,2,3,4,5,6,7,8,9,10,11,12;char code sum_jp=1+2+3+4+5+6+7+8+9+10+11+12;char filter_5()char count;char value_bufN;int sum=0;for(count=0;count
18、<N;count+)value_bufcount=get_data();delay();for(count=0;count<N;count+)sum+=value_bufcount*jqcount;return (char)(sum/sum_jq);2.4 中位值平均濾波 它相當(dāng)于是“中位值濾波法”和“算術(shù)平均濾波法”的結(jié)合。它連續(xù)采樣N個(gè)數(shù)據(jù),然后去掉一個(gè)最大值和一個(gè)最小值,最后計(jì)算N-2個(gè)數(shù)據(jù)的算術(shù)平均值。一般N值選?。?-14。具體算法程序如下:#define N 12 char filter() char
19、count,i,j; char value_bufN; int sum=0; for (count=0;count<N;count+) value_bufcount = get_ad(); delay(); for (j=0;j<N-1;j+) for (i=0;i<N-j;i+) if ( value_bu
20、fi>value_bufi+1 ) temp = value_bufi; value_bufi = value_bufi+1; value_bufi+1 = temp; for(count=1;count<N-1;count+) sum += valuecount; return (char)(sum/(N-2); 這種濾波方法兼容了
21、移動(dòng)平均濾波算法和中位值濾波算法的優(yōu)點(diǎn),所以無論對緩慢變化的信號,還是對快速變化的信號,都能取得較好的濾波效果?!?】2.5 限幅濾波 限幅濾波的基本原理是把兩次相鄰時(shí)刻(n和n-1)的采樣值Yn和Yn-1相減,求出其差值,以絕對值表示,然后將這個(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)此算法的樣
22、例子程序如下:#define A 10 /A值可根據(jù)實(shí)際情況調(diào)整char data; /上一次的數(shù)據(jù)char filter_1()char datanew; /新數(shù)據(jù)變量datanew=get_data(); /獲得新數(shù)據(jù)/濾波算法if (datanew-data>A)|(data-datanew>A)return data;return datanew; 該算法主要用于處理變化比較緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時(shí)關(guān)鍵在于最大偏差值的y的選擇,通常可根據(jù)經(jīng)驗(yàn)獲得,也可按照輸出參數(shù)
23、可能的最大變化速度Vmax及采樣周期T來決定Y的值,即Y=VmaxT?!?】3 濾波器硬件設(shè)計(jì)通過對系統(tǒng)工作原理的了解,可以大致了解數(shù)字濾波器設(shè)計(jì)的整體框圖:圖31 總體設(shè)計(jì)框圖3.1 單片機(jī)AT89C51 這里我們使用了51系列單片機(jī)AT89C51,如下圖利用這個(gè)單片機(jī)進(jìn)行編程,實(shí)現(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外接四個(gè)開關(guān),用來實(shí)現(xiàn)濾波方式的選擇?!?】圖3-2 AT89C51引腳圖3.2 數(shù)據(jù)采集 另外我還使用了ADC0808進(jìn)行數(shù)據(jù)采集
24、。這里ADC0808是并聯(lián)AD轉(zhuǎn)換器,ADC0808的引腳圖如下圖:圖3-3 ADC0808的引腳圖 IN0-IN8是八個(gè)模擬量輸入端口,ADC0808可以一次對八個(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)信號,在其上跳變時(shí),所有內(nèi)部寄存器清零,在其下調(diào)變時(shí),開始進(jìn)行AD轉(zhuǎn)換。ALE是地址鎖存信號。這里我讓START和ALE均接在單片機(jī)的同一個(gè)端口上,
25、即P2.1,讓單片機(jī)實(shí)現(xiàn)程序控制AD的轉(zhuǎn)換。OE是輸出允許信號,OE=1時(shí),才能允許輸出,這里我讓它也接在單片機(jī)的端口P2.1上,也是為了讓單片機(jī)實(shí)現(xiàn)程序控制ADC0808的輸出。EOC是轉(zhuǎn)換結(jié)束信號,EOC=1時(shí),表示轉(zhuǎn)換結(jié)束。這個(gè)信號可以用來提醒單片機(jī)AD已經(jīng)轉(zhuǎn)換完畢,程序中即可以用查詢方式,也可以用中斷方式,這里我使用查詢方式,所以把它接在P2.2上。VREF(+)和VREF(-)都是參考電壓信號端口,這里我讓VREF(-)的參考電壓為零,VREF(+)的參考電壓為+3V。3.3 數(shù)模轉(zhuǎn)換輸出 這里我用了DAC0832來進(jìn)行數(shù)模轉(zhuǎn)換。DAC0832的引腳圖如下圖所示:圖3-4 DAC08
26、32的引腳圖DAC0832有三種數(shù)模轉(zhuǎn)換方法,直通方式、單緩沖方式、雙緩沖方式,因?yàn)閱纹瑱C(jī)輸出后可以直接進(jìn)行數(shù)模轉(zhuǎn)換,所以這里我采用了不需要單片機(jī)控制的最為簡單的直通方式,但是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 總體電路圖總體電路圖見附錄A4 程序設(shè)計(jì)4.1 濾波算法設(shè)計(jì) 這個(gè)在前面介紹濾波原理時(shí)已
27、經(jīng)說過了,在此就不再次重復(fù)了。因?yàn)樵O(shè)計(jì)時(shí)采集的時(shí)鐘頻率很大,所以在一定范圍內(nèi)采集的數(shù)據(jù)都差不多,因此對一系列的數(shù)據(jù)進(jìn)行濾波處理時(shí)就好像是在對同一個(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ì)列一樣,對頭刪除數(shù)據(jù),對位插入新的數(shù)據(jù)。這個(gè)程序如下:void change()int i;for(i=0;i<N-1;i+)bufi=bufi+1;bufN-1=a;而獲得這一系列中的某一個(gè)數(shù)據(jù)就用了一個(gè)函數(shù)就可以了,直接返回
28、隊(duì)列中的第n項(xiàng)的數(shù)據(jù)。這個(gè)程序如下:uchar get_data(n)change();return bufn;4.2 AD轉(zhuǎn)換器 因?yàn)镾TART為轉(zhuǎn)換啟動(dòng)信號,在其上跳變時(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í),利用查詢語句,查看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;
29、這里a是一個(gè)變量,用來存儲(chǔ)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) &
30、#160; res=filter2(); if(con1=1)&&(con2=0)&&(con3=0) res=filter5(); if(con1=1)&&(con2=0)&&(con3=1)
31、 res=filter6(); if(con1=1)&&(con2=1)&&(con3=1) res=filter8(); else res=a;con1、con2、con3三位用來控制濾波算法的選擇,而con用來控制是否要進(jìn)行濾波。4.4 總體程序總體程序見附錄B。4.5 程序流程圖圖
32、4-1 程序流程圖5 仿真結(jié)果和分析輸入波形與未經(jīng)濾波器濾波波形如下:圖5-1輸入波形與未經(jīng)濾波器濾波波形以下幾幅圖是經(jīng)濾波后的波形:圖5-2 經(jīng)限幅后的波形圖5-3 經(jīng)中值濾波后的波形圖5-4 經(jīng)滑動(dòng)平均濾波后的波形 圖5-5 經(jīng)中位值平均濾波后的波形圖5-6 經(jīng)加權(quán)遞推平均濾波后的波形 限幅濾波的效果是和A值有關(guān)的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會(huì)大大消耗時(shí)間,因此延時(shí)比較嚴(yán)重,但是總的來說選擇排序比冒泡排序的延時(shí)情況要好。中位值平均濾波,由于濾波算法中會(huì)求平均值在,所以在原波是方波時(shí)會(huì)出現(xiàn)某一次求平均
33、后編程中間值,另外由于和中值濾波一樣要進(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í)。 6 數(shù)字濾波器新算法分析6.1 滑動(dòng)平均濾波滑動(dòng)平均濾波即把連續(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=412;溫度:N
34、=14。具體算法程序如下:#define N 12 char value_bufN;char i=0;char filter()char count;int sum=0;value_bufi+ = get_ad();if ( i = N ) i = 0;for ( count=0;count<N,count+)sum = value_bufcount;return (char)(sum/N);滑動(dòng)平均值法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此他不適用于脈沖干擾比較嚴(yán)重的場合,而適用于高頻振蕩系統(tǒng)
35、。6.2 一階滯后濾波一階滯后濾波即取a=01,本次濾波結(jié)果=(1-a)*本次采樣值+a*上次濾波結(jié)果。具體算法程序如下:#define a 50char value;char filter()char new_value;new_value = get_ad();return (100-a)*value + a*new_value; 一階之后濾波對周期性干擾具有良好的抑制作用,適用于波動(dòng)頻率較高的場合。同時(shí)它的相位滯后,靈敏度低,滯后程度取決于a值大小,不能消除濾波頻率高于采樣頻率的1/2的干擾信號。6.3 加權(quán)遞推平均濾波加權(quán)遞推平均濾波是對遞推平均濾波法的改進(jìn),即不同時(shí)刻的數(shù)據(jù)加以不同的
36、權(quán),通常是,越接近現(xiàn)時(shí)刻的資料,權(quán)取得越大,給予新采樣值的權(quán)系數(shù)越大,則靈敏度越高,但信號平滑度越低。具體算法程序如下:#define N 12char code coeN = 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_bufN;int sum=0;for (count=0,count<N;count+)value_bufcount = get_ad();delay();for (count=0,count<
37、N;count+)sum += value_bufcount*coecount;return (char)(sum/sum_coe);加權(quán)遞推平均濾波適用于有較大純滯后時(shí)間常數(shù)的對象和采樣周期較短的系統(tǒng)。而對于純滯后時(shí)間常數(shù)較小,采樣周期較長,變化緩慢的信號,不能迅速反應(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ù)器。具體算法程序如下:#def
38、ine N 12char 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; 消抖濾波對于變化緩慢的被測參數(shù)有較好的濾波效果,可避免在臨界值附近控制器的反復(fù)開/關(guān)跳動(dòng)或顯示器上數(shù)值抖動(dòng)。對于快速變化的參數(shù)不宜,如果在計(jì)數(shù)器溢出的那一次采樣到的值恰好是干擾值,這種算法則會(huì)將干擾值當(dāng)作有效值導(dǎo)入系統(tǒng)。【5】所以,每種濾波
39、算法都有其各自的特點(diǎn),在實(shí)際應(yīng)用中,究竟選取哪一種數(shù)字濾波算法,應(yīng)根據(jù)具體的測量參數(shù)合理的選用。不適當(dāng)?shù)貞?yīng)用數(shù)字濾波,不僅達(dá)不到濾波效果,反而會(huì)降低控制品質(zhì),甚至失控,這點(diǎn)必須予以注意。7 總結(jié)在微機(jī)控制系統(tǒng)的模擬輸入信號中,一般均含有各種噪聲和干擾,他們來自被測信號源本身,傳感器,外界干擾等。為了進(jìn)行準(zhǔn)確測量和控制,必須消除被測信號中的噪聲和干擾。噪聲有2大類:一類為周期性的,其典型代表為50 Hz的工頻干擾,對于這類信號,采用積分時(shí)間等于20 ms整倍數(shù)的雙積分A/D轉(zhuǎn)換器,可有效地消除其影響;另一類為非周期的不規(guī)則隨機(jī)信號,對于隨機(jī)干擾,可以用數(shù)字濾波方法予以削弱或?yàn)V除。對于數(shù)字濾波系統(tǒng)
40、,其程序不是很難的,主要是解決程序設(shè)計(jì)中的問題,而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個(gè)設(shè)計(jì)的靈魂所在。因此在整個(gè)設(shè)計(jì)過程中大部分時(shí)間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個(gè)子程序才是關(guān)鍵的問題所在,這需要對系統(tǒng)的結(jié)構(gòu)很熟悉。因此可以說系統(tǒng)的設(shè)計(jì)是軟件和硬件的結(jié)合,二者是密不可分的。所謂數(shù)字濾波,就是通過一定的計(jì)算或判斷程序減少干擾信號在有用信號中的比重,因此他實(shí)際上是一個(gè)程序?yàn)V波。 數(shù)字濾波器克服了模擬濾波器的許多不足,他與模擬濾波器相比有以下優(yōu)點(diǎn):(1)數(shù)字濾波器是用軟件實(shí)現(xiàn)的,不需要增加硬設(shè)備,因而可靠性高、穩(wěn)定性好,不存在阻
41、抗匹配問題。(2)模擬濾波器通常是各通道專用,而數(shù)字濾波器則可多通道共享,從而降低了成本。(3)數(shù)字濾波器可以對頻率很低(如0.01 Hz)的信號進(jìn)行濾波,而模擬濾波器由于受電容容量的限制,頻率不可能太低。數(shù)字濾波器具有高精度,高可靠性,可程控改變特性或復(fù)用、便于集成等優(yōu)點(diǎn)。數(shù)字濾波器在語言信號處理、圖像信號處理、醫(yī)學(xué)生物信號處理以及其他應(yīng)用領(lǐng)域都得到了廣泛應(yīng)用。致 謝本論文的工作是在我的導(dǎo)師XXX老師的悉心指導(dǎo)下完成的。在整個(gè)畢業(yè)設(shè)計(jì)過程中,X老師不斷引導(dǎo)我們,幫助我們梳理論文思路,耐心地給我解釋一些細(xì)節(jié)上的、我不理解的問題,并提出一些新的問題,使得我對畢業(yè)設(shè)計(jì)課題能夠有更深入的思考,幫助我
42、順利完成畢業(yè)設(shè)計(jì)和論文。在此謹(jǐn)向X老師致以誠摯的謝意和崇高的敬意。一開始我們從參考書上找來了課題,但是畢竟是參考書,做到后來發(fā)現(xiàn)很多程序都是不完整的,這讓我傷透了腦筋。程序接線什么的都弄好了,調(diào)試也沒有問題,可是就是無法達(dá)到預(yù)期想要的結(jié)果。參考書畢竟只是一個(gè)參考,設(shè)計(jì)這種東西最后還是要靠自己動(dòng)腦筋。然后我從平時(shí)做的實(shí)驗(yàn)老師上課的舉例書本上的知識以及老師的輔導(dǎo)和其他同學(xué)的幫助下終于完成了。雖然內(nèi)容并不是很復(fù)雜,但是我們覺得設(shè)計(jì)的過程相當(dāng)重要,學(xué)到了很多,收獲了很多。我覺得課程設(shè)計(jì)反映的是一個(gè)從理論到實(shí)際應(yīng)用的過程。在此,我要感謝仲佳,范瑞娟,高東東等同學(xué)對我的幫助,這段時(shí)間我們之間的相互協(xié)作,不
43、僅促進(jìn)了畢設(shè)的順利完成,同時(shí)也增進(jìn)我們之間的友誼 。最后,感謝所有支持過我、幫助過我的老師、朋友和同學(xué)們,祝愿大家都會(huì)有一個(gè)美好而又光明的未來。參考文獻(xiàn)1 李群芳.單片微型計(jì)算機(jī)與接口技術(shù).電子工業(yè)出版社.20072 彭冬明.單片機(jī)實(shí)驗(yàn)教程.北京理工大學(xué)出版社.20073 何立民.單片機(jī)應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社.20004 余發(fā)山.單片機(jī)原理及及應(yīng)用技術(shù).中國礦業(yè)大學(xué)出版社.20035 周航慈.單片機(jī)程序設(shè)計(jì)基礎(chǔ).北京航空航天大學(xué)出版社.20016 劉松強(qiáng) 數(shù)字信號處理系統(tǒng)及其應(yīng)用.清華大學(xué)出版社.19967 程佩青 數(shù)字信號處理教程. 清華大學(xué)出版社.19958 潘祖善,何紹雄,
44、賈學(xué)堂 微波技術(shù).上海交通大學(xué)出版社.19979 R.E包格勒,A.G康斯坦丁尼斯基 數(shù)字濾波器導(dǎo)論.國防工業(yè)出版社.198210 ALAN V.OPPENHEIM.ALAN S.WILLSKY.SIGNALS&SYSTEM 清華大學(xué)出版社.1999附 錄A附 錄B總體程序如下:#include <reg51.h>#include <absacc.h>#define uchar unsigned char#define A 0.005#define N 11sbit con1 = P23;sbit con2 = P24;sbit con3 = P25;sbit
45、con = P26;sbit OE = P20;sbit START = P21;sbit EOC = P22;uchar a;uchar bufN =0; void change()int i;for(i=0;i<N-1;i+)bufi=bufi+1;bufN-1=a; uchar get_data(n)change();return bufn; /限幅濾波uchar filter1() uchar new_value,value;value=get_data(N-2); new_value = get_data(N-1);
46、 if ( ( new_value - value > A ) | ( value - new_value > A ) )return value; return new_value; /中值濾波uchar filter2()uchar value_buffN,temp; /定義存儲(chǔ)數(shù)據(jù)的數(shù)組int count,i,j,k;for(count=0;count<N;count+) /
47、獲取數(shù)據(jù) value_buffcount=get_data(count); for(j=0;j<N-1;j+) /用冒泡法對數(shù)據(jù)進(jìn)行排序,當(dāng)然最好用其他排序方法 k=j;for(j=i+1;j<N;j+)if(value_buffj<value_buffk) k=j; temp=value_buffk;
48、60; value_buffk=value_buffi; value_buffi=temp; return value_buff(N-1)/2; /滑動(dòng)平均濾波uchar filter5()uchar value_buffN;int i=0;int count;int sum=0;value_buffi+=get_data(count);if(i=N) i=0;for(count=0;count<N;count+) sum+=value_buffco
49、unt;return (uchar)(sum/N); /中位值平均濾波uchar filter6() uchar count,i,j,temp; uchar value_bufN; int sum=0; for (count=0;count<N;count+) value_bufcount = get_data(count); for (j=0;j<N-1;j+) for (i=0;i<N-j;i+) if ( value_bufi>value_bufi+1 ) temp = value_bufi; value_bufi = value_bufi+1; value_bufi+1 = temp; for(count=1;count<N-1;count+) sum += value_bufcount; return (uchar)(sum/(N-2); /加權(quán)遞推平均濾波uchar filter8() uc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服務(wù)項(xiàng)目明細(xì)協(xié)議書(2篇)
- 中國納米材料行業(yè)分析報(bào)告:產(chǎn)業(yè)鏈全景、發(fā)展環(huán)境、進(jìn)出口貿(mào)易、需求規(guī)模(2024版)
- 2025至2031年中國軟式手提環(huán)自動(dòng)封合機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年度項(xiàng)目經(jīng)理聘用合同范本-城市綜合體項(xiàng)目項(xiàng)目經(jīng)理服務(wù)協(xié)議
- 二零二五年度地鐵食堂便民服務(wù)承包合同
- 2025年度經(jīng)理合同分享及項(xiàng)目管理執(zhí)行協(xié)議
- 2025年度終止合伙合同:大數(shù)據(jù)分析與應(yīng)用終止合伙協(xié)議
- 二零二五年度油氣輸送管道租賃與環(huán)保監(jiān)測合同
- 2025年度籃球賽事安全風(fēng)險(xiǎn)管理與應(yīng)急預(yù)案合同
- 二零二五年度兼職聘用合同終止協(xié)議書
- 2023-2024年員工三級安全培訓(xùn)考試題及參考答案(綜合題)
- 2025保安部年度工作計(jì)劃
- 招標(biāo)采購基礎(chǔ)知識培訓(xùn)
- 電力系統(tǒng)分布式模型預(yù)測控制方法綜述與展望
- 2024年注冊建筑師-二級注冊建筑師考試近5年真題附答案
- 五年級口算題卡每天100題帶答案
- 2024年貴州省中考理科綜合試卷(含答案)
- 無人機(jī)技術(shù)與遙感
- 燃煤電廠超低排放煙氣治理工程技術(shù)規(guī)范(HJ 2053-2018)
- TSG-T7001-2023電梯監(jiān)督檢驗(yàn)和定期檢驗(yàn)規(guī)則宣貫解讀
評論
0/150
提交評論