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