衡水職業(yè)技術(shù)學(xué)院 王素芹 程連生
舵機(jī)是小型自控飛艇執(zhí)行機(jī)構(gòu)中最主要的執(zhí)行部件,能否快速、準(zhǔn)確地完成對(duì)舵機(jī)的控制直接關(guān)系到飛艇的自主控制效果。因此,舵控系統(tǒng)成為小型飛艇自主飛行控制系統(tǒng)中最重要的組成部分之一,它的主要功能是接收艇載計(jì)算機(jī)發(fā)出的控制指令,實(shí)現(xiàn)對(duì)控制指令的采集、分析和處理,并根據(jù)控制指令向舵機(jī)輸出連續(xù)可調(diào)的舵控信號(hào),操縱艇上各舵機(jī)完成預(yù)定動(dòng)作。
本飛艇舵控系統(tǒng)以多片STC89C52單片機(jī)為核心,配合電源模塊、驅(qū)動(dòng)芯片及多路轉(zhuǎn)換開(kāi)關(guān)等在一塊印制電路板上實(shí)現(xiàn)預(yù)定功能。
舵控系統(tǒng)主控芯片選擇STC89C52單片機(jī),它具有8KB的并行可編程非易失性FLASH程序存儲(chǔ)器,并可對(duì)器件串行在系統(tǒng)編程(ISP)和在應(yīng)用中編程(IAP)。數(shù)據(jù)保留時(shí)間:10年,全靜態(tài)工作:0Hz-24MHz,三級(jí)程序存儲(chǔ)器鎖定,128×8位內(nèi)部RAM,32可編程I/O線(xiàn),4組8位I/O口,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,5個(gè)中斷源,可編程串行通道,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時(shí)鐘電路。
電源模塊采用78xx系列端穩(wěn)壓集成電路,它是線(xiàn)性三端穩(wěn)壓器件。利用該器件只需極少的外圍器件便可構(gòu)成高效穩(wěn)壓電路,為MCU穩(wěn)定可靠的工作提供強(qiáng)有力的保證。
此外,為增強(qiáng)信號(hào)的驅(qū)動(dòng)能力,在輸出之前采用74LS245作為信號(hào)驅(qū)動(dòng)芯片;串口電平轉(zhuǎn)換采用Max232芯片。
舵控系統(tǒng)各單片機(jī)程序均在Keil C51環(huán)境下采用C語(yǔ)言編寫(xiě)。為了保證系統(tǒng)的實(shí)時(shí)性及快速性,軟件編寫(xiě)采用了主程序+任務(wù)+中斷的結(jié)構(gòu)。
在三部分程序中,以主單片機(jī)1的外部中斷最多,包括串口中斷、與主單片機(jī)2的握手中斷以及艇載計(jì)算機(jī)看門(mén)狗的外部中斷,這幾個(gè)中斷的優(yōu)先級(jí)排列順序是:艇載計(jì)算機(jī)看門(mén)狗中斷>串口中斷>握手中斷。主單片機(jī)1接收到艇載計(jì)算機(jī)通過(guò)RS232串口發(fā)來(lái)的信息幀后,首先進(jìn)行幀識(shí)別,提取出前m個(gè)字節(jié)的數(shù)據(jù),加上幀頭幀尾后由P1口發(fā)送給主單片機(jī)2;并將第m+1個(gè)字節(jié)數(shù)據(jù)作為開(kāi)關(guān)量通道控制信號(hào)由P2口輸出,用作系統(tǒng)控制備用。
主單片機(jī)2程序的主要任務(wù)是通過(guò)其P1口接收上位機(jī)傳來(lái)的數(shù)據(jù),提取各控制信息,在相應(yīng)控制指令的前面加上地址,依次由串口發(fā)送給下位舵控單片機(jī)。
舵控單片機(jī)的主要任務(wù)是識(shí)別控制指令和地址指令,并根據(jù)收到的控制指令(舵機(jī)占空比信號(hào))產(chǎn)生PWM波控制艇上舵機(jī)。
該系統(tǒng)軟件設(shè)計(jì)中的關(guān)鍵問(wèn)題包括以下幾個(gè)方面:
(1)控制信號(hào)流程中數(shù)據(jù)幀的接收識(shí)別;
(2)舵控系統(tǒng)中主從單片機(jī)之間的多機(jī)通信;
(3)PWM波舵控信號(hào)的軟件產(chǎn)生方法。
(1)數(shù)據(jù)幀的串口接收及識(shí)別技術(shù)
采用了中斷服務(wù)程序就地幀識(shí)別技術(shù),其優(yōu)點(diǎn)在于數(shù)據(jù)接收后立即進(jìn)行幀識(shí)別,省去了對(duì)緩沖區(qū)的管理工作,減少了存取次數(shù),因而節(jié)省了大量的時(shí)間,極大地提高了接收程序的實(shí)時(shí)性。同時(shí)錯(cuò)幀和斷幀被自動(dòng)丟棄,不再占用資源。
(2)單片機(jī)多機(jī)通訊
在舵控系統(tǒng)設(shè)計(jì)中,各部分間的通訊是設(shè)計(jì)的重要內(nèi)容,其中主要包括單片機(jī)與上位PC機(jī)間的通訊和單片機(jī)與單片機(jī)之間的通訊。在舵控系統(tǒng)中,主單片機(jī)1與上位PC機(jī)通訊是通過(guò)單片機(jī)自帶的一路異步串行通訊接口完成的;而主單片機(jī)1通過(guò)其P1口向主單片機(jī)2傳輸數(shù)據(jù),
此系統(tǒng)中,主單片機(jī)2作為主機(jī),m個(gè)舵控單片機(jī)作為從機(jī),在主機(jī)與從機(jī)的通訊過(guò)程中,串口控制寄存器中SCON中的SM2位發(fā)揮了重要作用。當(dāng)其中一個(gè)舵控單片機(jī)的SM2位為1時(shí),該單片機(jī)只接收地址幀,對(duì)數(shù)據(jù)幀不理睬;而當(dāng)SM2位為0時(shí),該單片機(jī)接收所有發(fā)來(lái)的消息。具體通信過(guò)程如下:①首先將主、從單片機(jī)工作方式選為模式3,所有從機(jī)的SM2位開(kāi)始置1,處于只接收地址幀狀態(tài)。②主機(jī)接收主單片機(jī)1發(fā)來(lái)的數(shù)據(jù)幀,從中提出數(shù)據(jù)部分(m個(gè)字節(jié)的指令對(duì)應(yīng)m個(gè)舵控單片機(jī)),根據(jù)序號(hào)在控制指令字節(jié)前加上一個(gè)字節(jié)的地址信息。然后主機(jī)依次通過(guò)串口向下發(fā)送各舵控單片機(jī)的地址字節(jié)和數(shù)據(jù)字節(jié)。發(fā)送一幀地址信息,包含8位地址,第9位為1,表示發(fā)送的幀為地址幀。③從機(jī)接收地址幀后,進(jìn)入中斷,將發(fā)來(lái)的地址與自身比較;地址一致的從機(jī)就是被尋址的從機(jī),它清除SM2位,接收主機(jī)發(fā)來(lái)的所有后續(xù)幀信息(數(shù)據(jù)信息)。未尋址的所有其他從機(jī)仍維持SM2=1,對(duì)主機(jī)發(fā)來(lái)的數(shù)據(jù)幀不理睬,直到發(fā)來(lái)新地址幀;之后在下一次中斷時(shí)被尋址的從機(jī)接收主機(jī)發(fā)來(lái)的數(shù)據(jù)信息(第9位為0)。
需要注意的是,如果對(duì)已經(jīng)尋址的從機(jī)再發(fā)送地址幀,則該從機(jī)SM2=1,恢復(fù)初始狀態(tài),和其他從機(jī)競(jìng)爭(zhēng)。
(3)舵控信號(hào)PWM波的產(chǎn)生
對(duì)飛艇舵機(jī)的控制最終是通過(guò)舵控單片機(jī)產(chǎn)生PWM波來(lái)實(shí)現(xiàn)的。通常,產(chǎn)生PWM波不外乎硬件和軟件兩種方法??紤]到舵控單片機(jī)計(jì)算任務(wù)不大,本系統(tǒng)中采用軟件產(chǎn)生PWM波的方法。下面以定時(shí)器0產(chǎn)生PWM波為例,說(shuō)明通過(guò)軟件產(chǎn)生PWM波舵控信號(hào)的實(shí)現(xiàn)方法。
在程序中,由串口中斷接收上位機(jī)發(fā)送的脈寬指令,繼而通過(guò)改變?nèi)肟趨?shù)a來(lái)調(diào)整PWM波的脈寬,并確保脈寬輸出在正常范圍之內(nèi)。通過(guò)該方法產(chǎn)生PWM波切實(shí)可行,簡(jiǎn)單有效,可以廣泛應(yīng)用于舵機(jī)控制信號(hào)的產(chǎn)生中。
[1]張晴,袁曉梅,羅凱.基于PWM信號(hào)遙控機(jī)器人的設(shè)計(jì)與制作[J].數(shù)字技術(shù)與應(yīng)用,2010(10).
[2]馮曉偉,王雷陽(yáng),李正生.多路舵機(jī)控制PWM發(fā)生器的設(shè)計(jì)與Proteus仿真[J].現(xiàn)代電子技術(shù),2011(11).
[3]韓佳冷.液體流量控制器的研制[D].吉林大學(xué),2011.
[4]陳海宴.51單片機(jī)原理及應(yīng)用[M].北京航空航天大學(xué)出版社,2012.