米秀杰 隋秀梅 趙麗
[摘 要]本文分析了單片機(jī)系統(tǒng)干擾的現(xiàn)象和原因,提出了一些在實(shí)際應(yīng)用中取得了良好效果的提高抗干擾能力的方法。
[關(guān)鍵詞]單片機(jī) 抗干擾 硬件 軟件
[中圖分類號]TP368[文獻(xiàn)標(biāo)識碼]A[文章編號]1007-9416(2009)11-0009-02
在進(jìn)行單片機(jī)應(yīng)用產(chǎn)品的開發(fā)過程中,我們經(jīng)常會碰到一個很棘手的問題,即在實(shí)驗(yàn)室環(huán)境下系統(tǒng)運(yùn)行很正常,但小批量生產(chǎn)并安裝在工作現(xiàn)場后,卻出現(xiàn)一些不太規(guī)律、不太正常的現(xiàn)象。究其原因主要是系統(tǒng)的抗干擾設(shè)計不全面,導(dǎo)致應(yīng)用系統(tǒng)的工作不可靠。本文主要分析單片機(jī)應(yīng)用系統(tǒng)出錯的起因,并結(jié)合自己的工作經(jīng)驗(yàn),探討一些解決的辦法。
1 單片機(jī)應(yīng)用系統(tǒng)出錯的主要現(xiàn)象和原因
1.1 單片機(jī)應(yīng)用系統(tǒng)出錯的主要現(xiàn)象和內(nèi)因
大量的電源和磁場干擾,會造成以下各種系統(tǒng)內(nèi)部出錯。表1列出了單片機(jī)應(yīng)用系統(tǒng)出錯的主要現(xiàn)象和內(nèi)部原因。
1.2 單片機(jī)應(yīng)用系統(tǒng)出錯的外部原因
從設(shè)計和制造的角度來看,造成應(yīng)用系統(tǒng)容易受干擾的主要原因是:
(1)系統(tǒng)電源的抗干擾能力差或功率不足;(2)程序沒有采取抗干擾措施或措施不力;(3)器件間驅(qū)動功率不足,處在較臨界狀態(tài);(4)遠(yuǎn)距離數(shù)據(jù)傳輸?shù)碾娫?、電壓偏?(5)沒有采取屏蔽保護(hù);(6)元件質(zhì)量低。
針對以上出現(xiàn)的問題,我們分別從硬件和軟件兩個方面來探討一些提高單片機(jī)應(yīng)用系統(tǒng) 抗干擾能力的方法。
2 片機(jī)應(yīng)用系統(tǒng)的硬件抗干擾設(shè)計
2.1 選擇時鐘頻率低的單片機(jī)
外時鐘是高頻的噪聲源,除能引起對本應(yīng)用系統(tǒng)的干擾之外,還可能產(chǎn)生對外界的干擾,使電磁兼容檢測不能達(dá)標(biāo)。在對系統(tǒng)可靠性要求很高的應(yīng)用系統(tǒng)中,選用頻率低的單片機(jī)是降低系統(tǒng)噪聲的原則之一。以8051單片機(jī)為例,最短指令周期1μs時,外時鐘是12MHz。而同樣速度的Motorola單片機(jī)系統(tǒng)時鐘只需4MHz,更適合用于工控系統(tǒng)。
2.2 電源
(1)若系統(tǒng)空間允許的話,可使用現(xiàn)成的微電腦開關(guān)電源,它有4組輸出,分別為+5V(18 A~25A)、-5V(0.5A)、+12V(6A~10A)、-12V(0.5A)。如果一個功率不夠,可用多個分塊供電,主機(jī)最好單獨(dú)使用一個。電源的功率充足,就能減少電源本身所產(chǎn)生的紋波及諧波干擾。這是解決電源干擾和電源功率不足的最好方法;
(2)采用開關(guān)電源設(shè)計;
(3)主機(jī)部分采用單獨(dú)的穩(wěn)壓電路,一片7805穩(wěn)壓塊,加上較好的濾波電路;外圍電路采用另外的電源供電。
2.3 提高輸出信號的電源或電壓
如果輸入、輸出連接線路超過80cm,最好提高傳送的電壓或電流,以減少信號的衰減和受干擾而造成的信號失真。簡單的方法可在傳送端加一個1488,將電平提高到12V;接收端加一個1489,將電平回復(fù)到5V。
2.4 輸入、輸出隔離
輸入、輸出信號可加光電耦合器隔離,防止外圍器件動作時產(chǎn)生的回流沖擊系統(tǒng)電路。
2.5 注意器件的驅(qū)動能力
一般1個TTL可推動8個TTL或10多個CMOS,而一個CMOS可推動1~2個TTL或20多個CMOS。如果輸出負(fù)載過重,會降低輸出電平,使電平處于或低于被驅(qū)動器件的輸入門檻電平(TTL:高為2.4V,低為0.4V;CMOS;高為4.5V,低為1.4V),從而造成系統(tǒng)不穩(wěn)定。
2.6 采取屏蔽保護(hù)
屏蔽可用來隔離空間輻射。對噪聲特別大的部件(如開關(guān)電源),用金屬盒罩起來,可減少噪聲源對單片機(jī)的干擾。對容易受干擾的部分,可加設(shè)屏蔽金屬罩并接地,使干擾磁信號被短路接地。
2.7 注意印制電路板的布線與工藝
印制電路板的設(shè)計對單片機(jī)系統(tǒng)能否抗干擾非常重要。要本著盡量控制噪聲源,盡量減小噪聲的傳播與耦合,盡量減小噪聲的吸收這三大原則設(shè)計印制電路板和布線。
(1)印制電路板要合理分區(qū)。單片機(jī)應(yīng)用系統(tǒng)通??煞秩齾^(qū),即模擬電路區(qū)(怕干擾)、數(shù)字電路區(qū)(既怕干擾、又產(chǎn)生干擾)、功率驅(qū)動區(qū)(干擾源)。
(2)印制電路板要按單點(diǎn)接電源、單點(diǎn)接地的原則送電。三個區(qū)域的電源線、地線由該點(diǎn)分三路引出。噪聲元件與非噪聲元件要離得遠(yuǎn)一些。
(3)時鐘振蕩電路、特殊高速邏輯電路部分用地線圈起來,讓周圍電場趨近于零。
(4)使用滿足系統(tǒng)要求的最低頻率的時鐘,時鐘產(chǎn)生器要盡量靠近用到該時鐘的器件。石英晶體振蕩器外殼要接地,時鐘線盡量短,且在石英晶體振蕩器下面要加大接地的面積而不應(yīng)該走其它信號線。
(5)I/O驅(qū)動器件、功率放大器件盡量靠近印制板的邊、靠近引出接插件。
(6)在單面板、雙面板設(shè)計中,地線、電源線要盡量粗。信號線的過孔要盡量少。
(7)四層板比雙面板噪聲低20dB,六層板比四層板噪聲低10dB。經(jīng)濟(jì)條件允許時盡量用 多層板。
(8)使用45°的折線布線,不要使用90°折線,以減小高頻信號的發(fā)射。
(9)重要的信號線盡量短并要盡量粗,并在兩側(cè)加上保護(hù)地。將信號通過扁平電纜引出時,要使用地線-信號-地線的結(jié)構(gòu)。
(10)時鐘線垂直于I/O線比平行于I/O線干擾小,時鐘線要遠(yuǎn)離I/O線。
(11)對A/D類器件,數(shù)字部分與模擬部分寧可繞一下也不要交叉。噪聲敏感線不要與高 速線、大電流線平行。
(12) 每個IC元件要加一個去耦電容,布線時去耦電容要真正接在芯片的電源、地上。要 選高頻特性好的獨(dú)石電容或瓷片電容作去耦電容。去耦電容焊在印制電路板上時,引腳要盡量短。
(13)從高噪聲區(qū)來的信號要加濾波。繼電器線圈處要加放電二極管??梢杂么粋€電阻 的辦法來軟化I/O線的跳變沿或提供一定的阻尼。
(14)閑置不用的門電路輸入端不要懸空。閑置不用的運(yùn)算放大器正輸入端接地,負(fù)輸入端接輸出。單片機(jī)不用的I/O口定義成輸出。單片機(jī)上有一個以上電源、地端的,每端都要 接上,不要懸空。
(15)盡量不要使用IC插座,把IC直接焊在印制板上,IC插座有較大的分布電容。
(16)選擇良好的元件
現(xiàn)在市場上出售的元件,很多是可用但性能不佳,甚至有些是器件廠經(jīng)測試認(rèn)為不合格的產(chǎn)品。這些元件極易受干擾,只能在很好的環(huán)境(指電源穩(wěn)定、沒有磁干擾)下工作。因此在選購元件時,特別是單片機(jī)、晶振、RAM等,最好選購一級品。
3 應(yīng)用系統(tǒng)的軟件抗干擾設(shè)計
單片機(jī)應(yīng)用系統(tǒng)的抗干擾不可能完全依靠硬件解決,軟件抗干擾設(shè)計也是防止和消除整個應(yīng)用系統(tǒng)故障的重要途徑。
3.1 制狀態(tài)失常的軟件對策
軟件冗余。對于條件控制系統(tǒng),對控制條件的一次采樣、處理控制輸出改為循環(huán)地采樣、處理控制輸出。這種方法對于慣性較大的控制系統(tǒng)具有良好的抗干擾作用。
設(shè)置當(dāng)前輸出狀態(tài)寄存單元,當(dāng)干擾侵入輸出通道造成輸出狀態(tài)破壞時,系統(tǒng)能及時查詢寄存單元的輸出狀態(tài)信息,及時糾正輸出狀態(tài)。
設(shè)自檢程序。在單片機(jī)內(nèi)的特定部位或某些內(nèi)存單元設(shè)狀態(tài)標(biāo)志,在開機(jī)后,運(yùn)行中不斷循環(huán)測試,以保證系統(tǒng)中信息存儲、運(yùn)輸、運(yùn)算的高可靠性。
3.2 序運(yùn)行失常的軟件對策
3.2.1 設(shè)置程序監(jiān)視跟蹤定時器
目前,大多數(shù)單片機(jī)片內(nèi)都集成有程序監(jiān)視跟蹤定時器。監(jiān)視跟蹤定時器主要用來跟蹤程序的運(yùn)行。當(dāng)程序運(yùn)行出現(xiàn)故障時,計數(shù)器溢出,系統(tǒng)復(fù)位,重新運(yùn)行系統(tǒng)程序。利用它可有效地實(shí)現(xiàn)程序防飛功能。
3.2.2 設(shè)置程序指針陷阱
在每個子程序后面或程序段后,插入5條指令NOP、NOP、NOP、N OP、LJMP MAIN(其中MAIN是初始化程序開始地址),在片的空白處(特別是后面的空白處),每32個字節(jié)放指令LJMP MAIN。設(shè)置了指針陷阱后,一旦單片機(jī)受干擾,使程序指針混亂,執(zhí)行了一段程序后,就會落入陷阱中,執(zhí)行LJMP MAIN指令,回復(fù)到初始化程序開始處,從而避免死機(jī)。
3.3 數(shù)據(jù)采集誤差的軟件對策
用軟件濾波算法,可濾掉大部分由輸入信號干擾而引起的輸出控制錯誤。最常用的方法有算術(shù)平均值法、比較舍取法、中值法、一階遞推數(shù)字濾波法。具體選取何種方法,必須根據(jù)信號的變化規(guī)律選擇。
[參考文獻(xiàn)]
[1] 民MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計[M].北京航空航天大學(xué)出版社,1999,7.
[作者簡介]
米秀杰(1970—):女,長春職業(yè)技術(shù)學(xué)院工程技術(shù)分院、副教授,主要研究方向:自動控制研究、單片機(jī)技術(shù)應(yīng)用。
隋秀梅(1965—):女,長春職業(yè)技術(shù)學(xué)院工程技術(shù)分院院長、副教授,主要研究方向:職業(yè)教育專業(yè)建設(shè)、教學(xué)管理。
趙麗(1972—):女,長春職業(yè)技術(shù)學(xué)院工程技術(shù)分院、講師,主要研究方向:智能機(jī)器人技術(shù)應(yīng)用研究、單片機(jī)技術(shù)應(yīng)用。