單片機已被廣泛地應(yīng)用于各個領(lǐng)域,在工業(yè)控制、醫(yī)療器械、通訊等場合,對單片機的可靠性的要求越來越高。隨著單片機種類的越來越多,其功能越來越完善,硬件的設(shè)計也變得越來越簡單。但在實驗室里設(shè)計的控制系統(tǒng),在安裝、調(diào)試后完全符合設(shè)計要求,而把系統(tǒng)置入現(xiàn)場后,系統(tǒng)卻常常不能夠正常穩(wěn)定地工作,單片機應(yīng)用系統(tǒng)的可靠性設(shè)計變得越來越重要。
單片機系統(tǒng)的可靠性是由多種因素決定的,其中系統(tǒng)抗干擾性能是可靠性的重要指標(biāo)之一。抗干擾就是針對干擾產(chǎn)生的性質(zhì)、傳播途徑、侵入的位置和侵入的形式,采取相應(yīng)的方法消除干擾源,抑制干擾傳播途徑,減弱電路或元件對噪聲干擾的敏感性,使單片機系統(tǒng)能在線正常、穩(wěn)定地運行。
一、單片機應(yīng)用系統(tǒng)的主要干擾渠道分析
所謂干擾就是疊加在有用信號上的不需要的信號,是影響路正常工作的另一種噪聲。干擾以某種電信號的形式,通過一的渠道,混入有用信號中侵入單片機系統(tǒng),造成系統(tǒng)工作不穩(wěn)定。在各種實際環(huán)境中,干擾總是存在的,這些干擾降低了電子系統(tǒng)準(zhǔn)確性甚至破壞其可靠性。
1.外部環(huán)境所產(chǎn)生的干擾
(1)單片機控制系統(tǒng)是為工業(yè)控制而設(shè)計制造的,經(jīng)常工作于工業(yè)生產(chǎn)現(xiàn)場。在實際的生產(chǎn)現(xiàn)場,存在著大量的電磁干擾信號,對單片機控制系統(tǒng)的正常工作造成極大的危害,甚至有可能帶來系統(tǒng)誤操作甚至失控的危險。
(2)測控通道引入的干擾。通過與系統(tǒng)連接的測控通道及與其他主機連接的相互通道引入的干擾信號也會對系統(tǒng)的正常工作造成有害影響。
2.干擾對單片機應(yīng)用系統(tǒng)的作用部位
(1)輸入系統(tǒng)。它將使模擬信號失真、數(shù)字信號出錯,單片機據(jù)這種輸入信息作出的反應(yīng)必然是錯誤的。
(2)輸出系統(tǒng)。將使各輸出信號混亂,不能正常反映系統(tǒng)的真實輸出量,從而導(dǎo)致一系列嚴(yán)重后果。
(3)CPU系統(tǒng)。CPU得到錯誤的數(shù)據(jù)信息,使運算操作數(shù)據(jù)失真導(dǎo)致結(jié)果出錯,并將這個錯誤一直傳遞下去,形成一系列錯誤。
二、應(yīng)用系統(tǒng)硬件的抗干擾措施
單片機應(yīng)用系統(tǒng)的硬件電路是由如下幾個部分構(gòu)成的:信號檢測部分;信號處理及控制部分;控制信號驅(qū)動部分;系統(tǒng)交互部分;顯示部分。由此可見一個單片機應(yīng)用系統(tǒng)的成分是相當(dāng)復(fù)雜的,從各種類型的傳感器到名目繁多的各種繼電器接觸器、電磁閥,從類型繁多的集成電路到各種各樣的耦合器件、執(zhí)行部件、顯示器件等。抗干擾主要有以下措施:
1.抑制電源干擾采取交流穩(wěn)壓器保證供電的穩(wěn)定性,防止電源的過壓和欠壓。使用隔離變壓器濾掉高頻噪聲,低通濾波器濾掉工頻干擾。用開關(guān)電源并提供足夠的功率余量,主機部分使用單獨的穩(wěn)壓電路。
2.過壓保護電路。在輸入輸出通道上應(yīng)采用過壓保護電路,以防引入高電壓,傷害微機系統(tǒng)。過壓保護電路由限流電阻和穩(wěn)壓管組成,限流電阻選擇要適宜,太大會引起信號衰減,太小起不到保護穩(wěn)壓管的作用。穩(wěn)壓管穩(wěn)壓值的選擇以略高于最高傳送信號電壓為宜,太低將對有效信號起限幅效果,使信號失真。
3.采用差動放大輸入、輸出信號。干擾信號多數(shù)是共模信號,為了抑制干擾,可利用差動放大器,雙端輸出信號。接收時,利用差動放大電路將信號轉(zhuǎn)為單端信號。這種方法對遠(yuǎn)距離信號輸送的抗干擾很有效。
4.減少系統(tǒng)連接中各工作部件之間的干擾。利用雙絞線來解決單片機控制系統(tǒng)中信號的長線傳輸問題。雙絞線抗干擾能力強,實踐證明,雙絞線能使各個小環(huán)路的電磁感應(yīng)干擾相互抵消;由于其分布電容為幾十皮法,距離信號源近,可以起到積分作用,對電磁場有一定抑制效果。必要時輸入、輸出供電分別采用NB、NB模塊隔離,以避免各個部分相互干擾。
5.配置去藕電容。數(shù)字電路信號電平轉(zhuǎn)換過程中產(chǎn)生很大的沖擊電流,并在傳輸線和供用電源內(nèi)阻上產(chǎn)生較大的壓降,形成嚴(yán)重的干擾。為了抑制這種干擾,在電路中可適當(dāng)配置去耦電容,即去耦電路。其作用一方面提供和吸收集成電路開門瞬間的充放電能量,另一方面濾掉集成電路的高頻噪聲。主要在集成電路的電源端與地線端加接電容,電路布線的時候去耦電容盡量靠近集成電路的電源輸入端,對于微機控制系統(tǒng),去耦電容值一般取0.01~0.1μF,且一般應(yīng)選用高頻特性好的獨石電容或瓷片電容作去耦電容。
三、軟件的抗干擾措施
1.數(shù)據(jù)采集誤差的軟件抗干擾的措施
由于數(shù)據(jù)采集時干抗性質(zhì)、后果的不同,采用的方法也不盡一致。在最常用的實時數(shù)據(jù)采集系統(tǒng)中,為了消除傳感器通道中的干擾信號,我們最常用數(shù)字濾波方,可濾掉大部分由輸入信號干擾而引起的輸出控制錯誤。最常用的方法有算術(shù)平均值法、比較舍取法、中值法、一階遞推數(shù)字濾波法等。
(1)算術(shù)平均值法。算術(shù)平均值濾波法就是對一點的數(shù)據(jù)連續(xù)采樣多次,計算其平均值,以平均值作為該點的采樣結(jié)果。對一般流量測量,可取N=8-10;對壓力等測量可取N=3-4。
(2)比較取舍法。比較取舍法是對每個采樣點連續(xù)采樣幾次,根據(jù)所采數(shù)據(jù)的變化規(guī)律,確定取舍辦法。當(dāng)控制系統(tǒng)測量的個別數(shù)據(jù)存在偏差時,為了剔除個別錯誤數(shù)據(jù),可采用比較舍取法。
(3)中值法。對采樣點連續(xù)采集多個信號取中值作為采樣結(jié)果。
具體選取何種方法,必須根據(jù)信號的變化規(guī)律選擇。對開關(guān)量采用多次采集的辦法來消除開關(guān)的抖動。
2.程序失常時軟件抗干擾的對策
(1)軟件冗余。CPU取指令過程是先取操作碼,再取操作數(shù)。當(dāng)單片機受干擾出現(xiàn)錯誤時,程序便脫離正常軌道“亂飛”。當(dāng)亂飛到某雙字節(jié)指令,若取指令時刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e;若“飛”到了三字節(jié)指令,出錯機率更大。因此,在關(guān)鍵地方人為地插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫,便稱為“指令冗余”。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上的空操作指令NOP,這樣即使亂飛程序飛到操作數(shù)上,由于NOP的存在,可避免后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動納入正軌。此外,對系統(tǒng)流向起重要作用的指令如RET、RET I、LCALL、LJM P、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。
(2)建立軟件陷阱。所謂“軟件陷阱”,就是在程序中加入的一組用于攔截彈飛程序的程序段。它強行將程序轉(zhuǎn)向一個特定的地址,該地址放有出錯處理程序。如果將出錯處理程序的入口標(biāo)號命名為“ERR”的話,通常軟件陷阱由以下三句話組成:NOP,NOP,LJMP ERR。一旦彈飛的程序被攔截,立刻轉(zhuǎn)向錯誤處理程序。軟件陷阱可安排在四個地方:一是未使用的中斷向量區(qū)。干擾可使未使用的中斷開放并激活中斷,在這些地方設(shè)置軟件陷阱就能及時捕獲到錯誤中斷;二是未使用的ROM空間。在其中每隔一段設(shè)置一個陷阱可將彈飛至該區(qū)域的出錯程序捕獲;三是表格。儲存在EPROM中的表格后安排軟件陷阱可在一定程序上防止軟件彈飛;四是程序區(qū)。一般程序中不能任意安排軟件陷阱,但是在正常程序中會有一些跳轉(zhuǎn)指令,在這些指令后使用軟件陷阱可捕獲到彈飛到跳轉(zhuǎn)指令的操作數(shù)上的出錯程序。
(3)設(shè)立自檢程序。在單片機的特定部位或某些內(nèi)存單元設(shè)狀態(tài)標(biāo)志,在開機后的程序運行中不斷循環(huán)測試,以保證系統(tǒng)信息存儲、傳輸、運算的高可靠性。
(4)采用“看門狗”(watchdog)技術(shù)。WATCHDOG即程序監(jiān)視跟蹤定時器,它實質(zhì)上是一個可由CPU復(fù)位的定時器。它的工作原理如同圖1所示的兩個計時周期不同的定時器T1和T2。T1和T2是兩個時鐘源相同的定時器,設(shè)T1=1.0s,T2=1.1s,而用T1定時器的溢出脈沖P1同時對T1和T2定時器清零,只要T1定時器工作正常,則定時器T2永遠(yuǎn)不可能計時溢出。當(dāng)T1定時器不再計時,定時器T2則會計時溢出,并產(chǎn)生溢出脈沖P2。旦產(chǎn)生溢出脈沖P2,則表明T1出了故障。這里的T2即是WATCHDOG。利用溢出脈沖P2并進行巧妙的程序設(shè)計,可以檢測系統(tǒng)的出錯,而后使“飛掉”的程序重新恢復(fù)運行。
從根本上來說,硬件抗干擾是主動的,軟件抗干擾是被動的。在單片機應(yīng)用系統(tǒng)的設(shè)計過程中,合理地使用軟件和硬件抗干擾技術(shù),可使系統(tǒng)最大限度地避免干擾的產(chǎn)生和受干擾后能使系統(tǒng)恢復(fù)正常運行,從而保證了系統(tǒng)長期穩(wěn)定可靠地工作。
(作者單位:商丘職業(yè)技術(shù)學(xué)院)