系留飛艇地面監(jiān)測系統(tǒng)具有全天候、大視角、大覆蓋率、高機動性等特點,還能針對某一區(qū)域?qū)iT放大監(jiān)測,將信息及時反饋地面站,所以在監(jiān)測方面應(yīng)用廣泛,但造價昂貴。此項目設(shè)計了價格低廉的系留飛艇地面監(jiān)測系統(tǒng),系統(tǒng)包括地面站和艇載模塊。艇載模塊需要完成的任務(wù)包括:通過無線通信模塊與地面站進行通信,根據(jù)制定的通信協(xié)議解析接收的命令,做相應(yīng)的操作;為確保數(shù)據(jù)通信的正確性,將接收數(shù)據(jù)進行循環(huán)冗余校驗,數(shù)據(jù)錯誤則放棄,正確則進行處理并由單片機PCA定時器生成PWM信號來控制云臺水平和垂直轉(zhuǎn)動的舵機;與數(shù)字羅盤進行通信,獲取系留飛艇姿態(tài)信息發(fā)給地面站;單片機定時器0和定時器1對舵機帶動旋轉(zhuǎn)編碼器轉(zhuǎn)動時產(chǎn)生的脈沖進行計數(shù)并將其反饋給地面站;單片機外部中斷0和1監(jiān)測零位開關(guān),對計數(shù)值進行清零操作。根據(jù)艇載單片機發(fā)回的飛艇姿態(tài)和轉(zhuǎn)角信息,地面站分析并改變控制數(shù)據(jù)發(fā)送給飛艇模塊,以控制云臺按照意愿進行地面監(jiān)測。
飛艇艇載模塊所要實現(xiàn)的功能相對比較簡單,其控制單元僅需要2個串口,3個定時器,2個外部中斷和少數(shù)I/O口即可。STC12C5A60S2單片機有4個16 bit定時器,2個全雙工異步串行口,2個外部中斷入口,具有先進的指令集結(jié)構(gòu),符合系統(tǒng)設(shè)計需要,故選擇此款單片機作為艇載模塊的控制單元,實現(xiàn)系統(tǒng)功能。
1 硬件結(jié)構(gòu)設(shè)計
艇載模塊根據(jù)地面站指令生成相應(yīng)的PWM信號使舵機轉(zhuǎn)動,與此同時,單片機定時器對旋轉(zhuǎn)編碼器脈沖進行計數(shù),并把計數(shù)值下傳,地面站根據(jù)收到的脈沖數(shù)計算云臺當前角度,然后發(fā)送繼續(xù)轉(zhuǎn)或者停止轉(zhuǎn)動命令指令。為了處理方便,在云臺上安裝了光電開關(guān),以確定絕對零度位置。因此,艇載模塊主要包括STC12C5A60S2單片機及其外圍電路,如圖1所示。
1.1 STR-30型微功率無線數(shù)傳模塊
STR-30無線數(shù)傳模塊提供標準RS-232、RS-485和UART 3種接口方式,可與計算機、RS-485設(shè)備、單片機或其他UART器件直接連接使用。無線模塊提供1個9針的連接器(JP1)、一個天線接口(ANT)和一組調(diào)線短路器(JP2)。短路器(JP2)負責通信信道、串口2類型和通信數(shù)據(jù)位的選擇。JP2的ABC三位跳線提供8種選擇,用戶可以通過ABC確定使用的0~7號信道。在一個通信小網(wǎng)中,只要ABC的跳線方式相同,就可相互通信。它提供兩個串口,COM1固定為TLL電平的UART串行口,COM2可通過JP2的D位來選擇接口方式為RS-485或RS-232。JP2的E位用來選擇數(shù)據(jù)是否帶有校驗位。本系統(tǒng)采用COM1直接與單片機串口0連接與地面站通信,采用波特率為9 600 b/s。
艇載單片機通過無線傳輸模塊與地面站通信,整個協(xié)議都由地面站發(fā)起,地面站發(fā)送,艇載機應(yīng)答。地面站到飛艇的數(shù)據(jù)鏈路稱為上行鏈路,飛艇到地面站的數(shù)據(jù)鏈路稱為下行鏈路。上下行鏈路均采用表1所示的數(shù)據(jù)幀格式。
對于舵機命令,除幀頭、幀尾外,數(shù)據(jù)都用字符碼傳輸。計算方法為:待傳數(shù)據(jù)/128,傳送商和余數(shù),其CRC用字符表示,占用3 B。下行數(shù)據(jù)包括羅盤數(shù)據(jù)、電壓A/D數(shù)據(jù)、旋轉(zhuǎn)編碼器脈沖計數(shù)值,除羅盤數(shù)據(jù)外,其余量數(shù)據(jù)也用字符碼傳輸,計算方法同上。
飛艇應(yīng)答時,若正常,則有數(shù)據(jù)就發(fā)數(shù)據(jù),無需應(yīng)答;若無數(shù)據(jù),則發(fā)正常應(yīng)答命令。地面站和飛艇,若第1個接收到的字節(jié)為非AAH,接收端都不響應(yīng),且從接收到第1個字節(jié)開始,啟動接收超時定時器,若在規(guī)定時間未收完數(shù)據(jù),則自動重新進入待機狀態(tài),清除已接收到的數(shù)據(jù)。發(fā)送端也一樣,在發(fā)送完尾字節(jié)CCH后,都要啟動超時定時器,若在規(guī)定時間未收到應(yīng)答,則延時一規(guī)定時間,重新發(fā)送。
1.2 旋轉(zhuǎn)編碼器
本系統(tǒng)采用增量脈沖雙脈沖輸出旋轉(zhuǎn)編碼器,其供電電壓為5 V,主要技術(shù)參數(shù)為1 000線/360 ℃(即每轉(zhuǎn)有1 000個脈沖),其兩路輸出為兩組相位差90 ℃的脈沖,這樣通過這兩組脈沖就可以判斷旋轉(zhuǎn)方向。其兩相輸出脈沖見圖2。應(yīng)用電路見圖3。
系統(tǒng)中需要兩個旋轉(zhuǎn)編碼器對舵機定位,若每個旋轉(zhuǎn)編碼器用兩個計數(shù)器分別對其正轉(zhuǎn)脈沖和反轉(zhuǎn)脈沖進行計數(shù),則本系統(tǒng)需要四個計數(shù)器,而產(chǎn)生PWM信號需要占用1個定時器,系統(tǒng)資源不夠用,所以本文將旋轉(zhuǎn)編碼器的兩相輸入A作為D觸發(fā)器輸入,B作為時鐘脈沖CP,若正轉(zhuǎn),則每個B的上升沿A總為高電平,輸出為高電平,反之反轉(zhuǎn)其輸出總為低電平。這樣就可以根據(jù)D觸發(fā)器輸出判斷旋轉(zhuǎn)方向,而將A與B經(jīng)過與門得到正反轉(zhuǎn)計數(shù)脈沖,用定時器對這些脈沖計數(shù)即可計算出當前角度。程序中通過判斷旋轉(zhuǎn)方向?qū)⒂嫈?shù)值分別累加到正轉(zhuǎn)計數(shù)變量或者反轉(zhuǎn)計數(shù)值變量。
1.3 數(shù)字羅盤
數(shù)字羅盤HMR3300體積小、功耗低、精度高,能實時準確地輸出被測物體的航向、俯仰、橫滾三個方向上的狀態(tài)數(shù)據(jù)。單片機通過串口2接收數(shù)字羅盤發(fā)來的飛艇姿態(tài)信息,以便根據(jù)飛艇的方向控制舵機進行地面監(jiān)測,其通信波特率為9 600 b/s。
1.4 光電開關(guān)
光電開關(guān)是利用被檢測物對光束的遮擋或反射,有同步回路選通電路,從而檢測物體的有無。利用此性質(zhì),在云臺上安裝了兩個光電開關(guān)及遮擋物,以實現(xiàn)標定其上兩個舵機轉(zhuǎn)動的絕對零度位置。其應(yīng)用原理圖見圖4。光電開關(guān)中無遮擋物時,輸出為高電平,否則為低電平。舵機轉(zhuǎn)動時,每次經(jīng)過絕對零度位置時,固定的鐵片遮擋光電開關(guān),從而使輸出發(fā)生從高到低的變化,下降沿觸發(fā)外部中斷,清正反轉(zhuǎn)計數(shù)變量。
2 軟件設(shè)計
本系統(tǒng)主要功能是,艇載控制模塊能夠在地面站的控制下,生成PWM信號控制云臺上水平和垂直舵機,使其按照設(shè)定角度轉(zhuǎn)動,以實現(xiàn)系留飛艇對地面的監(jiān)測。程序中串口0中斷接收地面站發(fā)來的數(shù)據(jù),由PCA定時器生成PWM信號,定時器0和1分別用來對垂直和水平的旋轉(zhuǎn)編碼器脈沖計數(shù),外部中斷0和1分別接水平和垂直安裝的光電開關(guān)輸出,以標定絕對零度位置。
2.1 主程序
主程序中主要完成了系統(tǒng)各個部分的初始化,讀定時器0和定時器1中計數(shù)值,讀電壓A/D數(shù)據(jù)等任務(wù)。程序中將中斷分為4個等級,生成PWM信號控制舵機轉(zhuǎn)動的PCA定時器中斷優(yōu)先級最高,為了保證羅盤數(shù)據(jù)的完整性,用于接收其數(shù)據(jù)的串口1中斷優(yōu)先級次之,串口0中斷低于串口1中斷,外部中斷和定時器中斷優(yōu)先級最低。程序中設(shè)有4個返回數(shù)據(jù)標志位,aad_flag,ad_flag,pose_flag,shuju_flag,前三個分別與定時器計數(shù)值及A/D數(shù)據(jù)和數(shù)字羅盤返回姿態(tài)數(shù)據(jù)對應(yīng),當有對應(yīng)數(shù)據(jù)時將標志位置1,有任一返回數(shù)據(jù)時將shuju_flag置1。程序流程圖見圖5。
2.2 PCA定時器中斷子程序
控制多舵機或電機的工作,并且使其工作周期均為20 ms時,要求硬件產(chǎn)生的多路PWM波的周期也相同[1]??刂贫鏅C的PWM信號的正脈沖寬度為0.5 ms~2.5 ms,控制電機的PWM信號的正脈沖為1 ms~2 ms。程序中實現(xiàn)了生成可變路數(shù)且最多為8路PWM信號,具體路數(shù)視具體情況由地面站決定。利用STC系列單片機的PCA定時器對系統(tǒng)時鐘脈沖計數(shù),每路信號由兩次中斷實現(xiàn),先實現(xiàn)正脈沖定時中斷,然后負脈沖中斷,兩次中斷總定時為2.5 ms,即1路PWM信號占用2.5 ms,8路信號占20 ms,而每一路信號除了定時的正脈沖時間為高電平,剩余17.5 ms~19.5 ms內(nèi)均為低電平,這樣保證了每路信號的周期均為20 ms,且可以在1個周期內(nèi)順次啟動各路PWM波的上升沿,生成PWM信號,提高了效率。每次中斷后有一變量自加,控制下次中斷進入的定時入口,在每次循環(huán)的第16次中斷將此變量清零,這樣就可以實現(xiàn)8路PWM控制信號的輸出。為了確保20 ms內(nèi)定時數(shù)據(jù)不隨地面站發(fā)來數(shù)據(jù)影響而改變,程序中采用了雙緩沖的做法,在第16次中斷時將新數(shù)據(jù)更新到PCA定時初值緩存中。流程圖見圖6。
2.3 串口0中斷子程序
單片機串口0和地面站通信,以獲得生成PWM信號的數(shù)據(jù)。程序中采用中斷接收和中斷發(fā)送,并在中斷程序中對接收到的命令進行了解析,對于數(shù)據(jù)命令,對舵機數(shù)據(jù)進行了循環(huán)冗余校驗,將正確的數(shù)據(jù)作為形參調(diào)用計算定時器初值的函數(shù),函數(shù)值存放在定義好的數(shù)組當中,在PCA第16次中斷時,將此數(shù)組中數(shù)據(jù)更新到PCA定時初值緩存中。
2.4 串口1中斷子程序
串口1中斷用于接收來自數(shù)字羅盤的飛艇姿態(tài)信息,每接收完一幀數(shù)據(jù)并根據(jù)標志位s_mark的狀態(tài)決定是否將此刻數(shù)據(jù)更新到發(fā)送緩存中,以防止新數(shù)據(jù)沖去原數(shù)據(jù),并置1pose_flag和shuju_flag標志位。
2.5 數(shù)據(jù)發(fā)送子程序
艇載模塊有數(shù)據(jù)返回地面站時,發(fā)送命令‘M’,格式如圖7所示。
數(shù)據(jù)辨別位占1字節(jié),用此字節(jié)后三位表示是否有姿態(tài)、角度、A/D數(shù)據(jù),有則置1該位,無則清零。用其前兩位分別表示旋轉(zhuǎn)編碼器正轉(zhuǎn)脈沖數(shù)與反轉(zhuǎn)脈沖數(shù)之差是否小于零,若小于零,則置1對應(yīng)位,否則清零。此位表征了舵機當前位置處于絕對零點位置的左邊還是右邊,若為1,則在零點左邊。數(shù)據(jù)區(qū)排放次序依次是姿態(tài)、角度、A/D數(shù)據(jù),若無前者數(shù)據(jù)則順次前移。s_mark和aa_flag標志是為了保證放到發(fā)送緩沖區(qū)的姿態(tài)數(shù)據(jù)和角度數(shù)據(jù)的完整性。
2.6 定時器0與1中斷子程序
定時器0與1分別用來對兩個旋轉(zhuǎn)編碼器的脈沖進行計數(shù),當計數(shù)溢出時,需要對TH和TL重新賦初值0,而用于保存上一時刻計數(shù)值和當前計數(shù)值的緩存變量需要清零,以保證角度精度。
2.7 外部中?斷0與1中斷子程序
外部中斷0與1用于標定云臺上舵機轉(zhuǎn)動的絕對零點位置。中斷中將正反轉(zhuǎn)計數(shù)變量清零,以實現(xiàn)在絕對零點位置輸出角度為零,角度增量也為零。
經(jīng)實際系留飛艇DZ-1驗證,本模塊依據(jù)制定的通信協(xié)議,在地面站的控制下,能夠控制舵機轉(zhuǎn)動到設(shè)定角度對地面進行監(jiān)測,并將飛艇姿態(tài)信息、A/D數(shù)據(jù)和角度信息適時發(fā)送給地面站,以更好地控制其完成地面監(jiān)測任務(wù)。
評論
查看更多