51單片機抗干擾技術(shù)
1 引 言
在單片機的應用系統中,系統的抗干擾技術(shù)是系統可靠性的重要方面。一個(gè)系統的正確與否,不僅取決于系統的設計思想和方法,同時(shí)還取決于系統的抗干擾措施,不然勢必會(huì )出現原理正確而系統穩定性差,甚至不能實(shí)施,使得耗費了大量錢(qián)財和時(shí)間研制出來(lái)的控制系統成為一種擺設,電腦變成了“煩惱”。正因如此,抗干擾技術(shù)的研究越來(lái)越引起大家的高度重視?! ?br />
以下為筆者在多年單片機控制系統設計和應用中拾取的一些抗干擾的經(jīng)驗體會(huì )。
2 單片機系統軟件的抗干擾
一般來(lái)講,竄入微機測控系統的干擾,其頻譜往往很寬,采用硬件抗干擾措施,只能抑制某個(gè)頻率段的干擾,仍有一些干擾會(huì )進(jìn)入系統。因此,除了采取硬件抗干擾方法外,還要采取軟件抗干擾措施。
2.1 模擬輸入信號抗干擾
疊加在系統模擬輸入信號上的噪聲干擾,會(huì )導致較大的測量誤差。但由于這些噪聲的隨機性,可以通過(guò)數字濾波技術(shù)剔除虛假信號,求去真值。常用方法如下:
(1)算術(shù)平均濾波法算術(shù)平均濾波法就是連續取N個(gè)值進(jìn)行采樣,然后求其平均值。該方法適應于對一般具有隨機性干擾的信號進(jìn)行濾波。這種濾波法的特點(diǎn)是:N值較大時(shí),信號的平滑度好,但靈敏度低;當N值較小時(shí),平滑度低,但靈敏度高。
(2)遞推平均濾波法
該方法是把N個(gè)測量數據看成一個(gè)隊列,隊列的長(cháng)度為N,每進(jìn)行一次新的測量,就把測量結果放入隊尾,而扔掉原來(lái)隊首的一次數據。計算N個(gè)數據的平均值。對周期性的干擾,此方法有良好的抑制作用,平滑度高,靈敏度低。但對偶發(fā)脈沖的干擾抑制作用差。
(3)防脈沖干擾平均值濾波法
在脈沖干擾比較嚴重的場(chǎng)合,如果采用一般的平均濾波法,則干擾將會(huì )“平均”到結果中去,故平均值法不易消除由于脈沖干擾而引起的誤差。為此,在N個(gè)采樣數據中,取掉最大值和最小值,然后計算N-2個(gè)數據的算術(shù)平均值。為了加快測量速度,N一般取值為4。
2.2 “死機”現象的克服
當干擾通過(guò)總線(xiàn)或其他口線(xiàn)作用到CPU時(shí),就會(huì )造成程序計數器PC值的改變,引起程序混亂,使系統失控。因此,在設計單片機系統時(shí),如何發(fā)現CPU受到干擾,并盡可能無(wú)擾地使系統恢復到正常工作狀態(tài)是軟件設計應考慮的主要問(wèn)題。
無(wú)論何種控制系統,一般講,死機現象都是不允許的??朔罊C現象最有效的辦法就是采用單片機工加了硬件看門(mén)狗電路后仍然有死機現象,分析原因,可能有以下方面:
(1)因為某種原因,程序混亂后,看門(mén)狗電路雖然發(fā)出了復位脈沖,但在程序剛剛正常還來(lái)不及發(fā)出一個(gè)脈沖信號,此時(shí)程序再次被干擾,而這時(shí)看門(mén)狗電路已處于穩態(tài),不能再發(fā)出復位脈沖。
(2)程序進(jìn)入死循環(huán),在該死循環(huán)中,恰好又有看門(mén)狗監視I/O口上操作的指令。而該I/O口仍有脈沖信號輸出,看門(mén)狗檢測不到這種異常情況。
(3)在有嚴重干擾時(shí),中斷方式控制字有時(shí)會(huì )受到破壞,導致中斷關(guān)閉。
可見(jiàn),只用硬件看門(mén)狗電路是無(wú)法確保單片機正常工作的。因此,可采用以下方法作為補充。
(1)軟件“看門(mén)狗”的應用
選用定時(shí)器T0作為看門(mén)狗,將T0的中斷定義為最高級中斷??撮T(mén)狗啟動(dòng)后,系統必須及時(shí)刷新T0的時(shí)間常數。
(2)指令冗余技術(shù)
①NOP的使用
在8031單片機指令系統中所有指令都不超過(guò)3個(gè)字節。因此,在程序中連續插入3條NOP指令,有助于降低程序計數器發(fā)生錯誤的概率。
②重要指令冗余
對于程序流向起決定作用的指令(如RET,RETI,ACALL,LJMP,JZ等)和某些對系統工作狀態(tài)有重要作用的指令(如SETBEA等)的后面,可重復寫(xiě)下這些指令,以確保這些指令的正確執行。
(3)軟件陷阱法
單片機系統程序跑飛意味著(zhù)CPU執行不正確流程程序。而當亂飛程序進(jìn)入非程序區,采用冗余技術(shù)無(wú)法使程序納入正確軌道,此時(shí)可采用軟件陷阱法,攔截亂飛程序。軟件陷阱就是用引導指令(如LJMP)將撲獲到的亂飛程序引向復位入口地址0000H,在此對程序進(jìn)行出錯處理,使其納入正軌。
①軟件陷阱格式
NOP
NOP
LJMP0000H
?、谲浖葳灏才盼词褂玫闹袛鄥^;
未使用的大片ROM空間;
程序區;
中斷服務(wù)程序區。
2.3 系統復位特征
單片機應用系統采用看門(mén)狗電路后,在一定程度上解決了系統死機現象,但是每次發(fā)生復位都使系統執行初始化,這在干擾較強的情況下仍不能正常工作。同時(shí)系統雖然沒(méi)有死機,但工作狀態(tài)頻繁改變,這同樣是不能容忍的。
理想的復位特征應該是:系統可以鑒別是首次上電復位(又稱(chēng)冷起動(dòng)),還是異常復位(又稱(chēng)熱啟動(dòng))。首次上電復位則進(jìn)行全部初始化,異常復位則不需要進(jìn)行全部初始化,測控程序不必從頭開(kāi)始執行,而應故障部位開(kāi)始。
(1)上電標志的設定方法
?、賁P建立上電標志。
?、赑SW.5建立上電標志。
?、蹆萊AM建立上電標志。
(2)軟件復位與中斷激活標志
當系統執行中斷服務(wù)程序時(shí),來(lái)不及執行RETI指令而受干擾跳出該程序后,程序亂飛過(guò)程中由軟件陷阱或軟件“看門(mén)狗”將程序引向0000H,顯然這時(shí)中斷激活標志并未清除,這樣就會(huì )使系統熱啟動(dòng)時(shí),不管中斷標志是否置位,都不會(huì )響應同級中斷的請求。因此,由軟件陷阱或“看門(mén)狗”捕獲的程序一定要完成清除 MSC-51系列中中斷激活標志,才能消除系統熱啟動(dòng)后不響應中斷的隱患。
(3)程序失控后恢復運行的方法
一般來(lái)說(shuō),主程序是由若干個(gè)功能模塊組成,每個(gè)功能模塊入口設置一個(gè)標志,系統故障復位后,可根據這些標志選擇進(jìn)入相應的功能模塊。這一點(diǎn)對一些自動(dòng)化生產(chǎn)線(xiàn)的控制系統尤為重要。
總之,微機測控系統由于受到嚴重干擾而發(fā)生程序亂飛、陷入死循環(huán)以及中斷關(guān)閉等故障。系統通過(guò)冗余技術(shù)、軟件陷阱技術(shù)和“看門(mén)狗”技術(shù)等,使程序重新進(jìn)入0000H單元,納入正軌。因故障而進(jìn)入0000H后,系統要執行上電標志判定、RAM數據檢查與恢復、清除中斷激活標志等一系列操作,決定入口地址。
2.4 睡眠抗干擾
在實(shí)際應用中,強干擾的來(lái)源往往是系統本身,例如被控負載的中斷狀態(tài)變化等。而這種干擾是可預知的,在軟件設計時(shí)可采取適當措施避開(kāi)。當系統接通或斷開(kāi)大功率負載時(shí),暫停一切數據采集等工作。待干擾過(guò)后,再恢復進(jìn)行。這比單純在硬件上采取抗干擾措施要好的多。8031單片機中有一個(gè)電源控制寄存器 PCON。當PCON.0=1時(shí),8031單片機進(jìn)入等待工33作狀態(tài)。這時(shí)單片機時(shí)鐘被封鎖,所有I/O口引腳均保持進(jìn)入等待工作方式前的狀態(tài),內部時(shí)鐘仍然繼續供給中斷系統定時(shí)/計數器和串行口、8031單片機現場(chǎng)(棧指針、程序計數器PC、狀態(tài)字PSW、累加器ACC、內部RAM)和其他特殊功能寄存器內容保持不變。中斷退出和硬件復位均可使8031單片機退出睡眠狀態(tài)。
3 單片機系統中硬件抗干擾設計
一個(gè)好的電路設計,應在設計過(guò)程中充分考慮抗干擾性的要求。分析系統中可能引起干擾的部件,采取必要的硬件抗干擾措施,抑制干擾源、切斷干擾傳播途徑。
3.1 抑制干擾源常用措施
(1)給繼電器線(xiàn)圈增加續流二極管,消除斷電時(shí)產(chǎn)生的反電動(dòng)勢。
?。?)在繼電器接點(diǎn)兩端并接火花抑制電路,(一般為RC串聯(lián)電路,電阻一般為幾~幾十kΩ,電容為0.01μF)減小電火花影響。
?。?)給電機加濾波電路,注意電容、電感連線(xiàn)要盡量靠近電機。
?。?)電路板上每個(gè)IC要并接一個(gè)0.01~0.1μF高頻電容,減小IC對電源的影響。注意高頻電容的布線(xiàn)應靠近電源端,并盡量短,否則等于增大了電容的等效串聯(lián)電阻,會(huì )影響濾波效果。
?。?)避免90°折線(xiàn),減小高頻噪聲發(fā)射。
?。?)在可控硅兩端并接RC抑制電路,減小可控硅噪聲。
3.2 切斷干擾傳播途徑措施
?。?)充分考慮電源對單片機的影響。給單片機電源加濾波電路,減小電源噪聲對單片機的干擾。
?。?)若用單片機的I/O口來(lái)控制電機等噪聲器件,在I/O口與噪聲源之間應加Ⅱ形濾波電路,或進(jìn)行光電隔離。
?。?)注意晶振布線(xiàn)。晶振與單片機引腳盡量靠近,用地線(xiàn)把時(shí)鐘區隔離起來(lái),晶振外殼接地并固定。
?。?)電路板合理分區,如數字信號、模擬信號盡可能使干擾源與敏感器件遠離。
?。?)用地線(xiàn)將數字區與模擬區隔離,數字地與模擬地分離,最后接在一點(diǎn)接于電源地。
?。?)單片機和大功率器件的地線(xiàn)要單獨接地,以減小相互之間的干擾。
?。?)在單片機I/O口、電源線(xiàn)、電路板連線(xiàn)等關(guān)鍵地方使用抗干擾元件,如磁環(huán)、電源濾波器、屏蔽罩等。
3.3 提高敏感器件的抗干擾性能
提高敏感器件的抗干擾性能是指從敏感器件考慮盡量減小對干擾噪聲的拾取,以及從不正常狀態(tài)盡快恢復的方法。常用措施:
?。?)布線(xiàn)時(shí)盡量減少回路面積,降低感應噪聲;
?。?)布線(xiàn)時(shí)電源線(xiàn)與地線(xiàn)盡量粗。除減小壓降外,更重要的是降低耦合噪聲;
?。?)對單片機的閑置I/O,不能懸空,應接地或電源,其他IC的閑置口一樣;
?。?)加單片機硬件看門(mén)狗電路;
?。?)滿(mǎn)足要求的前提下,盡量降低單片機晶振和選用低速數字電路;
?。?)IC器件盡量直接焊在電路板上,少用IC座。
評論