APP下载

基于ARM的μC OS-III的四旋翼飞行器的设计

2020-06-11余愿

科技创新导报 2020年5期

余愿

摘   要:在ARM平台设计了一种基于μC/OS- III的四旋翼飞行器的控制系统,该系统选用STM32F103系列微控制器,采用MP1584EN降压转换器保证主控的供电稳定,PWM(Pulse Width Modulation)信号的占空比控制四个电机的转速,以陀螺仪传感器MPU6050为惯性测量单元,并通过互补滤波算法对获取到的数据进行滤波处理,提高数据精度,实现了四旋翼飞行器在空中的平稳飞行和姿态控制。

关键词:四旋翼飞行器  PWM  互补滤波算法

中图分类号:V249                                   文献标识码:A                       文章编号:1674-098X(2020)02(b)-0006-03

四旋翼飞行器与传统飞行器相比,具有结构简单、载重能力强、成本低等优点,通过对四翼上的四个电机的控制就能实现垂直升降、空中翻滚、悬空停止的功能。四旋翼飞行器的结构比较灵活,可以小型化使其用于航拍、军事侦察,同时又因能避免复杂的空气动力学问题,可以大型化应用于远程物资运输、农业播种,地质勘测等。四旋翼飞行器既能完成在室外高空的任务,又能实现室内狭小空间的飞行,摆脱了传统飞行器对任务环境的苛刻要求,具有非常广泛的应用前景。

1  飞行原理

四旋翼飞行器机械结构简单,通过控制四个电机带动旋翼的旋转变化产生升力,系统输入量包括四个电机的转速,输出量是在X、Y、Z三个方向上平移和旋转的六个自由度,飞行姿态由电机速度控制实现[1]。

根据四旋翼飞行器飞行方式不同,按结构分为X型和十字型两种。在这两种飞行模式下,其动力配置方式都是一样的;飞行器对向的电机转向相同,另一对向的电机转向相反,即相邻的电机转向总是相反的,目的是为了抵消电机运行时产生的陀螺效应。本次设计采用X型结构,示意图如图1所示。

(1)垂直运动:垂直运动即飞行器高度控制,控制四个电机的输出功率来改变螺旋桨产生的拉力,当拉力大于飞行器重力时,飞行器可垂直上升,反之,飞行器垂直下降,当拉力与重力相等时,飞行器悬空停止[2]。

(2)俯仰运动:如图2所示,电机M1、M2降低转速,M3、M4增加转速,飞行器前后旋翼产生的升力不同,飞行器由于不平衡力矩存在就会沿着中心轴线翻转,飞行器表现为做俯仰运动。同时,飞行器旋翼倾斜后其拉力产生了水平的一个分量,飞行器表现为朝前方飞行。同理,电机M1、M2转速上升,飞行器即向后运动。

(3)横滚运动:与俯仰运动原理相同,电机M1、M3增加转速,M2、M4降低转速,飞行器呈横滚状态向左飞行,反之亦然。

(4)偏航运动:在旋翼过程中的空气阻力所产生的扭矩与旋转方向是相反的,所以在动力布局上是一组电机正转,一组电机反转,从而抵消四个电机扭矩。若要实现偏航运动,需调整四个电机的转速,使其扭矩不平衡。如图3所示,电机M1、M3逆时针旋转,增加其转速,降低M2、M4电机的转速,飞行器就会沿着轴心顺时针旋转以克服扭矩不平衡,此时飞行器表现出航向发生了变化。其运动示意图如图3所示。

2  四旋翼飞行器硬件电路设计

2.1 飞行器主控系统设计

本设计将搭载实时操作系统,同时涉及到一些姿态转换算法,滤波算法以及其他浮点运算处理,对芯片存储和运算要求较高。因此,四旋翼飞行器的飞控核心单元选择了STM32F103ZET6作为微控制器,它是一款高性能、低成本的嵌入式产品,芯片基于ARM Cortex-M3内核,采用2.0V-3.6V的直流电压供电。

飞控系统硬件结构如图4所示。

2.2 电源模块

四旋翼飞行器系统主控芯片供电电压为3.3V,传感器供电电压为5V,而系统电源采用一块11.1V的3S动力锂电池,因此需要设计两种供电电路。系统采用MP1584EN降压转换器将11.1V的电池电压降到5V电压,采用AMS1117-3.3V电源稳压芯片,AMS1117是一个正向低压降稳压器,内部集成过热保护和限流电路,保证了主控的供电稳定。MP1584EN电路原理图如图5所示。

2.3 姿态测量模块

姿态测量模块采用了带有三轴加速度计、陀螺仪以及电子罗盘的IMU惯性测量模块;分别为三轴加速度计、陀螺仪传感器MPU6050,以及电子罗盘HMC5883L;MPU6050模块之间可直接通过I2C接口获取姿态数据,将两者的传感器数据进行融合解算就可以得到姿态数据。姿态传感器的电路原理图如图6所示。

2.4 遥控模块

出于安全考虑,本设计采用成品2.4G七通道遥控器WFT07,遥控器是基于PPM(Pulse Position Modulation)编码原理实现的;发射机发送一帧周期为20ms,包含多个周期为2ms,高电平时间为1~2ms的PWM波,7个通道就共有7路PWM波,所以一帧数据就有7个通道的数据信息,接收机接收到PPM编码信号,通过移位寄存器解码出7个通道的PWM信号,飞控再通过定时器的输入捕获功能通过I/O管脚来捕获每个通道的PWM信号,解析出遥控器的打舵量,实现对飞行器的操控。

3  飞行器的软件设计

3.1 系统任务调度

本系统在μC/OS-III下設计了五个任务:LED控制任务,姿态传感器数据采集与姿态解算任务,遥控信号捕获任务,电机输出控制任务,与上位机数据通信任务,采用了优先级抢占式任务方式进行调度[3]。

系统上电后先初始化μC/OS-III,运行系统初始任务将飞行器上锁,进入等待遥控解锁信号。飞行器数据采集任务将读取各传感器数据,并对数据进行数字滤波处理,然后进行姿态解算,得到当前姿态数据并通过互斥信号量将解算完成数据的消息传递给电机输出控制任务,电机输出控制任务中包含了PWM信号输出与PID算法控制;LED控制任务用来监测系统运行状态,通过不同的闪烁方式表示不同的状态;与上位机数据通信任务负责将飞行器的姿态数据,解析出的遥控数据,计算出的各个电机的输出值以及飞行器状态信息通过串口发送到上位机供调试分析。

3.2 飞控姿态数据处理

姿态传感器测量得到的数据主要是由三轴加速度计和三轴陀螺仪组成的一组多传感器数据,为了得到能够反映飞行器相对于地理坐标系的姿态数据,还需要将采集到的数据进行融合处理得到欧拉角。从传感器直接获取的数据由于温漂会产生偏差,数据经过滤波处理后再进行姿态解算,可以减少累积误差。

互补滤波算法是针对陀螺仪的高频特性和加速度计的低频特性进行较好融合的一种解决方法。互补滤波对具有高频噪声的加速度计进行数字低通滤波,对具有低速积分漂移效应的陀螺仪数据进行数字高通滤波,两种滤波器的滤波系数之和为1,最后可以得到一个比较准确的估计值,相对于单传感器的数据,通过互补滤波结合两种传感器得到的姿态数据更为准确。互补滤波的算法结构如图7所示。

当把陀螺仪和加速度计的数据输入即可得到四旋翼飞行器的姿态信息,经过互补滤波后的姿态数据融合了加速度计的低频数据和陀螺仪的动态数据,由此可见,互补滤波器具有结构简单、计算量小的特点,十分适合当前的嵌入式系统。将互补滤波用计算机能够处理的方式描述如下:

其中Angle为数据融合后的姿态角,α为陀螺仪置信系数,Angle_gyro为陀螺仪积分后的输出角度,β为加速度计置信系数,Angle_acc为加速度计结算后输出的角度[3]。

3.3 接收机信号捕获

接收机接收来自遥控的2.4G信号,并解码为PWM信号,通过使用定时器的输入捕获功能将捕获到PWM信号。

飞控主控通过定时器捕获到接收机的PWM信号,由于采用的是成品遥控,各个厂家对于无线接收机的输出PWM信号有统一的行业标准,即输出的PWM波为周期20ms,高电平有效范围为0.9~2.1ms的波形;通过测量捕获到的PWM波的高低电平的时间,来判断当前通道的遥控器打舵量。

本设计采用的STM32的定时器可以配置为输入捕获模式,这种定时器模式将通过I/O管脚自动捕获PWM波的上升沿与下降沿。

先将定时器配置为输入捕获模式,在t1时刻,捕获到PWM的上升沿,定时器触发中断,定时器TIMx_CCR1和TIMx_CCR2复位后开始计数,在t2时刻,捕获到PWM的下降沿,定时器触发中断,获取此时定时器的TIMx_CCR1寄存器数值CNT1,在t3时刻,定时器再次捕获到了PWM的上升沿,定时器触发中断,此时获取到另一个TIMx_CCR2寄存器的值CNT2,至此定时器完成了一次PWM波的捕获。

PWM波高电平时间=CNT1*计数周期T                    (2)

PWM波的周期=CNT2*计数周期T                           (3)

PWM波的占空比=PWM高电平时间/PWM波的周期 (4)

3.4 PWM电机控制信号输出

本設计采用电子调速器驱动无刷电机,由定时器输出可供电子调速器识别的PWM波的占空比来控制电机转速。本设计用到的电子调速器为OPTO 18A电子调速器,兼容信号频率为30~450Hz;通过配置STM32的一个定时器为PWM输出模式,能够产生四路独立的PWM波形。

为了实现PWM方波信号的输出,需要对定时器TIMx的寄存器进行配置,设置重装载寄存器TIMx_ARR的值,计算方式为:

TIMx的频率=时钟/(TIMx_ARR-1)                          (5)

通过配置捕获/比较寄存器TIMx_CCRx的值来确定PWM波形的占空比,其计算方式为:

占空比=(TIMx_CCRx/TIMx_ARR)                          (6)

定时器启动后,CNT开始计数,并与CCRx寄存器的值相比较,当CCRx值

4  系统调试

调试四旋翼飞行器首先需要调试姿态传感器的输出数据是否正常,根据模块手册进行具体的配置,再MCU读取数据分析数据。同时需要编写上位机通信部分的代码,测试与上位机的通信是否正常,能否正确解析出四旋翼下位机发出的各种数据。

在姿态传感器获取正常的姿态数据后,还需利用上位机的波形进行显示分析。经过一系列的参数调试,最终飞行器能够稳定的起飞,在空中平稳飞行,同时可以通过遥控器控制飞行器在三个维度上的姿态。

参考文献

[1] 余单奕,嵇佳辉,郝立果.四旋翼飞行平台控制系统设计[J]. 电子技术应用,2016(5):29-32.

[2] 程煦,郭珊珊,陈华宾.基于STM32单片机的四旋翼飞行器设计[J]. 电子世界, 2017(3):121-124.

[3] 符秀辉,赵茂鑫,周文俊.基于互补滤波算法的移动机器人姿态检测[J]. 测控技术,2015(6): 31-33.