<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            引言

          本文引用地址:http://www.ex-cimer.com/article/201609/296521.htm

            是一種結(jié)構(gòu)緊湊、飛行方式獨(dú)特的垂直起降式飛行器,與普通的飛行器相比具有結(jié)構(gòu)簡(jiǎn)單,故障率低和單位體積能夠產(chǎn)生更大升力等優(yōu)點(diǎn),在軍事和民用多個(gè)領(lǐng)域都有廣闊的應(yīng)用前景,非常適合在狹小空間內(nèi)執(zhí)行任務(wù)。因此四旋翼飛行器具有廣闊的應(yīng)用前景,吸引了眾多科研人員,成為國(guó)內(nèi)外新的研究熱點(diǎn)。

            本設(shè)計(jì)主要通過利用慣性測(cè)量單元(IMU)姿態(tài)獲取技術(shù)、PID電機(jī)控制算法、2.4G無線遙控通信技術(shù)和高速空心杯直流電機(jī)驅(qū)動(dòng)技術(shù)來實(shí)現(xiàn)簡(jiǎn)易的四軸方案。整個(gè)系統(tǒng)的設(shè)計(jì)包括飛控部分和遙控部分,飛控部分采用機(jī)架和控制核心部分一體設(shè)計(jì)增加系統(tǒng)穩(wěn)定性,遙控部分采用模擬搖桿操作輸入使操作體驗(yàn)極佳,兩部分之間的通信采用2.4G無線模塊保證數(shù)據(jù)穩(wěn)定傳輸。飛行控制板采用高速單片機(jī)作為處理器,采用含有三軸陀螺儀、三軸加速度計(jì)的運(yùn)動(dòng)傳感器MPU6050作為慣性測(cè)量單元,通過2.4G 無線模塊和遙控板進(jìn)行通信,最終根據(jù)PID控制算法通過PWM方式驅(qū)動(dòng)空心杯電機(jī)來達(dá)到遙控目標(biāo)。

            1、系統(tǒng)總體設(shè)計(jì)

            系統(tǒng)硬件的設(shè)計(jì)主要分要遙控板和飛控板兩個(gè)部分,遙控板采用常見羊角把游戲手柄的外形設(shè)計(jì),控制輸入采用四向搖桿,無線數(shù)據(jù)傳輸采用2.4G無線模塊。飛控板采用控制處理核心和機(jī)架一體的設(shè)計(jì)即處理器和電機(jī)都集成在同一個(gè)電路板上,采用常規(guī)尺寸能夠采用普通玩具的配件。系統(tǒng)軟件的設(shè)計(jì)同樣包括遙控板和飛控板兩部分的工作,遙控板軟件的設(shè)計(jì)主要包括ADC的采集和數(shù)據(jù)的無線發(fā)送。飛控板的軟件的設(shè)計(jì)主要包括無線數(shù)據(jù)的接收,自身姿態(tài)的實(shí)時(shí)結(jié)算,電機(jī)PID增量的計(jì)算和電機(jī)的驅(qū)動(dòng)。整個(gè)系統(tǒng)包括人員操作遙控端和飛行器控制端,遙控端主控制器通過ADC外設(shè)對(duì)搖桿數(shù)據(jù)進(jìn)行采集,把采集到的數(shù)據(jù)通過2.4G無線通信模塊發(fā)送至飛控端。飛控板的主要工作就是通過無線模塊進(jìn)行控制信號(hào)的接收,并且利用慣性測(cè)量單元獲得實(shí)時(shí)系統(tǒng)加速度和角速度原始數(shù)據(jù),并且最終解算出當(dāng)前的系統(tǒng)姿態(tài),然后根據(jù)遙控板發(fā)送的目標(biāo)姿態(tài)和當(dāng)姿態(tài)差計(jì)算出PID電機(jī)增量,然后通過PWM驅(qū)動(dòng)電機(jī)進(jìn)行系統(tǒng)調(diào)整來實(shí)現(xiàn)飛行器的穩(wěn)定飛行。系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示。

            

           

            圖1 系統(tǒng)總體設(shè)計(jì)框圖

            2、的硬件設(shè)計(jì)

            2.1主控單元選擇

            從成本和性能綜合考慮,飛控板和遙控板的主控單元都采用意法半導(dǎo)體公司的增強(qiáng)型高速單片機(jī)F103作為主控的,STM32F103是基于的ARM 32位的Cortex-M3內(nèi)核架構(gòu),穩(wěn)定工作頻率可達(dá)72MHz,是一個(gè)具有豐富資源、高速時(shí)鐘的精簡(jiǎn)指令的微處理器。STM32F103擁有從64K或128K字節(jié)的閃存程序可選存儲(chǔ)器,高達(dá)20K字節(jié)的SRAM,2個(gè)12位模數(shù)轉(zhuǎn)換器多達(dá)16個(gè)輸入通道,7通道DMA控制器,多達(dá)80個(gè)快速I/O端口,串行單線調(diào)試(SWD)和JTAG接口調(diào)試模式,多達(dá)7個(gè)定時(shí)器,多達(dá)2個(gè)I2C接口(支持SMBus/PMBus),多達(dá)3個(gè)USART接口(支持ISO7816接口,LIN,IrDA接口和調(diào)制解調(diào)控制),多達(dá)2個(gè)SPI接口(18M位/秒),CAN接口(2.0B主動(dòng)),USB2.0全速接口。主控單元原理圖如圖2所示。

            

           

            圖2 主控單元原理圖

            2.2 飛控板電路設(shè)計(jì)

            飛控板的核心設(shè)計(jì)是MPU6050測(cè)量傳感器、NRF2401無線模塊以及飛控板電機(jī)驅(qū)動(dòng)等模塊的設(shè)計(jì)。飛控系統(tǒng)的慣性測(cè)量單元采用MPU6050作為測(cè)量傳感器,MPU6050的驅(qū)動(dòng)方式采用IIC接口,時(shí)鐘引腳SCL連接到STM32的PB10,數(shù)據(jù)引腳連接到STM32的PB11引腳,數(shù)據(jù)中斷引腳連接到PB5,為了增強(qiáng)驅(qū)動(dòng)能力在每個(gè)引腳上都加入了10K的上拉電阻,原理圖的設(shè)計(jì)如圖3所示。

            

           

            圖3 飛控板慣性測(cè)量單元原理圖

            相對(duì)于其他模塊電系統(tǒng)也是比較重要的部分,飛控系統(tǒng)采用3.7V高放電倍率鋰電池進(jìn)行供電。主控芯片供電部分和IMU傳感器部分采用各自獨(dú)立的LDO進(jìn)行供電,這樣確保了系統(tǒng)的穩(wěn)定性和IMU傳感器數(shù)據(jù)采集的準(zhǔn)確性,穩(wěn)壓直流電源模塊的原理圖設(shè)計(jì)如圖4所示。

            

           

            圖4 飛控板電源穩(wěn)壓原理圖

            飛控板與遙控板數(shù)據(jù)的通信同樣采用的是基于2.4G頻段的NRF2401模塊,確保了數(shù)據(jù)的穩(wěn)定傳輸。STM32的SPI1外設(shè)對(duì)2.4G模塊進(jìn)行操作驅(qū)動(dòng),引腳的連接如下表1所示。

            


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

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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();