摘 要: 針對(duì)單片機(jī)應(yīng)用系統(tǒng)在工作環(huán)境中的主要干擾源及由此產(chǎn)生的影響,,從硬件和軟件兩方面提出了抗干擾的綜合措施。
關(guān)鍵詞: 單片機(jī),;抗干擾,;硬件;軟件
在單片機(jī)應(yīng)用系統(tǒng)的工作環(huán)境中,,往往不可避免地存在著各種干擾源,,如供電系統(tǒng)的干擾、過程通道的干擾,、空間輻射的干擾等,,這些干擾極容易入侵計(jì)算機(jī),造成單片機(jī)應(yīng)用系統(tǒng)的可靠性和穩(wěn)定性大大下降,。因此,,增強(qiáng)單片機(jī)應(yīng)用系統(tǒng)的抗干擾能力,提高系統(tǒng)運(yùn)行的可靠性,、穩(wěn)定性顯得尤為重要[1],。抗干擾技術(shù)主要有硬件抗干擾和軟件抗干擾,,本文分析了干擾的來(lái)源及其影響,,并在硬件和軟件兩方面系統(tǒng)地提出了有效的抗干擾措施。
1 干擾的來(lái)源和后果
工業(yè)現(xiàn)場(chǎng)環(huán)境中干擾是以脈沖的形式進(jìn)入單片機(jī)系統(tǒng),,主要有供電系統(tǒng)的干擾,、過程通道的干擾及空間輻射的干擾。供電系統(tǒng)干擾是以電源的噪聲干擾引起的,;過程通道干擾是干擾通過前向通道和后向通道進(jìn)入系統(tǒng),;空間輻射干擾多發(fā)生在高電壓、大電流,、高頻電磁場(chǎng)附近,,并通過靜電感應(yīng)、電磁感應(yīng)等方式侵入系統(tǒng)內(nèi)部,。干擾一般沿各種線路侵入系統(tǒng),此外,,系統(tǒng)接地裝置不可靠,,也是產(chǎn)生干擾的重要原因;各類傳感器,,輸入輸出線路的絕緣損壞均有可能引入干擾[2],。
干擾產(chǎn)生的后果主要有:(1)造成數(shù)據(jù)采集誤差加大;(2)造成程序運(yùn)行失常,;(3)引起系統(tǒng)被控對(duì)象的誤操作,;(4)引起被控對(duì)象狀態(tài)不穩(wěn)定;(5)造成定時(shí)不準(zhǔn);(6)使存貯器中有效數(shù)據(jù)發(fā)生變化,。
2 單片機(jī)應(yīng)用系統(tǒng)的硬件抗干擾技術(shù)
2.1 供電系統(tǒng)的抗干擾措施
?。?)遠(yuǎn)離干擾源。進(jìn)入計(jì)算機(jī)的電源線不宜接入帶有大功率感性負(fù)載的動(dòng)力線,,可以采用專用的220 V交流電源供電,。
(2)安裝隔離變壓器,??紤]到高頻噪聲通過變壓器不是依初次級(jí)線圈的互感耦合,而是靠初次級(jí)寄生電容耦合的,,因此隔離變壓器的初次級(jí)之間應(yīng)采用三層屏蔽層保護(hù),。
(3)模擬電路與數(shù)字電路系統(tǒng)獨(dú)立供電,。模擬電路與數(shù)字電路之間無(wú)電路上的直接聯(lián)系,,而是利用浮空技術(shù),互不共地,。
?。?)數(shù)字電路系統(tǒng)采用集成度高、抗干擾性強(qiáng)的開關(guān)電源,。在交流電源輸入端加入LC高頻濾波網(wǎng)絡(luò),,能有效地濾除高頻干擾。
?。?)安裝低通濾波器,。由諧波頻譜分析可知,電源引起的干擾大部分是高次諧波,,可在隔離變壓器之后設(shè)計(jì)低通濾波器,,使得50 Hz市電基波通過,濾去高次諧波,,以改善電源波形,。
(6)采用分散獨(dú)立的功能塊供電,。在實(shí)際的控制系統(tǒng)中,,用三端集成穩(wěn)壓塊分別組成所需的穩(wěn)壓電源,這樣可以減少公共阻抗和公共電源的相互耦合,,有利于電源散熱,,大大提高供電的可靠性。
2.2 過程通道的抗干擾措施
導(dǎo)線間的相互耦合(包括電耦合,、磁耦合,、電磁耦合)是過程通道干擾的主要因素之一,合理布線、選線以及通道的隔離是抑制,、消除干擾的主要措施,。
(1)布線上采用“遠(yuǎn)離技術(shù)”,。將干擾源遠(yuǎn)離被干擾的信號(hào)線和回路,,即強(qiáng)電的饋線必須單獨(dú)連線,絕對(duì)不能與弱信號(hào)線綁扎在一起,,盡量避免平行走向,,最好使兩者正交,這樣可以將電場(chǎng)耦合與磁場(chǎng)耦合形成的干擾電壓降到最小,。
?。?)采用雙絞線傳輸,注意長(zhǎng)線傳輸?shù)淖杩蛊ヅ?。要求源的輸出阻抗,、傳輸線的特性阻抗與接收端的輸入阻抗三者相等。
?。?)采用電流傳輸代替電壓傳輸,。這種方法可獲得較好的抗干擾能力。
?。?)采用光電耦合隔離,。光電耦合器是在密封條件下,利用光電耦合來(lái)溝通被切斷的電路,,不會(huì)受到外界光的干擾,。
(5)進(jìn)入A/D的每路信號(hào),,先要進(jìn)行濾波和限幅,,以減小干擾的影響。同時(shí)采用低噪聲前置差動(dòng)放大電路,,獲得較大的共模抑制比,。
(6)對(duì)于暫不工作的A/D通道,輸入一律短路,,以防止感應(yīng)電壓進(jìn)入計(jì)算機(jī),,影響系統(tǒng)正常工作。
2.3 空間輻射的抗干擾措施
輻射干擾主要來(lái)源于空間存在的多種電磁波,。例如,通信,、廣播,、大功率設(shè)備的開關(guān)電弧,電網(wǎng)有脈沖源工作時(shí)的射頻波及系統(tǒng)內(nèi)部高頻電路輻射出的電磁波等,這些輻射波的電磁感應(yīng)的方式通過殼體,、導(dǎo)線等形成接收電路,,造成對(duì)電路的干擾[3]。
防止輻射干擾的主要方法有:
?。?)屏蔽技術(shù),。包括靜電屏蔽、電磁屏蔽,、磁屏蔽,。屏蔽方式有兩種:一種是把容易被干擾的電路或?qū)Ь€、殼體等屏蔽起來(lái),,以防接收輻射干擾,;另一種是把輻射屏蔽起來(lái),防止輻射干擾影響其他電路,,例如將ADC等器件置于接地的金屬罩內(nèi),。
(2)合理布局,。將內(nèi)部具有輻射性能的電路獨(dú)立遠(yuǎn)置,,以避免對(duì)其他電路的影響。
?。?)在信道中設(shè)置各種濾波器,,以濾除由輻射而引起的干擾。
2.4 其他抗干擾措施
2.4.1 印制電路板的布線與工藝
?。?)盡量采用多層印制電路板,,多層板可提供良好的接地網(wǎng),可防止產(chǎn)生地電位差和元件之間的耦合,。
?。?)印制電路板要合理分區(qū)。模擬電路區(qū),、數(shù)字電路區(qū),、功率驅(qū)動(dòng)區(qū)要盡量分開,地線不能相混,,分別和電源端的地線相連,。
(3)元件面和焊接面應(yīng)采用相互垂直,、斜交,,或者彎曲走線,避免相互平行以減小寄生耦合:避免相鄰導(dǎo)線平行段過長(zhǎng),;加大信號(hào)線間距,。高頻電路互聯(lián)導(dǎo)線盡量短,,使用45°或者圓弧折線布線,不要使用90°折線,,以減小高頻信號(hào)的發(fā)射,。
(4)印制電路板要按單點(diǎn)接電,、單點(diǎn)心接地的原則送電,。三個(gè)區(qū)域的電源線、地線分三路引出,。地線,、電源線要盡量粗,噪聲元件與非噪聲元件要盡量分開,。時(shí)鐘振蕩電路,、特殊高速邏輯電路部分用地線圈起來(lái),讓周圍電場(chǎng)趨近于零,。
?。?)使用滿足系統(tǒng)要求的最低頻率的時(shí)鐘,時(shí)鐘產(chǎn)生器要盡量靠近用到該時(shí)鐘的器件,。石英晶體振蕩器外殼要接地,,時(shí)鐘線盡量短,時(shí)鐘線要遠(yuǎn)離I/O線,,在石英晶體振蕩器下面要加大接地的面積而不應(yīng)該走其他信號(hào)線,。
(6)I/O驅(qū)動(dòng)器件,、功率放大器件盡量靠近印制板的邊,、靠近引出接插件。重要的信號(hào)線盡量短,、盡量粗,,并在兩側(cè)加上保護(hù)地。將信號(hào)通過扁平電纜引出時(shí),,要使用地線—信號(hào)—地線相間的結(jié)構(gòu),。
2.4.2 提高元器件的可靠性
(1)選用質(zhì)量好的電子元件并進(jìn)行嚴(yán)格的測(cè)試,、篩選和優(yōu)化[4],。
(2)設(shè)計(jì)時(shí)元件技術(shù)參數(shù)要留有一定的余量,。
?。?)提高印制板和組裝的質(zhì)量。
2.4.3 使用多機(jī)冗余設(shè)計(jì)
在對(duì)控制系統(tǒng)的可靠性有嚴(yán)格要求的場(chǎng)合,,使用多機(jī)冗余可進(jìn)一步提高系統(tǒng)抗干擾能力,。多機(jī)冗余,,就是執(zhí)行同一個(gè)控制任務(wù),可安排多個(gè)單片機(jī)來(lái)完成,。以雙機(jī)冗余為例,所謂雙機(jī)冗余,,就是執(zhí)行同一個(gè)控制任務(wù),,可安排兩個(gè)單片機(jī)來(lái)完成,即主機(jī)與從機(jī),。正常情況下,,主機(jī)掌握著三總線的控制權(quán),對(duì)整個(gè)系統(tǒng)進(jìn)行控制,,此時(shí),,從機(jī)處于待機(jī)狀態(tài),等待仲裁器的觸發(fā),。
3 單片機(jī)應(yīng)用系統(tǒng)的軟件抗干擾技術(shù)
一般來(lái)講,,竄入微機(jī)測(cè)控系統(tǒng)的干擾,其頻譜往往很寬,,采用硬件抗干擾措施,,只能抑制某個(gè)頻率段的干擾,仍有一些干擾會(huì)進(jìn)入系統(tǒng),。因此,,除了采取硬件抗干擾方法外,還要采取軟件抗干擾措施,。
3.1 采用數(shù)字濾波技術(shù)
疊加在系統(tǒng)模擬輸入信號(hào)上的噪聲干擾,,會(huì)導(dǎo)致較大的測(cè)量誤差。但由于這些噪聲的隨機(jī)性,,可以通過數(shù)字濾波技術(shù)剔除虛假信號(hào),,求取真值。常用方法如下:
?。?)算術(shù)平均濾波法
算術(shù)平均濾波法就是連續(xù)取N個(gè)值進(jìn)行采樣,,然后求其平均值。該方法適應(yīng)于對(duì)一般具有隨機(jī)性干擾的信號(hào)進(jìn)行濾波,。這種濾波法的特點(diǎn)是:N值較大時(shí),,信號(hào)的平滑度好,但靈敏度低,;當(dāng)N值較小時(shí),,平滑度低,但靈敏度高,。
?。?)遞推平均濾波法
該方法是把N個(gè)測(cè)量數(shù)據(jù)看成一個(gè)隊(duì)列,,隊(duì)列的長(zhǎng)度為N,每進(jìn)行一次新的測(cè)量,,就把測(cè)量結(jié)果放入隊(duì)尾,,而扔掉原來(lái)隊(duì)首的一次數(shù)據(jù),計(jì)算N個(gè)數(shù)據(jù)的平均值,。對(duì)周期性的干擾,,此方法有良好的抑制作用,平滑度高,,靈敏度低,。但對(duì)偶發(fā)脈沖的干擾抑制作用差。
?。?)防脈沖干擾平均值濾波法
在脈沖干擾比較嚴(yán)重的場(chǎng)合,,如果采用一般的平均濾波法,,則干擾將會(huì)“平均”到結(jié)果中去,,故平均值法不易消除由于脈沖干擾而引起的誤差,。為此,在N個(gè)采樣數(shù)據(jù)中,,去掉最大值和最小值,,然后計(jì)算N-2個(gè)數(shù)據(jù)的算術(shù)平均值。為了加快測(cè)量速度,,N一般取值為4,。
3.2 采用系統(tǒng)自檢程序
設(shè)計(jì)系統(tǒng)自檢程序是提高系統(tǒng)可靠性的有效方法之一。自檢程序能對(duì)單片機(jī)的輸入輸出通道,、內(nèi)部RAM,、特殊功能寄存器SFR、外部RAM進(jìn)行故障檢查和診斷,,并能給出故障的部位,。
3.3 系統(tǒng)程序失控的對(duì)策
當(dāng)干擾通過總線或其他口線作用到CPU時(shí),就會(huì)造成程序計(jì)數(shù)器PC值的改變,,引起程序混亂,,使系統(tǒng)失控。因此,,在設(shè)計(jì)單片機(jī)系統(tǒng)時(shí),,如何發(fā)現(xiàn)CPU受到干擾,并盡可能無(wú)擾地使系統(tǒng)恢復(fù)到正常工作狀態(tài)是軟件設(shè)計(jì)應(yīng)考慮的主要問題,。
3.3.1 采用指令冗余技術(shù)
CPU受到干擾后,,往往將一些操作數(shù)當(dāng)作指令碼執(zhí)行,引起程序混亂,。MCS-51指令系統(tǒng)中所有的指令都不超過3個(gè)字節(jié),,而且有很多單字節(jié)指令,。當(dāng)程序彈飛到某一個(gè)單字節(jié)指令上時(shí),便自動(dòng)納入正軌,;當(dāng)彈飛到某一雙字節(jié)或三字節(jié)指令上時(shí),,有可能落到某操作數(shù)上繼續(xù)出錯(cuò)[5]。因此,,在軟件設(shè)計(jì)時(shí),,應(yīng)多采用單字節(jié)指令,并在關(guān)鍵的地方人為地插入一些單字節(jié)指令(NOP),,或?qū)⒂行巫止?jié)指令重復(fù)書寫,這就是指令冗余,。對(duì)雙字節(jié)和三字節(jié),,在其后插入2條空操作指令NOP,可保護(hù)其后的指令不被拆散,。程序設(shè)計(jì)中,,常在一些對(duì)程序流向起決定作用的指令(如RET、RETI,、ACALL,、LCALL、LJMP,、JZ,、JC等)和某些對(duì)系統(tǒng)狀態(tài)起重要作用的指令(如SETB、EA等)之前插入2條NOP指令,,可保證納入正軌,,或者在這些重要指令后面重寫,確保這些指令的正確執(zhí)行,。
3.3.2 采用軟件陷阱技術(shù)
所謂軟件陷阱,,就是在PC正常運(yùn)行不該到達(dá)的存儲(chǔ)區(qū)設(shè)置一條引導(dǎo)指令,捕獲PC并強(qiáng)行將其引向一個(gè)指定的地址,,在那里有一段專門對(duì)程序運(yùn)行出錯(cuò)進(jìn)行處理的程序,,以此達(dá)到復(fù)位系統(tǒng)的目的。
如果把這段程序的入口標(biāo)號(hào)稱為ERR的話,,軟件陷阱即為一條LJMP ERR指令,,為加強(qiáng)其捕捉效果,一般還在它前面加兩條NOP指令,。因此,,真正的軟件陷阱由三條指令構(gòu)成:
NOP
NOP
LJMPERR
軟件陷阱常被安排在未使用的中斷向量區(qū);未使用的大片ROM空間,;表格及程序區(qū),。
由于軟件陷阱都安排在程序正常執(zhí)行不到的地方,,故不會(huì)影響程序執(zhí)行效率。
3.3.3 利用“看門狗”技術(shù)
當(dāng)跑飛程序既沒有落入軟件陷阱,,又沒有遇到冗余指令,,而是在用戶程序之間或用戶本未使用的地址空間跳來(lái)跳去,自動(dòng)形成一個(gè)死循環(huán),。解決這一問題的辦法是采用“看門狗”技術(shù)來(lái)實(shí)現(xiàn)PC快速自恢復(fù),。
“看門狗”可采用硬件電路設(shè)計(jì)完成,也可以采用軟件“看門狗”,。采用軟件“看門狗”可以避免硬件“看門狗”所需要增加的開銷,。
軟件看門狗的具體設(shè)計(jì)方法如下:
采用定時(shí)器T0作為WATHDOG,將T0的中斷定義為高級(jí)中斷,,系統(tǒng)中的其他中斷設(shè)為低級(jí)中斷,,WATCHDOG啟動(dòng)后,系統(tǒng)必須及時(shí)刷新T0的時(shí)間常數(shù),。這樣,,當(dāng)程序正常運(yùn)行時(shí),由于每次還未到T0產(chǎn)生溢出中斷,,即將T0的時(shí)間常數(shù)刷新,,T0中斷永遠(yuǎn)不會(huì)發(fā)生;而當(dāng)程序因干擾進(jìn)入某一小區(qū)域死循環(huán)時(shí),,T0將產(chǎn)生高級(jí)中斷,,T0中斷可直接轉(zhuǎn)向出錯(cuò)處理程序,由出錯(cuò)處理程序來(lái)完成系統(tǒng)復(fù)位,。
針對(duì)電源的干擾,、過程通道的干擾、空間輻射的干擾等幾種主要的干擾源,,本文從硬件,、軟件兩個(gè)方面探討了一些提高抗干擾能力的方法。不同的單片機(jī)系統(tǒng)都有自己的系統(tǒng)特點(diǎn)和要求,,在硬件和軟件抗干擾設(shè)計(jì)上也各有自己的特色,,在實(shí)踐中可以有針對(duì)性地采用其中幾種。
參考文獻(xiàn)
[1] 何立民.MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,,1997.
[2] 先鋒工作室.單片機(jī)程序設(shè)計(jì)實(shí)例[M].北京:清華大學(xué)出版社,,2003.
[3] 王幸之.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,2001.
[4] 周晗曉,,袁慧梅.單片機(jī)系統(tǒng)的印制板設(shè)計(jì)與抗干擾技術(shù)[J].電子工藝技術(shù),,2004(6).
[5] 史勇,謝曉霞.測(cè)控系統(tǒng)中的軟件抗干擾技術(shù)[J].現(xiàn)代電子技術(shù),2006(19).