解琛
摘 要 四軸飛行器是一種小型的飛行器平臺(tái),其控制系統(tǒng)的核心是STM32單片機(jī),具有性價(jià)比高、功能強(qiáng)大等特點(diǎn),基于STM32的飛行器具有十分廣泛的用途。因此,本文就基于STM32四軸飛行器的設(shè)計(jì)進(jìn)行了相關(guān)介紹,主要內(nèi)容包括四軸飛行器的動(dòng)力學(xué)分析、基于STM32四軸飛行器的總體設(shè)計(jì)方案與程序設(shè)計(jì)以及電子硬件電路與軟件程序
調(diào)試。
關(guān)鍵詞 四軸飛行器;STM32單片機(jī);電子硬件電路
中圖分類號(hào) V2 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 2095-6363(2017)17-0061-02
四軸飛行器由于其體積小、飛行高度與速度較低、飛行狀態(tài)平穩(wěn)、靈活等特點(diǎn),在空間狹小的作業(yè)區(qū)域具有較高的應(yīng)用優(yōu)勢(shì)。在實(shí)際生活當(dāng)中,四軸飛行器常被應(yīng)用與火災(zāi)現(xiàn)場(chǎng)探明險(xiǎn)情或高層搜救當(dāng)中;在地震等災(zāi)害導(dǎo)致通訊中斷的情況下,也可借由四軸飛行器作為空中通訊中轉(zhuǎn)。四軸飛行器在設(shè)計(jì)過(guò)程中存有很多的技術(shù)難點(diǎn),需要對(duì)其實(shí)際使用過(guò)程中受到的物理效應(yīng)、氣流與環(huán)境的干擾等進(jìn)行重點(diǎn)考量,才能更好地實(shí)現(xiàn)其應(yīng)用價(jià)值。
1 四軸飛行器的動(dòng)力學(xué)分析
四軸飛行器能夠?qū)崿F(xiàn)的飛行運(yùn)動(dòng)包括爬升、橫滾調(diào)節(jié)、下降、俯仰調(diào)節(jié)、偏航調(diào)節(jié),本文選用的四軸飛行器外形呈現(xiàn)為“X”型(如圖1所示),電機(jī)就安裝在“X”的四個(gè)角上。在設(shè)計(jì)過(guò)程中,為避免4個(gè)電機(jī)同向轉(zhuǎn)動(dòng)時(shí)發(fā)生自旋運(yùn)動(dòng),安裝時(shí)要保證對(duì)角電機(jī)的轉(zhuǎn)動(dòng)方向相同,相鄰的電機(jī)轉(zhuǎn)動(dòng)方向
相反。
關(guān)于電機(jī)的輸出功率,若其提供的升力大于飛行器本身的自重,則飛行器能夠垂直升起;若要飛行器降落,則要保持飛行器的輸出功率持續(xù)降低。當(dāng)相鄰兩個(gè)電機(jī)的輸出功率大于或小于另外兩個(gè)電機(jī)的輸出功率時(shí)飛行器就能進(jìn)行向指定方向運(yùn)動(dòng)。若減小對(duì)角兩個(gè)電機(jī)的輸出功率,同時(shí)增加另外兩個(gè)電機(jī)的輸出功率,則飛行器能夠完成偏航
運(yùn)動(dòng)。
2 基于STM32四軸飛行器的總體設(shè)計(jì)方案
2.1 飛行器設(shè)計(jì)方案
基于STM32四軸飛行器的控制器即為STM32單片機(jī),在接收到PC端由藍(lán)牙發(fā)送的控制或調(diào)試指令后,可通過(guò)ⅡC接口設(shè)置MPU6050傳感器,并將傳感器的輸出設(shè)定為DMP的輸出模式。MPU6050傳感器的作用就是感受四軸飛行器在飛行過(guò)程中的飛行姿態(tài)信息,為STM32通過(guò)計(jì)算得出具體飛行姿態(tài)提供重要的解算數(shù)據(jù),STM32的解算過(guò)程采用的是串級(jí)PID算法;通過(guò)計(jì)算得出的PWM信號(hào)被進(jìn)一步輸送至電調(diào),而電調(diào)在接收到信號(hào)指令后就會(huì)控制4個(gè)電機(jī)的轉(zhuǎn)動(dòng),實(shí)現(xiàn)對(duì)四軸飛行器的飛行姿態(tài)調(diào)整,保證四軸飛行器達(dá)到并維持平衡飛行的狀態(tài)。
2.2 飛行器硬件電路的設(shè)計(jì)
基于STM32四軸飛行器的硬件電路設(shè)計(jì),需要包含以下電路內(nèi)容:STM32最小系統(tǒng)電路與電源供電電路、MPU6050傳感器電路、電機(jī)驅(qū)動(dòng)電路以及藍(lán)牙接口電路。其中的STM32最小系統(tǒng)電路在設(shè)計(jì)時(shí)應(yīng)確保復(fù)位電路、晶振電路、JTAG配置電路設(shè)計(jì)完全,該電路設(shè)計(jì)的主要作用就是確保STM32控制器能夠正常運(yùn)行,此種電路設(shè)計(jì)是最簡(jiǎn)化的電路
形式[1]。
電源供電電路的設(shè)計(jì)。本文所選用的基于STM32四軸飛行器的正常運(yùn)行,只需3.3V的一路恒壓電源,且運(yùn)行時(shí)消耗的功率極小。STM32控制系統(tǒng)中的電源供電電路芯片為AMS1117,電路輸出的3.3V電壓只需供給MPU6050傳感器、STM32控制器以及JTAG配置
電路。
傳感器電路的設(shè)計(jì)。MPU6050傳感器電路的主要作用就是獲取四軸飛行器的飛行姿態(tài)信息數(shù)據(jù),并將其提供給STM32控制器。傳感器通過(guò)信號(hào)傳輸?shù)姆绞将@取的數(shù)據(jù)信息,能夠輔助STM32控制器完成對(duì)電機(jī)轉(zhuǎn)速的控制,確保飛行穩(wěn)定。
電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)。電機(jī)驅(qū)動(dòng)電路即是電機(jī)接口電路,其結(jié)構(gòu)主要包括電調(diào)與電機(jī)兩部分,主要的功能是傳輸由STM32控制器發(fā)出的PMW信號(hào)至電調(diào),電調(diào)再進(jìn)一步控制飛行器的電機(jī)運(yùn)轉(zhuǎn),確保飛行器的穩(wěn)定
運(yùn)行。
藍(lán)牙接口電路的設(shè)計(jì)。在調(diào)試程序的過(guò)程中,需要對(duì)飛行器的反饋數(shù)據(jù)進(jìn)行詳細(xì)觀察,一般來(lái)說(shuō),采用串口進(jìn)行數(shù)據(jù)觀察需要使用連接線,不適用于飛行器這種動(dòng)態(tài)設(shè)備,藍(lán)牙接口電路這種無(wú)線調(diào)試方式更加便捷。藍(lán)牙模塊在設(shè)計(jì)時(shí),芯片采用HC-05型號(hào),用于上位機(jī)與STM32控制器中間的調(diào)試,其設(shè)計(jì)實(shí)質(zhì)是串口通信
方式。
3 基于STM32四軸飛行器的程序設(shè)計(jì)
3.1 遙控程序設(shè)計(jì)
遙控程序的設(shè)計(jì)采用模塊化的設(shè)計(jì)方式,STM32控制器的編程有兩種方式,一種是寄存器操作,另一種是庫(kù)操作。其中,寄存器操作的形式具有執(zhí)行效率高、可讀性差的特點(diǎn);而庫(kù)操作的應(yīng)用適用性更強(qiáng),在編程之前,需要優(yōu)先將STM32控制器的庫(kù)函數(shù)添加到工程當(dāng)中,與此同時(shí)還應(yīng)做好時(shí)鐘、GPIO等基本配置。STM32控制器在執(zhí)行程序的過(guò)程中,執(zhí)行順序?yàn)橛缮系较轮饤l執(zhí)行,因此在進(jìn)行模塊設(shè)計(jì)時(shí)應(yīng)注意其分布的條理性。遙控程序模塊設(shè)計(jì)流程如下:RCC初始化、GPIO初始化、TFT初始化、無(wú)限模塊初始化串口初始化;遙感數(shù)據(jù)采集;發(fā)送控制信號(hào);接收姿態(tài)信息;刷新TFT顯示數(shù)據(jù);重復(fù)刷新TFT顯示數(shù)據(jù);將顯示數(shù)據(jù)通過(guò)串口輸送至PC端;重復(fù)進(jìn)行遙感數(shù)據(jù)采集及以下
流程。
3.2 飛控程序設(shè)計(jì)
飛控程序的設(shè)計(jì)與遙控程序設(shè)計(jì)的初始化部分具有諸多相似之處,區(qū)別在于后續(xù)控制部分,飛控程序的控制相較之下更為復(fù)雜,對(duì)四軸飛行器的設(shè)計(jì)實(shí)現(xiàn)具有很大的影響作用。在進(jìn)行飛控程序設(shè)計(jì)的過(guò)程中,需要設(shè)計(jì)人員了解并熟練掌握較多程序算法,如姿態(tài)解算、傳感器的濾波算法、PID控制算法等;其中的濾波算法又能夠細(xì)分出多種類別,如卡爾曼濾波、融合濾波、融合濾波等;姿態(tài)解算的核心算法是四元素與歐拉角等。在STM32控制器的軟件編程過(guò)程中,部分可采用C語(yǔ)言進(jìn)行,主要作用就是完成初始化數(shù)據(jù)的采集、遙控信號(hào)解碼以及電機(jī)控制姿態(tài)角解endprint
算等[2]。
3.3 串口與MPU6050傳感器的中斷子程序設(shè)計(jì)
串口與MPU6050傳感器中斷部分的作用主要是進(jìn)行MPU6050傳感器傳輸數(shù)據(jù)的處理,將數(shù)據(jù)信息傳送至STM32控制器當(dāng)中進(jìn)行相應(yīng)的輸出脈寬計(jì)算,并對(duì)最終的輸出脈寬進(jìn)行輸出限幅與輸出給電調(diào),有效控制飛行器的四個(gè)電機(jī)的正常運(yùn)行,從而確保飛行器的穩(wěn)定飛行。在串口中斷子程序當(dāng)中,程序設(shè)計(jì)核心為對(duì)幀頭與幀尾、冗余校驗(yàn)的正確性進(jìn)行
判斷。
4 電子硬件電路與軟件程序的調(diào)試
電子硬件電路的調(diào)試需要先對(duì)遙控器進(jìn)行調(diào)試。首先,應(yīng)對(duì)電路板是否能夠進(jìn)行正常工作進(jìn)行確認(rèn),主要的做法如下:首先要寫一個(gè)相對(duì)簡(jiǎn)單的程序,該程序能夠讓電路板上的指示燈閃爍,若電路板上的指示燈能夠正常閃爍且能夠正常下載程序,則說(shuō)明電路板主控結(jié)構(gòu)正常,能夠繼續(xù)進(jìn)行下一步的硬件調(diào)試確認(rèn),直到最終全部完成整體硬件電路的調(diào)試
工作[3]。
在軟件程序編寫完成之后,針對(duì)遙控器與飛行控制板要進(jìn)行嚴(yán)格的調(diào)試工作。在基于STM32四軸飛行器的設(shè)計(jì)中,對(duì)遙控器與飛行控制板的調(diào)試工作是一個(gè)難點(diǎn)部分,將飛行控制板在四軸飛行器的機(jī)架位置固定好,并將其余零部件全部進(jìn)行組裝。在飛行器組裝完成后,不能直接進(jìn)行試飛操作,而是要將飛行器處于懸停狀態(tài)進(jìn)行觀察,這主要是由于軟件程序編寫可能存在缺陷,直接試飛可能造成飛行器損壞。打開飛行器與遙控器之后,在飛行器處于懸停狀態(tài)下進(jìn)行觀察,依據(jù)實(shí)際現(xiàn)象進(jìn)一步修改PID參數(shù),通過(guò)不斷的調(diào)試、修改,當(dāng)達(dá)到標(biāo)準(zhǔn)的參數(shù)結(jié)果后,預(yù)期控制目的得以實(shí)現(xiàn),則整機(jī)調(diào)試工作結(jié)束。
5 結(jié)論
綜上所述,對(duì)基于STM32四軸飛行器的設(shè)計(jì)分析,有利于提升四軸飛行器的使用性能與應(yīng)用范圍。通過(guò)相關(guān)設(shè)計(jì),能夠更好的實(shí)現(xiàn)四周飛行器爬升、橫滾調(diào)節(jié)、下降、俯仰調(diào)節(jié)、偏航調(diào)節(jié)等飛行形式,從而提升其在實(shí)際救援等活動(dòng)中的適用性,提升其應(yīng)用價(jià)值。因此,要不斷深入研究基于STM32四軸飛行器的相關(guān)設(shè)計(jì)優(yōu)化,同時(shí)為其他類型的多軸飛行器的設(shè)計(jì)與研發(fā)提供有效的設(shè)計(jì)參考。
參考文獻(xiàn)
[1]李潤(rùn)寧,繆月琴,巫俊靈,等.基于STM32的四軸飛行器遙控與智能防撞設(shè)計(jì)[J].智能計(jì)算機(jī)與應(yīng)用,2016,6(2):29-30.
[2]王康,董潔,王強(qiáng).基于STM32的四軸飛行器語(yǔ)音控制設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2016,29(5):90-92.
[3]王東平.基于嵌入式的四軸飛行器控制系統(tǒng)研究與設(shè)計(jì)[D].泉州:華僑大學(xué),2013.endprint