單片機(jī)全稱是單片微型計(jì)算機(jī),又稱微控制器,是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),以其小巧且較高的性價(jià)比在工業(yè)控制領(lǐng)域有著廣泛的應(yīng)用。
1 單片機(jī)干擾的形成和分類(lèi)
1.1 電源開(kāi)關(guān)的通斷、電機(jī)和大的用電設(shè)備的啟停會(huì)引起供電電網(wǎng)發(fā)生波動(dòng),使電網(wǎng)出現(xiàn)尖峰脈沖干擾,會(huì)使同一供電網(wǎng)的單片機(jī)控制系統(tǒng)無(wú)法正常運(yùn)行。這可歸結(jié)為供電系統(tǒng)干擾。
1.2 控制系統(tǒng)的數(shù)據(jù)輸入輸出通道也是干擾源進(jìn)入的途徑,而各種信號(hào)線和控制線彼此間也會(huì)產(chǎn)生電磁干擾,使系統(tǒng)程序產(chǎn)生錯(cuò)誤。此類(lèi)干擾是過(guò)程通道干擾。
1.3 還有就是空間干擾,來(lái)自太陽(yáng)及其他天體輻射電磁波,大功率的廣播電視設(shè)備和周?chē)渌姎庠O(shè)備發(fā)出的電磁干擾。
2 單片機(jī)硬件及軟件的抗干擾措施
2.1 硬件抗干擾
2.1.1 設(shè)計(jì)抗干擾的電源。多數(shù)單片機(jī)對(duì)電源噪聲有很靈敏的反應(yīng),通過(guò)設(shè)備電源線進(jìn)入系統(tǒng)內(nèi)部的干擾會(huì)對(duì)微機(jī)產(chǎn)生很大影響。電源的共用在電源各個(gè)電子設(shè)備之間也會(huì)產(chǎn)生相互干擾。因此,單片機(jī)輸入電源要與強(qiáng)電設(shè)備動(dòng)力電源分開(kāi);在共用的電源上使用隔離變壓器,可以阻止由電網(wǎng)產(chǎn)生的干擾;也可以給單片機(jī)電源添加穩(wěn)壓器或?yàn)V波電路,防止過(guò)壓或欠壓出現(xiàn)帶來(lái)電源噪聲的干擾;對(duì)供電系統(tǒng)有較高要求的還可以使用不間斷電源。
2.1.2 在集成電路的地線端和電源端設(shè)計(jì)去耦電路,去耦電容在電路布線時(shí)盡量接近電路的電源輸入端。這樣既可以減弱集成電路通電時(shí)產(chǎn)生的能量,也可以消除電路產(chǎn)生的高頻噪聲。
2.1.3 采用靜電屏蔽技術(shù)。使用低電阻材料制成屏蔽體,將要分隔的部分包圍。而靜電屏蔽就是在電容耦合通路上加入接地的金屬導(dǎo)體,使其干擾電源為零,隔斷干擾電場(chǎng)的耦合通道。
2.1.4 對(duì)干擾進(jìn)行隔離。在設(shè)計(jì)電路時(shí)盡可能地使信號(hào)線與功率線遠(yuǎn)離,用繼電器來(lái)完成電氣方面信號(hào)的接收與發(fā)送,通過(guò)光電耦合器對(duì)信號(hào)輸入輸出通道和中央處理單元進(jìn)行有效隔離。在發(fā)光二極管的作用下,系統(tǒng)的輸入信號(hào)轉(zhuǎn)變?yōu)楣庑盘?hào),然后在光敏三極管下轉(zhuǎn)換為電信號(hào),這樣對(duì)通道干擾能起到有效的抑制作用,還能有效地對(duì)火地和信號(hào)地進(jìn)行隔離。
2.1.5 電路板布線和布局是否合理對(duì)系統(tǒng)的可靠性有很大影響。布線時(shí),盡量將模擬地與信號(hào)地分開(kāi),并且兩者單點(diǎn)接地;盡可能加粗地線;布局時(shí)強(qiáng)、弱電分開(kāi);采樣電路部分進(jìn)行電路板大面積覆銅,通信及信號(hào)連接線采用屏蔽線等。合理的布線和合理的布局可以使單片機(jī)抗干擾能力大大提高。
2.2 軟件抗干擾
在保證硬件抗干擾做好后,軟件抗干擾也是重要的一環(huán)。軟件抗干擾主要作用:一是對(duì)模擬輸入信號(hào)夾帶的噪聲進(jìn)行消除;二是當(dāng)程序出現(xiàn)運(yùn)行錯(cuò)誤時(shí)如何重新正常工作。
2.2.1 指令冗余。在CPU進(jìn)行取指令時(shí),是先提取操作碼再對(duì)操作數(shù)進(jìn)行提取,一旦系統(tǒng)受到干擾出錯(cuò)時(shí),程序就會(huì)以非正常的方式運(yùn)行,通常稱為“亂飛”。而糾正亂飛的情況就是指令冗余。指令冗余是指及時(shí)在程序的關(guān)鍵地方進(jìn)行人為的單字節(jié)插入,或者重新寫(xiě)入單字節(jié)。目前都是在三字節(jié)及雙字節(jié)后面給予超過(guò)兩字節(jié)的NOP指令。執(zhí)行此操作后,再次遇到程序亂飛在操作數(shù)的情況時(shí),由于有NOP指令的存在,將不會(huì)對(duì)后面的指令進(jìn)行任何操作,這樣就使程序重新步入正軌。
對(duì)系統(tǒng)流向起重要作用的指令如RET、JC、LCALL等,可以在這些指令之前插入兩條NOP指令,可把亂飛程序納入正軌,確保這些重要指令的正確執(zhí)行。指令冗余只能使CPU不再將操作數(shù)當(dāng)作操作碼錯(cuò)誤地執(zhí)行,卻不能主動(dòng)把程序錯(cuò)誤執(zhí)行方向扭轉(zhuǎn)過(guò)來(lái)。
2.2.2 攔截技術(shù)。該技術(shù)就是將亂飛的程序引入到指定的地方,然后再對(duì)程序進(jìn)行糾錯(cuò)處理,一般使用軟件陷阱實(shí)現(xiàn)對(duì)亂飛的程序進(jìn)行攔截。首先設(shè)計(jì)合理的陷阱,而后將其放在合適的地方。
2.2.3 看門(mén)狗技術(shù)。就是watching dog,一旦亂飛的程序出現(xiàn)死循環(huán),看門(mén)狗技術(shù)就會(huì)使其跳出其中。通過(guò)對(duì)程序循環(huán)運(yùn)行時(shí)間的檢測(cè),可以自動(dòng)判斷系統(tǒng)是否出現(xiàn)死循環(huán),而進(jìn)行相應(yīng)的處理。看門(mén)狗技術(shù)不但可通過(guò)硬件實(shí)現(xiàn),也可通過(guò)軟件實(shí)現(xiàn)。在如今的工業(yè)領(lǐng)域,干擾一旦破壞中斷方式的控制字,中斷被強(qiáng)制關(guān)閉,硬件上的watching dog電路就會(huì)失效,此時(shí)軟件上的watching dog電路就會(huì)成為硬件看門(mén)狗的替身,及時(shí)解決此類(lèi)問(wèn)題。
3 根據(jù)單片機(jī)自身特點(diǎn)采取的抗干擾措施
3.1 降低外時(shí)鐘頻率
外時(shí)鐘屬于高頻噪聲源,不僅會(huì)對(duì)自身應(yīng)用系統(tǒng)產(chǎn)生干擾,還會(huì)對(duì)外界引起干擾,所以使用低頻率單片機(jī)是降低系統(tǒng)噪音的有效方法。
3.2 選擇低噪聲的芯片
許多芯片在設(shè)計(jì)時(shí)將電源和地的引出放在對(duì)稱的兩邊,使電源噪聲影響到整個(gè)芯片。改進(jìn)后的芯片是把地和電源放在相鄰的引腳上,這樣可以降低經(jīng)過(guò)芯片的電流,也容易在PCB板上安排外部的去耦電路。
3.3 時(shí)鐘對(duì)電路檢測(cè)及低電壓復(fù)位
對(duì)系統(tǒng)時(shí)鐘進(jìn)行監(jiān)測(cè),一旦發(fā)現(xiàn)系統(tǒng)時(shí)鐘停振就會(huì)通過(guò)產(chǎn)生復(fù)位信號(hào)對(duì)時(shí)鐘進(jìn)行恢復(fù),這是提高單片機(jī)系統(tǒng)穩(wěn)定的有效辦法之一。在系統(tǒng)中使用RC濾波和施密特電路可以消除正弦波上毛刺對(duì)時(shí)鐘信號(hào)的干擾。
干擾的產(chǎn)生和傳遞是很復(fù)雜的,為保證系統(tǒng)可靠穩(wěn)定地運(yùn)行,還要有個(gè)良好的外部環(huán)境。