A. 單片機系統軟體抗干擾方法
在提高硬體系統抗干擾能力的同時 軟體抗干擾以其設計靈活 節省硬體資源 可靠性好越來越受到重視 下面以MCS 單片機系統為例 對微機系統軟體抗干擾方法進行研究
軟體抗干擾方法的研究
在工程實踐中 軟體抗干擾研究的內容主要是 一 消除模擬輸入信號的嗓聲(如數字濾波技術) 二 程序運行混亂時使程序重入正軌的方法 本文針對後者提出了幾種有效的軟體抗干擾方法
指令冗餘
CPU取指令過程是先取操作碼 再取操作數 當PC受干擾出現錯誤 程序便脫離正常軌道 亂飛 當亂飛到某雙位元組指令 若取指令時刻落在操作數上 誤將操作數當作操作碼 程序將出錯 若 飛 到了三位元組指令 出錯機率更大
在關鍵地方人為插入一些單位元組指令 或將有效單位元組指令重寫稱為指令冗餘 通常是在雙位元組指令和三位元組指令後插入兩個位元組以上的NOP 這樣即使亂飛程序飛到操作數上 由於空操作指令NOP的存在 避免了後面的指令被當作操作數執行 程序自動納入正軌
此外 對系統流向起重要作用的指令如RET RETI LCALL LJMP JC等指令之前插入兩條NOP 也可將亂飛程序納入正軌 確保這些重要指令的執行
攔截技術
所謂攔截 是指將亂飛的程序引向指定位置 再進行出錯處理 通常用軟體陷阱來攔截亂飛的程序 因此先要合理設計陷阱 其次要將陷阱安排在適當的位置
軟體陷阱的設計
當亂飛程序進入非程序區 冗餘指令便無法起作用 通過軟體陷阱 攔截亂飛程序 將其引向指定位置 再進行出錯處理 軟體陷阱是指用來將捕獲的亂飛程序引向復位入口地址 H的指令 通常在EPROM中非程序區填入以下指令作為軟體陷阱
NOP
NOP
LJMP H
其機器碼為
陷阱的安排
通常在程序中未使用的EPROM空間填 最後一條應填入 當亂飛程序落到此區 即可自動入軌 在用戶程序區各模塊之間的空餘單元也可填入陷阱指令 當使用的中斷因干擾而開放時 在對應的中斷服務程序中設置軟體陷阱 能及時捕獲錯誤的中斷 如某應用系統雖未用到外部中斷 外部中斷 的中斷服務程序可為如下形式
NOP
NOP
RETI
返回指令可用 RETI 也可用 LJMP H 如果故障診斷程序與系統自恢復程序的設計可靠 完善 用 LJMP H 作返回指令可直接進入故障診斷程序 盡早地處理故障並恢復程序的運行
考慮到程序存貯器的容量 軟體陷阱一般 K空間有 個就可以進行有效攔截
軟體 看門狗 技術
若失控的程序進入 死循環 通常採用 看門狗 技術使程序脫離 死循環 通過不斷檢測程序循環運行時間 若發現程序循環時間超過最大循環運行時間 則認為系統陷入 死循環 需進行出錯處理
看門狗 技術可由硬體實現 也可由軟體實現 在工業應用中 嚴重的干擾有時會破壞中斷方式控制字 關閉中斷 則系統無法定時 喂狗 硬體看門狗電路失效 而軟體看門狗可有效地解決這類問題
筆者在實際應用中 採用環形中斷監視系統 用定時器T 監視定時器T 用定時器T 監視主程序 主程序監視定時器T 採用這種環形結構的軟體 看門狗 具有良好的抗干擾性能 大大提高了系統可靠性 對於需經常使用T 定時器進行串口通訊的測控系統 則定時器T 不能進行中斷 可改由串口中斷進行監控(如果用的是MCS 系列單片機 也可用T 代替T 進行監視) 這種軟體 看門狗 監視原理是 在主程序 T 中斷服務程序 T 中斷服務程序中各設一運行觀測變數 假設為MWatch T Watch T Watch 主程序每循環一次 MWatch加1 同樣T T 中斷服務程序執行一次 T Watch T Watch加1 在T 中斷服務程序中通過檢測T Watch的變化情況判定T 運行是否正常 在T 中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行 在主程序中通過檢測T Watch的變化情況判別T 是否正常工作 若檢測到某觀測變數變化不正常 比如應當加 而未加 則轉到出錯處理程序作排除故障處理 當然 對主程序最大循環周期 定時器T 和T 定時周期應予以全盤合理考慮 限於篇幅不贅述
系統故障處理 自恢復程序的設計
單片機系統因干擾復位或掉電後復位均屬非正常復位 應進行故障診斷並能自動恢復非正常復位前的狀態
非正常復位的識別
程序的執行總是從 H開始 導致程序從 H開始執行有四種可能 一 系統開機上電復位 二 軟體故障復位 三 看門狗超時未喂狗硬體復位 四 任務正在執行中掉電後來電復位 四種情況中除第一種情況外均屬非正常復位 需加以識別
硬體復位與軟體復位的識別
此處硬體復位指開機復位與看門狗復位 硬體復位對寄存器有影響 如復位後PC= H SP= H PSW= H等 而軟體復位則對SP SPW無影響 故對於微機測控系統 當程序正常運行時 將SP設置地址大於 H 或者將PSW的第 位用戶標志位在系統正常運行時設為 那麼系統復位時只需檢測PSW 標志位或SP值便可判此是否硬體復位 圖 是採用PSW 作上電標志位判別硬 軟體復位的程序流程圖
圖 硬 軟體復位識別流程圖
此外 由於硬體復位時片內RAM狀態是隨機的 而軟體復位片內RAM則可保持復位前狀態 因此可選取片內某一個或兩個單元作為上電標志 設 H用來做上電標志 上電標志字為 H 若系統復位後 H單元內容不等於 H 則認為是硬體復位 否則認為是軟體復位 轉向出錯處理 若用兩個單元作上電標志 則這種判別方法的可靠性更高
開機復位與看門狗故障復位的識別
開機復位與看門狗故障復位因同屬硬體復位 所以要想予以正確識別 一般要藉助非易失性RAM或者EEROM 當系統正常運行時 設置一可掉電保護的觀測單元 當系統正常運行時 在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為 AAH) 而在主程中將該單元清零 因觀測單元掉電可保護 則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位
正常開機復位與非正常開機復位的識別
識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位 對於過程式控制制系統尤為重要 如某以時間為控制標準的測控系統 完成一次測控任務需 小時 在已執行測控 分鍾的情況下 系統電壓異常引起復位 此時若系統復位後又從頭開始進行測控則會造成不必要的時間消耗 因此可通過一監測單元對當前系統的運行狀態 系統時間予以監控 將控制過程分解為若干步或若干時間段 每執行完一步或每運行一個時間段則對監測單元置為關機允許值 不同的任務或任務的不同階段有不同的值 若系統正在進行測控任務或正在執某時間段 則將監測單元置為非正常關機值 那麼系統復位後可據此單元判系統原來的運行狀態 並跳到出錯處理程序中恢復系統原運行狀態
非正常復位後系統自恢復運行的程序設計
對順序要求嚴格的一些過程式控制制系統 系統非正常復位否 一般都要求從失控的那一個模塊或任務恢復運行 所以測控系統要作好重要數據單元 參數的備份 如系統運行狀態 系統的進程值 當前輸入 輸出的值 當前時鍾值 觀測單元值等 這些數據既要定時備份 同時若有修改也應立即予以備份
當在已判別出系統非正常復位的情況下 先要恢復一些必要的系統數據 如顯示模塊的初始化 片外擴展晶元的初始化等 其次再對測控系統的系統狀態 運行參數等予以恢復 包括顯示界面等的恢復 之後再把復位前的任務 參數 運行時間等恢復 再進入系統運行狀態
應當說明的是 真實地恢復系統的運行狀態需 要極為細致地對系統的重要數據予以備份 並加以數據可靠性檢查 以保證恢復的數據的可靠性
其次 對多任務 多進程測控系統 數據的恢復需考慮恢復的次序問題 筆者實際應用的數據恢復過程流程圖如圖 所示
圖 系統自恢復程序流程圖
圖中恢復系統基本數據是指取出備份的數據覆蓋當前的系統數據 系統基本初始化是指對晶元 顯示 輸入輸出方式等進行初始化 要注意輸入輸出的初始化不應造成誤動作 而復位前任務的初始化是指任務的執行狀態 運行時間等
結束語
lishixin/Article/program/qrs/201311/11074
B. 51單片機抗干擾問題
這是當然 的了,首先你的單片機要採取抗干擾措施,在單片機的電源上多加濾波電容和旁路電容,復位電路要把晶振和電容組緊放在單片機旁,
電機和單片機要有隔離,可以採用光電隔離再驅動繼電器而後再驅動變頻器或電機.
單片機的電路可採用金屬罩,等等.
C. 單片機系統軟體抗干擾方法 用c語言編寫的
MCU抗干擾當然需要同時從軟硬體兩方面著手。
LZ既然說到用C語言去抗干擾的話,我這里就自己積累的一些簡單經驗分享有一下(其實匯編和C在抗干擾方面差不多,我這里就C方面講吧):
1、可以在對系統起重要的指令如函數調用前和函數返回前加上兩條 「_nop_()」這個函數, ,以便有比較高的概略入正軌。
2、雖然在整個系統中未用中斷,但建議把所有未用到的中斷響應寫成空函數。
3、軟體「看門狗」技術,因為硬體看門狗有時候在工業應用中,嚴重的干擾會破壞中斷控制字,關閉中斷,系統無法定時看門狗,而軟體看門夠能有效解決這個問題,在實際應用中,可採用「環行中斷監視系統」,我這里就舉個例子,用定時器T0通過一個變數來監視定時器T1,在用T1來監視主程序的,主程序監視T0,,,這里可通過3個變數的自增1來簡單實現,,,,,,,,當然還有其他更好的方法。
就大致說這樣3點吧,我感覺現有的MCU抗干擾本身就做的不錯,當然MCU外部的電路抗干擾也絕不能忽視,,,上面個人提到的3點,在一般的情況下,都是不需要那樣做的,,而在我實際使用中,好象還沒有遇見過MCU由於干擾而出現的問題(其實這樣的事情讓我遇到,也是比較開心的,能增加一些感性認識)。
D. 單片機原理的抗干擾
在提高硬體系統抗干擾能力的同時,軟體抗干擾以其設計靈活、節省硬體資源、可靠性好越來越受到重視。下面以MCS-51單片機系統為例,對微機系統軟體抗干擾方法進行研究。 在工程實踐中,軟體抗干擾研究的內容主要是:一、消除模擬輸入信號的雜訊(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。本文針對後者提出了幾種有效的軟體抗干擾方法。
指令冗餘
CPU取指令過程是先取操作碼,再取操作數。當PC受干擾出現錯誤,程序便脫離正常軌道「亂飛」,當亂飛到某雙位元組指令,若取指令時刻落在操作數上,誤將操作數當做操作碼,程序將出錯。若「飛」 到了三位元組指令,出錯機率更大。
在關鍵地方人為插入一些單位元組指令,或將有效單位元組指令重寫稱為指令冗餘。通常是在雙位元組指令和三位元組指令後插入兩個位元組以上的NOP。這樣即使亂飛程序飛到操作數上,由於空操作指令NOP的存在,避免了後面的指令被當作操作數執行,程序自動納入正軌。
此外,對系統流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執行。
攔截技術
所謂攔截,是指將亂飛的程序引向指定位置,再進行出錯處理。通常用軟體陷阱來攔截亂飛的程序。因此先要合理設計陷阱,其次要將陷阱安排在適當的位置。
(1 )軟體陷阱的設計
當亂飛程序進入非程序區,冗餘指令便無法起作用。通過軟體陷阱,攔截亂飛程序,將其引向指定位置,再進行出錯處理。軟體陷阱是指用來將捕獲的亂飛程序引向復位入口地址0000H的指令。通常在EPROM中非程序區填入以下指令作為軟體陷阱:
(2 ) 陷阱的安排
最後一條應填入020000,當亂飛程序落到此區,即可自動入軌。在用戶程序區各模塊之間的空餘單元也可填入陷阱指令。當使用的中斷因干擾而開放時,在對應的中斷服務程序中設置軟體陷阱,能及時捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式:
NOPNOPRETI返回指令可用「RETI」,也可用「LJMP 0000H」。如果故障診斷程序與系統自恢復程序的設計可靠、 完善,用「LJMP 0000H」作返回指令可直接進入故障診斷程序,盡早地處理故障並恢復程序的運行。
考慮到程序存貯器的容量,軟體陷阱一般1K空間有2-3個就可以進行有效攔截。
軟體「看門狗」技術
若失控的程序進入「死循環」,通常採用「看門狗」技術使程序脫離「死循環」。通過不斷檢測程序循環運行時間,若發現程序循環時間超過最大循環運行時間,則認為系統陷入「死循環」,需進行出錯處理。
「看門狗」技術可由硬體實現,也可由軟體實現。在工業應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷。則系統無法定時「喂狗」,硬體看門狗電路失效。而軟體看門狗可有效地解決這類問題。
筆者在實際應用中,採用環形中斷監視系統。用定時器T0監視定時器T1,用定時器T1監視主程序,主程序監視定時器T0。採用這種環形結構的軟體「看門狗」具有良好的抗干擾性能,大大提高了系統可靠性。對於需經常使用T1定時器進行串口通訊的測控系統,則定時器T1不能進行中斷,可改由串口中斷進行監控(如果用的是MCS-52系列單片機,也可用T2代替T1進行監視)。這種軟體「看門狗」監視原理是:在主程序、T0中斷服務程序、T1中斷服務程序中各設一運行觀測變數,假設為MWatch、T0Watch 、T1Watch,主程序每循環一次,MWatch加1,同樣T0、T1中斷服務程序執行一次,T0Watch、 T1Watch加1。在T0中斷服務程序中通過檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變數變化不正常,比如應當加1而未加1,則轉到出錯處理程序作排除故障處理。當然,對主程序最大循環周期、定時器T0和T1定時周期應予以全盤合理考慮。限於篇幅不贅述。 單片機系統因干擾復位或掉電後復位均屬非正常復位,應進行故障診斷並能自動恢復非正常復位前的狀態。
非正常復位的識別
程序的執行總是從0000H開始,導致程序從 0000H開始執行有四種可能:一、系統開機上電復位;二、軟體故障復位;三、看門狗超時未喂狗硬體復位; 四、任務正在執行中掉電後來電復位。四種情況中除第一種情況外均屬非正常復位,需加以識別。
(1 )硬體復位與軟體復位的識別
此處硬體復位指開機復位與看門狗復位,硬體復位對寄存器有影響,如復位後PC=0000H, SP=07H,PSW=00H等。而軟體復位則對SP、SPW無影響。故對於微機測控系統,當程序正常運行時,將SP設置地址大於07H,或者將PSW的第5位用戶標志位在系統正常運行時設為1。那麼系統復位時只需檢測PSW.5標志位或SP值便可判此是否硬體復位。
由於硬體復位時片內RAM狀態是隨機的,而軟體復位片內RAM則可保持復位前狀態,因此可選取片內某一個或兩個單元作為上電標志。設40H用來做上電標志,上電標志字為78H,若系統復位後40H單元內容不等於78H,則認為是硬體復位,否則認為是軟體復位,轉向出錯處理。若用兩個單元作上電標志,則這種判別方法的可靠性更高。
(2 )開機復位與看門狗故障復位的識別
開機復位與看門狗故障復位因同屬硬體復位, 所以要想予以正確識別,一般要藉助非易失性RAM或者EEROM。當系統正常運行時,設置一可掉電保護的觀測單元。當系統正常運行時,在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為 AAH),而在主程中將該單元清零,因觀測單元掉電可保護,則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位。
(3 )正常開機復位與非正常開機復位的識別
識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位,對於過程式控制制系統尤為重要。如某以時間為控制標準的測控系統,完成一次測控任務需1小時。在已執行測控50分鍾的情況下,系統電壓異常引起復位,此時若系統復位後又從頭開始進行測控則會造成不必要的時間消耗。因此可通過一監測單元對當前系統的運行狀態、系統時間予以監控,將控制過程分解為若干步或若干時間段,每執行完一步或每運行一個時間段則對監測單元置為關機允許值,不同的任務或任務的不同階段有不同的值,若系統正在進行測控任務或正在執某時間段,則將監測單元置為非正常關機值。那麼系統復位後可據此單元判系統原來的運行狀態,並跳到出錯處理程序中恢復系統原運行狀態。
非正常復位後系統自恢復運行的程序設計
對順序要求嚴格的一些過程式控制制系統,系統非正常復位否,一般都要求從失控的那一個模塊或任務恢復運行。所以測控系統要作好重要數據單元、參數的備份,如系統運行狀態、系統的進程值、當前輸入、輸出的值,當前時鍾值、觀測單元值等,這些數據既要定時備份,同時若有修改也應立即予以備份。
當在已判別出系統非正常復位的情況下,先要恢復一些必要的系統數據,如顯示模塊的初始化、片外擴展晶元的初始化等。其次再對測控系統的系統狀態、運行參數等予以恢復,包括顯示界面等的恢復。之後再把復位前的任務、參數、運行時間等恢復, 再進入系統運行狀態。
應當說明的是,真實地恢復系統的運行狀態需 要極為細致地對系統的重要數據予以備份,並加以數據可靠性檢查,以保證恢復的數據的可靠性。
其次,對多任務、多進程測控系統,數據的恢復需考慮恢復的次序問題。
系統基本初始化是指對晶元、顯示、輸入輸出方式等進行初始化,要注意輸入輸出的初始化不應造成誤動作。而復位前任務的初始化是指任務的執行狀態、運行時間等。
對於軟體抗干擾的一些其它常用方法如數字濾波、RAM數據保護與糾錯等,限於篇幅,本文未作討論。在工程實踐中通常都是幾種抗干擾方法並用,互相補充 完善,才能取得較好的抗干擾效果。從根本上來說,硬體抗干擾是主動的,而軟體是抗干擾是被動的。細致周到地分析干擾源,硬體與軟體抗干擾相結合,完善系統監控程序,設計一穩定可靠的單片機系統是完全可行的。
E. 單片機抗干擾
數字電路、單片機的抗干擾設計
在電子系統設計中,為了少走彎路和節省時間,應充分考慮並滿足抗干擾性 的要求,避免在
設計完成後再去進行抗干擾的補救措施。形成干擾的基本要素有三個:
(1)干擾源,指產生干擾的元件、設備或信號,用數學語言描述如下:/dt, di/dt大的地
方就是干擾源。如:雷電、繼電器、可控硅、電機、高頻時鍾等都可 能成為干擾源。
(2)傳播路徑,指干擾從干擾源傳播到敏感器件的通路或媒介。典型的干擾傳 播路徑是通過
導線的傳導和空間的輻射。
(3)敏感器件,指容易被干擾的對象。如:A/D、D/A變換器,單片機,數字IC, 弱信號放大
器等。
抗干擾設計的基本原則是:抑制干擾源,切斷干擾傳播路徑,提高敏感器件的 抗干擾性能。
(類似於傳染病的預防)
1 抑制干擾源
抑制干擾源就是盡可能的減小干擾源的/dt,di/dt。這是抗干擾設計中最優 先考慮和最重要的原則,常常會起到事半功倍的效果。 減小干擾源的/dt主要是通過在干擾源兩端並聯電容來實現。減小干擾源的di/dt則是在干擾源迴路串聯電感或電阻以及增加續流二極體來實現。
抑制干擾源的常用措施如下:
(1)繼電器線圈增加續流二極體,消除斷開線圈時產生的反電動勢干擾。僅加 續流二極體會使繼電器的斷開時間滯後,增加穩壓二極體後繼電器在單位時間內可動作更多的次數。
(2)在繼電器接點兩端並接火花抑制電路(一般是RC串聯電路,電阻一般選幾K 到幾十K,電容選0.01uF),減小電火花影響。
(3)給電機加濾波電路,注意電容、電感引線要盡量短。
(4)電路板上每個IC要並接一個0.01μF~0.1μF高頻電容,以減小IC對電源的 影響。注意高頻電容的布線,連線應靠近電源端並盡量粗短,否則,等於增大了電容的等效串聯電阻,會影響濾波效果。
(5)布線時避免90度折線,減少高頻雜訊發射。
(6)可控硅兩端並接RC抑制電路,減小可控硅產生的雜訊(這個雜訊嚴重時可能會把可控硅擊穿的)。
按干擾的傳播路徑可分為傳導干擾和輻射干擾兩類。
所謂傳導干擾是指通過導線傳播到敏感器件的干擾。高頻干擾雜訊和 有用信號的頻帶不同,可以通過在導線上增加濾波器的方法切斷高頻干擾雜訊的傳播,有時也可加隔離光耦來解決。電源雜訊的危害最大, 要特別注意處理。所謂輻射干擾是指通過空間輻射傳播到敏感器件的干擾。 一般的解決方法是增加干擾源與敏感器件的距離,用地線把它們隔離和在敏感器件上加蔽罩。
2 切斷干擾傳播路徑的常用措施如下:
(1)充分考慮電源對單片機的影響。電源做得好,整個電路的抗干擾就解決了一大半。許多單片機對電源雜訊很敏感, 要給單片機電源加濾波電路或穩壓器,以減小電源雜訊對單片機的干擾。比如,可以利用磁珠和電容組成π形濾波電路,當然條件要求不高時也可用100Ω電阻代替磁珠。
(2)如果單片機的I/O口用來控制電機等雜訊器件,在I/O口與雜訊源之間應加隔離(增加π形濾波電路)。 控制電機等雜訊器件,在I/O口與雜訊源之間應加隔離(增加π形濾波電路)。
(3)注意晶振布線。晶振與單片機引腳盡量靠近,用地線把時鍾區隔離起來,晶振外殼接地並固定。此措施可解決許多疑難問題。
(4)電路板合理分區,如強、弱信號,數字、模擬信號。盡可能把干擾源 (如電機,繼電器)與敏感元件(如單片機)遠離。
(5)用地線把數字區與模擬區隔離,數字地與模擬地要分離,最後在一點接於電源地。A/D、D/A晶元布線也以此為原則,廠家分配A/D、D/A晶元 引腳排列時已考慮此要求。
(6)單片機和大功率器件的地線要單獨接地,以減小相互干擾。 大功率器件盡可能放在電路板邊緣。
(7)在單片機I/O口,電源線,電路板連接線等關鍵地方使用抗干擾元件 如磁珠、磁環、電源濾波器,屏蔽罩,可顯著提高電路的抗干擾性能。
3 提高敏感器件的抗干擾性能
提高敏感器件的抗干擾性能是指從敏感器件這邊考慮盡量減少對干擾雜訊 的拾取,以及從不正常狀態盡快恢復的方法。
提高敏感器件抗干擾性能的常用措施如下:
(1)布線時盡量減少迴路環的面積,以降低感應雜訊。
(2)布線時,電源線和地線要盡量粗。除減小壓降外,更重要的是降低耦合雜訊。
(3)對於單片機閑置的I/O口,不要懸空,要接地或接電源。其它IC的閑置 端在不改變系統邏輯的情況下接地或接電源。
(4)對單片機使用電源監控及看門狗電路,如:IMP809,IMP706,IMP813,X25043,X25045等,可大幅度提高整個電路的抗干擾性能。
(5)在速度能滿足要求的前提下,盡量降低單片機的晶振和選用低速數字 電路。
(6)IC器件盡量直接焊在電路板上,少用IC座。
我先說說我在這方面的經驗:
軟體方面:
1、我習慣於將不用的代碼空間全清成「0」,因為這等效於NOP,可在程序跑飛時歸位;
2、在跳轉指令前加幾個NOP,目的同1;
3、在無硬體WatchDog時可採用軟體模擬WatchDog,以監測程序的運行;
4、涉及處理外部器件參數調整或設置時,為防止外部器件因受干擾而出錯可定時將參數重新發送一遍,這樣可使外部器件盡快恢復正確;
5、通訊中的抗干擾,可加數據校驗位,可採取3取2或5取3策略;
6、在有通訊線時,如I^2C、三線制等,實際中我們發現將Data線、CLK線、INH線常態置為高,其抗干擾效果要好過置為低。
硬體方面:
1、地線、電源線的部線肯定重要了!
2、線路的去偶;
3、數、模地的分開;
4、每個數字元件在地與電源之間都要104電容;
5、在有繼電器的應用場合,尤其是大電流時,防繼電器觸點火花對電路的干擾,可在繼電器線圈間並一104和二極體,在觸點和常開端間接472電容,效果不錯!
6、為防I/O口的串擾,可將I/O口隔離,方法有二極體隔離、門電路隔離、光偶隔離、電磁隔離等;
7、當然多層板的抗干擾肯定好過單面板,但成本卻高了幾倍。
8、選擇一個抗干擾能力強的器件比之任何方法都有效,我想這點應該最重要。因為器件天生的不足是很難用外部方法去彌補的,但往往抗干擾能力強的就貴些,抗干擾能力差的就便宜,正如台灣的東東便宜但性能卻大打折扣一樣!主要看各位的應用場合.
印製電路板(PC8)是電子產品中電路元件和器件的支撐件.它提供電路元件和器件之間的電氣連接。隨著電於技術的飛速發展,PGB的密度越來越高。PCB設計的好壞對抗干擾能力影響很大.因此,在進行PCB設計時.必須遵守PCB設計的一般原則,並應符合抗干擾設計的要求。
F. 單片機系統硬體抗干擾的常用方法介紹
單片機系統硬體抗干擾的常用方法介紹
影響單片機系統可靠安全運行的主要因素主要來自系統內部和外部的各種電氣干擾,並受系統結構設計、元器件選擇、安裝、製造工藝影響。這些都構成單片機系統的干擾因素,常會導致單片機系統運行失常,輕則影響產品質量和產量,重則會導致事故,造成重大經濟損失。今天我就給大家介紹下單片機系統硬體抗干擾的常用方法,大家一起來看看吧。
形成干擾的基本要素有三個:
(1)干擾源。指產生干擾的元件、設備或信號, 用數學語言描述如下:/dt,
di/dt大的地方就是干擾源。如:雷電、繼電器、可控硅、電機、高頻時鍾等都可能成為干擾源。
(2)傳播路徑。指干擾從干擾源傳播到敏感器件的通路或媒介。典型的干擾傳播路徑是通過導線的傳導和空間的輻射。
(3)敏感器件。指容易被干擾的對象。如:A/D、 D/A變換器,單片機,數字IC,弱信號放大器等
干擾的分類
1.1 干擾的分類
干擾的分類有好多種,通常可以按照雜訊產生的原因、傳導方式、波形特性等等進行不同的分類。按產生的原因分:
可分為放電雜訊音、高頻振盪雜訊、浪涌雜訊。
按傳導方式分:可分為共模雜訊和串模雜訊。
按波形分:可分為持續正弦波、脈沖電壓、脈沖序列等等。
1.2 干擾的耦合方式
干擾源產生的干擾信號是通過一定的耦合通道才對測控系統產生作用的。因此,我們有必要看看干擾源和被干擾對象之間的傳遞方式。干擾的耦合方式,無非是通過導線、空間、公共線等等,細分下來,主要有以下幾種:
(1)直接耦合:這是最直接的方式,也是系統中存在最普遍的一種方式。比如干擾信號通過電源線侵入系統。對於這種形式,最有效的方法就是加入去耦電路。
(2)公共阻抗耦合:這也是常見的耦合方式,這種形式常常發生在兩個電路電流有共同通路的情況。為了防止這種耦合,通常在電路設計上就要考慮。使干擾源和被干擾對象間沒有公共阻抗。
(3)電容耦合:又稱電場耦合或靜電耦合。是由於分布電容的存在而產生的耦合。
(4)電磁感應耦合:又稱磁場耦合。是由於分布電磁感應而產生的耦合。
(5)漏電耦合:這種耦合是純電阻性的,在絕緣不好時就會發生。
2 常用硬體抗干擾技術
針對形成干擾的三要素,採取的抗干擾主要有以下手段。
2.1 抑制干擾源
抑制干擾源就是盡可能的減小干擾源的/dt, di/dt。這是抗干擾設計中最優先考慮和最重要的原則,常常會起到事半功倍的效果。 減小干擾源的/dt主要是通過在干擾源兩端並聯電容來實現。減小干擾源的di/dt則是在干擾源迴路串聯電感或電阻以及增加續流二極體來實現。
抑制干擾源的常用措施如下:
(1)繼電器線圈增加續流二極體,消除斷開線圈時產生的反電動勢干擾。僅加續流二極體會使繼電器的斷開時間滯後,增加穩壓二極體後繼電器在單位時間內可動作更多的次數。
(2)在繼電器接點兩端並接火花抑制電路(一般是RC串聯電路,電阻一般選幾K到幾十K,電容選0.01uF),減小電火花影響。
(3)給電機加濾波電路,注意電容、電感引線要盡量短。
(4)電路板上每個IC要並接一個0.01μF~0.1
μF高頻電容,以減小IC對電源的影響。注意高頻電容的布線,連線應靠近電源端並盡量粗短,否則,等於增大了電容的等效串聯電阻,會影響濾波效果。
(5)布線時避免90度折線,減少高頻雜訊發射。
(6)可控硅兩端並接RC抑制電路,減小可控硅產生的雜訊(這個雜訊嚴重時可能會把可控硅擊穿的)。
單片機自身的抗干擾措施:
為提高單片機本身的可靠性。近年來單片機的製造商在單片機設計上採取了一系列措施以期提高可靠性。這些技術主要體現在以下幾方面。
1.降低外時鍾頻率
外時鍾是高頻的雜訊源,除能引起對本應用系統的干擾之外,還可能產生對外界的干擾,使電磁兼容檢測不能達標。在對系統可靠性要求很高的應用系統中,選用頻率低的單片機是降低系統雜訊的原則之一。以8051單片機為例,最短指令周期1μs時,外時鍾是12mhz。而同樣速度的motorola 單片機系統時鍾只需4mhz,更適合用於工控系統。近年來,一些生產8051兼容單片機的廠商也採用了一些新技術,在不犧牲運算速度的前提下將對外時鍾的需求降至原來的1/3。而motorola 單片機在新推出的68hc08系列以及其16/32位單片機中普遍採用了內部瑣相環技術,將外部時鍾頻率降至32khz,而內部匯流排速度卻提高到8mhz乃至更高。
2.低雜訊系列單片機
傳統的集成電路設計中,在電源、地的引出上通常將其安排在對稱的兩邊。如左下角是地,右下角是電源。這使得電源雜訊穿過整個矽片。改進的技術將電源、地安排在兩個相鄰的引腳上,這樣一方面降低了穿過整個矽片的電流,一方面使外部去耦電容在pcb設計上更容易安排,以降低系統雜訊。另一個在集成電路設計上降低雜訊的例子是驅動電路的設計。一些單片機提供若干個大電流的輸出引腳,從幾十毫安到數百毫安。這些大功率的驅動電路集成到單片機內部無疑增加了雜訊源。而跳變沿的軟化技術可消除這方面的影響,辦法是將一個大功率管做成若干個小管子的並聯,再為每個管子輸出端串上不同等效阻值的電阻。以降低di/dt。
3.時鍾監測電路、看門狗技術與低電壓復位
監測系統時鍾,當發現系統時鍾停振時產生系統復位信號以恢復系統時鍾,是單片機提高系統可靠性的措施之一。而時鍾監控有效與省電指令stop是一對矛盾。只能使用其中之一。
看門狗技術是監測應用程序中的一段定時中斷服務程序的運行狀況,當這段程序不工作時判斷為系統故障,從而產生系統復位。
低電壓復位技術是監測單片機電源電壓,當電壓低於某一值時產生復位信號。由於單片機技術的發展,單片機本身對電源電壓范圍的要求越來越寬。電源電壓從當初的5v降至3.3v並繼續下降到2.7v、2.2v、1.8v。在是否使用低電壓復位功能時應根據具體應用情況權衡一下。
4. eft技術
新近推出的motorola m68hc08 系列單片機採用eft(electrical fast transient)技術進一步提高了單片機的抗干擾能力。當振盪電路的正弦波信號受到外界干擾時,其波形上會疊加一些毛刺。以施密特電路對其整形時,這種毛刺會成為觸發信號干擾正常的時鍾信號。交替使用施密特電路和rc濾波可以使這類毛刺不起作用,這就是eft技術。隨著vlsi技術的不斷發展,電路內部的抗干擾技術也在不斷發展之中。
5.軟體方面的措施
單片機本身在指令設計上也有一些抗干擾的考慮。非法指令復位或非法指令中斷是當運行程序時遇到非法指令或非法定址空間能產生復位或中斷。單片機應用系統程序是事先寫好的,不可能有非法指令或定址。一定是系統受到干擾,cpu讀指令時出錯了。
以上提到的是當前廣泛使用的單片機應該具有的內部抗干擾措施。在選用單片機時,要檢查一下這些性能是否都有,以求設計出可靠性高的系統。
在應用軟體設計方面,設計者都有各自的經驗。這里要提醒的是最後對不用的rom要做處理。原則是萬一程序落到這里可以自恢復。
用於單片機系統的干擾抑制元件
1.去耦電容
每個集成電路的電源、地之間應配置一個去耦電容,它可以濾掉來自電源的高頻雜訊。作為儲能元件,它吸收或提供該集成電路內部三極體導通、截止引起的電流變化(di/dt),從而降低系統雜訊。要選高頻特性好的獨石電容或瓷片電容作去耦電容。每塊印製電路板電源引入的地方要安放一隻大容量的儲能電容。由於電解電容的纏繞式結構,其分布電感較大,對濾除高頻干擾信號幾乎不起作用。使用時要與去耦電容成對使用。鉭電容則比電解電容效果更好。
2.抑制高頻的電感
用粗漆包線穿入軸向有幾個孔的鐵氧體芯,就構成了高頻扼制器件。將其串入電源線或地線中可阻止高頻信號從電源/地線引入。這種元件特別適用於隔開一塊印製電路板上的模擬電路區、數字電路區、以及大功率驅動區的供電。應該注意的是它必須放在該區儲能電容與電源之間而不能放在儲能電容與用電器件之間。
3.自恢復保險絲
這是用一種新型高分子聚合材料製成的器件,當電流低於其額定值時,它的直流電阻只有零點幾歐。而電流大到一定程度,它的阻值迅速升高,引起發熱,而越熱電阻越大,從而阻斷電源電流。當溫度降下來以後能自動恢復正常。這種器件可防止cmos器件在遇到強沖擊型干擾時引起所謂「可控硅觸發」現象。這種現象指集成電路矽片的基體變得導通,從而引起電流增大,導致cmos集成電路發熱乃至燒毀。
4.防雷擊器件
室外使用的單片機系統或電源線、信號線從室外架空引入室內的,要考慮系統的防雷擊問題。常用的防雷擊器件有:氣體放電管,tvs(transient voltage supervention)等,氣體放電管是當電源電壓大於某一值時,通常為數十伏或數百伏,氣體擊穿放電,將電源線上強沖擊脈沖導入大地,tvs可以看成兩個並聯且方向相反的齊納二極體,當電兩端電壓高於某一額定值時導通。其特點是可以瞬態通過數百乃至上千安培的電流。這類元器件要和抗共模和抗差模干擾的電感配合使用以提高抗干擾效果。
提高單片機系統抗干擾能力的主要手段
1.接地
這里的接地指接大地,也稱作保護地。為單片機系統提供良好的地線,對提高系統的抗干擾能力極為有益。特別是對有防雷擊要求的系統,良好的接地至關重要。上面提到的一系列抗干擾元件,意在將雷擊、浪涌式干擾以及快脈沖群干擾去除,而去除的方法都是將干擾引入大地,如果系統不接地,或雖有地線但接地電阻過大,則這些元件都不能發揮作用。為單片機供電的電源的地俗稱邏輯地,它們和大地的地的'關系可以相通、浮空、或接一電阻,要視應用場合而定。不能把地線隨便接在暖氣管子上。絕對不能把接地線與動力線的火線、零線中的零線混淆。
2.隔離與屏蔽
典型的信號隔離是光電隔離。使用光電隔離器件將單片機的輸入輸出隔離開,一方面使干擾信號不得進入單片機系統,另一方面單片機系統本身的雜訊也不會以傳導的方式傳播出去。屏蔽則是用來隔離空間輻射的,對雜訊特別大的部件,如開關電源,用金屬盒罩起來,可減少雜訊源對單片機系統的干擾。對特別怕干擾的模擬電路,如高靈敏度的弱信號放大電路可屏蔽起來。而重要的是金屬屏蔽本身必須接真正的地。
3.濾波
濾波指各類信號按頻率特性分類並控制它們的方向。常用的有各種低通濾波器、高通濾波器、帶通濾波器。低通濾波器用在接入的交流電源線上,旨在讓50周的交流電順利通過,將其它高頻雜訊導入大地。低通濾波器的配置指標是插入損耗,選擇的低通濾波器插入損耗過低起不到抑制雜訊的作用,而過高的插入損耗會導致「漏電」,影響系統的人身安全性。高通、帶通濾波器則應根據系統中對信號的處理要求選擇使用。
印製電路板的布線與工藝
印製電路板的設計對單片機系統能否抗干擾非常重要。要本著盡量控制雜訊源、盡量減小雜訊的傳播與耦合,盡量減小雜訊的吸收這三大原則設計印製電路板和布線。當你設計單片機用印製電路板時,不仿對照下面的條條檢查一下。
印製電路板要合理區分,單片機系統通常可分三區,即模擬電路區(怕干擾),數字電路區(即怕干擾、又產生干擾),功率驅動區(干擾源)。
印刷板按單點接電源、單點接地原則送電。三個區域的電源線、地線由該點分三路引出。雜訊元件與非雜訊元件要離得遠一些。
時鍾振盪電路、特殊高速邏輯電路部分用地線圈起來。讓周圍電場趨近於零。i/o驅動器件、功率放大器件盡量靠近印刷板的邊,靠近引出接插件。
能用低速的就不用高速的,高速器件只用在關鍵的地方。
使用滿足系統要求的最低頻率的時鍾,時鍾產生器要盡量靠近用到該時鍾的器件。
石英晶體振盪器外殼要接地,時鍾線要盡量短,且不要引得到處都是。
使用45度的折線布線,不要使用90度折線,以減小高頻信號的發射。
單面板、雙面板,電源線、地線要盡量的粗。信號線的過孔要盡量少。
層板比雙面板雜訊低20db。6層板比4層板雜訊低10db。經濟條件允許時盡量用多層板。關鍵的線盡量短並要盡量粗,並在兩邊加上保護地。將敏感信號和雜訊場帶信號通過一條扁帶電纜引出的話,要用地線-信號-地線的方式引出。石英振盪器下面、雜訊敏感器件下面要加大地的面積而不應該走其它信號線。任何信號線都不要形成環路,如不可避免,環路應盡量小。時鍾線垂直於i/o線比平行於i/o線干擾小,時鍾線要遠離i/o線。對a/d類器件,數字部分與模擬部分寧可繞一下也不要交叉。雜訊敏感線不要與高速線、大電流線平行。單片機及其它ic電路,如有多個電源、地端的話,每端都要加一個去耦電容。單片機不用的i/o埠要定義成輸出。每個集成電路要加一個去耦電容,要選高頻信號好的獨石電容式瓷片電容作去耦電容。去耦電容焊在印製電路板上時,引腳要盡量短。從高雜訊區來的信號要加濾波。繼電器線圈處要加放電二極體。可以用串一個電阻的辦法來軟化i/o線的跳變沿或提供一定的阻尼。用大容量的鉭電容或聚脂電容而不用電解電容作電路充電的儲能電容。因為電解電容分布電感較大,對高頻無效。使用電解電容時要與高特性好的去耦電容成對使用。需要時,電源線、地線上可加用銅線繞制鐵氧體而成的高頻扼流器件阻斷高頻雜訊的傳導。弱信號引出線、高頻、大功率引出電纜要加屏蔽。引出線與地線要絞起來。印刷板過大、或信號線頻率過高,使得線上的延遲時間大於等於信號上升時間時,該線要按傳輸線處理,要加終端匹配電阻。盡量不要使用ic 插座,把ic直接焊在印刷板上,ic座有較大的分布電容。
2.2 切斷干擾傳播路徑
按干擾的傳播路徑可分為傳導干擾和輻射干擾兩類。
所謂傳導干擾是指通過導線傳播到敏感器件的干擾。高頻干擾雜訊和有用信號的頻帶不同,可以通過在導線上增加濾波器的方法切斷高頻干擾雜訊的傳播,有時也可加隔離光耦來解決。電源雜訊的危害最大,要特別注意處理。
所謂輻射干擾是指通過空間輻射傳播到敏感器件的干擾。一般的解決方法是增加干擾源與敏感器件的距離,用地線把它們隔離和在敏感器件上加屏蔽罩。
切斷干擾傳播路徑的常用措施如下:
(1)充分考慮電源對單片機的影響。電源做得好,整個電路的抗干擾就解決了一大半。許多單片機對電源雜訊很敏感,要給單片機電源加濾波電路或穩壓器,以減小電源雜訊對單片機的干擾。比如,可以利用磁珠和電容組成π形濾波電路,當然條件要求不高時也可用100Ω電阻代替磁珠。
(2)如果單片機的I/O口用來控制電機等雜訊器件,在I/O口與雜訊源之間應加隔離(增加π形濾波電路)。
(3)注意晶振布線。晶振與單片機引腳盡量靠近,用地線把時鍾區隔離起來,晶振外殼接地並固定。
(4)電路板合理分區,如強、弱信號,數字、模擬信號。盡可能把干擾源(如電機、繼電器)與敏感元件(如單片機)遠離。
(5)用地線把數字區與模擬區隔離。數字地與模擬地要分離,最後在一點接於電源地。A/D、D/A晶元布線也以此為原則。
(6)單片機和大功率器件的地線要單獨接地,以減小相互干擾。大功率器件盡可能放在電路板邊緣。
(7)在單片機I/O口、電源線、電路板連接線等關鍵地方使用抗干擾元件如磁珠、磁環、電源濾波器、屏蔽罩,可顯著提高電路的抗干擾性能。
2.3 提高敏感器件的抗干擾性能
提高敏感器件的抗干擾性能是指從敏感器件這邊考慮盡量減少對干擾雜訊的拾取,以及從不正常狀態盡快恢復的方法。
提高敏感器件抗干擾性能的常用措施如下:
(1)布線時盡量減少迴路環的面積,以降低感應雜訊。
(2)布線時,電源線和地線要盡量粗。除減小壓降外,更重要的是降低耦合雜訊。
(3)對於單片機閑置的I/O口,不要懸空,要接地或接電源。其它IC的閑置端在不改變系統邏輯的情況下接地或接電源。
(4)對單片機使用電源監控及看門狗電路,如: IMP809,IMP706,IMP813,
X5043,X5045等,可大幅度提高整個電路的抗干擾性能。
(5)在速度能滿足要求的前提下,盡量降低單片機的晶振和選用低速數字電路。
(6)IC器件盡量直接焊在電路板上,少用IC座。
2.4 其它常用抗干擾措施
(1)交流端用電感電容濾波:去掉高頻低頻干擾脈沖。
(2)變壓器雙隔離措施:變壓器初級輸入端串接電容,初、次級線圈間屏蔽層與初級間電容中心接點接大地,次級外屏蔽層接印製板地,這是硬體抗干擾的關鍵手段。次級加低通濾波器:吸收變壓器產生的浪涌電壓。
(3)採用集成式直流穩壓電源: 有過流、過壓、過熱等保護作用。
(4)I/O口採用光電、磁電、繼電器隔離,同時去掉公共地。
(5)通訊線用雙絞線:排除平行互感。
(6)防雷電用光纖隔離最為有效。
(7)A/D轉換用隔離放大器或採用現場轉換:減少誤差。
(8)外殼接大地:解決人身安全及防外界電磁場干擾。
(9)加復位電壓檢測電路。防止復位不充分, CPU就工作,尤其有EEPROM的器件,復位不充份會改變EEPROM的內容。
(10)印製板工藝抗干擾:
① 電源線加粗,合理走線、接地,三匯流排分開以減少互感振盪。
② CPU、RAM、ROM等主晶元,VCC和GND之間接電解電容及瓷片電容,去掉高、低頻干擾信號。
③ 獨立系統結構,減少接插件與連線,提高可靠性,減少故障率。
④ 集成塊與插座接觸可靠,用雙簧插座,最好集成塊直接焊在印製板上,防止器件接觸不良故障。
⑤ 有條件的採用四層以上印製板,中間兩層為電源及地。
;