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