1 濾波和抗干擾概述
單片機應用系統的輸入信號常含有種種噪聲和干擾,它們來自被測信號源、傳感器、外界干擾源等。為了提高測量和控制精度,必須消除信號中的噪聲和干擾。噪聲有兩大類:一類為周期性的;另一類為不規則的。前者的典型代表為50Hz的工頻干擾,一般采用硬件濾波,使用積分時間等于20ms的整數倍的雙積分A/D轉換器,可有效地消除其對信號的影響。后者為隨機信號,它不是周期信號,可用數字濾波方法予以消弱或濾除。所謂數字濾波,就是通過一定的計算或判斷程序來減少干擾信號在有用信號中的比重,故實際上它是一種軟件濾波。硬件濾波具有效率高的優點,但要增加系統的投資和設備的體積,當干擾的性質改變時我們往往不得不重新搭接電路;軟件濾波是用程序實現的,不需要增加設備,故投資少、可靠性高、穩定性好,并且可以對頻率很低的信號實行濾波,隨著干擾的性質改變只需修改軟件即可,具有靈活、方便、功能強的優點,但要占用系統資源、降低系統的工作效率。一個傳統的實際系統,往往采用軟件和硬件相結合的濾波方法,這種結合是在兩者的優缺點之間尋找一個平衡點。
硬件抗干擾主要采用隔離技術、雙絞線傳輸、阻抗匹配等措施抑制干擾。常用的隔離措施有采用A/D、D/A與單片機進行隔離以及用繼電器、光電隔離器、光電隔離固態繼電器(SSR)等隔離器件對開關量進行隔離。
軟件抗干擾主要利用干擾信號多呈毛刺狀、作用時間短等特點。因此,在采集某一狀態信號時,可多次重復采集,直到連續兩次或多次采集結果完全一致時才視為有效。若多次采集后,信號總是變化不定,可停止采集,給出報警信號。如果狀態信號是來自各類開關型狀態傳感器,對這些信號采集不能用多次平均方法,必須完全一致才行。在滿足實時性要求的前提下,如果在各次采集狀態信號之間增加一段延時,效果會更好,能對抗較寬的干擾。對于每次采集的最高次數限額和連續相同次數均可按實際情況適當調整。對于擾亂CPU的干擾,可以采取指令冗余和軟件陷阱等抗干擾技術加以抑制。
2 利用CPLD實現數字濾波及抗干擾
這里介紹的采用CPLD實現信號濾波及抗干擾的方法已經在智能儀器泵沖測量儀的開發中得到驗證。下面就如何采用CPLD對系統的四路外部傳感器脈沖信號和四路按鍵信號實現濾波、鎖存、中斷申請等功能進行闡述。歡迎轉載,本文來自電子發燒友網(www.nxhydt.com) 。
2.1 傳感器信號濾波
由于要對傳感器信號進行數字濾波,CPLD要引入時鐘信號。因而我們對CPLD定義一輸入端clki,作為數字濾波器的計數脈沖輸入端。clki由單片機定時器1定時產生500Hz脈沖。以一路為例,泵沖信號濾波部分如圖1所示。
oo0為經電平轉換后接近開關輸出的信號。當oo0為低電平時,說明泵1未動作,封鎖三端與門,時鐘信號clki無法通過,計數器bcn3n不計數。同理,當aa4為高電平時,亦封鎖三端與門(至于aa4如何變化及作用下文有介紹)。故當oo0為高、aa4為低時,clki接通計數器CLK端。當oo0和clr端任意一個為低時,計數器清零。計數器bcn3n由MAX+PLUSII的文本編輯器編輯,其文本如下:
其輸出aa?4..0?等于計數器當前的計數值。Aa4就是aa?4..0?的最高位?當計數值達到10H(十六進制)時,即aa4為高電平時,三端與門封鎖,計數器保持10H不變,除非有清零信號。其波形如圖2所示。
由波形可知,oo0為高,計數器開始計數。對于小的脈沖,計數器的最高位即aa4為低,認為是干擾信號;只有當aa4為"1"時才認為oo0的脈沖信號有效,并通過aa4將時鐘脈沖阻斷,使計數器值不再增加。這樣做是為了防止由于oo0的脈沖不定寬,使aa4的電平不定,后面無法進行處理。還應注意的是,把oo0引入了清零信號。當信號有較多毛刺時,若oo0為低時不清零則使計數器不斷累加,積累到一定程度,使aa4為1,系統將認為有一有效脈沖信號,產生誤動作。
2.2 中斷申請信號產生
中斷申請信號由圖3電路生成。
圖中四個計數器的最高位接四端或門,只要有一路信號為高,或門輸出就為高,并經過非門,輸出低電平,接于D觸發器的時鐘端。D觸發器的D端始終為高電平。D觸發器為上升沿觸發器,若輸入D為1,在時鐘脈沖的上升沿,把"1"送入觸發器,使Q="1"。只有在CLRN端的clr信號有效時,D觸發器清零,Q="0"。其波形如圖4所示。
只要有一路信號為高,D觸發器時鐘端為低。當所有4路都為低時,時鐘端由低變高,在上升沿,Q變為"1",發出中斷請求信號。
如果多路脈沖信號有重疊,例如有兩路信號發生重疊,而中斷信號只有在四路都為低時才會產生,因此需要對信號進行鎖存。本設計采用D觸發器來實現鎖存,電路如圖5所示。
當aa4為由低變高時,a4變為高電平。由clr信號清零。
2.3 按鍵消抖及數據輸出
按鍵的消抖也通過計數器來實現,電路原理圖如圖6所示。
按鍵未按下時為高電平,封鎖時鐘信號。按鍵按下時,計數器開始計數。當計數器輸出最高位為"1"時,亦封鎖時鐘信號,防止按鍵時間不定使需要的k14信號不定。當按鍵信號為高電平時,對計數器清零,防止計數器累加干擾信號而造成誤動作。波形如圖7所示。
歡迎轉載,本文來自電子發燒友網(www.nxhydt.com)
泵沖和按鍵經處理后的信號a4、b4、c4、d4、k04、k14、k24、k34,經74373掛于數據總線,如圖8所示。74373使能信號由圖9電路產生。
它采用文本編輯,具體如下:
若單片機發出讀81XXH地址中數的信號,則選通此373,讀出其數。歡迎轉載,本文來自電子發燒友網(www.nxhydt.com)
以上介紹了采用CPLD實現數字濾波及抗干擾。該設計已在產品開發中成功應用,效果良好,達到了預期的目的。前面我們已經提到,一個傳統的設計,往往在軟件濾波和硬件濾波兩者的優缺點之間尋找一個平衡點。用我們通常的成語來講,這樣做可以說是揚長避短或取長補短。一直以來,我們都把這兩個成語看成是褒義的,不過細細品味一下其中的韻味似乎并不完全是好的代表:發揚長處固然值得稱道,但回避短處未必是解決問題的最佳途徑,畢竟回避并不能解決問題的本質,哪怕是取其長處來彌補短處,也不是長遠出路。應該直接去克服掉短處為佳。采用CPLD則可將軟硬件濾波的優點兼而有之,同時將它們的缺點摒棄,從而達到揚長去短的目的。用CPLD實現濾波只占用較少的資源,故可用其實現其它數字電路,同時實現濾波。
單片機應用系統的輸入信號常含有種種噪聲和干擾,它們來自被測信號源、傳感器、外界干擾源等。為了提高測量和控制精度,必須消除信號中的噪聲和干擾。噪聲有兩大類:一類為周期性的;另一類為不規則的。前者的典型代表為50Hz的工頻干擾,一般采用硬件濾波,使用積分時間等于20ms的整數倍的雙積分A/D轉換器,可有效地消除其對信號的影響。后者為隨機信號,它不是周期信號,可用數字濾波方法予以消弱或濾除。所謂數字濾波,就是通過一定的計算或判斷程序來減少干擾信號在有用信號中的比重,故實際上它是一種軟件濾波。硬件濾波具有效率高的優點,但要增加系統的投資和設備的體積,當干擾的性質改變時我們往往不得不重新搭接電路;軟件濾波是用程序實現的,不需要增加設備,故投資少、可靠性高、穩定性好,并且可以對頻率很低的信號實行濾波,隨著干擾的性質改變只需修改軟件即可,具有靈活、方便、功能強的優點,但要占用系統資源、降低系統的工作效率。一個傳統的實際系統,往往采用軟件和硬件相結合的濾波方法,這種結合是在兩者的優缺點之間尋找一個平衡點。
硬件抗干擾主要采用隔離技術、雙絞線傳輸、阻抗匹配等措施抑制干擾。常用的隔離措施有采用A/D、D/A與單片機進行隔離以及用繼電器、光電隔離器、光電隔離固態繼電器(SSR)等隔離器件對開關量進行隔離。
軟件抗干擾主要利用干擾信號多呈毛刺狀、作用時間短等特點。因此,在采集某一狀態信號時,可多次重復采集,直到連續兩次或多次采集結果完全一致時才視為有效。若多次采集后,信號總是變化不定,可停止采集,給出報警信號。如果狀態信號是來自各類開關型狀態傳感器,對這些信號采集不能用多次平均方法,必須完全一致才行。在滿足實時性要求的前提下,如果在各次采集狀態信號之間增加一段延時,效果會更好,能對抗較寬的干擾。對于每次采集的最高次數限額和連續相同次數均可按實際情況適當調整。對于擾亂CPU的干擾,可以采取指令冗余和軟件陷阱等抗干擾技術加以抑制。
2 利用CPLD實現數字濾波及抗干擾
這里介紹的采用CPLD實現信號濾波及抗干擾的方法已經在智能儀器泵沖測量儀的開發中得到驗證。下面就如何采用CPLD對系統的四路外部傳感器脈沖信號和四路按鍵信號實現濾波、鎖存、中斷申請等功能進行闡述。歡迎轉載,本文來自電子發燒友網(www.nxhydt.com) 。
2.1 傳感器信號濾波
由于要對傳感器信號進行數字濾波,CPLD要引入時鐘信號。因而我們對CPLD定義一輸入端clki,作為數字濾波器的計數脈沖輸入端。clki由單片機定時器1定時產生500Hz脈沖。以一路為例,泵沖信號濾波部分如圖1所示。
oo0為經電平轉換后接近開關輸出的信號。當oo0為低電平時,說明泵1未動作,封鎖三端與門,時鐘信號clki無法通過,計數器bcn3n不計數。同理,當aa4為高電平時,亦封鎖三端與門(至于aa4如何變化及作用下文有介紹)。故當oo0為高、aa4為低時,clki接通計數器CLK端。當oo0和clr端任意一個為低時,計數器清零。計數器bcn3n由MAX+PLUSII的文本編輯器編輯,其文本如下:
其輸出aa?4..0?等于計數器當前的計數值。Aa4就是aa?4..0?的最高位?當計數值達到10H(十六進制)時,即aa4為高電平時,三端與門封鎖,計數器保持10H不變,除非有清零信號。其波形如圖2所示。
由波形可知,oo0為高,計數器開始計數。對于小的脈沖,計數器的最高位即aa4為低,認為是干擾信號;只有當aa4為"1"時才認為oo0的脈沖信號有效,并通過aa4將時鐘脈沖阻斷,使計數器值不再增加。這樣做是為了防止由于oo0的脈沖不定寬,使aa4的電平不定,后面無法進行處理。還應注意的是,把oo0引入了清零信號。當信號有較多毛刺時,若oo0為低時不清零則使計數器不斷累加,積累到一定程度,使aa4為1,系統將認為有一有效脈沖信號,產生誤動作。
2.2 中斷申請信號產生
中斷申請信號由圖3電路生成。
圖中四個計數器的最高位接四端或門,只要有一路信號為高,或門輸出就為高,并經過非門,輸出低電平,接于D觸發器的時鐘端。D觸發器的D端始終為高電平。D觸發器為上升沿觸發器,若輸入D為1,在時鐘脈沖的上升沿,把"1"送入觸發器,使Q="1"。只有在CLRN端的clr信號有效時,D觸發器清零,Q="0"。其波形如圖4所示。
只要有一路信號為高,D觸發器時鐘端為低。當所有4路都為低時,時鐘端由低變高,在上升沿,Q變為"1",發出中斷請求信號。
如果多路脈沖信號有重疊,例如有兩路信號發生重疊,而中斷信號只有在四路都為低時才會產生,因此需要對信號進行鎖存。本設計采用D觸發器來實現鎖存,電路如圖5所示。
當aa4為由低變高時,a4變為高電平。由clr信號清零。
2.3 按鍵消抖及數據輸出
按鍵的消抖也通過計數器來實現,電路原理圖如圖6所示。
按鍵未按下時為高電平,封鎖時鐘信號。按鍵按下時,計數器開始計數。當計數器輸出最高位為"1"時,亦封鎖時鐘信號,防止按鍵時間不定使需要的k14信號不定。當按鍵信號為高電平時,對計數器清零,防止計數器累加干擾信號而造成誤動作。波形如圖7所示。
歡迎轉載,本文來自電子發燒友網(www.nxhydt.com)
泵沖和按鍵經處理后的信號a4、b4、c4、d4、k04、k14、k24、k34,經74373掛于數據總線,如圖8所示。74373使能信號由圖9電路產生。
它采用文本編輯,具體如下:
若單片機發出讀81XXH地址中數的信號,則選通此373,讀出其數。歡迎轉載,本文來自電子發燒友網(www.nxhydt.com)
以上介紹了采用CPLD實現數字濾波及抗干擾。該設計已在產品開發中成功應用,效果良好,達到了預期的目的。前面我們已經提到,一個傳統的設計,往往在軟件濾波和硬件濾波兩者的優缺點之間尋找一個平衡點。用我們通常的成語來講,這樣做可以說是揚長避短或取長補短。一直以來,我們都把這兩個成語看成是褒義的,不過細細品味一下其中的韻味似乎并不完全是好的代表:發揚長處固然值得稱道,但回避短處未必是解決問題的最佳途徑,畢竟回避并不能解決問題的本質,哪怕是取其長處來彌補短處,也不是長遠出路。應該直接去克服掉短處為佳。采用CPLD則可將軟硬件濾波的優點兼而有之,同時將它們的缺點摒棄,從而達到揚長去短的目的。用CPLD實現濾波只占用較少的資源,故可用其實現其它數字電路,同時實現濾波。
評論
查看更多