單片機由于其優異的性能價格比,在過程控制、運動控制、智能儀表、醫療器械等各個領域的應用越來越深入和廣泛,有效地提高了生產效率和經濟效益。然而,在科研所或實驗室研制并通過調試的單片機系統,將其置入現場后,往往出現這樣或那樣的問題,系統變得不可靠,不能夠正常工作。產生這種情況的原因主要是現場環境復雜、各種各樣的干擾造成的,因此,單片機應用系統中抗干擾問題一直是設計中的一個十分重要的課題。下面從軟件、硬件兩個方面討論采取綜合抗干擾措施,來提高系統的可靠性。 1 硬件方面的抗干擾措施 1. 1 抗電源干擾的措施 單片機應用系統中許多干擾都來自電源,電源的通斷、瞬時短路及電網串進來的干擾脈沖造成單片機的誤動作占各種干擾的90%以上。而由于生產負荷的變化生產的 "尖峰干擾"在系統運行中的危害性是很嚴重的。生產 "尖峰干擾"的用電設備包括:重型交直流電機、繼電器、可控硅、電焊機、電梯、鎮流器、電烙鐵和其他大電流用電設備。這些設備的通斷,往往造成工業電網電壓出現幾百伏,甚至幾千伏的尖峰脈沖。因此抑制電源引起的干擾至關重要。 主要采用下面的方法: (1)系統供電電源選用相對干凈的照明電源; (2)使用隔離變壓器、低通濾波器等將交流電網的地與設備地相隔離,也可使用光電耦合器進行隔離; (3)使用干擾抑制器。他是一種四端無源網絡產品,利用頻譜均衡器的原理,把尖峰電壓集中的能量分配到不同頻率上,從而抑制"尖峰干擾"; (4)使用瞬間電壓抑制器(Ttansient Voltage Suppressor,TVS)。他是一種高效能的保護器件,當TVS的兩極受到反相瞬態高能量沖擊時,他以10~12秒量級的速度,將其兩極間的高阻抗轉為低阻抗,使兩極間的電壓嵌位于一個預定值。從而有效保護了電子線路中的有關器件免受電網干擾的沖擊,這種器件應用廣泛。 1.2 輸入通道的抗干擾措施 輸入通道包括模擬輸入通道和數字輸人通道。 (1)模擬輸入通道干擾的抑制 模擬輸入電路的任務是完成在現場對檢測對象量值的檢測、采集。單片機的A/D轉換器接受信號的方式一般為非平衡式輸入,共模、差模干擾混入信號中進入系統,要徹底排除難度較大,一般采用以下方法。 ①將增益放大器安裝在傳感器附近,盡量采用差動輸入,以減小共模干擾的混入。 ②為減小因感應引起的干擾,傳輸線采用雙絞線或屏蔽線,以屏蔽線較佳,屏蔽線的屏蔽層應在現場一端接地,在靠近A/D芯片端應并聯一限幅電路,以消除大幅度的差模干擾。 (2)數字輸入通道干擾的抑制 數字輸入通道主要用于現場開關量采集和通訊,數字輸入通道一般采用光電隔離技術。由于光電耦合器具有很高輸入阻抗和輸出絕緣電阻,抗干擾能力強。采用這種技術不但可以使主機與輸入通道隔離,還可以使主機和輸出通道隔離。因此在單片機應用系統中得到了廣泛的應用。 2 軟件方面的抗干擾措施 要使系統正常工作,抗干擾不能完全依靠硬件來解決,還需要在軟件設計上采取一定的抗干擾措施。 2.1 數字濾波 無論在硬件電路設計上采取多少抗干擾措施,都不可能完全消除干擾信號,因此,外界的干擾信號總是或多或少地要進入系統中。數字濾波是通過程序設計對單片機數據采集部分輸入的信號進行加工處理,以達到抗干擾的目的。主要包括:程序判斷濾波法、算術平均值濾波法、滑動算術平均值濾波法、中位值濾波法等。 2.2 指令冗余 當CPU受到干擾后,往往將一些操作數當作指令碼來執行,引起程序混亂。這時我們首先要盡快將程序引入正軌。以AT89系列單片機為例,他的所有指令都不超過3B,而且有很多單字節指令。當程序"跑飛"到某一條單字節指令上時,便自動納入正軌。當"跑飛"到某一雙字節或三字節指令上時,有可能落到其操作數上,從而繼續出錯。因此,有必要在關鍵的地方人為地插入一些單字節指令(NOP),或將有效單字節指令重復書寫,這便是指令冗余。 在雙字節和三字節指令之后插入2條NOP指令,則這條指令就不會被前面的失控程序拆散,并將被完整執行,從而使程序走上正軌。但不能加入太多的冗余指令,以免明顯降低程序正常運行的效率。因此,常在一些對程序流向起決定作用的指令之前插入2條NOP指令,以保證"跑飛"的程序迅速納入正確的控制軌道。此類指令有:RET,RETI,LCALL,SJMP,JZ,CJNE等。 2.3 軟件陷阱的設置 指令冗余不能完全解決程序"跑飛"的問題,若"跑飛"的程序沒有落到程序區則指令冗余就無能為力了。對于此種情況采用設置軟件陷阱的方法加以解決。這種方法是在非程序區設置攔截措施,當PC失控、程序"跑飛"進入非程序區時,使程序進入陷井,從而迫使程序返回正常狀態。例如,若把這段程序的人口標記為ERR,軟件陷阱就可如下書寫: NOP NOP LJMP ERR 該軟件陷阱除了安置在未使用的用戶EPROM區外,還常常安置在未使用的中斷向量區、表格區的最后和程序的斷裂點后(斷裂點是指LJMP,SJMP,RET等類指令)。 2.4 設置看門狗 若"跑飛"的程序既沒有落入軟件陷阱,又沒有遇到冗余指令,而自動形成一個死循環,可利用軟件啟動單片機的監視定時器(俗稱看門狗)來使系統復位。這種方法簡單、直觀,只需不超過64k狀態周期(16ms)的時間(用12M晶振時),計算機就可恢復正常。但一定要通過軟件每隔一定時間(如15ms)使看門狗復位一次。 以AT89系列單片機為例,利用內部定時器的定時功能。先估算主控程序正常運行一個循環的時間t,將定時器定時時間T取比t稍大。主控程序運行過程中執行一次定時器的刷新操作,如果程序正常運行,定時器就不會產生溢出信號而產生中斷。當程序"跑飛"失控后,系統由于不能刷新定時器而導致定時器溢出而產生中斷。利用定時器中斷服務子程序就可以進人錯誤處理子程序,由錯誤處理子程序對出錯情況進行相應的處理,或者跳到程序起始處,重新執行主控程序。程序如下: 在系統初始化程序中,加入下列代碼: SETB EA ;開中斷 SBTB ETl ;允許T1中斷 SETB PTl ;將T1設為最高優先級 在主控程序中,加入定時器T1的初始化程序。程序如下: MOV TLl,#DATAL8 ;TI低8位賦初值 MOV THl,#DATA8 ;T1高8位賦初值 ORL 89H,#2FH ;設T1的工作方式 SETB TRl ;啟動定時器T1工作 中斷程序如下: ORG 00lBH ;人口地址 POP A ;丟棄PC指針壓人堆棧的錯誤地址 POP A MOVA,ttADDH8 ;將要跳轉的地址送入 PUSH A MOVGA,#ADDL8 ;堆棧的棧頂 PUSH A KETI 執行上述中斷服務程序后,將使程序自動將堆棧棧頂的2個內容作為地址指針PC;從而使程序進入所要去的地方,進而正確執行主程序。 3 結 語 本文介紹了單片機系統中常用的幾種干擾抑制技術,實踐表明,這些方法均是行之有效的。綜合運用述技術可大大提高系統的可靠性,降低系統調試和維護的工作強度。 |