單片機(jī)應(yīng)用系統(tǒng)的抗干擾解決方案
1. 引言
本文引用地址:http://www.ex-cimer.com/article/171781.htm單片機(jī)應(yīng)用系統(tǒng)的抗干擾設(shè)計(jì)是系統(tǒng)設(shè)計(jì)的重要內(nèi)容之一,抗干擾性能的好壞將決定系統(tǒng)能否在復(fù)雜的電磁環(huán)境下穩(wěn)定可靠地工作,從而決定了系統(tǒng)的實(shí)際使用價(jià)值。特別是在各種實(shí)時控制的遠(yuǎn)距離系統(tǒng)中,由于現(xiàn)場環(huán)境惡劣,干擾因素較多,系統(tǒng)不可避免地要受到其他電磁設(shè)備的干擾,若僅按常規(guī)設(shè)計(jì)就很難保證系統(tǒng)的正常運(yùn)行。因此,抗干擾問題是設(shè)計(jì)者必須充分考慮和解決的,下面從硬件和軟件兩個方面談?wù)効垢蓴_設(shè)計(jì)。
2. 硬件抗干擾設(shè)計(jì)
2.1 供電系統(tǒng)
為了防止從電源系統(tǒng)引入干擾,首先采用交流穩(wěn)壓器保證供電系統(tǒng)的穩(wěn)定性,防止電源的過壓和欠壓。其次,電源濾波和退耦是抑制電源干擾的主要方式,可將電源變壓器的初級隔離起來,使混入初級的噪聲干擾不致進(jìn)入次級;使用隔離變壓器濾掉高頻噪聲,低通濾波器濾掉工頻干擾。
當(dāng)系統(tǒng)中使用繼電器、磁帶等電感設(shè)備時,數(shù)據(jù)采集的供電電路應(yīng)與繼電器的供電電路分開,以避免在供電線路之間的干擾,即如圖1所示。
對單片機(jī)系統(tǒng)的主機(jī)部分使用單獨(dú)的穩(wěn)壓電路,必要時輸入、輸出供電分別采用DC-DC模塊,避免各個部分之間的干擾。
2.2 印制電路板
① 注意合理布置印制電路板上的器件,遵循器件之間電氣干擾小和易于散熱的原則。
② 電路板要合理劃分,模擬電路區(qū)、數(shù)字電路區(qū)、功率驅(qū)動區(qū)等要盡量分開,地線不能相混,要分別和電源端的地線相連。
③ 布線時盡量不要構(gòu)成環(huán)路,特別避免沿印制電路板周圍做成環(huán)路,不要出現(xiàn)長段的窄線并行,旁路電容的引線不能很長;單元電路的輸出和輸入應(yīng)當(dāng)用地線隔開;電源線和地線的走向盡量和數(shù)據(jù)傳輸?shù)姆较蛞恢拢⒓訉拰挾忍岣唠娐钒宓目垢蓴_能力。
④ 原則上每個IC都要加去耦電容,并靠近IC的電源腳和接地腳。
2.3 輸入輸出干擾的抑制
輸入輸出信號加上光電耦合器隔離,可以將主機(jī)部分和前向、后向通道及其他部分切斷電路的聯(lián)系,有效地防止干擾進(jìn)入主機(jī)系統(tǒng)。
在單片機(jī)實(shí)時系統(tǒng)信號的長線傳輸過程中,要注意使用雙絞線,提高系統(tǒng)的抗噪聲能力。同時對傳輸線要進(jìn)行阻抗匹配,可以在傳輸線的始端串聯(lián)電阻、末端并聯(lián)電阻,以實(shí)現(xiàn)匹配,提高系統(tǒng)的抗干擾能力。
3. 軟件抗干擾設(shè)計(jì)
為了提高測控系統(tǒng)的可靠性,僅靠硬件抗干擾措施是不夠的,還需采用適當(dāng)?shù)能浖垢蓴_技術(shù),軟件抗干擾技術(shù)是當(dāng)輸入信號受干擾后去偽求真或系統(tǒng)受干擾后使系統(tǒng)恢復(fù)正常運(yùn)行的一種輔助方法。對抑制輸入信號的干擾主要采用數(shù)字濾波技術(shù),通過軟件去除噪聲對數(shù)據(jù)采集結(jié)果的影響。系統(tǒng)受干擾后會使得程序失控,失控原因大都可以歸結(jié)為程序計(jì)數(shù)器PC的內(nèi)容發(fā)生變化,引起程序跑飛或陷入死循環(huán),CPU執(zhí)行了一系列錯誤的指令從而導(dǎo)致系統(tǒng)失控,,可以采用軟件冗余、軟件陷阱和看門狗技術(shù)等使程序納入正規(guī)。
3.1 軟件冗余技術(shù)
MCS-51所有指令都不超過三個字節(jié),且多為單字節(jié)指令,指令由操作碼和操作數(shù)組成,操作碼指明CPU完成什么樣的操作,單字節(jié)指令僅有操作碼,隱含操作數(shù)。CPU受到干擾后,PC內(nèi)容發(fā)生變化,當(dāng)程序彈飛到某一單字節(jié)指令時,便自動納入正規(guī)。當(dāng)跑飛到某一雙字節(jié)或三字節(jié)指令時,若恰恰在取指令時刻落到其操作數(shù)上,CPU就將操作數(shù)當(dāng)作操作碼來執(zhí)行,引起程序混亂。因此軟件設(shè)計(jì)應(yīng)多采用單字節(jié)指令,并在關(guān)鍵的地方人為的插入一些單字節(jié)指令NOP,或?qū)⒂行У膯巫止?jié)指令重寫,這稱作指令冗余。在實(shí)際軟件設(shè)計(jì)中,往往在雙字節(jié)和三字節(jié)指令之后插入兩個NOP指令,可以保證程序跑飛后其后面的指令不會拆散,后面的程序可以正常運(yùn)行。在那些對程序流向起決定作用的指令,如RET、RETI、ACALL、LJMP、JZ、JNC等之前也插入2條NOP指令,可保證跑飛的程序迅速進(jìn)入正確的控制軌道。
評論