《武汉工程大学学报》  2017年01期 83-90   出版日期:2017-03-29   ISSN:1674-2869   CN:42-1779/TQ
基于实时操作系统的小型四轴飞行器设计


四轴飞行器是一种比较新型化的飞行器,目前国际上对四轴飞行器的研究比较热门,它在民用与军事领域都拥有十分广阔的应用前景. 四轴飞行器的灵活性主要体现在能够在空中自由悬停和快速移动两个方面. 与传统的直升飞机相比,他的机械结构简单,因此成本较低;操控方便,因此稳定性较高[1]. 四轴飞行器除了可用于航拍之外,还有诸如大气气象数据采集、运送物资等方面的应用[2]. 针对四轴飞行器的姿态控制问题,学者们提出了不同的控制算法,例如自适应控制方法、针对无人机的不确定性和非线性问题设计的DI/QFT控制器等. 本设计在解决四轴飞行器的控制方面主要使用PID控制算法,并结合实验目标对样机进行建模仿真,同时使用地面站上位机软件进行飞行姿态仿真,验证其飞行的可靠性与稳定性[3]. 姿态测量所采用的是三轴陀螺仪和三周加速度计相结合的方式完成,将上述两传感器测得数据传给主控模块进行姿态解算得到滚动角、俯仰角、偏航角来分析飞行器的实时姿态. 在确保硬件电路正常功能的情况下,解决了部分电磁兼容问题. 考虑到成本等综合因素,微控制器使用的是STM32F103CB单片机;为保证控制的实时性,软件设计用了嵌入式实时操作系统RTX[4]. 实现飞行器对操作动作的迅速响应(响应时间小于20 ms)、准确(角度变差在±5°以内),高度控制误差低于(30 cm),设计利用2.4 GHz频率的无线通信技术实现飞行器与地面站之间的双向通信,控制飞行器飞行轨迹,有效控制范围50 m;自行搭载一块360 mAh可充电电池(可额外扩充一块),正常情况下能不间断连续飞行5 min~7 min. 采用STM32F103CB作为微控制器,其中飞行器还包括陀螺仪、各种传感器(气压计MS5611、电子罗盘HMC5883L)、无线通信模块(NRF24L01)、动力系统模块. 1 系统的总体设计民用四轴飞行器的发展是伴随着单片机资源的丰富和一系列新型传感器的问世而出现的. 因为不需要调整旋翼与飞行器之间的角度,4个螺旋桨与电机采用直接相连的结构. 布局方面常有“十字形”布局和“?字型”布局,四轴飞行器通过调整4个电机的转速来完成自身姿态的调整[5]. 本设计使用一款成熟的STM32单片机作为主控芯片,使用陀螺仪对其状态参数进行采集,使用无线收发芯片完成与外界实时数据通信,使用RTX嵌入式实时操作系统实现四旋翼飞行器的软件设计方案. 飞行器总体设计框图如图1所示. 2 主要硬件电路设计2.1 硬件总设计框架与硬件资源分配飞行器的整个控制系统包括电源模块、姿态数据采集模块(包括陀螺仪、气压计、电子罗盘)、无线通信模块、旋翼空心杯电机、主控制器及接口与扩展等部分[6]. 其中核心的控制器模块主要包括一块STM32F103CB单片机,由意法半导体公司设计出品,其对比起廉价的C51系列单片机来说有非常丰富的外设资源,包括4个标准定时器、3个串口通信端口、2个SPI通信端口,以及2个12位高速A/D转换. 根据主控模块所需完成的任务进行资源分配:分别控制4个无刷电机驱动;以IIC总线通信和陀螺仪(MPU6050)、电子罗盘(HMC5883L)进行通信的数据获取端和时钟提供端;使用的是硬件SPI总线通信与红外模块(NRF24L01)通信引脚. 2.2 电源模块稳定的电流是任何控制系统正常运行的前提条件;对于四轴飞行器,还需要为电机的正常工作提供大功率的电源保障,同时由于使用电池供电,功耗、续航时间以及电池的重量都需要考虑[7]. 此外为了区分模拟电路部对地电压及数字电路部分对地电压,使用2个XC6206做三端稳压电源芯片[8]. 其中J7为电池插座,电源模块电路如图2所示. 2.3 姿态测量模块姿态测量模块是四轴飞行器的一个非常重要的模块,由3个传感器协同工作完成. 飞行姿态主要依靠三轴加速度计、三轴陀螺仪和电子罗盘共同完成;气压传感器的主要作用是获取温度和压力值,之后由微控制器计算出飞行器的海拔高度[9]. 其中,三轴加速度计和陀螺仪使用的是InvenSense公司的6轴MPU6050芯片如图3所示. 电子罗盘则使用Honeywell公司生产的HMC5883L型号磁阻计,如图4所示. 根据压力值可计算出飞行器所处的海拔高度,同时使用测得温度对计算结果进行补偿修正(海拔越高,气压越低,温度越低),气压计是EMAS公司出品的MS5611数字气压传感器,其外围电路如图5所示. 2.4 无线通信控制模块在调试阶段,可以利用无线通信控制模块将飞行器运行过程中的关键参数传回地面站以供分析[10]. 在实际操作中,利用自定义的控制协议,遥控器可以通过NRF24L01传输控制命令控制4个旋翼. 通信模块电路如图6所示. 2.5 飞行器主控模块主控模块核心部件是一块微控制器(Micro controller?Unit,MCU),这块MCU在绝大多数的情况下直接决定飞行器的各种性能.在实时系统的任务调度下,MCU实时执行大量任务:读取Sensor数据[11]、以此数据为依据进行控制量计算、以该计算结果为依据控制电机等等.因此,在选择四轴飞行器的MCU时必须兼顾较高的主频以保证运算、控制的实时性,同时尽量降低MCU上的功耗以达到更长的续航时间;除此以外还应预留一定数量的IO口,以确保该设计在未来具有一定的可扩展空间(添加摄像头、GPS定位系统等设备).因此挑选了意法半导体公司的STM32F103作为核心芯片。该芯片基于ARM Cortex-M3架构,工作频率最高达72 MHz.飞行器主控模块电路如图7所示.2.6 动力系统模块动力系统模块主要由驱动电路和电机组成,考虑到大小、重量、成本、电压匹配,选择直径为7 mm、长度为20 mm空心杯电机. 每个电机的重量为3.4 g,工作电压为3.3 V至4.2 V,工作电流在3.3 V时空转电流130 mA,堵转电流1.2 A. 其中J1为电机电源插座,电机电路如图8所示. 3 系统软件设计系统软件主要通过C语言对STM32F103微控制器进行编程. 实现微控制器对各传感器模块测量数据的采集,并将采集到的数据进行姿态融合后得到准确的位置信息,将这些位置信息送入PID控制程序获得控制信息,利用这些信息控制各旋翼提升力的调节[12]. 经过对各个嵌入式实时操作系统的横向比较,最终采用意法半导体公司自带的RTX实时操作系统[13]. 主要利用RTX系统的任务调度器在各任务之间相互切换;包括获取各传感器数据信息的任务、各算法任务、通信任务、电机控制任务. 在RTX任务调度器的介入下控制飞行器稳定运行. 下位机软件架构如图9所示. 3.1 飞行器各驱动软件设计为了保证整个系统在RTOS软件下运行,选择 RTX 实时操作系统. 按照硬件资源的需求,把所有需要处理的过程细分为具有不同优先级的任务,虽然同一时间点仍然只能运行一个任务,但是任务间的切换更合理,因此整个控制系统的效率得到了相应的提高,具体表现为提升了飞行器的反应速度与稳定性. 软件工作流程应为:首先启动硬件初始化、操作系统初始化、设置好任务调度时间,然后创建其他需执行的任务,系统调度方式配置为抢占型内核,其优点是:一旦系统中优先级最高的任务准备就绪后,无论当前系统是否空闲都立即去执行优先级最高的任务. 这样做可以确保系统的实时性,实现关中断的最大时间为1 μs. 用信号量、事件等进行通信. 使四轴飞行器具有快速反应、易扩展的特点. 软件流程图如图10所示. 3.2 硬件初始化与系统初始化硬件初始化部分负责完成微控制器和各传感器之间互相通信,底层的总体初始化(调用自己的库函数),其功能有两部分:一是设置主频时钟,同时对将要使用的外围设备,如串口、IIC、EEPROM等进行初始化[14];二是RTX系统的内核启动代码的初始化.底层初始化之后对RTX系统进行初始化,配置任务堆栈大小、设置不同任务优先级高低、新建任务句柄、新建任务之间通信所需的信号量、邮箱等,以及为了保证系统数据不会出错所需要的互斥量. 随着各个任务被一一创建,RTX系统介入程序的运行过程;即从所有准备就绪的任务中挑选优先级最高的开始执行. 此时,对比无操作系统的大循环类型软件,实时系统的优势开始慢慢显现出来. 并且涉及的外围设备资源越丰富,这种优势会越显著. 3.3 下位机软件任务设计程序从主函数开始运行,随后各个任务被一一创建,创建的任务主要有NRF24L01的DMA方式通信任务,这个任务用于获取同步各个传感器的数据;电机控制任务,用于控制电机让飞行器保持空中航线;算法任务主要实现姿态融合与PID控制[15]. 当姿态测量任务启动之后,陀螺仪和电子罗盘的数据将被MCU用来进行姿态解算,流程图如图11所示. 在完成硬件及系统初始化之后启动RTX系统,创建所有任务,包括各传感器数据的获取、滤波及四元数算法、PID控制算法以及无线模块的通信任务;因为陀螺仪的动态特性比较高,所以对陀螺仪测量出的角速度进行积分,可得到旋转角度,该计算值是姿态解算的重要数据之一. 以加速度计的测量数据作为基准对陀螺仪长期累积下来的角速度积分误差进行补偿(因为加速度计瞬时测量值不如陀螺仪可靠). 电子罗盘测量的是地球磁场,由此数据可测算出飞行器的偏航角. 4 实验测试结果图12是基于RTOS的四轴飞行器焊接成形后的底板图,尺寸为8 cm×8 cm. 因为动力系统是四轴飞行器飞行的关键,所以要实时控制电机转速,此刻STM32读取无线接收机的PWM信号,获取遥控器的指挥信号,以此控制直流电机的速度;此时每个周期定时器不断更新捕获比较寄存器的数值,从而达到更新PWM占空比的效果. 经过多次试验,最终选择控制频率200 Hz、分频系数13 μs;自动重载寄存器数值为999. 通过匿名地面站上位机软件对四轴飞行器的飞行状态进行仿真,获得飞行器运行的时候传感器的数据,并且将飞行器工作的实时数据通过NRF24L01无线收发芯片接收,再由串口传输给主机,用于分析飞行器的实时姿态和各旋翼电机状态等关键数据. 在保持四轴飞行器和上位机通信的情况下,使用逻辑分析仪检测IIC通信器件的SCL时钟线和SDA数据线,可以得到飞行器对遥控器指令的响应时间周期以及每次通信的数据之间的时间间隔,如图13所示. 在使用RTX系统时的情况下,通信时钟一直是间隔96 μs左右,时钟信号非常稳定. 其中姿态更新速度和姿态角稳定性的误差均在10%以内,海拔高度的准确度和通信误差均在5%以内.测试的结果如表1和表2所示,可以看出在有RTX系统的情况下,飞行器的控制响应和通信周期的稳定性比没有RTX系统的“裸版”工作情况更优秀,达到了设计目的. 经过姿态测量得到当前姿态量与控制量比较得到PID的调节偏差,由于PID的固有特性导致P、I、D的3个参数的不固定性,因此需要对飞行器的P、I、D 这3个参数进行调节,如图14所示. 使用遥控器和飞行器做联合调试过程,修改PID的参数从而改变各轴向升力,达到维持飞行器工作状态平稳的目的. 在四轴飞行器的设计制作与调试过程中同样遇到其他一些问题,例如四轴飞行器的机身材料选定如何能更加抗摔,桨叶材料选定,STM32定时器的控制,PCB的电磁兼容等等. 5 结 语本设计采用 RTX 嵌入式实时操作系统和多任务机制,实现了对飞行器的无线控制,使其具有很好的实时性. 采用 PID 算法编程对飞行器进行姿态控制;使用联合调试的方法调整PID参数. 飞行器可在 50 m 内稳定飞行, 续航时间为 5 min~7 min, 飞行器的 IIC 通信时钟间隔非常稳定(间隔为96 μs,误差小于 1%),提高了姿态更新速率(比无操作系统的飞行器提高了10 ms),并且使飞行器的控制精准度得到了提升(姿态角误差小于10%),达到了预想的效果.