新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32設(shè)計(jì)的四軸飛行器飛控系統(tǒng)

        基于STM32設(shè)計(jì)的四軸飛行器飛控系統(tǒng)

        作者: 時(shí)間:2016-09-05 來(lái)源:網(wǎng)絡(luò) 收藏

          NRF2.4G為采用3.3V供電無(wú)線模塊,系統(tǒng)采用與單片機(jī)相同的電源網(wǎng)絡(luò)對(duì)其供電,同時(shí)加入0.1UF電容進(jìn)行濾波確保模塊正常工作,無(wú)線模塊的具體原理圖連接如圖5所示。

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

          

         

          圖5 飛控板無(wú)線模塊原理圖

          飛控板的驅(qū)動(dòng)系統(tǒng)采用的是四個(gè)分布對(duì)稱十字交叉的高速空心杯電機(jī),電機(jī)的驅(qū)動(dòng)開(kāi)關(guān)部分采用N溝道增強(qiáng)型場(chǎng)效應(yīng)晶體管進(jìn)行控制,通過(guò)修改對(duì)應(yīng)引腳上的PWM信號(hào)來(lái)進(jìn)行開(kāi)關(guān)MOS管實(shí)現(xiàn)電機(jī)運(yùn)行開(kāi)與關(guān),從而實(shí)現(xiàn)電機(jī)運(yùn)轉(zhuǎn)速度的調(diào)節(jié)。電機(jī)1、2、3、4分別采用的定時(shí)器2的通道0、通道1、通道2和通道3的PWM進(jìn)行控制。電機(jī)1的控制端連接PA0,電機(jī)2的控制端采用PA1,電機(jī)2的控制端采用PA2,電機(jī)3的控制端采用PA3控制,電機(jī)的驅(qū)動(dòng)原理圖如圖6所示。

          

         

          圖6 飛控板電機(jī)驅(qū)動(dòng)原理圖

          2.3遙控板電路設(shè)計(jì)

          遙控板主控單元通過(guò)SPI總線驅(qū)動(dòng)2.4G無(wú)線模塊,通過(guò)8位并口驅(qū)動(dòng)1602液晶顯示,通過(guò)ADC輸入引腳對(duì)搖桿和電池電量進(jìn)行采集,通過(guò)引腳驅(qū)動(dòng)三極管開(kāi)關(guān)驅(qū)動(dòng)蜂鳴器提示。遙控板的核心設(shè)計(jì)是搖桿模擬數(shù)據(jù)進(jìn)行采集模塊、NRF2401無(wú)線模塊等設(shè)計(jì)。

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

          

         

          圖7 遙控板搖桿輸入原理圖設(shè)計(jì)

          遙控板采用NRF2.4G模塊的驅(qū)動(dòng)采用STM32的自帶外設(shè)SPI2進(jìn)行驅(qū)動(dòng),各個(gè)功能引腳的連接如表2所示。

          

         

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

          

         

          圖8 遙控板無(wú)線模塊原理圖

          3、的軟件設(shè)計(jì)

          的軟件設(shè)計(jì)主要包括飛控板軟件的設(shè)計(jì)和遙控板軟件的設(shè)計(jì)。整體軟件在MDK環(huán)境下采用C語(yǔ)言編寫,采用ST-LINK仿真器對(duì)程序進(jìn)行調(diào)試與下載。

          3.1飛控板系統(tǒng)軟件設(shè)計(jì)

          飛控程序的主要設(shè)計(jì)思想是開(kāi)機(jī)對(duì)無(wú)線模塊的初始化、MPU6050的初始化、PWM電機(jī)初始化。隨后對(duì)整個(gè)系統(tǒng)IMU繼續(xù)零偏處理,隨后等待進(jìn)入解鎖信息的傳入。飛控采用定時(shí)器中斷的方式,在中斷中進(jìn)行對(duì)時(shí)間的處理,每次中斷計(jì)次標(biāo)志就會(huì)自增,根據(jù)不同的中斷積累即不同時(shí)間的間隔分別處理優(yōu)先級(jí)不同的任務(wù)。飛控系統(tǒng)程序設(shè)計(jì)流程圖如圖9所示。

          

         

          圖9 飛控系統(tǒng)程序設(shè)計(jì)流程圖

          飛控系統(tǒng)每0.5毫秒中斷一次,每次中斷就會(huì)檢查一次無(wú)線模塊數(shù)據(jù)的接收,確保飛控系統(tǒng)的控制信息的實(shí)時(shí)性。每?jī)纱沃袛嗉?毫秒讀取一次IMU單元的數(shù)據(jù),通過(guò)濾波算法獲得較為準(zhǔn)確的系統(tǒng)加速度、角速度的原始數(shù)據(jù)。每四次中斷即2毫秒通過(guò)IMU的原始數(shù)據(jù)計(jì)算下當(dāng)前飛控板系統(tǒng)的姿態(tài),然后結(jié)合遙控端的目標(biāo)姿態(tài),根據(jù)兩者的差值通過(guò)PID控制算法進(jìn)行對(duì)各個(gè)電機(jī)的調(diào)速控制。每200次中斷即100毫秒,飛控系統(tǒng)會(huì)采集一次電池電壓,然后把電池電壓發(fā)送給遙控板,用來(lái)高速操作人員當(dāng)前電壓的大小。

          MPU6050作為系統(tǒng)的慣性測(cè)量單元,是整個(gè)系統(tǒng)正常運(yùn)行基礎(chǔ)。MPU6050的驅(qū)動(dòng)總線為IIC方式,為了程序的方便性本系統(tǒng)選用PB10和PB11模擬IIC來(lái)驅(qū)動(dòng)。IMU讀取出來(lái)的數(shù)據(jù)只是最簡(jiǎn)單的加速度、陀螺儀角速度的原始數(shù)據(jù),需要通過(guò)進(jìn)一步的處理才能得到本系統(tǒng)想要的姿態(tài)角度。飛控板姿態(tài)結(jié)算流程圖如圖10所示。

          根據(jù)處理過(guò)后的MPU數(shù)據(jù)來(lái)獲得當(dāng)前的姿態(tài),具體的姿態(tài)獲取理論上是根據(jù)各個(gè)角度的積分得到當(dāng)前的系統(tǒng)姿態(tài)歐拉角。本系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)是采用四元數(shù)算法對(duì)MPU6050最濾波后的數(shù)據(jù)進(jìn)行計(jì)算得到最終的歐拉角。

          整個(gè)飛控系統(tǒng)的運(yùn)行動(dòng)作是通過(guò)調(diào)整飛控姿態(tài)來(lái)實(shí)現(xiàn)的,本系統(tǒng)設(shè)計(jì)在當(dāng)前姿態(tài)的基礎(chǔ)上,根據(jù)接收到的遙控器的目標(biāo)姿態(tài)對(duì)空心杯電機(jī)進(jìn)行基于PID算法的PWM控制調(diào)速,從而實(shí)現(xiàn)飛控系統(tǒng)的各種基本運(yùn)動(dòng)。飛控板會(huì)對(duì)系統(tǒng)慣性測(cè)量單元傳感器的原始數(shù)據(jù)進(jìn)行濾波,然后對(duì)濾波后的數(shù)據(jù)進(jìn)行實(shí)時(shí)結(jié)算,最后根據(jù)遙控板發(fā)送來(lái)的目標(biāo)信息進(jìn)行計(jì)算出電機(jī)的控制增量,最后根據(jù)PID控制算法對(duì)電機(jī)進(jìn)行控制輸出,飛控姿態(tài)控制流程圖如圖11所示。

          

         

          圖10 飛控板姿態(tài)結(jié)算流程圖

          

         

          圖11 飛控板姿態(tài)控制流程圖

          3.2遙控板系統(tǒng)軟件設(shè)計(jì)

          遙控板的作用就是把操作人員的操作動(dòng)作轉(zhuǎn)化成信號(hào)傳給飛行控制板,同時(shí)將一些控制信息和飛控板傳回來(lái)的信息進(jìn)行實(shí)時(shí)的顯示和處理。飛控板搖桿數(shù)據(jù)的采集用到了STM32的ADC功能STM32F103xx增強(qiáng)型產(chǎn)品內(nèi)嵌2個(gè)12位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個(gè)ADC共用多達(dá)16個(gè)外部通道,可以實(shí)現(xiàn)單次或掃描轉(zhuǎn)換。而且STM32的ADC可以采用DMA通道,這樣可以進(jìn)一步的節(jié)省硬件資源,加快系統(tǒng)實(shí)時(shí)性。采用SPI1驅(qū)動(dòng)NRF無(wú)線模塊,進(jìn)行與飛控板的數(shù)據(jù)通信,遙控板系統(tǒng)軟件流程如圖12所示。

          

         

          圖12 遙控板軟件流程圖

          本系統(tǒng)采用STM32的ADC1的通道4、通道5、通道6和通道7進(jìn)行搖桿模擬數(shù)據(jù)進(jìn)行采集,ADC和DMA的配置代碼如下:

          ADC_Configuration(); //ADC 功能配置

          DMA_Configuration(); //DMA 功能配置

          下面是ADC和DMA的啟動(dòng)和時(shí)能代碼如下:

          ADC_SoftwareStartConvCmd(ADC1, ENABLE); //啟動(dòng) ADC1 轉(zhuǎn)換

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

          采用STM32外設(shè)SPI1驅(qū)動(dòng)NRF2.4G模塊,SPI初始化代碼如下:

          Spi1_Init();

          采用無(wú)線模塊的通道40進(jìn)行通信,2401初始化函數(shù)如下:

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

          2.4G無(wú)線模塊NRF2401的接收函數(shù)如下:

          Nrf_Check_Event(); //讀取NRF2401數(shù)據(jù)

          通過(guò)2401將控制信號(hào)發(fā)送,發(fā)送函數(shù)如下:

          NRF_TxPacket_AP(NRF24L01_TXDATA_RC,32); //將控制信號(hào)發(fā)給四軸

          4、結(jié)論

          本文描述了一個(gè)簡(jiǎn)易系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn),整個(gè)方案分為遙控控制板各飛行控制板兩部分,通過(guò)2.4G無(wú)線模塊進(jìn)行控制通信,飛控系統(tǒng)采用IMU系統(tǒng)獲取姿態(tài)信息根據(jù)反饋控制算法進(jìn)行電機(jī)控制從而實(shí)現(xiàn)飛行控制。本系統(tǒng)飛控板采用一體設(shè)計(jì)使得系統(tǒng)簡(jiǎn)單、緊湊,遙控板采用搖桿輸入使系統(tǒng)控制體驗(yàn)良好,最終實(shí)現(xiàn)飛行器的基本運(yùn)動(dòng)。實(shí)踐證明該四軸飛行器飛行穩(wěn)定、可靠,取得了較好效果。


        上一頁(yè) 1 2 下一頁(yè)

        關(guān)鍵詞: STM32 四軸飛行器

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 定兴县| 拉萨市| 江陵县| 贵定县| 余姚市| 莎车县| 苍溪县| 雅安市| 和硕县| 景谷| 乌苏市| 宁国市| 丹巴县| 十堰市| 罗甸县| 韶关市| 辰溪县| 彭泽县| 二连浩特市| 皋兰县| 宾阳县| 获嘉县| 冀州市| 灵川县| 齐齐哈尔市| 融水| 淮安市| 宁陕县| 罗源县| 渭源县| 沭阳县| 犍为县| 特克斯县| 威远县| 开远市| 格尔木市| 大同市| 清徐县| 昌黎县| 炎陵县| 梅州市|