單片機(jī)的數(shù)字量輸入與輸出方法總結(jié)
1.數(shù)字量輸入方法
由于數(shù)字量輸入過程中干擾的作用時(shí)間較短,因此在采集數(shù)字信號(hào)時(shí),可多次重復(fù)采集,直到若干次采樣結(jié)果一致時(shí),才認(rèn)為其有效。例如通過A/D轉(zhuǎn)換器測(cè)量各種模擬量時(shí),如果有干擾作用于模擬信號(hào)上,就會(huì)使A/D轉(zhuǎn)換結(jié)果偏離真實(shí)值。這時(shí)如果只采樣一次A/D轉(zhuǎn)換結(jié)果,就無(wú)法知道其是否真實(shí)可靠,而必須進(jìn)行多次采樣,得到一個(gè)A/D轉(zhuǎn)換結(jié)果的數(shù)據(jù)系列,對(duì)這些數(shù)據(jù)系列進(jìn)行各種數(shù)字濾波處理,最后才能得到一個(gè)可信度較高的結(jié)果值。如果對(duì)于同一個(gè)數(shù)據(jù)點(diǎn),經(jīng)多次采樣后得到的信號(hào)值變化不定,說明此時(shí)的干擾特別嚴(yán)重,已經(jīng)超出允許的范圍,應(yīng)該立即停止采樣并給出報(bào)警信號(hào)。如果數(shù)字信號(hào)屬于開關(guān)量信號(hào),如限位開關(guān)、操作按鈕等,則不能用多次采樣取平均值的方法,而必須保證每次采樣結(jié)果絕對(duì)一致才行。這時(shí)可按圖9.11編寫一個(gè)采樣子程序,程序中設(shè)置有采樣成功和采樣失敗標(biāo)志。如果對(duì)同一開關(guān)量信號(hào)進(jìn)行若干次采樣,其采樣結(jié)果完全一致,則成功標(biāo)志置位,否則失敗標(biāo)志置位。后續(xù)程序可通過判別這些標(biāo)志來決定程序的流向。
2.數(shù)字量輸出方法
單片機(jī)系統(tǒng)的輸出中,有很多是數(shù)字量,如各種顯示器、步進(jìn)電機(jī)或電磁閥的驅(qū)動(dòng)信號(hào)等。即使是以模擬量輸出,也是經(jīng)過D/A轉(zhuǎn)換而獲得的。單片機(jī)給出了一個(gè)正確的數(shù)據(jù)后,由于外部干擾的作用有可能使輸出系統(tǒng)得到一個(gè)錯(cuò)誤的數(shù)據(jù),從而使輸出系統(tǒng)發(fā)生誤動(dòng)作。對(duì)于數(shù)字量輸出軟件抗干擾最有效的方法是重復(fù)輸出同一個(gè)數(shù)據(jù),重復(fù)周期應(yīng)盡量短。這樣輸出系統(tǒng)在得到一個(gè)被干擾的錯(cuò)誤信號(hào)后,還來不及反應(yīng),一個(gè)正確的信號(hào)又來到了,從而可防止誤動(dòng)作的產(chǎn)生。
在程序結(jié)構(gòu)上,可將輸出過程安排在監(jiān)控循環(huán)中,循環(huán)周期取得盡可能短,就能有效地防止輸出設(shè)備的錯(cuò)誤動(dòng)作。需要注意的是,經(jīng)過這種安排后,輸出功能是作為一個(gè)完整的模塊來執(zhí)行的。與這種重復(fù)輸出措施相對(duì)應(yīng),軟件設(shè)計(jì)中,還必須為各個(gè)外部輸出設(shè)備建立一個(gè)輸出暫存單元。每次將應(yīng)輸出的結(jié)果存入暫存單元中,然后再調(diào)用輸出功能模塊,將暫存單元的數(shù)據(jù)輸出,不管該數(shù)據(jù)是剛送來的,還是以前就有的。這樣可以讓每個(gè)外部設(shè)備不斷得到控制數(shù)據(jù),從而使干擾造成的錯(cuò)誤狀態(tài)不能得以維持。在執(zhí)行輸出功能模塊時(shí),應(yīng)將有關(guān)輸出接口芯片初始狀態(tài)也一并重新設(shè)置。因?yàn)楦蓴_的作用可能使這些芯片的工作方式控制字發(fā)生變化,而不能實(shí)現(xiàn)正確的輸出功能,重新設(shè)置控制字就能避免這種錯(cuò)誤,確保輸出功能的正確實(shí)現(xiàn)。
有些輸出設(shè)備具有增量控制特性,如自帶環(huán)型分配器和功率驅(qū)動(dòng)器的步進(jìn)電機(jī)組件,單片機(jī)只需輸出方向控制信號(hào)和步進(jìn)脈沖信號(hào)。這時(shí),方向控制信號(hào)就可以重復(fù)輸出,而步進(jìn)脈沖信號(hào)是不能重復(fù)輸出的。每重復(fù)一次就要前進(jìn)一步。因其對(duì)于這種情況,如果有位置控制功能(如光柵、磁尺等定位信號(hào)),便可實(shí)現(xiàn)閉環(huán)控制,本身有足夠的抗干擾性能,不用重復(fù)輸出。如果沒有檢測(cè)手段(即開環(huán)控制系統(tǒng)),建議采用軟件算法來實(shí)現(xiàn)環(huán)型分配器的功能,單片機(jī)直接輸出各相繞組的電位控制信號(hào),經(jīng)光電隔離后傳送給功率驅(qū)動(dòng)放大器,這時(shí)仍可采用重復(fù)輸出的方式來防止步進(jìn)電機(jī)失步。只是這時(shí)的重復(fù)周期與步進(jìn)電機(jī)的轉(zhuǎn)速之間要有嚴(yán)格的關(guān)系,如每個(gè)換相周期內(nèi)重復(fù)輸出兩三次。在步進(jìn)電機(jī)以最高速度運(yùn)轉(zhuǎn)時(shí),CPU最好以主要機(jī)時(shí)來完成電機(jī)的控制。在作進(jìn)給運(yùn)動(dòng)時(shí),由于速度較慢,可以很容易地實(shí)現(xiàn)重復(fù)功能,減少失步,并有充足的時(shí)間來完成各種控制算法。
對(duì)于D/A轉(zhuǎn)換方式實(shí)現(xiàn)的輸出,因本質(zhì)上仍為數(shù)字量,同樣可以通過重復(fù)輸出的方式來提高輸出通道的抗干擾性能,在不影響反應(yīng)速度的前提下,在模擬輸出端接一適當(dāng)?shù)腞C濾波電路(起到增加慣性的效果),配合重復(fù)輸出措施便能基本消除模擬輸出通道上的干擾信號(hào)。