單片機應用系統的抗干擾方法
在實踐中,單片機應用系統的抗干擾設計一般是通過硬件抗干擾設計和軟件抗干擾設計兩種途徑來實現的。硬件如果設計得當,就可以將絕大部分干擾拒之門外,但仍然會有少量干擾,所以軟件措施必不可少。由于軟件措施是以占用CPU為代價的,如果沒有硬件消除絕大部分干擾,CPU將疲于奔命,嚴重影響系統的工作效率和實時性。因此一個抗干擾性良好的單片機應用系統則是由硬件設計和軟件開發相輔相成而構成。
1.硬件抗干擾設計
①電源電路
單片機系統使用的電源,一般都是由電網的工頻交流電源經降壓、整流、濾波等環節后提供。由于電網的影響以及生產現場大容量電氣設備的開停,會使交流電壓中含有高頻成分、浪涌電壓、尖峰脈沖或者發生較大幅度的電壓波動。這些因素都將導致干擾通過電源途徑影響系統的正常工作。電源做得好,整個電路的抗干擾工作就完成了一大半。許多單片機對電源噪聲很敏感,因此,應采用抗干擾的開關電源或給單片機電源加濾波電路或穩壓器,以減少電源噪聲對單片機的干擾。電源線的布置除了要根據電流的大小,盡量加租導體寬度外,還要使電源線、地線的走向與數據傳遞的方向一致。這將有助于增強抗噪聲的能力。每種型號的單片機都有一個穩定工作的電壓范圍,例如凌陽SPCE061A單片機工作電壓為3.3V~5V ,超出這個范圍將出現異常。
② 硬件復位電路
圖1 采用MAX6827的復位電路
復位電路是最容易受干擾的(因為CPU 內部的復位電路的阻抗都比較高,為10~50kΩ) ,影響也是最大的。因此,必須采取抗干擾措施。圖1是采用MAX6827的復位及“看門狗”電路圖。該電路具有較強的抗干擾能力,由于沒有復位電容,不易引入干擾。
③ 注意印制電路板的布線
印刷電路板是單片機系統中器件、信號線、電源線的高密度集合體,印刷電路板設計的好壞對系統的抗干擾能力影響很大。故在印刷電路板設計不單是器件、線路的簡單布局安排,還必須符合抗干擾設計原則。合理設計系統電路板,能有效地切斷干擾的傳播途徑和抑制干擾源,同時還可以提高敏感元件(如單片機、數字IC、A/ D、D/ A 等容易被干擾的對象) 的抗干擾能力。主要采取:
[1] 電路板合理分區,如強、弱信號,數字、模擬信號分區。盡可能使干擾源(如電機,繼電器) 遠離敏感元件。大功率器件盡量布置在電路板的邊緣。
[2] 布線時盡量減少回路環的面積,以降低感應噪聲;電源線和地線要盡量粗,除減小壓降外,更重要的是降低耦合噪聲;連接線避免90度的折線,以減少高頻噪聲發射。
[3] 不用的單片機管腳,特別是中斷的入口,不要懸空,一般要通過上拉電阻接電源。
[4] 電路板上每個IC 要并接一個0.01μF~0.1μF高頻電容,以減少IC對電源的影響。
[5] 注意晶振布線。晶振與單片機引腳盡量靠近,用地線把時鐘區隔離(圈) 起來,晶振外殼接地并固定。此措施可解決許多疑難問題。
[6] 用地線把數字區與模擬區隔離,數字地與模擬地要分離,最后接于電源地一點匯集,呈“星形”狀。
在單片機應用系統中,接地是抑制干擾的重要方法。接地是否正確,接地是否牢固,將直接影響到系統的正常工作。如能將接地和屏蔽正確結合起來使用,可以解決大多數的干擾問題。
為了防止系統內部地線干擾,在設計印刷電路板時可采取如下措施:接地線盡量加粗。若接地線很細,接地電位則隨著電流的變化而變化,致使計算機的定時信號電平不穩,抗噪聲性能變差。因此要根據通過電流的大小決定地線的寬度,應在可能的情況下,盡量將接地線條加粗、加寬,最好不小于3mm,使它能通過3倍于印刷電路板上的允許電流。對于多級電路,設計時要考慮各級動態電流,注意接地阻抗相互耦合的影響,工作頻率低于1MHz 時采用一點接地,工作頻率較高時采取多點接地。
2.軟件抗干擾設計
在單片機應用系統中,盡管采取了硬件抗干擾措施,但由于干擾信號產生的原因十分復雜,且有很大的隨機性,因此在采取硬件抗干擾措施的基礎上,采取軟件措施加以補充?,F簡要介紹如下幾種軟件抗干擾措施。
① 設立軟件陷阱(Trap)
單片機受到干擾時,程序計數器PC值最容易受影響,PC值的改變是隨機的,完全可以造成CPU離開正確的指令順序去執行一些無定義地址中的內容,或進入數據區,把數據當作操作碼來控制,使整個工作紊亂,系統失控。這種情況對系統來說,比某個數據出錯造成的危害要嚴重得多。后者只涉及某個功能不能實現或者產生偏差,而前者則會使整個系統造成癱瘓。造成程序失控的原因并非程序設計本身的問題,而是由于外部的干擾或單片機內部硬件瞬間故障,使得程序計數器(PC)偏離了原定的值。例如,當執行完一條指令時,程序計數器PC應加數值1,但由于某種原因,使PC實際加2,這樣,程序就會把操作數和操作碼混淆起來,造成后面一系列的錯誤。
為了防止上述情況的發生,在軟件設計時,可以采用設立軟件陷阱的方法加以克服。其具體做法是,在ROM或RAM中,每隔一些指令(如十條或二十條),把連續的幾個單元置成“00”(空操作)。這樣,當出現程序失控時只要失控的單片機進入這眾多的軟件陷阱中任何一個,都會被捕獲,連續進行幾個空操作。執行這些空操作后,程序自動恢復正常,繼續執行后面的程序。這種方法雖浪費一些內存單元,但可以保證程序不會跑飛。這種方法對用戶是不透明的,亦即用戶根本感覺不到程序是否發生錯誤操作。
② 開辟多個存儲區抗干擾
為了防止RAM出錯,丟失最重要的數據,對于重要的輸入輸出數據開辟2~3個存儲區同時保存。存取數據時,采取比較表決法,以使數據去偽存真。
評論