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