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