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