角度測(cè)量?jī)x是某控制系統(tǒng)中瞄準(zhǔn)裝置的關(guān)鍵部件。在以往的控制系統(tǒng)中,多數(shù)都是僅憑設(shè)備操作人員眼睛瞄準(zhǔn)目標(biāo),然后作出相應(yīng)的控制,這樣就帶來(lái)一系列問(wèn)題,如操作人員的經(jīng)驗(yàn)、瞄準(zhǔn)裝置轉(zhuǎn)盤的空回都可能會(huì)嚴(yán)重會(huì)影響瞄準(zhǔn)目標(biāo)的程度,從而嚴(yán)重影響控制系統(tǒng)的精度。為了提高控制系統(tǒng)的瞄準(zhǔn)精度,在控制系統(tǒng)的瞄準(zhǔn)裝置中增加了角度測(cè)量?jī)x部件,操作人員瞄準(zhǔn)目標(biāo)后的角度值能夠定量地顯示在操作面板上,幫助操作人員更加準(zhǔn)確地瞄準(zhǔn)目標(biāo),因此,極大地提高了控制系統(tǒng)的控制度。
角度測(cè)量?jī)x利用光電編碼器讀取角度值,采用AT89S51單片機(jī)實(shí)現(xiàn)角度值數(shù)碼顯示、角度值偏差范圍的發(fā)光二極管指示功能(有三個(gè)指示燈,分別指示:偏高、偏低、適中)。不論在操作的復(fù)雜程度上還是在測(cè)量的精度上,都是傳統(tǒng)的眼瞄方法、刻度測(cè)量及標(biāo)識(shí)方法*的。
作為某控制系統(tǒng)的瞄準(zhǔn)裝置的重要技術(shù)改進(jìn),此儀器的應(yīng)用大大提高了控制系統(tǒng)瞄準(zhǔn)的精度,增加瞄準(zhǔn)偏差范圍的可讀性,淘汰了傳統(tǒng)的用刻度測(cè)量和標(biāo)識(shí)角度的方法,使該控制系統(tǒng)的整體性能得到了顯著提高。此外,該角度測(cè)量?jī)x只要稍作改動(dòng)即可廣泛用于其它工業(yè)控制系統(tǒng)中。
1、硬件基本原理
首先,角度測(cè)量?jī)x利用單片機(jī)讀取光電編碼器測(cè)出的角度值,再將角度值轉(zhuǎn)換成密位值并顯示在數(shù)碼屏上(注意:密位(mil)是一種角度單位,密位100=角度6°)。單片機(jī)判斷當(dāng)前角度值的偏差范圍,給出控制信號(hào)點(diǎn)亮相應(yīng)的發(fā)光二極管指示燈。此外,角度測(cè)量?jī)x還可以通過(guò)控制面板上的開關(guān)控制實(shí)現(xiàn)瞄準(zhǔn)鏡照明和低溫環(huán)境下瞄準(zhǔn)鏡自動(dòng)除霜功能。單片機(jī)的主要功能是實(shí)現(xiàn)角度值數(shù)碼管顯示、角度值范圍的發(fā)光二極管指示。該系統(tǒng)的難點(diǎn)在于確保角度值轉(zhuǎn)換成密位值的轉(zhuǎn)換精度和系統(tǒng)在非常溫環(huán)境下的工作可靠性。
硬件分為以下幾個(gè)模塊:控制面板、單片機(jī)、光電編碼器、電源、數(shù)碼顯示器、發(fā)光二極管匹配指示裝置、周視鏡與直瞄鏡照明與除霜,如圖1所示。
圖1電路模塊圖
1.1單片機(jī)的選用
首先,根據(jù)項(xiàng)目的需求分析可以得知單片機(jī)要完成的主要功能是:從光電編碼器(數(shù)據(jù)總線寬度是15位)讀取角度值后,將該角度值與系統(tǒng)預(yù)設(shè)的角度值比較,判斷瞄準(zhǔn)的角度值范圍,點(diǎn)亮相應(yīng)的指示燈。然后將從光電編碼器讀得的角度值轉(zhuǎn)換成密位值,發(fā)送給串行LED顯示驅(qū)動(dòng)器MAX7219,顯示在LED顯示器上。
從以上分析可以得知,適合此需求的單片機(jī)至少應(yīng)具備3個(gè)8位并行I/O端口(其中光電編碼器占用2個(gè)端口,其它占用1個(gè)端口),才能有效工作。*,產(chǎn)品的品質(zhì)等級(jí)通常分為三級(jí):軍用級(jí)、工業(yè)級(jí)和商用級(jí),其中,軍用級(jí)等級(jí)zui高,商用級(jí)等級(jí)zui低。由于此工業(yè)控制設(shè)備通常在戶外作業(yè),工作環(huán)境比較惡劣,故單片機(jī)的品質(zhì)的等級(jí)也是需要考慮的一個(gè)重要因素。
目前,MCS-51系列單片機(jī)技術(shù)成熟,開發(fā)所用的教材和技術(shù)資料多,開發(fā)工具齊全,市場(chǎng)上產(chǎn)品種類豐富、性價(jià)比較高、購(gòu)買容易,開發(fā)語(yǔ)言簡(jiǎn)單易學(xué)(可以用匯編或C51),因此,該系列產(chǎn)品應(yīng)用廣泛,經(jīng)久不衰。
經(jīng)過(guò)綜合考慮,單片機(jī)采用ATMEL公司生產(chǎn)的AT89S51芯片(MCS-51系列單片機(jī)的工業(yè)級(jí)產(chǎn)品),兼容MCS51微控制器,4K字節(jié)FLASH存貯器支持在系統(tǒng)編程(ISP)1000次擦寫周期,128字節(jié)片內(nèi)RAM,工作電壓4.0V到5.5V,全靜態(tài)時(shí)鐘0Hz到33MHz,三級(jí)程序加密,4個(gè)8位的可編程I/O端口,2/3個(gè)16位定時(shí)/計(jì)數(shù)器,6/8個(gè)中斷源,全雙工UART,低功耗支持Idle和Powerdown模式,Powerdown模式支持中斷喚醒,雙數(shù)據(jù)指針,上電復(fù)位標(biāo)志。ATMEL公司生產(chǎn)的89系列單片機(jī)在工業(yè)、交通、儀器儀表、自動(dòng)生產(chǎn)過(guò)程、航空、運(yùn)輸、汽車、家電等領(lǐng)域都有著極及其廣泛的應(yīng)用。所選型號(hào)為ATMEL公司的AT89S51-24PI,工業(yè)級(jí)。能適應(yīng)-45℃~+80℃環(huán)境工作。
單片機(jī)的I/O端口資源分配是:P0和P2口分配給光電編碼器,P1口分配給顯示驅(qū)動(dòng)和匹配指示發(fā)光二極管控制以及MAX813.
1.2單片機(jī)主要外圍電路的設(shè)計(jì)
監(jiān)控電路:為了提高單片機(jī)在惡劣環(huán)境下的可靠性,必須采用μP監(jiān)控電路來(lái)增加單片機(jī)的穩(wěn)定性和抗*力。硬件監(jiān)控電路有以下功能:(1)上電復(fù)位:保障系統(tǒng)加電時(shí)能正確地啟動(dòng)。(2)掉電復(fù)位:當(dāng)電源失效或電壓降到某一電壓值以下時(shí),產(chǎn)生復(fù)位信號(hào)對(duì)系統(tǒng)進(jìn)行復(fù)位。(3)看門狗定時(shí)器:當(dāng)處理器遇干擾,程序運(yùn)行混亂產(chǎn)生"死鎖"時(shí),對(duì)系統(tǒng)復(fù)位。此處采用MAXIM公司的軍用級(jí)芯片MAX813LMJA.
顯示驅(qū)動(dòng)電路:為了節(jié)省單片機(jī)I/O口資源,降低單片機(jī)的計(jì)算量,選用串行LED顯示驅(qū)動(dòng)器MAX7219.它能控制8位共陰級(jí)LED數(shù)碼管,具有16級(jí)亮度控制、譯碼靈活,上電發(fā)光二極管全熄、只占用三根單片機(jī)I/O口線等優(yōu)點(diǎn)。
單片機(jī)及主要外圍電路的原理如圖2所示。
圖2電路原理圖
1.3單片機(jī)與外圍器件的數(shù)據(jù)通信
單片機(jī)與光電編碼器:因?yàn)楣怆娋幋a器獲得角度值的速度遠(yuǎn)大于單片機(jī)的工作速度,所以,單片機(jī)可以認(rèn)為光電編碼器上的數(shù)據(jù)總是處于"準(zhǔn)備好"狀態(tài),單片機(jī)隨時(shí)可以讀取有效數(shù)據(jù),16位的角度值分成高8位和低8位兩次讀取,它們之間的數(shù)據(jù)是并行無(wú)條件傳送。
單片機(jī)與MAX7219:從單片機(jī)和MAX7219的工作速度來(lái)看,CPU兩次發(fā)送數(shù)據(jù)給MAX7219的時(shí)間間隔,足以保證單片機(jī)訪問(wèn)MAX7219時(shí),MAX7219總是處于"準(zhǔn)備好"狀態(tài)。而MAX7219又是串行LED顯示驅(qū)動(dòng)器,因此,單片機(jī)與MAX7219的數(shù)據(jù)傳送是串行無(wú)條件傳送。
單片機(jī)與MAX813:因?yàn)閱纹瑱C(jī)向MAX813發(fā)送數(shù)據(jù)時(shí),MAX813只等待接收單片機(jī)的初始化數(shù)據(jù)而并無(wú)其它的工作其工作速度足夠快,可以認(rèn)為MAX813總是處于"準(zhǔn)備好"狀態(tài)。因此,單片機(jī)與MAX813的數(shù)據(jù)傳送也是串行無(wú)條件傳送。
2、軟件設(shè)計(jì)原理
角度測(cè)量?jī)x啟動(dòng)工作后,單片機(jī)的工作過(guò)程是:系統(tǒng)啟動(dòng)后,初始化外部看門狗,初始化顯示驅(qū)動(dòng)芯片MAX7219,給看門狗計(jì)數(shù)器賦初值,讀取光電編碼器獲取的角度值,當(dāng)角度偏差值處在某一特定范圍時(shí),單片機(jī)發(fā)出控制信號(hào)點(diǎn)亮與該范圍相對(duì)應(yīng)的指示燈,將當(dāng)前的角度值轉(zhuǎn)換成密位值顯示在數(shù)碼屏,又重新給看門狗計(jì)數(shù)器賦初值,進(jìn)入下一個(gè)工作循環(huán)。主函數(shù)的工作流程如圖3所示。
圖3主函數(shù)流程圖
請(qǐng)注意,流程圖中,帶雙線邊的矩形框表示該部分為函數(shù)。在本課題的軟件設(shè)計(jì)中,采用了C51編程語(yǔ)言,因?yàn)橛肅51編程不僅效率高,而且可讀性很強(qiáng)。
下面給出主函數(shù)的源代碼。
voidmain(void)
{
WDI=0;//初始化看門狗
InitMax7219();//初始化MAX7219的函數(shù)
while(1){
WDI=1;//"喂狗"
WDI=0;//"喂狗"
GetAngle();//讀角度值的函數(shù)
MachView();//指示燈匹配顯示的函數(shù)
GetMil();//計(jì)算密位值的函數(shù)
DisplayMil();//顯示密位的函數(shù)
}
}
在主函數(shù)調(diào)用的幾個(gè)函數(shù)中,InitMax7219()的功能是初始化LED顯示驅(qū)動(dòng)器MAX7219,單片機(jī)向MAX7219發(fā)送消影控制、亮度、掃描范圍、譯碼方式信息。
GetAngle()的功能是從光電編碼器讀角度值,先讀高8位,再讀低8位,然后將高8位和低8位合并,zui后舍去zui低位(光電編碼器的有效數(shù)據(jù)是15位).
MachView()的功能是角度偏差指示燈匹配顯示,將該角度值與系統(tǒng)預(yù)設(shè)的角度值比較,判斷瞄準(zhǔn)的角度值是偏高、偏低還是適中。如果角度值偏高,那么單片機(jī)就發(fā)出控制命令,使偏高指示燈亮,如果偏低,則令偏低指示燈亮,否則令適中指示燈亮。
值得注意的是,計(jì)算密位值的函數(shù)GetMil()的代碼編寫,要考慮角度的轉(zhuǎn)換精度,在本課題中,采用了C51中的long型變量來(lái)分別存放密位的整數(shù)和小數(shù)部分,并將角度的小數(shù)部分放大十萬(wàn)倍后參加運(yùn)算,保證轉(zhuǎn)換精度。
DisplayMil()的功能是驅(qū)動(dòng)MAX7219顯示密位。首先顯示密位,判斷此角度是否進(jìn)入預(yù)設(shè)區(qū),如果是,熄滅符號(hào)燈,各位顯示"0";如果沒(méi)有,判斷角度值是否為負(fù),如果是,顯示負(fù)號(hào),如果是正,不顯示負(fù)號(hào),然后將角度值顯示在LED顯示屏上。
由于篇幅所限,程序的源代碼沒(méi)有給出。
3、結(jié)束語(yǔ)
為了使角度測(cè)量?jī)x能在各種可能的惡劣環(huán)境下(如高溫、低溫、振動(dòng)等環(huán)境)正常工作,在整個(gè)設(shè)計(jì)過(guò)程中,要著重考慮的問(wèn)題是硬件的可靠性和軟件的可靠性。設(shè)計(jì)時(shí)的注意事項(xiàng)如下:(1)電源芯片的額定功率選擇要留有余量。(2)元器件選擇工業(yè)級(jí)或軍用級(jí)產(chǎn)品。(3)采用硬件看門狗方案,防止單片機(jī)程序鎖死。本課題設(shè)計(jì)的樣機(jī)已處于測(cè)試階段,目前已通過(guò)了常溫和多種環(huán)境試驗(yàn)的測(cè)試。