基于單片機的小型自控飛艇舵控系統設計
以單片機為核心設計并實(shí)現了小型自控飛艇的舵機控制系統,對系統的硬件設計進(jìn)行了說(shuō)明,對軟件設計中的關(guān)鍵問(wèn)題——串行通訊及幀識別、多單片機通訊及PWM波的軟件產(chǎn)生方法進(jìn)行了詳細闡述。
本文引用地址:http://dyxdggzs.com/article/80913.htm平流層飛艇是一種利用輕于空氣的氣體(如氦氣等)產(chǎn)生浮力作為升力的飛行于平流層區域的飛行器。它依靠飛艇內部裝載的輕于空氣的氣體產(chǎn)生的靜升力,通過(guò)控制飛艇上的舵面和動(dòng)力裝置,以較小的能耗實(shí)現在平流層的飛行。配備集成化組合導航和自主飛行控制系統的飛艇,可以實(shí)現在平流層空間準靜止和常駐空自主飛行。它具有高空定點(diǎn)工作時(shí)間長(cháng)、對地觀(guān)測范圍廣、維修使用方便以及成本低等特點(diǎn),因此可以根據任務(wù)需要在飛艇上安裝相應的載荷,構成對地、對空任務(wù)平臺。小型自控飛艇是為了驗證平流層飛艇飛行特性和控制性能的小型軟式試驗飛艇,對其控制系統的研究是平流層飛艇研制中一個(gè)重要的過(guò)渡階段,具有極其重要的意義。
1 小型自控飛艇舵控系統簡(jiǎn)介
舵機是小型自控飛艇執行機構中最主要的執行部件,能否快速、準確地完成對舵機的控制直接關(guān)系到飛艇的自主控制效果。因此,舵控系統成為小型飛艇自主飛行控制系統中最重要的組成部分之一,它的主要功能是接收艇載計算機發(fā)出的控制指令,實(shí)現對控制指令的采集、分析和處理,并根據控制指令向舵機輸出連續可調的舵控信號,操縱艇上各舵機完成預定動(dòng)作。
2 舵控系統硬件設計
本飛艇舵控系統以多片P89C2051單片機為核心,配合電源模塊、驅動(dòng)芯片及多路轉換開(kāi)關(guān)等在一塊印制電路板上實(shí)現預定功能。舵控系統設計總體框圖如圖1所示。

舵控系統主控芯片(主控單片機1、2)選擇P89C51RA2xx型單片機,它具有8KB的并行可編程非易失性FLASH 程序存儲器,并可對器件串行在系統編程(ISP)和在應用中編程(IAP)。該型微控制器是80C51微控制器的派生器件,是采用先進(jìn)的CMOS工藝制造的8位微控制器,指令系統與80C51完全相同。該器件有4組8位I/O口、3個(gè)16位定時(shí)計數器、多中斷源-4中斷優(yōu)先級-嵌套中斷結構、1 個(gè)增強型UART、片內振蕩器及時(shí)序電路。舵控單片機采用Atmel(代理商:聚興科技)公司的89C2051型單片機[2],其具體性能這里不再贅述。
電源模塊采用美國國家半導體公司生產(chǎn)的LM2576系列產(chǎn)品,它是線(xiàn)性三端穩壓器件(如78xx系列端穩壓集成電路)的替代品。相比而言,它的熱損耗更低、工作效率更高、輸出電流驅動(dòng)能力更強,同時(shí)對于電源的高頻干擾還有較強的抑制作用。利用該器件只需極少的外圍器件便可構成高效穩壓電路,為MCU穩定可靠的工作提供強有力的保證。
此外,為增強信號的驅動(dòng)能力,在輸出之前采用74LS245作為信號驅動(dòng)芯片;串口電平轉換采用Max232芯片。
該系統硬件設計比較簡(jiǎn)單,值得一提的是其中的安全性設計部分,即當地面檢測到艇上自動(dòng)控制系統已經(jīng)失效時(shí),為確保飛艇安全返回,需要將控制方式轉至遙控方式。如圖1所示,當艇載計算機發(fā)生故障時(shí),舵控系統通過(guò)無(wú)線(xiàn)射頻接收機接收地面遙控信號,通過(guò)其輸出的多通道PWM波直接控制艇上舵機,控制飛艇安全返回。此處,控制方式的轉換是通過(guò)多路轉換開(kāi)關(guān)實(shí)現的,開(kāi)關(guān)的切換信號由艇載計算機看門(mén)狗電路在檢測到艇載計算機已不能正常工作時(shí)給出。
3 舵控系統軟件設計
3.1 軟件總體結構
舵控系統各單片機程序均在Keil C51環(huán)境下采用C語(yǔ)言編寫(xiě)。為了保證系統的實(shí)時(shí)性及快速性,軟件編寫(xiě)采用了主程序+任務(wù)+中斷的結構。
在三部分程序中,以主單片機1的外部中斷最多,包括串口中斷、與主單片機2的握手中斷以及艇載計算機看門(mén)狗的外部中斷,這幾個(gè)中斷的優(yōu)先級排列順序是:艇載計算機看門(mén)狗中斷>串口中斷>握手中斷。主單片機1接收到艇載計算機通過(guò)RS232串口發(fā)來(lái)的信息幀后,首先進(jìn)行幀識別,提取出前m個(gè)字節的數據,加上幀頭幀尾后由P1口發(fā)送給主單片機2;并將第m+1個(gè)字節數據作為開(kāi)關(guān)量通道控制信號由P2口輸出,用作系統控制備用。
主單片機2程序的主要任務(wù)是通過(guò)其P1口接收上位機傳來(lái)的數據,提取各控制信息,在相應控制指令的前面加上地址,依次由串口發(fā)送給下位舵控單片機。
舵控單片機的主要任務(wù)是識別控制指令和地址指令,并根據收到的控制指令(舵機占空比信號)產(chǎn)生PWM波控制艇上舵機。
該系統軟件設計中的關(guān)鍵問(wèn)題包括以下幾個(gè)方面:(1)控制信號流程中數據幀的接收識別;(2)舵控系統中主從單片機之間的多機通信;(3)PWM波舵控信號的軟件產(chǎn)生方法。下面對這幾個(gè)問(wèn)題進(jìn)行詳細的闡述,并給出相應的解決方案。
3.2 軟件設計中的關(guān)鍵問(wèn)題
(1)數據幀的串口接收及識別技術(shù)
在舵控系統中,數據以二進(jìn)制信息幀的格式進(jìn)行傳遞。每個(gè)信息幀從標題開(kāi)始都有固定的幀頭、幀尾,且長(cháng)度固定,其基本數據格式如表1所示。

在該舵控系統的設計中,串行通訊占有很重要的地位,如艇載計算機與主單片機1之間的通訊過(guò)程。下面以主單片機1的串口接收程序為例,對串行通訊的實(shí)現過(guò)程加以說(shuō)明。
在串行通信中,接收程序的任務(wù)是數據接收、幀識別和信息提取。常規的設計方法是設置一個(gè)比較大的緩沖區。串行接收中斷服務(wù)程序負責把接收到的數據壓入緩沖區,當緩沖區的數據足夠多時(shí),再由主程序調用一個(gè)幀識別和解碼子程序對緩沖區中的數據進(jìn)行處理。這種方法的好處是中斷服務(wù)程序比較短,不足之處為從一幀數據接收完畢到解碼時(shí)間較長(cháng),另外對緩沖區進(jìn)行管理需要占用大量的的CPU時(shí)間,因而實(shí)時(shí)性較差,此處不宜使用。
本文采用了中斷服務(wù)程序就地幀識別技術(shù),即省掉緩沖區,數據接收、幀識別均由中斷服務(wù)程序完成,之后在主程序的循環(huán)中完成數據的提取和處理。就地幀識別技術(shù)的實(shí)現機理如下:把中斷服務(wù)程序看作是一個(gè)處理機,串行數據逐字節到來(lái),程序先從數據序列中等到第一個(gè)幀頭,寫(xiě)入該幀的存儲數組,同時(shí)置標志位flag1,接收狀態(tài)推進(jìn)一步;再判斷下一次中斷時(shí),來(lái)到的數據是否符合第二個(gè)幀頭的特征。如果符合則存入相應數組,并置相應的標志位flag2,接收狀態(tài)繼續推進(jìn);如果幀頭兩個(gè)字節均符合,則將后面來(lái)到的數據依次存入指定數組;根據已接收到的字節數判斷,當符合該幀的數據部分接收完畢后,判斷下一字節是否為幀尾的第一個(gè)字節,如果是則置標志位flag3;之后依據同樣的方法判斷幀尾第二個(gè)字節是否來(lái)到,如果已接收到,則置該幀數據已完整接收到標志flag4,同時(shí)接收狀態(tài)歸零,重新開(kāi)始等待幀頭字符。在幀頭幀尾判斷期間,一旦有一項不符合要求,則將接收狀態(tài)歸零,以重新開(kāi)始等待幀頭。主程序每循環(huán)一次便對“幀完整接收到”標志進(jìn)行一次判斷,若為真則調用相應的數據提取子程序,并清flag4。
串行中斷服務(wù)程序流程如圖2所示。采用中斷服務(wù)程序就地幀識別技術(shù)的優(yōu)點(diǎn)在于數據接收后立即進(jìn)行幀識別,省去了對緩沖區的管理工作,減少了存取次數,因而節省了大量的時(shí)間,極大地提高了接收程序的實(shí)時(shí)性。同時(shí)錯幀和斷幀被自動(dòng)丟棄,不再占用資源。

圖2中各標志位含義為:
flag1——接收到幀頭Head1標志;
flag2——接收到完整幀頭標志;
flag3——接收到幀尾End1標志;
flag4——接收到完整幀標志。
(2)單片機多機通訊
在舵控系統設計中,各部分間的通訊是設計的重要內容,其中主要包括單片機與上位PC機間的通訊和單片機與單片機之間的通訊。在舵控系統中,主單片機1與上位PC機通訊是通過(guò)單片機自帶的一路異步串行通訊接口完成的;而主單片機1通過(guò)其P1口向主單片機2傳輸數據,這里不再贅述,重點(diǎn)介紹主單片機2如何通過(guò)其一路串口分別向下位的多個(gè)舵控單片機傳送指令。
此系統中,主單片機2作為主機,m個(gè)舵控單片機作為從機,在主機與從機的通訊過(guò)程中,串口控制寄存器中SCON中的SM2位發(fā)揮了重要作用。當其中一個(gè)舵控單片機(89C2051)的SM2位為1時(shí),該單片機只接收地址幀,對數據幀不理睬;而當SM2位為0時(shí),該單片機接收所有發(fā)來(lái)的消息。具體通信過(guò)程如下:
?、偈紫葘⒅?、從單片機工作方式選為模式3,所有從機的SM2位開(kāi)始置1,處于只接收地址幀狀態(tài)。
?、谥鳈C接收主單片機1發(fā)來(lái)的數據幀,從中提出數據部分(m個(gè)字節的指令對應m個(gè)舵控單片機),根據序號在控制指令字節前加上一個(gè)字節的地址信息。然后主機依次通過(guò)串口向下發(fā)送各舵控單片機的地址字節和數據字節。發(fā)送一幀地址信息,包含8位地址,第9位為1,表示發(fā)送的幀為地址幀。
?、蹚臋C接收地址幀后,進(jìn)入中斷,將發(fā)來(lái)的地址與自身比較;地址一致的從機就是被尋址的從機,它清除SM2位,接收主機發(fā)來(lái)的所有后續幀信息(數據信息)。未尋址的所有其他從機仍維持SM2=1,對主機發(fā)來(lái)的數據幀不理睬,直到發(fā)來(lái)新地址幀;之后在下一次中斷時(shí)被尋址的從機接收主機發(fā)來(lái)的數據信息(第9位為0)。
需要注意的是,如果對已經(jīng)尋址的從機再發(fā)送地址幀,則該從機SM2=1,恢復初始狀態(tài),和其他從機競爭。
(3)舵控信號PWM波的產(chǎn)生
對飛艇舵機的控制最終是通過(guò)舵控單片機產(chǎn)生PWM波來(lái)實(shí)現的。通常,產(chǎn)生PWM波不外乎硬件和軟件兩種方法??紤]到舵控單片機計算任務(wù)不大,本系統中采用軟件產(chǎn)生PWM波的方法。下面以定時(shí)器0產(chǎn)生PWM波為例,說(shuō)明通過(guò)軟件產(chǎn)生PWM波舵控信號的實(shí)現方法?! ?/p>

在程序中,由串口中斷接收上位機發(fā)送的脈寬指令,繼而通過(guò)改變入口參數a來(lái)調整PWM波的脈寬,并確保脈寬輸出在正常范圍之內。通過(guò)該方法產(chǎn)生PWM波切實(shí)可行,簡(jiǎn)單有效,可以廣泛應用于舵機控制信號的產(chǎn)生中。
4 實(shí)驗結果
實(shí)驗中以FUTABA 3003舵機作為被控對象,由計算機模擬向舵控系統發(fā)送數據幀,通過(guò)示波器觀(guān)察舵控信號的變化。實(shí)驗結果表明,該舵控系統工作穩定,輸出PWM波脈寬準確可靠,被控舵機轉角線(xiàn)性度良好。
本文給出了小型自控飛艇舵控系統的主要設計方法,并詳細闡述了在軟件設計中幾個(gè)關(guān)鍵問(wèn)題的具體解決方案。實(shí)驗結果證明,該系統能夠很好地完成預定功能,根據上位機發(fā)送的指令準確地對艇上舵機進(jìn)行控制。
參考文獻
[1] 甘曉華,郭 潁.飛艇技術(shù)概論[M].北京:國防工業(yè)出版社,2005.
[2] P89C51RA2/RB2/RC2/RD2xx中文器件手冊.
[3] 王明順.基于LM2576的高可靠MCU電源設計[J].國外電子元器件,2004,11:12-14.
[4] 劉歌群,劉衛國,盧京潮.無(wú)人機強實(shí)時(shí)性串行通訊程序設計[J].計算機應用,2005,25(1):210-212.
[5] 張培仁.基于C語(yǔ)言編程MCS-51單片機原理與應用[M].北京:電子工業(yè)出版社,2003.
pwm相關(guān)文章:pwm是什么
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
評論