預付費三相電度表的抗干擾設計
抗干擾問題是從事單片機設計的工程技術人員都將碰到一個大難題,單片機的工作可靠90%取決于抗干擾設計,不同系統(tǒng)的工作環(huán)境不同,干擾源不同,抗干擾所采取的措施就有所不同。
例如,工業(yè)用電度表的安裝環(huán)境較差,通常的干擾源有:電網(wǎng)電壓的波動,大型用電設備(如:天車`電爐`大電機`電焊機等)的啟停,高壓設備和電磁開關的電磁輻射等等。較強的干擾很容易造成IC卡電度表控制系統(tǒng)出現(xiàn)軟件故障,使程序因干擾而脫離正常運行順序或飛出程序可執(zhí)行區(qū)而進入死循環(huán)失去控制,如不能快速脫離此狀態(tài),恢復程序的運行,電度表將無法正常工作。若干擾竄入計量采樣脈沖,將會導致計量失誤,造成單片機誤動作而失去計量的準確性。因此必須采取有效措施遏制干擾的竄入,保證電度表可靠地運行。以IC卡預付費三相電度表為例,闡述針對不同干擾源所采取的抗干擾措施。
電源的抗干擾設計
單片機的電源中存在著交流干擾和直流干擾。在工業(yè)現(xiàn)場中,由于生產(chǎn)負荷的變化`大型用電設備的啟停,常常造成電源電壓的波動,有時還會產(chǎn)生50~4000V持續(xù)幾個毫微秒的尖峰脈沖,很容易造成“程序失控”或“死機”,對此,采用無源四端網(wǎng)絡的抗尖峰干擾抑制器可以很好地將尖峰干擾抑制掉。對交流電轉(zhuǎn)換成直流電后所竄入的干擾信號,我們采用小型直流開關電源。直流開關電源是一種采用脈沖寬度調(diào)制型電源,它省去了傳統(tǒng)的工頻變壓器,具有體積小`重量輕`效率高`電網(wǎng)電壓范圍寬`輸出電壓穩(wěn)定等特點,并對電網(wǎng)上的高頻脈沖干擾有較強的隔離能力,可以抑制直流干擾。
采用開關電源并不能保證萬無一失,當電網(wǎng)電壓波動超過±10%時,開關電源的輸出也會產(chǎn)生波動。為了防止電網(wǎng)電壓的波動而造成開關電源電壓的波動,并導致CPU的誤動作和數(shù)據(jù)丟失等問題,采用美國TI公司的電源電壓監(jiān)視器TL7705設計了電源電壓監(jiān)視電路(如圖1所示)。該電路能隨時監(jiān)測電源電壓的變化,一旦發(fā)現(xiàn)電源故障,能及時可靠地使單片機復位,禁止對RAM的操作,避免數(shù)據(jù)破壞。被監(jiān)測的電壓由TL7705的SENSE(7)腳引入,4.6V~20V,可由RS 來設定。當被監(jiān)測電壓為4.75V時,RS 為200Ω左右。CS 和RS 構成RC 延時網(wǎng)絡,延長響應時間,以降低噪聲影響和器件靈敏度。綜合以上措施,可以有效地抑制電源干擾的竄入。
計量采樣脈沖的抗干擾設計
計量采樣脈沖輸出接到單片機的中斷引腳,MCS-51單片機的中斷觸發(fā)方式有電平觸發(fā)和邊沿觸發(fā)兩種方式。IC卡預付費三相電度表的采樣脈沖在工業(yè)現(xiàn)場工作時有尖峰干擾,很容易造成計量失誤,為此我們采用了邊沿觸發(fā)中斷與查詢電平相結合的方式,即在硬件上設計成中斷引腳與某一1/0引腳相連(如圖1所示),將中斷設置為邊沿觸發(fā)方式,當CPU響應中斷后,在中斷處理程序的開始,經(jīng)延時適當?shù)臅r間(大于干擾脈沖寬度而小于*小的計量脈沖寬度)查詢此1/0腳電平是否符合要求,這種措施能有效地去除尖峰脈沖對計量采樣脈沖的干擾。
程序失控的處理
單片機竄入強干擾后,程序計數(shù)器PC的數(shù)值可能會改變,破壞程序的正常運行,造成一些誤動作,甚至導致程序“死循環(huán)”,從而引起嚴重的后果。在IC卡預付費三相電度表中采取了如下幾個措施來解決程序失控的問題。
1 用WATCHDOG監(jiān)控程序的運行
通常的硬件WATCHDOG在系統(tǒng)受到干擾而不能正常運行時,只發(fā)出一個復位脈沖,如果遇到長時間連續(xù)的干擾,這種WATCHDOG電路就束手無策。我們采用74LS123制作了一個WATCHDOG電路,在程序正常運行時,CPU通過一根1/0接口線定時防問該電路,使其不能發(fā)出復位脈沖。若系統(tǒng)受到連續(xù)干擾時,此電路會不斷產(chǎn)生復位信號,直到系統(tǒng)正常工作時為止,因而能抵抗長時間的連續(xù)干擾。CPU訪問該電路的程序如下:
CLR P1.3
NOP
NOP
SETB P1.3
設置軟件陷阱
當程序失控而彈飛時,我們在彈飛區(qū)域(一般為轉(zhuǎn)移指令后,如:LCALL RET RETI JC JNC等,未使用的中斷向量區(qū),未使用的大片ROM空間等)設置軟件陷阱,即設計一段專門處理程序執(zhí)行時出錯的程序,以保證彈飛的程序能迅速納入正確控制軌道。軟件陷阱及出錯處理程序如下:
NOP NOP LJMP ERR ERR:CLR EA;關中斷
MOV DPTR,#ERRI;準備返回地址
PUSH DPL PUSH DPH
RETI;****中斷激活標志 ERRI:CLR A;準備復位地址
PUSH ACC PUSH ACC;壓入復位地址 RETI;**低級中斷激活標志
系統(tǒng)復位的處理
在單片機實時控制系統(tǒng)中,大多數(shù)系統(tǒng)有它自己特定的運行要求。一旦系統(tǒng)復位后,就不允許改變以前的狀態(tài)而重新開始運行,但可以采取下述措施:
定時(如:每一個循環(huán)周期)將運行過程中的重要數(shù)據(jù)寫入RAM中保護起來;
對外設的動作控制,設立動作標志,并將該標志與重要數(shù)據(jù)一并寫入PAM中保護起來;
硬件上設計一掉電保護電路。系統(tǒng)復位后,用備用電池給RAM供電,使重要數(shù)據(jù)不被破壞;
復位重新啟動時,將重要數(shù)據(jù)和動作標志從PAM中讀出,再據(jù)此做出判斷,發(fā)出動作指令。這樣就保證了狀態(tài)的連續(xù)性,而不至造成控制現(xiàn)場的混亂。