Board logo

标题: 采用STM32设计的四轴飞行器飞控系统 [打印本页]

作者: 520503    时间: 2015-5-4 23:35     标题: 采用STM32设计的四轴飞行器飞控系统

关键字:四轴飞行器   STM32   MPU6050   2.4G无线模块   PID  
1、引言
四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通的飞行器相比具有结构简单,故障率低和单位体积能够产生更大升力等优点,在军事和民用多个领域都有广阔的应用前景,非常适合在狭小空间内执行任务。因此四旋翼飞行器具有广阔的应用前景,吸引了众多科研人员,成为国内外新的研究热点。

本设计主要通过利用惯性测量单元(IMU)姿态获取技术、PID电机控制算法、2.4G无线遥控通信技术和高速空心杯直流电机驱动技术来实现简易的四轴方案。整个系统的设计包括飞控部分和遥控部分,飞控部分采用机架和控制核心部分一体设计增加系统稳定性,遥控部分采用模拟摇杆操作输入使操作体验极佳,两部分之间的通信采用2.4G无线模块保证数据稳定传输。飞行控制板采用高速单片机STM32作为处理器,采用含有三轴陀螺仪、三轴加速度计的运动传感器MPU6050作为惯性测量单元,通过2.4G无线模块和遥控板进行通信,最终根据PID控制算法通过PWM方式驱动空心杯电机来达到遥控目标。

2、系统总体设计

系统硬件的设计主要分要遥控板和飞控板两个部分,遥控板采用常见羊角把游戏手柄的外形设计,控制输入采用四向摇杆,无线数据传输采用2.4G无线模块。飞控板采用控制处理核心和机架一体的设计即处理器和电机都集成在同一个电路板上,采用常规尺寸能够采用普通玩具的配件。系统软件的设计同样包括遥控板和飞控板两部分的工作,遥控板软件的设计主要包括ADC的采集和数据的无线发送。飞控板的软件的设计主要包括无线数据的接收,自身姿态的实时结算,电机PID增量的计算和电机的驱动。整个四轴飞行器系统包括人员操作遥控端和飞行器控制端,遥控端主控制器STM32通过ADC外设对摇杆数据进行采集,把采集到的数据通过2.4G无线通信模块发送至飞控端。飞控板的主要工作就是通过无线模块进行控制信号的接收,并且利用惯性测量单元获得实时系统加速度和角速度原始数据,并且最终解算出当前的系统姿态,然后根据遥控板发送的目标姿态和当姿态差计算出PID电机增量,然后通过PWM驱动电机进行系统调整来实现飞行器的稳定飞行。系统的总体设计框图如图1所示。



图1 系统总体设计框图


2、四轴飞行器的硬件设计

2.1主控单元选择

从成本和性能综合考虑,飞控板和遥控板的主控单元都采用意法半导体公司的增强型高速单片机STM32F103作为主控的,STM32F103是基于的ARM 32位的Cortex-M3内核架构,稳定工作频率可达72MHz,是一个具有丰富资源、高速时钟的精简指令的微处理器。STM32F103拥有从64K或128K字节的闪存程序可选存储器,高达20K字节的SRAM,2个12位模数转换器多达16个输入通道,7通道DMA控制器,多达80个快速I/O端口,串行单线调试(SWD)和JTAG接口调试模式,多达7个定时器,多达2个I2C接口(支持SMBus/PMBus),多达3个USART接口(支持ISO7816接口,LIN,IrDA接口和调制解调控制),多达2个SPI接口(18M位/秒),CAN接口(2.0B主动),USB2.0全速接口。主控单元原理图如图2所示。



图2 主控单元原理图
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]        李尧. 四旋翼飞行器控制系统设计[D]. 大连:大连理工大学, 2013.
[2]        谭浩强. C程序设计教程[M]. 北京:清华大学出版社, 2010.
[3]        刘火良. STM32库开发实战指南[M]. 北京:机械工业出版社, 2013.
[4]        白志刚. 自动调节系统解析与PID整定[M]. 北京:化学工业出版社, 2012.
[5]        朱君. 四旋翼无人飞行器控制系统设计及控制方法研究[D]. 内蒙古:内蒙古科技大学, 2012.
[6]        曾勇. 四旋翼飞行器容错控制系统设计与实现[D]. 成都:电子科技大学, 2013.
[7]        宋佳佳. 小型四旋翼飞行器实验平台设计[D]. 武汉:华中科技大学, 2013.
[8]        刘军. 例说STM32[M]. 北京:北京航空航天大学出版社, 2011.
[9]        张瑾等. 电路设计与制板Protel 99SE入门与提高[M]. 北京:人民邮电出版社, 2007.
[10]        蒙博宇. STM3自学笔记[M]. 北京:北京航空航天大学出版社, 2012.
[11]        刘金琨. 先进PID控制MATLAB仿真[M]. 第3版. 北京:电子工业出版社, 2011.
[12]        霍罡等. 可编程序控制器模拟量及PID算法应用案例[M]. 北京:高等教育出版社, 2013.





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0