




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上基于單片機數(shù)字濾波器設(shè)計摘 要數(shù)據(jù)采集又稱數(shù)據(jù)獲取,是利用一種裝置,從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部的一個接口。數(shù)據(jù)采集技術(shù)廣泛應(yīng)用在各個領(lǐng)域。比如攝像頭,麥克風,都是數(shù)據(jù)采集工具。被采集數(shù)據(jù)是已被轉(zhuǎn)換為電訊號的各種物理量,如溫度,水位,風速,壓力等,可以是模擬量,也可以是數(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)的隨機干擾,通過
2、交流信號發(fā)生器輸入來模擬數(shù)據(jù)采集過程,驗證了幾種使用較為普遍的克服隨機干擾的單片機數(shù)字濾波算法,并給出了相應(yīng)的c程序,同時也對這幾種濾波算法進行了比較,并指出每一種算法具體適用范圍和注意事項。另外本文使用了proteus進行仿真驗證這幾種濾波方法,用了AD和DA來采集及輸出數(shù)據(jù)。關(guān)鍵詞 單片機/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ù)字濾波器特點 現(xiàn)在工業(yè)控制系統(tǒng)中,電路系統(tǒng)變得越來越復(fù)雜,因而帶來的相互干擾也越來越強烈,模擬濾波電路已不能滿足要求,數(shù)字濾波應(yīng)運而生。數(shù)字濾波器是數(shù)字信號處理器的一種,在進行數(shù)據(jù)采集和數(shù)據(jù)傳輸過程中,經(jīng)常會受到各種外界干擾,當干擾嚴重時,可導(dǎo)致系統(tǒng)的測控精度降低甚至無法正常工作,數(shù)字濾波器則通過計算機執(zhí)行一段相應(yīng)的程序來濾除夾雜在數(shù)字信號中的干擾信號。它所處理的對象是用序列表示的離散信號或是數(shù)字信號,因而可以實現(xiàn)一些高難度的復(fù)
9、雜處理,而且具有工作穩(wěn)定,受環(huán)境因素小,抗干擾性能強精度可控等優(yōu)點。因而現(xiàn)階段被廣泛應(yīng)用,而用單片機實現(xiàn)數(shù)字濾波器與廣泛應(yīng)用的DSP處理器相比,具有成本低,體積小,可靠性強等優(yōu)點,因而在一定場合也有一定的實用價值。【9】 從時間上看,數(shù)字信號是離散的,從幅度上看,它又是量化的。因此數(shù)字信號可用一個序列數(shù)來表示,而每個數(shù)又可表示成二進制碼的形式。數(shù)字濾波器的功能就是利用計算機軟件對一組輸入數(shù)字序列進行一定的運算,再變換成另一組輸出數(shù)字序列。對被測信號的處理,首先通過采樣/保持電路,送至模/數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,然后通過數(shù)字濾波器濾除其中的干擾信號,最后通過模/數(shù)轉(zhuǎn)換器獲得模擬量輸出。根據(jù)所用數(shù)學
10、模型的不同,數(shù)字濾波器可劃分為兩大類:一種是遞歸性濾波器,其特點是濾波器的輸出不僅與輸入信號有關(guān),還與過去的輸出值有關(guān);另一種是非遞歸性濾波器,其特征是濾波器的輸出僅與輸入信號有關(guān),而與過去輸出值無關(guān)。設(shè)數(shù)字濾波器的輸入信號為,輸出信號為,則輸入序列與輸出序列之間的關(guān)系可用差分方程表示為公式一: (1.1)輸入信號可以是模擬信號經(jīng)采樣和ADC變換后得到的數(shù)字序列,也可以是計算機的輸出信號, 均為系數(shù),由上述差分方程組組成的數(shù)字濾波器,稱為遞歸性濾波器。若將上述差分方程中系數(shù)取做0,則得到公式二: (1.2)這種濾波器叫做非遞歸性濾波器。選擇不同的系數(shù),則可以設(shè)計低通,高通或帶通,帶阻式數(shù)字濾波
11、器?!?】1.2 數(shù)字濾波器的設(shè)計1.設(shè)計數(shù)字濾波器時,一般按下面步驟進行:(1)根據(jù)干擾信號的特征來選擇合適的濾波器。(2)建立起典型的差分方程數(shù)學模型,并對差分方程進行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)平均濾波,中位值平均濾波,限幅濾波這五種
12、方法,可根據(jù)具體情況加以選用。2 數(shù)字濾波設(shè)計原理 這里有很多種熟悉濾波方法,我們見選用其中幾種來進行設(shè)計,如中值濾波,算數(shù)平均濾波,加權(quán)平均濾波等等。所以下面我將詳細介紹它們。2.1 中值位濾波是先對某中值濾波一參數(shù)連續(xù)采樣N次(一般N取奇數(shù)),然后把N次采樣值按從小到大排列,取中間值為本次采樣值。該濾波方法實際上是一種排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,沒出現(xiàn)一次前者數(shù)據(jù)大于后者數(shù)據(jù),就要進行兩者數(shù)據(jù)的交換。該算法樣例子程序如下:#define N 11 /N值可根據(jù)實際情況調(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; 中位值濾波能有效地克服偶然因素引起的波動或采樣器不穩(wěn)定引起的誤碼等脈沖干擾。對溫度、液位等緩慢變化的被測參數(shù)采用此算法能收到良好的濾波效果,但對于流量、壓力等快速變化的數(shù)據(jù),不宜采用中位值濾波?!?】2.2 算數(shù)平均濾波 算術(shù)平均濾波法適用于對一般的具有隨機干擾的信號進行濾波。這種信號的特點是信號本身在某一數(shù)值范圍附近上下波動,如測量流量、液位時經(jīng)常遇到這種情況。算術(shù)平均濾波法是要按輸入的N
15、 個采樣數(shù)據(jù),尋找這樣一個Y,使得Y 與各個采樣值之間的偏差的平方和最小。具體實現(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ù)平均濾波適用于對一般具有隨機干擾的信號進行濾波。這種信號的特點是有一個平均值,信號在某一數(shù)值范圍附近做上下波動,在這種情況下僅取一個采樣值做依據(jù)顯然是不準確的。算術(shù)平均濾波對信號的平滑程序完
16、全取決于N,當N較大時,平滑度高,但靈敏度低;當N較小時,平滑度低,但靈敏度高,應(yīng)視具體情況選取N,以便既少占用計算時間,又達到最好的效果。【7】2.3 加權(quán)平均濾波 在算術(shù)平均濾波和移動平均濾波中,N次采樣值在輸出結(jié)果中的權(quán)重是均等的,取1/N。用這樣的濾波算法,對于時變信號會引入滯后,N值越大,滯后越嚴重。為了增加新采樣數(shù)據(jù)在移動平均中的權(quán)重,以提高系統(tǒng)對當前采樣值中所受干擾的靈敏度,可采用加權(quán)平均濾波,它是移動平均濾波算法的改進。加權(quán)平均濾波是對連續(xù)N次采樣值分別乘上不同的加權(quán)系統(tǒng)之后再求累加和,加權(quán)系統(tǒng)一般先小后大,以突出后面若干采樣的效果,加強系統(tǒng)對參數(shù)變化趨勢的辨識。各個加權(quán)系統(tǒng)均
17、為小于1的小數(shù),且滿足總和等于1的約束條件。這樣,加權(quán)運算之后的累加和即為有效采樣值。為方便計算,可取各加權(quán)系數(shù)均為整數(shù),且總和為256,加權(quá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 中位值平均濾波 它相當于是“中位值濾波法”和“算術(shù)平均濾波法”的結(jié)合。它連續(xù)采樣N個數(shù)據(jù),然后去掉一個最大值和一個最小值,最后計算N-2個數(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、移動平均濾波算法和中位值濾波算法的優(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)此算法的樣
22、例子程序如下:#define A 10 /A值可根據(jù)實際情況調(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ù),如溫度、物體的位置等。使用時關(guān)鍵在于最大偏差值的y的選擇,通??筛鶕?jù)經(jīng)驗獲得,也可按照輸出參數(shù)
23、可能的最大變化速度Vmax及采樣周期T來決定Y的值,即Y=VmaxT?!?】3 濾波器硬件設(shè)計通過對系統(tǒng)工作原理的了解,可以大致了解數(shù)字濾波器設(shè)計的整體框圖:圖31 總體設(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)濾波方式的選擇。【3】圖3-2 AT89C51引腳圖3.2 數(shù)據(jù)采集 另外我還使用了ADC0808進行數(shù)據(jù)采集
24、。這里ADC0808是并聯(lián)AD轉(zhuǎn)換器,ADC0808的引腳圖如下圖:圖3-3 ADC0808的引腳圖 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均接在單片機的同一個端口上,
25、即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。3.3 數(shù)模轉(zhuǎn)換輸出 這里我用了DAC0832來進行數(shù)模轉(zhuǎn)換。DAC0832的引腳圖如下圖所示:圖3-4 DAC08
26、32的引腳圖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 總體電路圖總體電路圖見附錄A4 程序設(shè)計4.1 濾波算法設(shè)計 這個在前面介紹濾波原理時已
27、經(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ù)。這個程序如下:void change()int i;for(i=0;i<N-1;i+)bufi=bufi+1;bufN-1=a;而獲得這一系列中的某一個數(shù)據(jù)就用了一個函數(shù)就可以了,直接返回
28、隊列中的第n項的數(shù)據(jù)。這個程序如下:uchar get_data(n)change();return bufn;4.2 AD轉(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;
29、這里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) &
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用來控制是否要進行濾波。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)滑動平均濾波后的波形 圖5-5 經(jīng)中位值平均濾波后的波形圖5-6 經(jīng)加權(quán)遞推平均濾波后的波形 限幅濾波的效果是和A值有關(guān)的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會大大消耗時間,因此延時比較嚴重,但是總的來說選擇排序比冒泡排序的延時情況要好。中位值平均濾波,由于濾波算法中會求平均值在,所以在原波是方波時會出現(xiàn)某一次求平均
33、后編程中間值,另外由于和中值濾波一樣要進行排序,因此也會產(chǎn)生很大的延時。加權(quán)遞推平均算法和上面一樣,因為會求平均值,因此也會有時候產(chǎn)生中間值,但是如果把當前值得權(quán)值設(shè)的很大,而越久遠之前的權(quán)值設(shè)的越小,則可明顯改善此問題,另外由于加權(quán)遞推平均濾波中用到的乘法,因此會有一定的延時。 6 數(shù)字濾波器新算法分析6.1 滑動平均濾波滑動平均濾波即把連續(xù)取N個采樣值看成一個隊列,隊列的長度固定為N,每次采樣到一個新數(shù)據(jù)放入隊尾,并扔掉原來隊首的一次數(shù)據(jù)(先進先出原則)。吧隊列中的N個數(shù)據(jù)進行算術(shù)平均運算,就可獲得新的濾波結(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);滑動平均值法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現(xià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; 一階之后濾波對周期性干擾具有良好的抑制作用,適用于波動頻率較高的場合。同時它的相位滯后,靈敏度低,滯后程度取決于a值大小,不能消除濾波頻率高于采樣頻率的1/2的干擾信號。6.3 加權(quán)遞推平均濾波加權(quán)遞推平均濾波是對遞推平均濾波法的改進,即不同時刻的數(shù)據(jù)加以不同的
36、權(quán),通常是,越接近現(xiàn)時刻的資料,權(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ù)的對象和采樣周期較短的系統(tǒng)。而對于純滯后時間常數(shù)較小,采樣周期較長,變化緩慢的信號,不能迅速反應(yīng)系統(tǒng)當前所受干擾的嚴重程度,濾波效果差。6.4 消抖濾波消抖濾波即設(shè)置一個濾波計數(shù)器,將每次采樣值與當前有效值比較: 如果采樣值當前有效值,則計數(shù)器清零。如果采樣值<>當前有效值,則計數(shù)器+1,并判斷計數(shù)器是否>=上限N(溢出),如果計數(shù)器溢出,則將本次值替換當前有效值,并清計數(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)跳動或顯示器上數(shù)值抖動。對于快速變化的參數(shù)不宜,如果在計數(shù)器溢出的那一次采樣到的值恰好是干擾值,這種算法則會將干擾值當作有效值導(dǎo)入系統(tǒng)?!?】所以,每種濾波
39、算法都有其各自的特點,在實際應(yīng)用中,究竟選取哪一種數(shù)字濾波算法,應(yīng)根據(jù)具體的測量參數(shù)合理的選用。不適當?shù)貞?yīng)用數(shù)字濾波,不僅達不到濾波效果,反而會降低控制品質(zhì),甚至失控,這點必須予以注意。7 總結(jié)在微機控制系統(tǒng)的模擬輸入信號中,一般均含有各種噪聲和干擾,他們來自被測信號源本身,傳感器,外界干擾等。為了進行準確測量和控制,必須消除被測信號中的噪聲和干擾。噪聲有2大類:一類為周期性的,其典型代表為50 Hz的工頻干擾,對于這類信號,采用積分時間等于20 ms整倍數(shù)的雙積分A/D轉(zhuǎn)換器,可有效地消除其影響;另一類為非周期的不規(guī)則隨機信號,對于隨機干擾,可以用數(shù)字濾波方法予以削弱或濾除。對于數(shù)字濾波系統(tǒng)
40、,其程序不是很難的,主要是解決程序設(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)定性好,不存在阻
41、抗匹配問題。(2)模擬濾波器通常是各通道專用,而數(shù)字濾波器則可多通道共享,從而降低了成本。(3)數(shù)字濾波器可以對頻率很低(如0.01 Hz)的信號進行濾波,而模擬濾波器由于受電容容量的限制,頻率不可能太低。數(shù)字濾波器具有高精度,高可靠性,可程控改變特性或復(fù)用、便于集成等優(yōu)點。數(shù)字濾波器在語言信號處理、圖像信號處理、醫(yī)學生物信號處理以及其他應(yīng)用領(lǐng)域都得到了廣泛應(yīng)用。致 謝本論文的工作是在我的導(dǎo)師XXX老師的悉心指導(dǎo)下完成的。在整個畢業(yè)設(shè)計過程中,X老師不斷引導(dǎo)我們,幫助我們梳理論文思路,耐心地給我解釋一些細節(jié)上的、我不理解的問題,并提出一些新的問題,使得我對畢業(yè)設(shè)計課題能夠有更深入的思考,幫助我
42、順利完成畢業(yè)設(shè)計和論文。在此謹向X老師致以誠摯的謝意和崇高的敬意。一開始我們從參考書上找來了課題,但是畢竟是參考書,做到后來發(fā)現(xiàn)很多程序都是不完整的,這讓我傷透了腦筋。程序接線什么的都弄好了,調(diào)試也沒有問題,可是就是無法達到預(yù)期想要的結(jié)果。參考書畢竟只是一個參考,設(shè)計這種東西最后還是要靠自己動腦筋。然后我從平時做的實驗老師上課的舉例書本上的知識以及老師的輔導(dǎo)和其他同學的幫助下終于完成了。雖然內(nèi)容并不是很復(fù)雜,但是我們覺得設(shè)計的過程相當重要,學到了很多,收獲了很多。我覺得課程設(shè)計反映的是一個從理論到實際應(yīng)用的過程。在此,我要感謝仲佳,范瑞娟,高東東等同學對我的幫助,這段時間我們之間的相互協(xié)作,不
43、僅促進了畢設(shè)的順利完成,同時也增進我們之間的友誼 。最后,感謝所有支持過我、幫助過我的老師、朋友和同學們,祝愿大家都會有一個美好而又光明的未來。參考文獻1 李群芳.單片微型計算機與接口技術(shù).電子工業(yè)出版社.20072 彭冬明.單片機實驗教程.北京理工大學出版社.20073 何立民.單片機應(yīng)用技術(shù)選編.北京航空航天大學出版社.20004 余發(fā)山.單片機原理及及應(yīng)用技術(shù).中國礦業(yè)大學出版社.20035 周航慈.單片機程序設(shè)計基礎(chǔ).北京航空航天大學出版社.20016 劉松強 數(shù)字信號處理系統(tǒng)及其應(yīng)用.清華大學出版社.19967 程佩青 數(shù)字信號處理教程. 清華大學出版社.19958 潘祖善,何紹雄,
44、賈學堂 微波技術(shù).上海交通大學出版社.19979 R.E包格勒,A.G康斯坦丁尼斯基 數(shù)字濾波器導(dǎo)論.國防工業(yè)出版社.198210 ALAN V.OPPENHEIM.ALAN S.WILLSKY.SIGNALS&SYSTEM 清華大學出版社.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; /定義存儲數(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ù)進行排序,當然最好用其他排序方法 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; /滑動平均濾波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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼鐵行業(yè)自動化升級-全面剖析
- 藝術(shù)教育中批判性思維的評估方法-全面剖析
- 機器學習驅(qū)動的分區(qū)算法-全面剖析
- 競爭格局演變趨勢-第5篇-全面剖析
- 環(huán)境適應(yīng)性電子產(chǎn)品設(shè)計-全面剖析
- 電機產(chǎn)業(yè)鏈協(xié)同發(fā)展-全面剖析
- 面向物聯(lián)網(wǎng)環(huán)境的移動設(shè)備指紋識別技術(shù)挑戰(zhàn)-全面剖析
- 2025-2030年中國葡萄酒行業(yè)投資分析及未來發(fā)展趨勢預(yù)測研究報告
- 醫(yī)院銷售協(xié)議合同樣本
- 創(chuàng)業(yè)基地勞動合同樣本
- DBJT15-工程泥漿原地處理和資源化利用技術(shù)標準
- 2025年廣西貴港市公安警務(wù)輔助人員招聘287人歷年高頻重點提升(共500題)附帶答案詳解
- 江蘇省南京市(2024年-2025年小學六年級語文)部編版期末考試(下學期)試卷及答案
- 4.1.2-元素周期表-課件 高一上學期化學人教版(2019)必修第一冊
- 《大學心理》筆記(1-14章節(jié))
- 《日語聽說》課件-第六課 餐館就餐
- 言語治療技術(shù)說評估CRRCAE法
- 中華人民共和國能源法
- 鋼結(jié)構(gòu)隔層施工合同范本
- 季度工作總結(jié)報告模板
- 跟骨骨折護理查房課件
評論
0/150
提交評論