基于STM32的四旋翼飞行器的设计与实现
2014-04-25谢义建陈跃东舒圣焱
谢义建,陈跃东,舒圣焱
(安徽工程大学安徽省电气传动与控制重点实验室,安徽 芜湖 241000)
引 言
四旋翼飞行器是一种配有4个螺旋桨且螺旋桨呈十字形交叉的飞行器。与传统的直升机不同,四旋翼飞行器只能通过改变螺旋桨的速度来实现各种动作。由于它是一种六自由度的垂直起降机,非常适合静态和准静态条件下飞行,所以它在军事和民用领域有广阔的应用[1]。但是四旋翼飞行器只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统,这使得飞行控制器的设计变得非常困难。因此,本文设计了一种基于STM32的四旋翼飞行器,由于STM32具有低功耗、高性能、外设资源丰富、处理速度快、开发效率高并且还可以嵌入实时操作系统等优点,使得四旋翼飞行器的设计变得相对简单[2]。
1 飞行器的工作原理和系统框图
1.1 飞行器的工作原理
四旋翼飞行器通常有两种模式,即十字模式和X模式,其中X模式的结构如图1所示。在四个旋翼的顶端,均匀分布着四个电机,其中同一条直线上的电机旋转方向相同。即:电机1、3按照逆时针方向旋转,电机2、4按照顺时针方向旋转。在空间中,四旋翼飞行器一共具有6个自由度(分别沿着X、Y、Z三轴平移和旋转),规定沿着Z轴正向运动为垂直运动,则其他的五个自由度分别为俯仰运动、偏航运动、滚转运动、前后运动、侧向运动,通过控制4个电机的旋转速度即可控制这六个自由度[3]。例如:(1)垂直运动:在图1中,因为电机1和电机3按照逆时针方向旋转,电机2和电机4按照顺时针方向旋转,所以它们对飞行器自身的反扭矩相互抵消。当同时增加四个电机的旋转速度时,飞行器总的拉力增大,若此时总拉力大于飞行器总重量时,飞行器便离开地面并垂直上升,反之,当同时减小四个电机的旋转速度时,飞行器垂直下降直至平衡落地,因此便实现了沿Z轴的垂直运动。(2)滚转运动:改变电机2、4的旋转速度,并且保持电机1、3的旋转速度不变,飞行器即可绕X轴旋转,实现了滚转运动。在无外界干扰的情况下,当旋翼产生的总拉力等于飞行器的自身总重量时,飞行器保持悬停状态[4]。
1.2 飞行器控制系统的结构框图
图1 X模式飞行器结构示意图
四旋翼飞行器控制系统采用模块化设计,如图2所示,分别由数据采集模块,电源管理模块,控制器模块,串口通信模块,遥控控制模块,电机驱动模块,电机模块等部分组成。其中,数据采集模块由三只传感器组成,负责采集飞行器的姿态信号,并通过I2C总线将数据传送到控制器模块,其中,控制器模块采用了意法半导体公司的STM32F103VET6作为系统的主控芯片,STM32系列是基于ARM Cortex-M3内核的处理器,低功耗,处理速度快,最高工作频率达到72 MHz。同时,遥控控制模块将通过RC接口,发送遥控信号给控制器,控制器接收到姿态信号和遥控信号后,快速进行姿态的解算和处理,产生PWM方波信号给电机驱动模块,从而驱动电机旋转,改变电机的转速,控制飞行器的姿态;整个系统由电源管理模块提供电力[5]。
图2 控制系统的结构框图
2 飞行控制器的硬件设计
2.1 数据采集模块
为了提高系统的稳定性和测量精度,本模块选用MPU-6050,采用多传感器设计。MPU-6050是全球首例9轴运动处理传感器,集成了3轴MEMS陀螺仪,3轴加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C接口连接一个第三方的数字传感器。本方案将这个I2C接口与三轴数字罗盘HMC5883L相连接,扩展之后就可以通过其 I2C接口输出一个9轴的信号,其中陀螺仪输出飞行器的姿态角速率(偏航角速率、俯仰角速率、横滚角速率),加速度计分别输出X、Y、Z轴加速度,数字罗盘配合加速度计为飞行器导航提供可靠的方向信息。同时,采用了MEAS(瑞士)公司推出的一款高分辨率气压传感器MS5611,分辨率可达10 cm,它通过I2C总线与控制器STM32进行通信,实现飞行器的气压定高。具体硬件电路如图3所示[6]。
图3 数据采集模块硬件电路
2.2 电源管理模块
电源管理模块主要负责给各个模块提供电能,本系统使用了3S、2200 mAh、25C的11.1 V锂电池作为总电源,它通过电调将11.1 V转换成5 V电压,并送给四个电机和飞行控制器,飞行控制器再通过电源芯片AMS1117-3.3 V,将 5 V 转换为 3.3 V,送给处理器STM32F103VET6和串口通信模块。具体硬件电路如图4 所示[7]。
图4 电源管理模块硬件电路
2.3 串口通信模块
飞行器在静止状态下,需要与PC上位机进行通信来配置飞行器的参数,串口通信模块可实现这一功能。它采用美信公司的电平转换芯片MAX3232,MAX3232采用专有低压差发送器输出级,利用双电荷泵在3.0 V至5.5 V电源供电时能够实现真正的RS-232性能,器件仅需四个 0.1 μF的外部小尺寸电荷泵电容。MAX3232确保在120 kbps数据速率的同时保持RS-232输出电平,具体硬件电路如图5所示。
图5 串口通信模块硬件电路
2.4 电机及电机驱动模块
针对飞行器设计,选用了无刷电机,由于飞行器的姿态控制需要快速响应,所以针对无刷电机,使用了无刷电调。利用STM32的PWM通道输出1~2 ms的方波脉冲,重复频率为20~50 Hz,输出到电调的油门线(控制线)。由于是单向电调,1 ms表示0%的油门,2 ms表示100%的油门,从而实现电机转速的控制。
2.5 遥控控制模块
本模块选用了天地飞七通道遥控器,同时将接收机上的油门、副翼、升降舵、方向舵通道分别与飞行控制器上的RC接口连接,通过接收机,操纵遥控器上的摇杆便可实现飞行器的姿态控制[8]。
2.6 飞行控制器硬件实物
根据以上的硬件描述,所设计的飞行控制器实物如图6所示。
3 飞行控制器的软件设计流程
飞行控制器的软件程序事是在MDK4.12开发环境下采用C语言编写,其流程如图7所示[9]。程序的开始先对整个系统的硬件进行初始化以及完成各传感器的校准,并判断系统是否正常。若系统正常,则从各传感器获取姿态数据,并读取遥控器信号,控制器再解算姿态信号、解码遥控信号、控制电机转速等步骤,直到遥控发送停机信号结束飞行。
4 实验结果
图6 飞行控制器实物
图7 飞行控制器的软件流程图
本文所设计的飞行器能完成几种基本的姿态控制,并能负载摄像头进行航拍,如图8所示,在风速4~5级、相对湿度70%的环境下进行航拍,所得航拍图片表明,飞行器在空中能进行稳定的航拍,抖动小,抗干扰能力强。
图8 航拍图片
5 结束语
本文设计了一种基于STM32的四旋翼飞行器,它的高性能、低功耗、处理速度快等特点克服了以往使用单片机作为控制器的缺点,实验证明,本系统的软硬件设计合理,基本能完成飞行器各种姿态的控制;同时,它也为后续的研究提供了一个平台,可以在这基础上对系统建模、姿态解算、滤波算法等方面作进一步的研究。
[1]梁延德,程 敏,何福本,等.基于互补滤波器的四旋翼飞行器姿态解算[J].传感器与微系统,2011,30(11):56-59.
[2]刘乾,孙志锋.基于ARM的四旋翼无人飞行器控制系统[J].机电工程,2011,28(10):1237-1240.
[3]侯永锋,陆连山,高尚德,等.基于PD算法的四旋翼飞行器控制系统研究[J].机械科学与技术,2012,31(3):359-362.
[4]杨明志,王敏.四旋翼微型飞行器控制系统设计[J].计算机测量与控制,2008,16(4):485-490.
[5]郭晓鸿,杨忠,杨成顺,等.一种基于STM32的四旋翼飞行器控制器[J].应用科技,2011,38(7):35-40.
[6]吕 强,郭善亮,王冬来.基于DSP四旋翼飞行器姿态控制系统硬件设计[J].计算机与数学工程,2011,39(7):144-146.
[7]刘峰,吕强,王国胜,等.四旋翼飞行器姿态控制系统设计[J].计算机测量与控制,2011,19(3):583-585.
[8]庞庆霈,李家文,黄文浩.四旋翼飞行器设计与平稳控制仿真研究[J].电光与控制,2012,19(3):51-55.
[9]李 宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.