新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32設計的四軸飛行器飛控系統

        基于STM32設計的四軸飛行器飛控系統

        作者: 時間:2016-09-05 來源:網絡 收藏

          NRF2.4G為采用3.3V供電無線模塊,系統采用與單片機相同的電源網絡對其供電,同時加入0.1UF電容進行濾波確保模塊正常工作,無線模塊的具體原理圖連接如圖5所示。

        本文引用地址:http://www.104case.com/article/201609/296521.htm

          

         

          圖5 飛控板無線模塊原理圖

          飛控板的驅動系統采用的是四個分布對稱十字交叉的高速空心杯電機,電機的驅動開關部分采用N溝道增強型場效應晶體管進行控制,通過修改對應引腳上的PWM信號來進行開關MOS管實現電機運行開與關,從而實現電機運轉速度的調節。電機1、2、3、4分別采用的定時器2的通道0、通道1、通道2和通道3的PWM進行控制。電機1的控制端連接PA0,電機2的控制端采用PA1,電機2的控制端采用PA2,電機3的控制端采用PA3控制,電機的驅動原理圖如圖6所示。

          

         

          圖6 飛控板電機驅動原理圖

          2.3遙控板電路設計

          遙控板主控單元通過SPI總線驅動2.4G無線模塊,通過8位并口驅動1602液晶顯示,通過ADC輸入引腳對搖桿和電池電量進行采集,通過引腳驅動三極管開關驅動蜂鳴器提示。遙控板的核心設計是搖桿模擬數據進行采集模塊、NRF2401無線模塊等設計。

          采用單片機ADC1的通道4、通道5、通道6和通道7進行搖桿模擬數據進行采集并轉換為數字量,分別連接到PA4、PA5、PA6和PA7引腳,并且加入濾波電容減少雜質信號的影響。遙控板搖桿輸入原理圖設計如圖7所示。

          

         

          圖7 遙控板搖桿輸入原理圖設計

          遙控板采用NRF2.4G模塊的驅動采用STM32的自帶外設SPI2進行驅動,各個功能引腳的連接如表2所示。

          

         

          NRF2.4G模塊采用3.3V供電,在供電端口外加0.1UF濾波存儲電容確保無線系統的穩定性,的具體原理圖連接8所示。

          

         

          圖8 遙控板無線模塊原理圖

          3、的軟件設計

          的軟件設計主要包括飛控板軟件的設計和遙控板軟件的設計。整體軟件在MDK環境下采用C語言編寫,采用ST-LINK仿真器對程序進行調試與下載。

          3.1飛控板系統軟件設計

          飛控程序的主要設計思想是開機對無線模塊的初始化、MPU6050的初始化、PWM電機初始化。隨后對整個系統IMU繼續零偏處理,隨后等待進入解鎖信息的傳入。飛控采用定時器中斷的方式,在中斷中進行對時間的處理,每次中斷計次標志就會自增,根據不同的中斷積累即不同時間的間隔分別處理優先級不同的任務。飛控系統程序設計流程圖如圖9所示。

          

         

          圖9 飛控系統程序設計流程圖

          飛控系統每0.5毫秒中斷一次,每次中斷就會檢查一次無線模塊數據的接收,確保飛控系統的控制信息的實時性。每兩次中斷即1毫秒讀取一次IMU單元的數據,通過濾波算法獲得較為準確的系統加速度、角速度的原始數據。每四次中斷即2毫秒通過IMU的原始數據計算下當前飛控板系統的姿態,然后結合遙控端的目標姿態,根據兩者的差值通過PID控制算法進行對各個電機的調速控制。每200次中斷即100毫秒,飛控系統會采集一次電池電壓,然后把電池電壓發送給遙控板,用來高速操作人員當前電壓的大小。

          MPU6050作為系統的慣性測量單元,是整個系統正常運行基礎。MPU6050的驅動總線為IIC方式,為了程序的方便性本系統選用PB10和PB11模擬IIC來驅動。IMU讀取出來的數據只是最簡單的加速度、陀螺儀角速度的原始數據,需要通過進一步的處理才能得到本系統想要的姿態角度。飛控板姿態結算流程圖如圖10所示。

          根據處理過后的MPU數據來獲得當前的姿態,具體的姿態獲取理論上是根據各個角度的積分得到當前的系統姿態歐拉角。本系統的設計實現是采用四元數算法對MPU6050最濾波后的數據進行計算得到最終的歐拉角。

          整個飛控系統的運行動作是通過調整飛控姿態來實現的,本系統設計在當前姿態的基礎上,根據接收到的遙控器的目標姿態對空心杯電機進行基于PID算法的PWM控制調速,從而實現飛控系統的各種基本運動。飛控板會對系統慣性測量單元傳感器的原始數據進行濾波,然后對濾波后的數據進行實時結算,最后根據遙控板發送來的目標信息進行計算出電機的控制增量,最后根據PID控制算法對電機進行控制輸出,飛控姿態控制流程圖如圖11所示。

          

         

          圖10 飛控板姿態結算流程圖

          

         

          圖11 飛控板姿態控制流程圖

          3.2遙控板系統軟件設計

          遙控板的作用就是把操作人員的操作動作轉化成信號傳給飛行控制板,同時將一些控制信息和飛控板傳回來的信息進行實時的顯示和處理。飛控板搖桿數據的采集用到了STM32的ADC功能STM32F103xx增強型產品內嵌2個12位的模擬/數字轉換器(ADC),每個ADC共用多達16個外部通道,可以實現單次或掃描轉換。而且STM32的ADC可以采用DMA通道,這樣可以進一步的節省硬件資源,加快系統實時性。采用SPI1驅動NRF無線模塊,進行與飛控板的數據通信,遙控板系統軟件流程如圖12所示。

          

         

          圖12 遙控板軟件流程圖

          本系統采用STM32的ADC1的通道4、通道5、通道6和通道7進行搖桿模擬數據進行采集,ADC和DMA的配置代碼如下:

          ADC_Configuration(); //ADC 功能配置

          DMA_Configuration(); //DMA 功能配置

          下面是ADC和DMA的啟動和時能代碼如下:

          ADC_SoftwareStartConvCmd(ADC1, ENABLE); //啟動 ADC1 轉換

          DMA_Cmd(DMA1_Channel1, ENABLE); //啟動 DMA 通道

          采用STM32外設SPI1驅動NRF2.4G模塊,SPI初始化代碼如下:

          Spi1_Init();

          采用無線模塊的通道40進行通信,2401初始化函數如下:

          Nrf24l01_Init(MODEL_RX2,40); //通道40

          2.4G無線模塊NRF2401的接收函數如下:

          Nrf_Check_Event(); //讀取NRF2401數據

          通過2401將控制信號發送,發送函數如下:

          NRF_TxPacket_AP(NRF24L01_TXDATA_RC,32); //將控制信號發給四軸

          4、結論

          本文描述了一個簡易系統的設計實現,整個方案分為遙控控制板各飛行控制板兩部分,通過2.4G無線模塊進行控制通信,飛控系統采用IMU系統獲取姿態信息根據反饋控制算法進行電機控制從而實現飛行控制。本系統飛控板采用一體設計使得系統簡單、緊湊,遙控板采用搖桿輸入使系統控制體驗良好,最終實現飛行器的基本運動。實踐證明該四軸飛行器飛行穩定、可靠,取得了較好效果。


        上一頁 1 2 下一頁

        關鍵詞: STM32 四軸飛行器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 金湖县| 湟源县| 陇川县| 东阳市| 进贤县| 鸡西市| 崇左市| 万荣县| 咸丰县| 琼结县| 新营市| 永新县| 聂拉木县| 响水县| 延寿县| 崇义县| 麻城市| 富阳市| 九江市| 吴桥县| 长白| 独山县| 苍梧县| 明水县| 曲沃县| 沽源县| 吐鲁番市| 渭源县| 海阳市| 正蓝旗| 柳州市| 伊金霍洛旗| 安西县| 嘉定区| 罗山县| 施秉县| 伊宁县| 乌拉特后旗| 利辛县| 泸溪县| 潮安县|