版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于stm32四軸飛行器控制系統(tǒng)設(shè)計I緒論研究背景及意義隨著科技的飛速發(fā)展,無人機(jī)技術(shù)得到了前所未有的推廣和廣泛應(yīng)用。無人機(jī)涉及多個學(xué)科的融合,如航空航天、電子電路、計算機(jī)控制等,是一個極具挑戰(zhàn)的交叉前沿領(lǐng)域。無人機(jī)可用于各種任務(wù),如航空攝影、物流運(yùn)輸、測繪放礦、精準(zhǔn)農(nóng)業(yè)、應(yīng)急救援等,在民用和軍事領(lǐng)域都擁有巨大潛力。其中,四軸飛行器作為一種輕型小型無人機(jī),具有結(jié)構(gòu)緊湊、反應(yīng)靈敏、操控靈活等優(yōu)點,近年來成為了無人機(jī)領(lǐng)域的研究熱點。相較于固定翼無人機(jī)和直升機(jī),四軸飛行器的設(shè)計理念更加簡單,成本更低,而且可以實現(xiàn)多種飛行模式,如懸停、上升下降、前后左右飛行等,適用場景更加廣泛。因此,設(shè)計一款性能可靠、操控便捷的四軸飛行器控制系統(tǒng),具有重要的理論意義和實際價值。本設(shè)計所使用的STM32單片機(jī)是一款的32位ARMCortex-M3內(nèi)核的高性能微控制器,具有強(qiáng)大的運(yùn)算能力、豐富的通信接口、中斷向量數(shù)量多等優(yōu)點,非常適合于四軸飛行器等需要實時控制和多外設(shè)驅(qū)動的復(fù)雜嵌入式系統(tǒng)。通過精心的硬件電路設(shè)計和軟件算法編寫,能夠最大限度地發(fā)揮STM32的性能,實現(xiàn)對四軸飛行器的精準(zhǔn)控制。國內(nèi)外研究現(xiàn)狀國內(nèi)研究現(xiàn)狀國內(nèi)對于四軸飛行器的研究主要集中在飛行控制算法、飛行穩(wěn)定性、實用功能拓展等幾個方面。在控制算法領(lǐng)域,北京理工大學(xué)的研究人員提出了一種基于模糊控制的四軸飛行器姿態(tài)控制算法,利用模糊控制的優(yōu)勢,能夠更好地描述系統(tǒng)的不確定性和非線性,從而有效提高了飛行器的姿態(tài)穩(wěn)定性。同時,該算法也考慮了外部干擾因素,提升了系統(tǒng)的可靠性。中國科學(xué)院沈陽自動化所的學(xué)者們則在計算機(jī)視覺方向做了大量研究,提出了一種新的基于視覺的自主導(dǎo)航算法,通過機(jī)載攝像頭采集圖像數(shù)據(jù),結(jié)合深度學(xué)習(xí)技術(shù)進(jìn)行實時目標(biāo)檢測和障礙物識別,實現(xiàn)了四軸飛行器的自主導(dǎo)航和智能避障功能。該技術(shù)極大提高了飛行器的自主性和安全性,未來或可應(yīng)用于搜救、巡邏等領(lǐng)域。在系統(tǒng)集成和應(yīng)用推廣方面,清華大學(xué)研究人員設(shè)計了一款多旋翼無人機(jī)系統(tǒng),包括地面站、通信系統(tǒng)和無人機(jī)平臺三部分。地面站用于飛行規(guī)劃、監(jiān)控和控制;通信系統(tǒng)實現(xiàn)了航跡跟蹤和航線重規(guī)劃;無人機(jī)本身集成了飛控、導(dǎo)航和任務(wù)有效載荷等模塊,可進(jìn)行高空遙感、超視距航線測繪等任務(wù),實現(xiàn)了多場景下的高效運(yùn)營。目前,該系統(tǒng)已在多個行業(yè)得到應(yīng)用。國外研究現(xiàn)狀國外在四軸飛行器領(lǐng)域的研究更加廣泛和深入。美國宇航局(NASA)的著名的"無人機(jī)系統(tǒng)集成"計劃中,就包括了針對四軸旋翼無人機(jī)的一些研究內(nèi)容。該計劃旨在開發(fā)出可用于監(jiān)測和搜救任務(wù)的四軸無人機(jī)系統(tǒng)。NASA研究人員針對這一應(yīng)用場景,對無人機(jī)的結(jié)構(gòu)、功能、控制、通信等諸多方面都進(jìn)行了優(yōu)化和改進(jìn)。例如,設(shè)計了一種新型柔性機(jī)身,能夠在撞擊時吸收沖擊力,避免損壞內(nèi)部元器件;引入超寬帶通訊技術(shù),確保在任何環(huán)境下數(shù)據(jù)傳輸不中斷;搭載多種傳感器和導(dǎo)航模塊,實現(xiàn)自主飛行和高精度定位。該計劃取得了卓越的研究成果,相關(guān)技術(shù)已在2017年的墨西哥人道主義救援行動中得到實際應(yīng)用。歐洲航空航天公司也在四軸飛行器領(lǐng)域發(fā)力。其研究重點包括商用和軍用兩個領(lǐng)域。在商用領(lǐng)域,研發(fā)了一種采用雙旋翼設(shè)計的四旋翼無人機(jī),旋翼數(shù)量的增加提高了飛行效率;采用碳纖維復(fù)合材料減輕機(jī)身重量;增加了多種有效載荷支持,如高清攝像、測繪設(shè)備、貨運(yùn)艙等,拓展了無人機(jī)的應(yīng)用場景。在軍用領(lǐng)域,開發(fā)出一種隱身涂裝四旋翼無人機(jī),能夠有效減小雷達(dá)反射面積,提高生存能力;搭載SAET光電對接系統(tǒng),可與其他無人機(jī)編隊飛行,提升戰(zhàn)場適應(yīng)能力。前景分析隨著無人機(jī)技術(shù)的不斷成熟,四軸飛行器在民用和商業(yè)領(lǐng)域?qū)碛懈訌V闊的應(yīng)用前景。在民用領(lǐng)域,四軸飛行器可用于航空攝影、測繪放礦、農(nóng)林業(yè)監(jiān)測等多個行業(yè)。借助其靈活的機(jī)動性和懸停能力,能夠拍攝到獨(dú)特的航拍視角,獲取高精度的地理信息數(shù)據(jù)。在農(nóng)林業(yè)中,可搭載多種傳感器,實現(xiàn)對農(nóng)作物的精準(zhǔn)監(jiān)測和制導(dǎo),提高農(nóng)業(yè)生產(chǎn)效率。另外,在應(yīng)急救援、安防監(jiān)控等領(lǐng)域,四軸飛行器也有著廣闊的應(yīng)用空間。在商業(yè)領(lǐng)域,物流運(yùn)輸被認(rèn)為是四軸飛行器最具潛力的應(yīng)用場景。相比于傳統(tǒng)的陸路運(yùn)輸,無人機(jī)可以更快捷、更環(huán)保地將貨物送往目的地,且不受道路擁堵、交通管制的影響。目前,亞馬遜、谷歌等科技公司都在積極布局無人機(jī)快遞,借助四軸飛行器實現(xiàn)"最后一公里"的高效配送。未來,隨著相關(guān)法規(guī)的完善和技術(shù)的進(jìn)一步發(fā)展,無人機(jī)物流或?qū)⒊蔀楝F(xiàn)實。在軍事領(lǐng)域,四軸飛行器的應(yīng)用前景也不容忽視。它可用于偵查、監(jiān)視、電子對抗等多種任務(wù),具有成本低、適應(yīng)性強(qiáng)、隱蔽性好等優(yōu)勢。通過搭載各種有效載荷,如紅外、雷達(dá)等探測設(shè)備,可實現(xiàn)對陸??漳繕?biāo)的精準(zhǔn)偵查;安裝電子戰(zhàn)設(shè)備,可對敵方雷達(dá)、通信設(shè)施實施電子干擾。在特殊作戰(zhàn)中,小型四軸飛行器還可用于散布傳單、空投補(bǔ)給等??偟膩碚f,四軸飛行器將為未來的現(xiàn)代化戰(zhàn)爭帶來全新的作戰(zhàn)方式。章節(jié)安排本文共分為5個章節(jié)。第2章介紹了系統(tǒng)的功能要求和設(shè)計方案,對硬件模塊進(jìn)行了選型分析。第3章詳細(xì)闡述了系統(tǒng)各硬件模塊的設(shè)計。第4章介紹了軟件設(shè)計,包括開發(fā)環(huán)境和程序流程。第5章對系統(tǒng)進(jìn)行了測試和結(jié)果分析。最后是結(jié)論和致謝部分。
功能與設(shè)計方案系統(tǒng)功能要求本四軸飛行器控制系統(tǒng)作為一款面向消費(fèi)級市場的航模產(chǎn)品,需要滿足以下幾方面的基本功能需求:(1)實現(xiàn)手動遙控飛行系統(tǒng)的核心功能是實現(xiàn)對飛行器的手動遙控,包括控制飛行器的上升、下降(油門)、左右平移(橫滾)、前后運(yùn)動(俯仰)以及繞自身軸線旋轉(zhuǎn)(偏航)等基本飛行動作。用戶通過遙控器上的按鍵或遙桿,輸入相應(yīng)的控制指令,飛行器接收到指令后,可以通過調(diào)整四個電機(jī)的轉(zhuǎn)速實現(xiàn)期望的運(yùn)動。(2)自動姿態(tài)穩(wěn)定控制除了響應(yīng)手動遙控指令外,飛行器還需要具備自主的姿態(tài)穩(wěn)定控制能力,即能夠自動檢測并抑制飛行姿態(tài)的偏移,使飛行器保持水平飛行或其他預(yù)期姿態(tài)。這對于消費(fèi)級用戶來說是非常重要的,可以大幅降低飛行的難度,提高操控體驗。(3)電壓監(jiān)測與電源管理由于飛行器主要由鋰電池供電,隨著飛行時間的延長,電池電壓會逐漸下降。當(dāng)電壓降至一定閾值以下時,系統(tǒng)需要檢測到并發(fā)出報警提示,以免電壓持續(xù)下降導(dǎo)致不可預(yù)期的后果。同時,電源管理電路需要對電壓進(jìn)行升壓或降壓調(diào)節(jié),為飛控系統(tǒng)和電機(jī)等部件提供所需的工作電壓。(4)狀態(tài)監(jiān)測與指示為方便用戶監(jiān)控飛行器的當(dāng)前工作狀態(tài),系統(tǒng)需要具備相應(yīng)的指示燈或顯示模塊,實時反映飛行器的供電電壓、接收信號強(qiáng)度、解鎖狀態(tài)、電機(jī)工作狀況等運(yùn)行參數(shù),及時發(fā)現(xiàn)和處理異常情況。對于一些關(guān)鍵狀態(tài),還需要有報警指示,提醒用戶進(jìn)行干預(yù)操作。(5)參數(shù)配置與存儲不同用戶對飛行器的控制參數(shù)要求可能有所不同。因此,系統(tǒng)需要提供簡便的參數(shù)設(shè)定和存儲功能,允許用戶根據(jù)自身習(xí)慣調(diào)整飛行控制的PID參數(shù)、解鎖指令組合、油門曲線等各項參數(shù),并將這些配置參數(shù)永久保存下來,以備后續(xù)使用時加載,提高人機(jī)交互的便捷性。系統(tǒng)設(shè)計方案為滿足上述功能需求,我們設(shè)計了一種基于STM32單片機(jī)的分布式四軸飛行器控制系統(tǒng),采用"遙控器+飛行器"的硬件架構(gòu)。遙控器模塊主要由STM32F103單片機(jī)、NRF24L01無線模塊、8個按鍵輸入、OLED顯示模塊、AT24C02存儲芯片以及UART串口等部件組成。它的主要功能是負(fù)責(zé)接收用戶的手動操作指令,并通過編碼后的無線數(shù)據(jù)包發(fā)送給飛行器。其中,8個按鍵分別對應(yīng)上升/下降、左/右橫滾、前/后俯仰和左/右偏航等基本控制指令;OLED顯示模塊可以實時顯示遙控器的工作狀態(tài)和運(yùn)行參數(shù);AT24C02芯片用于存儲自定義的參數(shù)設(shè)置。飛行器模塊則包括主控STM32F103單片機(jī)、MPU6050六軸姿態(tài)傳感器、4路無刷電機(jī)及其驅(qū)動電路、NRF24L01無線接收模塊、5V穩(wěn)壓電源模塊、電壓檢測電路、LED狀態(tài)指示燈等部件。飛行器端的主控制器將接收遙控器發(fā)來的控制指令,結(jié)合MPU6050檢測到的飛行姿態(tài)數(shù)據(jù),通過PID閉環(huán)控制算法計算出需要調(diào)整的增量,并通過改變4個電機(jī)的PWM占空比使飛行器達(dá)到預(yù)期姿態(tài)。整個系統(tǒng)通過NRF24L01無線模塊在2.4GHz頻段進(jìn)行雙向數(shù)據(jù)通信。在正常工作時,遙控器端將定期發(fā)送控制指令數(shù)據(jù)包;而飛行器端則持續(xù)接收指令,并將當(dāng)前的飛行狀態(tài)參數(shù)反饋回遙控器顯示。電源管理方面,飛行器電路使用了DC-DC升壓電路,將2節(jié)或3節(jié)18650鋰電池的輸出電壓(6-12V)升壓至5V,為單片機(jī)和其他外圍芯片供電。同時,通過電阻分壓電路檢測電池實時電壓,一旦低于預(yù)設(shè)閾值就觸發(fā)低電壓報警。該系統(tǒng)的優(yōu)點是架構(gòu)清晰、分工明確,遙控器和飛行器兩部分的功能界限十分明確,各自承擔(dān)不同的職責(zé),有利于后續(xù)的開發(fā)維護(hù)。同時,分離式設(shè)計還使系統(tǒng)具有更強(qiáng)的可擴(kuò)展性,例如可以在遙控器上集成更多人機(jī)交互界面,在飛行器上加裝其他傳感器或執(zhí)行器等。通過在兩端構(gòu)建相應(yīng)的無線通信協(xié)議,就可以輕松對整個系統(tǒng)的功能進(jìn)行擴(kuò)充和升級。圖2.1系統(tǒng)框圖硬件模塊選型單片機(jī)模塊的選型方案一:STM32F103STM32F103是ST公司基于ARMCortex-M3內(nèi)核的32位微控制器系列,主頻可達(dá)72MHz,擁有豐富的通信接口,如多個USART、IIC、SPI等,中斷向量數(shù)量多達(dá)43個。它不僅具備強(qiáng)大的運(yùn)算能力,存儲空間也比傳統(tǒng)8位單片機(jī)大得多,最大可達(dá)128KB的Flash和20KB的SRAM。此外,STM32還支持JTAG/SWD在線仿真調(diào)試功能,可以實時監(jiān)控程序運(yùn)行狀態(tài),提高了開發(fā)效率。綜合來看,STM32F103非常適合于控制需求復(fù)雜、外設(shè)較多的嵌入式系統(tǒng),例如四軸飛行器就屬于這種應(yīng)用場景。但需要說明的是,這種芯片成本稍高于傳統(tǒng)8位單片機(jī)。方案二:STC89C52STC89C52則是一款經(jīng)典的51內(nèi)核8位單片機(jī),它的主頻僅為11.0592MHz,運(yùn)算能力明顯不及STM32。此外,該單片機(jī)只有64KB的可編程Flash和256Byte的RAM,存儲空間極其有限。在通信接口方面,它只支持兩個普通異步串口、一個IIC接口,滿足不了復(fù)雜系統(tǒng)的需求。不過,作為一款低成本、低功耗的傳統(tǒng)單片機(jī),在一些簡單的控制場景中還是可以使用的。通過對比分析,最終選擇了STM32F103作為本系統(tǒng)的核心控制單元。這種高性能32位ARM芯片,能夠很好地滿足四軸飛行器對實時控制、多外設(shè)支持等諸多方面的需求。無線通信模塊的選型方案一:NRF24L01NRF24L01是諾基亞生產(chǎn)的2.4GHz無線射頻收發(fā)模塊,工作在2.4GHz的ISM頻段,通信距離可達(dá)100米以上。它支持高達(dá)2Mbps的數(shù)據(jù)傳輸速率,延時小,非常適合于各種無線數(shù)據(jù)通信應(yīng)用。與此同時,該模塊功耗極低,僅在發(fā)射或接收數(shù)據(jù)時才消耗相對較高的功率,待機(jī)功耗只有26uA。NRF24L01提供了SPI接口與單片機(jī)進(jìn)行數(shù)據(jù)交互,使用簡單方便。但由于工作頻率和帶寬受限,該模塊的數(shù)據(jù)吞吐量有一定上限。方案二:ESP8266ESP8266是一款基于WiFi技術(shù)的無線通信模塊,可通過TCP/IP協(xié)議與互聯(lián)網(wǎng)或局域網(wǎng)通信。它集成了802.11b/g/n協(xié)議棧,可實現(xiàn)更高的數(shù)據(jù)傳輸速率,在復(fù)雜環(huán)境下抗干擾能力也更強(qiáng)。但需要配置WiFi網(wǎng)絡(luò)參數(shù),過程較為復(fù)雜;且ESP8266本身功耗較高,需要外接電源供電??紤]到四軸飛行器對無線通訊距離和數(shù)據(jù)吞吐量的一般要求,以及NRF24L01模塊的低功耗、簡單易用等優(yōu)點,最終選擇了NRF24L01作為本系統(tǒng)的無線通信模塊。6軸姿態(tài)傳感器模塊的選型方案一:MPU6050MPU6050是一款集成6軸運(yùn)動加速度與轉(zhuǎn)率的傳感器,內(nèi)置3軸加速度計和3軸陀螺儀,通過IIC或者SPI接口與主控芯片連接,可精準(zhǔn)測量物體在三維空間中的姿態(tài)變化情況。該傳感器由InvenSense公司生產(chǎn),具有良好的測量性能,分辨率高達(dá)16位,測量范圍可達(dá)±2±16g(加速度)和±250±2000°/秒(角速度)。同時,MPU6050集成了數(shù)字運(yùn)動處理器DMP,可以減輕主控制器的計算壓力。此外,該傳感器體積小巧、功耗低、抗振動能力強(qiáng)等,非常適合應(yīng)用于無人機(jī)等移動平臺。方案二:BMI270BMI270是博世推出的新一代6軸傳感器,在測量精度和數(shù)字化處理能力方面有了較大提升,支持高達(dá)32kHz的輸出數(shù)據(jù)率。但相比之下,該傳感器的體積也要大一些,且成本較高,價格是MPU6050的數(shù)倍。經(jīng)過權(quán)衡,本設(shè)計最終采用了MPU6050作為飛行器的6軸姿態(tài)傳感器。它的測量性能已經(jīng)足夠滿足四軸飛行器的需求,且價格適中,完全可以勝任該應(yīng)用場景。
系統(tǒng)的硬件設(shè)計3.1STM32F103單片機(jī)本系統(tǒng)選用的是STM32F103C8T6單片機(jī),屬于ST公司的Cortex-M3內(nèi)核產(chǎn)品線。作為一款32位微控制器,它最高主頻可達(dá)72MHz,擁有較強(qiáng)的運(yùn)算處理能力。該單片機(jī)內(nèi)置了64KB的Flash存儲空間和20KB的SRAM,足以存放復(fù)雜的程序代碼和運(yùn)行時數(shù)據(jù)。STM32F103擁有多種豐富的外設(shè)資源,如2個12位分辨率的模數(shù)轉(zhuǎn)換器ADC1和ADC2,可以連接模擬量傳感器采集數(shù)據(jù);3個通用16位定時器TIM2/3/4,常用于PWM輸出或脈沖計數(shù);1個高級控制16位定時器TIM1,可產(chǎn)生高達(dá)168MHz的時鐘脈沖,用于編碼器、霍爾傳感器等;2個基本看門狗定時器和1個獨(dú)立看門狗定時器,防止程序死機(jī)。此外,該芯片還集成了多個通信接口,包括2個IIC接口、3個SPI接口、3個USART串口接口以及1個USB接口等,為連接外設(shè)提供了極大的便利。在本設(shè)計中,STM32F103的IIC接口連接MPU6050姿態(tài)傳感器;其中一個SPI接口與NRF24L01無線模塊相連,實現(xiàn)遙控通信;兩個USART分別與上位機(jī)和AT24C02芯片相連,用于數(shù)據(jù)交互;3個通用定時器TIM2/3/4用于產(chǎn)生4路PWM波控制電機(jī)轉(zhuǎn)速;看門狗定時器監(jiān)控系統(tǒng)是否出現(xiàn)死機(jī)狀況。通過合理地分配和利用上述硬件資源,可以高效地控制整個四軸飛行器系統(tǒng)。圖3.1STM32F103單片機(jī)3.2NRF24L01無線模塊NRF24L01是諾基亞公司生產(chǎn)的一款2.4GHz無線收發(fā)模塊,工作在2.4~2.5GHz的ISM(工業(yè)、科學(xué)和醫(yī)學(xué))頻段。該頻率范圍在全球范圍內(nèi)免申請執(zhí)照即可使用。NRF24L01的工作電壓為1.9~3.6V,發(fā)射功率在0、-6、-12、-18dBm四個級別可調(diào)。在室內(nèi)無干擾的情況下,其通信距離可達(dá)100米以上;即使受到一定干擾,也能實現(xiàn)約30米的可靠傳輸。該模塊采用GFSK調(diào)制方式,支持高達(dá)2Mbps的空中數(shù)據(jù)率傳輸,抗干擾能力強(qiáng)。它還支持SRAM讀寫操作,可以充分利用其1.5KB的內(nèi)部存儲空間。NRF24L01模塊上電后默認(rèn)工作在PowerDown省電模式,當(dāng)需要通信時,可切換至RX(接收)或TX(發(fā)送)模式。為了節(jié)省功耗,其他時候應(yīng)保持在Standby-I或II待機(jī)模式。此外,該模塊支持6個地址管道,可同時與多個裝有相同地址的設(shè)備連接。在本設(shè)計中,兩塊NRF24L01分別連接到遙控器和飛行器的STM32單片機(jī)上,實現(xiàn)雙向無線通信。由于NRF24L01采用SPI接口進(jìn)行數(shù)據(jù)交互,所以在所連接的單片機(jī)上需要占用兩根IO口,一根用于MOSI數(shù)據(jù)發(fā)送,另一根用于SCK時鐘輸入。單片機(jī)通過SPI發(fā)送寄存器配置命令,控制模塊的各項參數(shù),如通信頻率、發(fā)射功率、接收通道等;同時還可發(fā)送數(shù)據(jù)包,實現(xiàn)無線收發(fā)。在實際應(yīng)用中,我們采用半雙工通信方式進(jìn)行數(shù)據(jù)傳輸,即遙控器只發(fā)不收,飛行器只收不發(fā),以降低復(fù)雜度。圖3.2NRF24L01無線模塊3.3AT24C02數(shù)據(jù)存儲芯片AT24C02是ATMEL公司生產(chǎn)的2K位串行E2PROM存儲器。以前很多項目采用單片機(jī)自帶的EEPROM存儲空間來保存一些重要的系統(tǒng)參數(shù)和配置數(shù)據(jù),但容量較小,一般只有幾百Bytes。相比之下,AT24C02擁有2048Bits(256Bytes)的存儲空間,提供了更大的空間用于存儲參數(shù)。該存儲器采用串行接口與主控制器相連,只需占用單片機(jī)的兩根IO口,一根SCL時鐘線,一根SDA數(shù)據(jù)線,節(jié)省了寶貴的IO資源。數(shù)據(jù)的讀寫遵從I2C標(biāo)準(zhǔn)的數(shù)據(jù)傳輸格式,寫入數(shù)據(jù)時需先發(fā)送器件地址,然后發(fā)送字址高位和低位,最后按字節(jié)或頁寫入數(shù)據(jù)。頁寫最大頁面規(guī)格為8Bytes,若需連續(xù)寫入多頁內(nèi)容,需要先將當(dāng)前頁寫滿再發(fā)送停止位,再發(fā)送起始位開始寫入新頁面的內(nèi)容。讀取數(shù)據(jù)時,原理與寫入相似,只是流向相反,主控制器發(fā)出讀取指令后,AT24C02芯片會依次返回字地址指定的數(shù)據(jù)內(nèi)容。在本設(shè)計中,AT24C02芯片與其中一個STM32單片機(jī)上的USART端口相連。上電后,單片機(jī)會通過UART向AT24C02發(fā)送讀取指令,將存儲在其中的配置參數(shù)數(shù)據(jù)讀取到單片機(jī)RAM中。當(dāng)參數(shù)需要修改時,單片機(jī)會先在RAM中修改數(shù)據(jù),并通過UART將修改后的參數(shù)數(shù)據(jù)寫回AT24C02芯片中。這些參數(shù)配置數(shù)據(jù)包括飛行姿態(tài)的PID參數(shù)、無線模塊通信配置等,都是不可或缺的控制變量。即使飛行器斷電,這些重要參數(shù)也不會丟失,下次上電時自動加載參數(shù),無需重復(fù)配置,提高了系統(tǒng)的易用性。圖3.3AT24C02數(shù)據(jù)存儲模塊3.4MPU6050傳感器MPU6050是由InvenSense公司推出的一款集成6軸運(yùn)動傳感器,集成了一個3軸加速度計和一個3軸陀螺儀。它可以精準(zhǔn)測量物體在3D空間內(nèi)的運(yùn)動姿態(tài)信息,是當(dāng)前無人機(jī)飛控系統(tǒng)中不可或缺的關(guān)鍵傳感器。該傳感器在一個4x4x0.9mm的超薄型QFN封裝內(nèi)集成了加速度、陀螺和溫度傳感單元,并通過專用的數(shù)字運(yùn)動處理器DMP處理原始數(shù)據(jù)。MPU6050的測量范圍可設(shè)置為±2g~±16g(加速度)和±250~±2000°/sec(角速度),精度可達(dá)16位,能夠滿足各種應(yīng)用。MPU6050與主控制器通過標(biāo)準(zhǔn)的IIC或SPI接口連接,支持400kHz的快速IIC模式。它內(nèi)置有16位ADC,可直接對傳感器的模擬輸出進(jìn)行數(shù)字化,減輕了主控制器的計算壓力。MPU6050支持多種外部時鐘源接入,如有需要還可以通過外接磁力計或壓力計等傳感器擴(kuò)展功能。此外,該傳感器還提供了多種工作模式可選,如睡眠模式功耗僅為5μA,有利于無人機(jī)在電池供電時節(jié)約能源。在本設(shè)計中,MPU6050通過IIC接口與STM32單片機(jī)相連。上電初始化時,單片機(jī)會向傳感器寄存器寫入相關(guān)配置,設(shè)置量程、帶寬、輸出數(shù)據(jù)率等參數(shù)。之后,MPU6050即可持續(xù)向單片機(jī)發(fā)送加速度、角速度和溫度數(shù)據(jù),為飛行控制系統(tǒng)提供實時的姿態(tài)信息。通過對這些原始數(shù)據(jù)進(jìn)行濾波、解算等運(yùn)算處理,就可以得到飛行器的橫滾、俯仰、偏航角度,并根據(jù)期望姿態(tài)值調(diào)整四個電機(jī)的轉(zhuǎn)速,實現(xiàn)平穩(wěn)飛行。圖3.4MPU6050傳感器模塊3.5電機(jī)模塊本四軸飛行器系統(tǒng)采用4臺A2212920KV無刷直流電機(jī)作為動力輸出。這種電機(jī)具有無刷、效率高、體積小、響應(yīng)快等優(yōu)點,非常適合應(yīng)用于無人機(jī)上。A2212是該系列無刷電機(jī)的型號代號,2212分別代表定子直徑22mm、高度22mm。920KV則是其速度系數(shù),代表當(dāng)輸入電壓為1V時,電機(jī)的轉(zhuǎn)速為920轉(zhuǎn)/分鐘。該電機(jī)在14.8V供電電壓下,最大持續(xù)功率可達(dá)200W,峰值功率260W,能夠為無人機(jī)提供強(qiáng)勁的動力輸出。無刷直流電機(jī)的工作原理是通過控制電機(jī)內(nèi)部繞組的通電時序,改變磁場的方向,從而使轉(zhuǎn)子發(fā)生連續(xù)轉(zhuǎn)動。因此,要控制無刷電機(jī)必須產(chǎn)生一系列精確的脈沖序列,并將其加在不同的繞組上,這是由專用的電調(diào)電路來完成的。在本系統(tǒng)中,每臺無刷電機(jī)均通過雙路電調(diào)與STM32單片機(jī)相連。單片機(jī)會根據(jù)MPU6050檢測到的實際姿態(tài),與目標(biāo)姿態(tài)進(jìn)行PID計算,輸出4路PWM脈沖波,脈沖寬度代表需要改變的電機(jī)轉(zhuǎn)速。這些PWM信號被發(fā)送到電調(diào)電路,電調(diào)根據(jù)占空比調(diào)節(jié)電機(jī)三相繞組的通電時序,控制電機(jī)的實際轉(zhuǎn)速。同時,電調(diào)還采集了電機(jī)的轉(zhuǎn)速反饋信號,并將其返回單片機(jī)用于控制環(huán)路的閉環(huán)計算。在飛行時,四個電機(jī)會根據(jù)姿態(tài)誤差產(chǎn)生微小的轉(zhuǎn)速差異,從而調(diào)節(jié)機(jī)架產(chǎn)生偏轉(zhuǎn)力矩,實現(xiàn)平穩(wěn)飛行。例如,期望保持懸停時,如果橫滾角發(fā)生偏移,則右側(cè)兩個電機(jī)的轉(zhuǎn)速將增加,左側(cè)兩個電機(jī)轉(zhuǎn)速降低,產(chǎn)生一個校正力矩,使飛行器保持水平姿態(tài)。通過這種閉環(huán)控制方式,可以有效抑制外界干擾,保證四軸飛行器飛行的穩(wěn)定性。圖3.5電機(jī)模塊3.6按鍵模塊按鍵是遙控器與飛行器進(jìn)行人機(jī)交互的主要接口,通過不同按鍵組合的觸發(fā),可以向飛行器發(fā)送各種控制指令,實現(xiàn)多種飛行模式。本設(shè)計的遙控器板載8個外部按鍵,分別用于控制飛行器的上下油門、左右偏航、上下俯沖和左右橫滾等動作。按鍵的硬件電路非常簡單,只需將按鍵的一端連接到單片機(jī)的IO口,另一端則接地。當(dāng)按鍵按下時,對應(yīng)IO口會被拉低至接地電位;松開后則被內(nèi)部上拉電阻拉高至高電平。由于按鍵的機(jī)械運(yùn)動存在抖動現(xiàn)象,即在按下和松開過程中電平會短暫持續(xù)抖動,因此不能直接判斷按鍵狀態(tài)。常見的消抖方法有延時法和計數(shù)法。延時法是在檢測到按鍵按下/松開后等待一段時間,若電平保持不變則認(rèn)為是有效操作。該方法簡單直觀,但延時時間的設(shè)定會影響檢測的實時性。計數(shù)法則是通過連續(xù)多次采樣按鍵狀態(tài),當(dāng)采樣值超過某個閾值時,才確認(rèn)按鍵動作發(fā)生。該方法檢測響應(yīng)較快,但是需要占用較多的CPU時間。在本設(shè)計中,采用了計數(shù)法對按鍵進(jìn)行消抖處理。遙控器的8個按鍵分別連接到STM32單片機(jī)的8個IO口,通過定期輪詢的方式判斷按鍵狀態(tài)。當(dāng)檢測到某個IO口電平發(fā)生變化時,會連續(xù)采樣該端口狀態(tài)20次,若低電平持續(xù)10次以上,則確認(rèn)發(fā)現(xiàn)按下動作;若高電平持續(xù)10次以上,則確認(rèn)發(fā)現(xiàn)松開動作。最后將所有有效按鍵動作打包編碼為一個控制字,通過NRF24L01無線模塊發(fā)送給飛行器端。圖3.6按鍵模塊3.7指示燈模塊指示燈是系統(tǒng)人機(jī)交互界面的重要組成部分,為用戶提供直觀的狀態(tài)反饋,了解系統(tǒng)的當(dāng)前運(yùn)行狀態(tài)。在本四軸飛行器控制系統(tǒng)中,我們?yōu)檫b控器和飛行器兩個硬件模塊均配備了4顆LED指示燈。遙控器的指示燈分別用于指示無線通信連接狀態(tài)、電量狀態(tài)、左手油門狀態(tài)和右手油門狀態(tài)。無線通信燈在遙控器和飛行器建立無線連接后點亮,斷開連接后熄滅;當(dāng)電池電量不足時,電量狀態(tài)燈會閃爍提示;左右手油門燈則通過亮滅反映當(dāng)前所設(shè)定的油門值。通過這4盞指示燈,使用者可以快速了解遙控器的工作狀態(tài),并作出相應(yīng)調(diào)整。飛行器的4顆指示燈在解鎖前會一直閃爍;電壓狀態(tài)燈在電池電壓低于某個預(yù)設(shè)閾值時亮起,提示需要充電或者更換電池;傳感器狀態(tài)燈在MPU6050傳感器工作正常時長亮,一旦檢測到傳感器故障或數(shù)據(jù)異常,該燈就會閃爍報警。指示燈的硬件電路非常簡單,只需將LED正極引腳經(jīng)過一個限流電阻連接到單片機(jī)的IO口,負(fù)極接地即可。當(dāng)對應(yīng)的IO口輸出高電平時,LED就會點亮;當(dāng)輸出低電平時,LED就會熄滅。通過控制IO口的電平狀態(tài),可以實現(xiàn)LED的開關(guān)控制。在軟件編程方面,我們通過位帶操作對單片機(jī)IO口進(jìn)行控制,以提高執(zhí)行效率。首先獲取要操制的IO口對應(yīng)的位帶別名地址,然后根據(jù)需要對該地址賦1或清0,即可快速實現(xiàn)對應(yīng)IO口的置位或復(fù)位操作,進(jìn)而控制連接在該IO口上的LED燈的點亮或熄滅狀態(tài)。與普通的寄存器讀修改寫操作相比,位帶操作無需先讀取整個寄存器內(nèi)容,直接對目標(biāo)位操作,大大節(jié)省了時間和指令周期。圖3.7指示燈模塊3.8SWD燒錄接口SWD(SerialWireDebug)接口是ARMCortex-M3內(nèi)核中引入的一種調(diào)試接口,用于取代傳統(tǒng)的JTAG接口,以降低調(diào)試電路的復(fù)雜性和引腳占用。它只需兩根信號線(SWDIO和SWCLK)即可實現(xiàn)芯片的在線仿真調(diào)試功能。在STM32單片機(jī)中,SWD接口是固化在芯片內(nèi)部的,無需像JTAG那樣要求外部較為復(fù)雜的硬件電路支持。我們只需將SWD接口的兩根信號線引出至板載的專用調(diào)試頭,即可連接上位機(jī)或仿真器,對單片機(jī)進(jìn)行編程燒錄和調(diào)試。SWD接口的SWDIO線用于數(shù)據(jù)傳輸,支持雙向半雙工通信;SWCLK則是為同步SWDIO數(shù)據(jù)傳輸而提供的時鐘信號。在ARMCortex-M3內(nèi)核中,SWD接口由一個端口訪問特定的AP(訪問端口)和DP(調(diào)試端口)寄存器來完成相關(guān)的調(diào)試功能。通過編寫相應(yīng)的SWD協(xié)議命令并發(fā)送至SWDIO,可以完成對STM32單片機(jī)的停止/運(yùn)行、中斷、單步、讀寫存儲器和外設(shè)寄存器等診斷功能,還可以對Flash中的程序代碼進(jìn)行擦除和編程等。SWD接口的最大數(shù)據(jù)傳輸速率可達(dá)30Mbps,支持JTAG無法實現(xiàn)的實時訪問和調(diào)試。在本設(shè)計中,我們在飛控主板上設(shè)置了一個20針的SWD接口,引出了SWDIO、SWCLK以及電源和地線等幾根信號。通過將ST-LINK等調(diào)試下載器連接至此接口,即可對板載的STM32F103C8單片機(jī)進(jìn)行在線仿真調(diào)試和固件下載。使用SWD接口編程調(diào)試,相比傳統(tǒng)的并口或串口ISP編程,速度更快、效率更高、功能也更加強(qiáng)大。圖3.8SWD接口模塊3.9UART模塊UART(通用異步收發(fā)傳輸器)是一種在嵌入式系統(tǒng)中廣泛應(yīng)用的通信接口,用于實現(xiàn)全雙工異步串行通信。它只需兩根傳輸線(TX發(fā)送,RX接收)即可與其他設(shè)備建立雙向通信鏈路。在本四軸飛行器控制系統(tǒng)中,STM32F103單片機(jī)上的USART3被用于連接遙控器上的AT24C02EEPROM芯片。通過UART總線,飛控主控制器可以從該芯片讀取系統(tǒng)的初始化配置參數(shù),如控制PID參數(shù)、通信頻率等,加載到內(nèi)存中供程序運(yùn)行時使用;同時還可以對這些參數(shù)進(jìn)行實時修改并寫回EEPROM存儲。這極大地提高了系統(tǒng)的可配置性和易用性。用戶可以通過上位機(jī)連接到該UART口,查看關(guān)鍵執(zhí)行步驟、中間變量狀態(tài)等調(diào)試信息,以及時發(fā)現(xiàn)并解決程序運(yùn)行中的錯誤和異常情況。遙控器的單片機(jī)也擁有一個USART接口,與外部的無線數(shù)據(jù)透傳模塊相連。這樣可以將遙控器上按鍵產(chǎn)生的控制指令通過UART以數(shù)據(jù)包形式發(fā)送到無線模塊,由無線模塊負(fù)責(zé)傳輸給飛行器端,從而實現(xiàn)整個系統(tǒng)的無線遙控功能。UART在嵌入式系統(tǒng)中的應(yīng)用非常廣泛,因為它結(jié)構(gòu)簡單、資源占用少、通信效率高、易于調(diào)試等優(yōu)點。STM32的USART模塊擁有多達(dá)9個獨(dú)立的串口通道,而且全部支持DMA(直接內(nèi)存訪問)傳輸方式,帶寬足夠滿足復(fù)雜場合下的高速數(shù)據(jù)傳輸需求。圖3.9UART接口模塊3.10升壓電路本四軸飛行器的供電電源是通過鋰電池組提供,一般為2節(jié)或3節(jié)18650電池串聯(lián)而成,輸出電壓范圍為6.6V~12.6V不等。但是,無刷直流電機(jī)和飛控主控制器等關(guān)鍵部件大都需要5V的工作電壓。因此,我們在主控制電路與電池之間設(shè)計了一個升壓電路,將電池的輸出電壓升壓和穩(wěn)壓在5V輸出。升壓電路的核心是一款MC34063型號的集成穩(wěn)壓器芯片。MC34063是一種專用的電源控制集成電路,內(nèi)部集成了基本的升壓調(diào)控電路,外圍只需連接幾個外部元器件即可實現(xiàn)升壓和穩(wěn)壓功能。在升壓電路中,采用DC-DC電壓變換的開關(guān)模式控制原理,通過控制電感電流的開關(guān)充電和放電,使輸出電壓升高和穩(wěn)壓在所需的電壓值。MC34063首先將輸入電壓降壓至內(nèi)部基準(zhǔn)源的工作電壓范圍,并通過外部電阻分壓網(wǎng)絡(luò)設(shè)定輸出電壓的目標(biāo)值。然后,它通過內(nèi)部的振蕩器產(chǎn)生一個固定占空比的方波,驅(qū)動外部的功率管芯片(通常選用NPNBi極性結(jié)型功率晶體管)開關(guān)工作。當(dāng)功率管導(dǎo)通時,外接的電感就開始儲存能量,電流逐漸增大;當(dāng)功率管關(guān)斷時,電感反向放電,通過二極管將能量轉(zhuǎn)移到輸出側(cè)的濾波電容上。經(jīng)過一個充放電周期后,輸出電壓就被逐步升高。MC34063內(nèi)置有反饋電阻分壓比較環(huán)路,當(dāng)輸出電壓高于設(shè)定值時,占空比會自動調(diào)小,使輸出電壓保持在設(shè)定值附近的一個小范圍內(nèi)不斷波動。在本設(shè)計中,升壓電路將輸入電壓從6-12V升壓到5V輸出,為飛控主板和電調(diào)等部件供電。MC34063的升壓效率較高,在輕載時可達(dá)90%以上,能有效地利用電池的電量。同時,輸出電壓的紋波噪聲較小,通過適當(dāng)?shù)腖C濾波,可以獲得平滑的直流電源,滿足數(shù)字電路和模擬電路對電源的要求。另外,該電路具有電源反饋控制、耐壓能力強(qiáng)等優(yōu)點,使整個供電電路更加安全穩(wěn)定。圖3.10升壓電路
系統(tǒng)的軟件設(shè)計Keil5軟件介紹Keil5是由德國Keil公司推出的面向ARM系列32位微控制器的集成開發(fā)環(huán)境IDE(IntegratedDevelopmentEnvironment),主要用于開發(fā)和調(diào)試ARMCortex-M、ARM7、ARM9等內(nèi)核的嵌入式應(yīng)用程序。它整合了項目管理、代碼編輯、編譯鏈接、程序仿真調(diào)試等一體化功能。Keil5采用以項目為中心的設(shè)計理念,所有的源文件、目標(biāo)文件、庫文件等均包含在項目中。我們只需創(chuàng)建一個新項目,設(shè)定目標(biāo)芯片型號、工具鏈和調(diào)試接口等基本參數(shù),就可以開始進(jìn)行編碼工作。Keil內(nèi)置了一款功能強(qiáng)大的編輯器,支持代碼高亮、自動縮進(jìn)、折疊顯示等特性,還提供了代碼模板和向?qū)?,可以快速生成?biāo)準(zhǔn)的代碼框架,提高開發(fā)效率。另一個核心組件是編譯器和匯編器。Keil5的C編譯器遵循ANSIC標(biāo)準(zhǔn),支持內(nèi)聯(lián)匯編和針對ARM內(nèi)核的大量優(yōu)化開關(guān),可生成高度優(yōu)化的目標(biāo)代碼;而匯編器也針對Thumb-2指令集進(jìn)行了增強(qiáng),可生成Thumb代碼以節(jié)省存儲空間。此外,Keil還提供了ArmLink的鏈接器和ArmConvert的轉(zhuǎn)換器等工具。Keil5集成了功能強(qiáng)大的CodeWizard向?qū)Ш虲omponentViewer組件瀏覽器,可快速配置單片機(jī)外設(shè)并生成初始化代碼,極大地提升了開發(fā)效率,即使是新手也能較快地上手STM32開發(fā)。在本項目中,我們利用Keil5IDE完成了四軸飛行器控制系統(tǒng)的全部軟件開發(fā)工作。通過該工具生成的HEX文件可直接下載至STM32芯片的Flash中執(zhí)行,也可與Keil自帶的μVision仿真器相連,進(jìn)行在線仿真調(diào)試,觀察程序執(zhí)行過程,快速查找錯誤根源。Keil5強(qiáng)大的集成調(diào)試功能使得軟件的開發(fā)和調(diào)試過程變得前所未有的高效和便捷。軟件流程圖介紹主程序流程圖介紹四軸飛行器控制系統(tǒng)的主程序流程如下圖所示,整個程序從復(fù)位中斷入口開始執(zhí)行,首先進(jìn)行一系列必要的初始化工作,如初始化系統(tǒng)時鐘、配置中斷向量表、設(shè)置串口通信參數(shù)、初始化I/O口狀態(tài)等。初始化完成后,程序會檢查飛行器的解鎖狀態(tài)。只有當(dāng)檢測到用戶輸入了特定的解鎖指令后,程序才會進(jìn)入真正的控制循環(huán)。這一設(shè)計是為了保證飛行器在上電時處于安全的鎖定狀態(tài),防止發(fā)生意外運(yùn)行。一旦解鎖成功,程序?qū)⑾茸x取EEPROM中保存的PID參數(shù)、無線頻率等系統(tǒng)配置參數(shù),加載到內(nèi)存中備用。接著初始化MPU6050傳感器,設(shè)置其工作模式和輸出數(shù)據(jù)速率。然后配置四路電機(jī)的PWM輸出通道,并初始化NRF24L01無線模塊的工作參數(shù)。進(jìn)入主循環(huán)后,程序首先從MPU6050讀取最新的加速度、角速度和溫度原始數(shù)據(jù),并對這些數(shù)據(jù)進(jìn)行濾波、解算等處理,得到飛行器的實時姿態(tài)角度值。接下來,根據(jù)這些姿態(tài)值與目標(biāo)姿態(tài)角度的偏差,通過PID算法計算出需要修正的油門增量值。如果此時接收到遙控器發(fā)來的新的控制指令,程序?qū)⒏鶕?jù)指令對油門、偏航、橫滾、俯仰等量進(jìn)行相應(yīng)的疊加調(diào)整。最終將調(diào)整后的控制量寫入四路電機(jī)的PWM寄存器,使電機(jī)產(chǎn)生與之對應(yīng)的實際轉(zhuǎn)速,進(jìn)而調(diào)整飛行器的姿態(tài)。在整個循環(huán)過程中,程序還需要檢查電壓監(jiān)測電路的狀態(tài),如果電池電壓過低,則會觸發(fā)低電壓報警處理。同時,遙控器的指示燈模塊和飛行器的LED模塊會根據(jù)系統(tǒng)的當(dāng)前狀態(tài)實時更新,為用戶提供明確的狀態(tài)反饋。該主循環(huán)是一個快速執(zhí)行的無限循環(huán),確保飛行控制系統(tǒng)時刻保持工作,實現(xiàn)實時的姿態(tài)檢測和控制修正。只有當(dāng)收到用戶的鎖定指令時,主循環(huán)才會終止執(zhí)行,飛行器進(jìn)入鎖定安全狀態(tài)。圖4.1主程序流程圖按鍵消抖子程序流程圖按鍵是遙控器與飛行器進(jìn)行人機(jī)交互的重要接口,用戶通過按鍵輸入各種控制指令。但由于按鍵存在機(jī)械抖動的特性,在按下和松開過程中,會產(chǎn)生一系列高低電平的干擾脈沖,如果不進(jìn)行消抖處理,就會導(dǎo)致誤操作。因此,我們設(shè)計了一個按鍵消抖子程序,子程序會定期輪詢檢測所有按鍵是否有狀態(tài)變化發(fā)生。如果發(fā)現(xiàn)有按鍵的電平發(fā)生了改變,例如從高電平變?yōu)榈碗娖?,表示可能是有按下按鍵的動作,那么就需要進(jìn)行消抖確認(rèn)。按鍵消抖的原理是通過連續(xù)采樣按鍵狀態(tài)若干次,如果采樣值超過一定閾值,就可以確認(rèn)按鍵的真實狀態(tài)。在本設(shè)計中,我們設(shè)置了20次采樣,只有當(dāng)采樣計數(shù)達(dá)到10次以上時,才判定為按下按鍵的有效動作。因此,在檢測到按鍵電平變化后,子程序會初始化一個計數(shù)器為0,然后以5ms的間隔連續(xù)采樣20次按鍵狀態(tài)。每當(dāng)采樣值與期望狀態(tài)一致時,計數(shù)器就會遞增;否則計數(shù)器就會清零,重新開始采樣。當(dāng)計數(shù)器累計達(dá)到10次以上時,子程序就會確認(rèn)檢測到了一次有效的按鍵動作,并根據(jù)按鍵編號和電平狀態(tài)進(jìn)行相應(yīng)的處理,比如更新按鍵狀態(tài)標(biāo)志位、打包編碼成控制指令等。如果20次采樣之后,計數(shù)器仍未累計到10次,則判定為無效抖動,子程序?qū)⒎艞夁@次按鍵檢測,重新等待下一次電平變化。該按鍵消抖子程序被設(shè)計為一個單獨(dú)的中斷服務(wù)程序,以5ms的定時中斷方式周期性調(diào)用執(zhí)行。我們對按鍵按下和松開時的消抖處理是分開的,有不同的標(biāo)志位進(jìn)行狀態(tài)標(biāo)記。這樣可以正確區(qū)分按鍵的按下和釋放動作,對于組合按鍵的檢測也會更加準(zhǔn)確可靠。圖4.2按鍵消抖子程序流程圖無線子程序流程圖無線通信是四軸飛行器控制系統(tǒng)的核心,是實現(xiàn)遙控器與飛行器之間數(shù)據(jù)交互的關(guān)鍵。在本設(shè)計中,我們選用了NRF24L01作為無線通信模塊,它工作在2.4GHz的ISM頻段,通信距離可達(dá)100米以上。無線子程序在系統(tǒng)初始化時,子程序會對NRF24L01模塊的工作參數(shù)進(jìn)行配置,包括設(shè)置工作頻率、發(fā)射功率、接收通道、接收地址等。這些參數(shù)在遙控器和飛行器兩端需保持一致,以建立無線連接。之后,根據(jù)模塊所在硬件的不同,將NRF24L01設(shè)置為發(fā)送模式或接收模式。在遙控器端,NRF24L01被設(shè)置為發(fā)送模式,周期性地將按鍵狀態(tài)打包后發(fā)送出去。而在飛行器端,NRF24L01被設(shè)置為接收模式,循環(huán)檢查是否有新的遙控指令數(shù)據(jù)包到達(dá)。發(fā)送過程比較簡單,只需要先將數(shù)據(jù)包寫入NRF24L01芯片的TXFIFO,然后使用SPI命令讓芯片進(jìn)入發(fā)送狀態(tài),等待發(fā)送完成即可。值得注意的是,在發(fā)送過程中,NRF24L01自身會自動處理數(shù)據(jù)包的組幀、CRC校驗、自動重發(fā)等機(jī)制,確保數(shù)據(jù)傳輸?shù)目煽啃?。NRF24L01在接收模式下,會不斷搜索空中是否有目標(biāo)接收設(shè)備發(fā)來的數(shù)據(jù)包。一旦發(fā)現(xiàn)符合的接收通道和接收地址,就會自動將數(shù)據(jù)包寫入芯片的RXFIFO。主控制器需要周期性查詢NRF24L01的狀態(tài)寄存器,如果發(fā)現(xiàn)有新的接收數(shù)據(jù),就可以通過SPI讀取RXFIFO中的數(shù)據(jù)包內(nèi)容。在讀取到新的遙控指令后,飛控主控制器會對指令數(shù)據(jù)包進(jìn)行解析,獲取其中的期望油門值、偏航角度等控制量,并將這些量融合到飛行控制的PID環(huán)節(jié)中,最終調(diào)整四個電機(jī)的實際轉(zhuǎn)速輸出。圖4.3無線子程序流程圖
系統(tǒng)的測試軟件調(diào)試軟件調(diào)試是嵌入式系統(tǒng)開發(fā)中一個非常重要的環(huán)節(jié)。由于嵌入式系統(tǒng)運(yùn)行在特定的硬件平臺上,開發(fā)過程無法像普通的PC應(yīng)用程序那樣方便地進(jìn)行人機(jī)交互和實時調(diào)試,因此需要借助專業(yè)的調(diào)試工具來完成這一過程。在本四軸飛行器控制系統(tǒng)項目中,我們使用Keil5集成開發(fā)環(huán)境自帶的uVision調(diào)試器對軟件代碼進(jìn)行了全面的仿真調(diào)試。uVision提供了非常強(qiáng)大的調(diào)試功能,支持在Coresight系統(tǒng)內(nèi)部進(jìn)行實時追蹤和診斷,可以在芯片工作時動態(tài)加載代碼、設(shè)置斷點、監(jiān)控變量、查看數(shù)據(jù)存儲器和外設(shè)寄存器等。在開發(fā)階段我們利用Keil的模擬器對程序進(jìn)行了初步調(diào)試,檢查程序是否能正常運(yùn)行,循環(huán)是否存在死鎖,變量賦值是否正確等。模擬器采用的是Keil自主研發(fā)的高精度指令級模擬技術(shù),可以完整地模擬Cortex-M內(nèi)核的全部指令系統(tǒng),調(diào)試的可靠性和真實性都很高。為了進(jìn)一步提高調(diào)試的效率,我們將KeiluVision連接到ST-Link調(diào)試下載器上,實現(xiàn)了對實際STM32F103芯片的在線仿真調(diào)試。通過JTAG/SWD接口,調(diào)試器可以直接讀寫芯片的內(nèi)存和外設(shè)寄存器,從而實時監(jiān)視和控制程序的執(zhí)行過程。我們在代碼中關(guān)鍵位置設(shè)置了多個斷點,如主循環(huán)入口、中斷服務(wù)入口、關(guān)鍵函數(shù)調(diào)用處等。程序在運(yùn)行至斷點處會自動中止,此時可以查看當(dāng)前的現(xiàn)場數(shù)據(jù),包括CPU寄存器、內(nèi)存變量、調(diào)用堆棧等,極大地方便了錯誤查找和流程分析。除斷點調(diào)試外,uVision還支持單步跟蹤、跳過指令和反匯編代碼等多種調(diào)試方式。我們可以根據(jù)具體需要,選擇不同的調(diào)試模式來完成各種測試和驗證。有了Keil強(qiáng)大的調(diào)試功能支持,使得整個開發(fā)過程變得前所未有的高效和可控。硬件調(diào)試由于系統(tǒng)中包含了多個模擬和數(shù)字電路,這些硬件電路的工作狀態(tài)直接關(guān)系到整體系統(tǒng)的性能表現(xiàn),因此必須對各個硬件模塊進(jìn)行全面的測試和調(diào)試。在本項目硬件調(diào)試過程中,我們主要使用了示波器和邏輯分析儀兩種測試工具。示波器用于分析系統(tǒng)中的模擬信號波形,如電源電壓、傳感器輸出、PWM控制波形等;而邏輯分析儀則用于捕獲數(shù)字電路中的時序、狀態(tài)和通信數(shù)據(jù)流。我們使用示波器測試了電源模塊的輸出波形。將示波器探針分別接到升壓電路的輸入和輸出端,可以觀察到輸入電壓經(jīng)過Buck-Boost電路后被穩(wěn)壓在5V的直流電平。同時,還監(jiān)控了輸出端的紋波和干擾情況,以確保對后級數(shù)字電路的供電符合要求。我們切換到無源式探頭,對PWM控制信號的波形進(jìn)行了捕獲。通過分析PWM的占空比和頻率,驗證了電機(jī)驅(qū)動電路是否能夠按照預(yù)期對電機(jī)的轉(zhuǎn)速進(jìn)行調(diào)節(jié)。在這個過程中,我們還發(fā)現(xiàn)了PWM波形存在的一些畸變問題,通過調(diào)整電路布線解決了這一問題。對于數(shù)字總線電路,如I2C、SPI等,我們則使用了邏輯分析儀來捕獲通信過程中的原始數(shù)據(jù)流。以I2C總線為例,分析儀可以清晰地顯示出起始位、設(shè)備地址、數(shù)據(jù)和應(yīng)答位等關(guān)鍵時序,幫助我們準(zhǔn)確地判斷設(shè)備之間的數(shù)據(jù)傳輸質(zhì)量。利用這一功能,我們排查并修復(fù)了MPU6050傳感器偶爾通信失敗的BUG。我們對無線模塊NRF24L01的通信距離和抗干擾能力進(jìn)行了測試。在調(diào)試階段,我們將兩個模塊靠近測試,并人為加入各種干擾源,觀察能否穩(wěn)定收發(fā)數(shù)據(jù)包;之后,將兩者拉開距離測試通信最大范圍。通過這些測試,確認(rèn)了選用NRF24L01作為無線通信模塊是合理可行的??偟膩碚f,通過示波器和邏輯分析儀這兩種專業(yè)工具的輔助,我們對系統(tǒng)中絕大部分關(guān)鍵硬件電路進(jìn)行了全面徹底的測試和調(diào)試,確保了整個四軸飛行器控制系統(tǒng)的可靠運(yùn)行。調(diào)試結(jié)果分析經(jīng)過前面兩個階段的軟硬件調(diào)試,我們已基本確認(rèn)四軸飛行器控制系統(tǒng)能夠正常工作,滿足了預(yù)期的設(shè)計要求。但在實際的飛行測試中,我們還是發(fā)現(xiàn)了一些值得改進(jìn)和優(yōu)化的細(xì)節(jié)問題,主要體現(xiàn)在以下幾個方面:(1)飛行姿態(tài)的平穩(wěn)性雖然我們的PID控制算法能夠較好地跟蹤期望姿態(tài),但由于各種干擾和噪聲的影響,飛行姿態(tài)仍存在一定的抖動。我們分析認(rèn)為,這與傳感器的抗干擾性能、控制算法的參數(shù)設(shè)置、電機(jī)的響應(yīng)時間等多方面因素有關(guān)。后續(xù)需要對傳感器數(shù)據(jù)的濾波算法、PID參數(shù)以及電機(jī)驅(qū)動電路進(jìn)行優(yōu)化,以進(jìn)一步提高飛行的平穩(wěn)度。(2)通信質(zhì)量和時延目前系統(tǒng)采用的是單向遙控通信模式,即遙控器發(fā)送控制指令,飛行器僅接收執(zhí)行。這樣的架構(gòu)存在一定的時延,以及指令在傳輸過程中的丟包風(fēng)險。為了保證飛控環(huán)節(jié)的實時性和準(zhǔn)確性,我們有必要采用雙向通信模式,在飛行器端定期反饋實時姿態(tài)信息給遙控器,從而縮短控制環(huán)路的延遲,提高通信可靠性。(3)電源管理和續(xù)航雖然我們設(shè)計了升壓電路來適應(yīng)電池電壓下降的情況,但隨著飛行時間的延長,整個系統(tǒng)的功耗會導(dǎo)致電池電量加速消耗。目前的電量檢測方式較為簡單,只是當(dāng)電壓低于某一閾值時點亮指示燈報警,難以準(zhǔn)確預(yù)判飛行器的續(xù)航時間。未
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智慧養(yǎng)老民房管理服務(wù)合同4篇
- 二零二五年度門窗五金件國際貿(mào)易與物流服務(wù)合同4篇
- 北極生態(tài)環(huán)境解讀模板
- 鋼結(jié)構(gòu)立柱施工方案
- 2025年度個人醫(yī)療健康保險分期繳費(fèi)協(xié)議4篇
- 2025年度個人職業(yè)規(guī)劃服務(wù)合同范本4篇
- 2024年信息化系統(tǒng)管理制度
- 貴州打水井施工方案
- 二零二五年度門類安裝工程材料供應(yīng)與安裝合同4篇
- 2024水泥欠款利息減免談判合同范本3篇
- 《色彩基礎(chǔ)》課程標(biāo)準(zhǔn)
- 人力資源 -人效評估指導(dǎo)手冊
- 大疆80分鐘在線測評題
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復(fù)習(xí)必背初中英語單詞詞匯表(蘇教譯林版)
- 《現(xiàn)代根管治療術(shù)》課件
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費(fèi)報銷單
- 2021年上海市楊浦區(qū)初三一模語文試卷及參考答案(精校word打印版)
- 八年級上冊英語完形填空、閱讀理解100題含參考答案
評論
0/150
提交評論