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