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