基于STM32的多轴飞行器系统设计
2023-06-15黄传翔
黄传翔
摘要:多轴飞行器是一种无人航空载具,因可垂直起降、飞行姿态稳定、操控灵活而著称,在军事、民用等领域都有广阔的应用前景。文章以四轴飞行器的控制系统为研究对象,阐述了四轴飞行器的结构与飞行原理,通过对飞行器两种姿态解算算法的对比,最终选用互补滤波算法。在飞行器的硬件设计方面,对系统主要模块进行选型并设计外部电路。在软件方面,设计了控制程序流程图以及姿态结算算法和PID控制算法的流程图。测试结果表明,该系统达到了预期的设计功能。
关键词:多轴飞行器;PID控制;STM32
中图分类号:TP368 文献标志码:A
0 引言
多轴飞行器是伴随现代微电子技术而发展起来的一种无人航空载具,是一种具有两个旋翼轴以上的旋翼航空器,因可垂直起降、飞行姿态稳定、操控灵活而著称。该飞行器通过每个轴末端的电动机转动来带动旋翼,从而产生上升动力。其旋翼一般为偶数值,如四轴、六轴、八轴等。
1 四轴飞行器的结构与飞行原理
1.1 四轴飞行器的结构
四轴飞行器的螺旋桨应对称安装,分别在飞行器机体的前方、后方、左方、右方。这4个螺旋桨的水平面要处在同一高度,而且螺旋桨的直径和螺距要相同。用于提供动力的4个电机要采用相同规格,安装于轴翼的顶端。其他设备及控制器安装在整个支架的中心。最常见的四轴飞行器结构有十字型和X型,由于X型结构不遮挡视线,本研究采用X型结构。
1.2 四轴飞行器飞行原理
为了抵消四轴飞行器自旋现象,将其中一组螺旋桨设计成同方向转动,而另一组螺旋桨设置成反方向转动。但若螺旋桨均为同型号,当一组正向转动、一组反向转动时,飞行器的上升推力和下降压力也相互抵消,影响飞行器的飞行。为了解决这个问题,采用正反桨结构,即改变桨叶迎风面,使反向旋转时能提供升力以供飞行器升空[1]。
2 四轴飞行器的姿态表示方式
2.1 坐标系的建立
研究飞行器的姿态通常使用坐标系分析。本设计将地球表面在小范围内视为完全水平平面,按照右手笛卡儿坐标系建立参考坐标系。X轴指向正东,Y轴指向正北,Z轴垂直于地面指向天空。将飞行器水平放置,机头指向正东,对机体也建立坐标系,使机体坐标系x′轴、y′轴、z′轴同参考坐标系的X轴、Y轴、Z轴重合,方向一致。
2.2 欧拉角表示方式
欧拉角主要用来表示四轴飞行器的机体相对于参考坐标系所旋转的角度,用俯仰角θ、翻滚角Φ、偏航角ψ表示。按照欧拉旋转的相关定理,只要经过三次旋转,就能够让机体坐标系旋转至跟参考坐标系重合的部位,也可以旋转至飞行器平衡姿态的位置。欧拉角的姿态矩阵为所有坐标变化所产生的旋转矩阵乘积。
2.3 欧拉角的万向节锁死问题
用欧拉角表示物体的空间姿态最为直观,但在某种特殊情况下,欧拉角将失效,形成万向节锁死。在正常状态下,机体的3个轴相互独立,旋转互不影响,俯仰、翻滚、偏航为不同的动作。但若选择π/2作为俯仰角,会造成改变翻滚角或偏航角时,都丢失一个表示维度,出现万向节锁死。为解决这个问题,引入四元数表示方式。
2.4 四元数转变成欧拉角的表示方式
四元数在无人机姿态控制惯性导航系统中得到广泛应用[2]。它属于一种超级形态下的复数。其定义:q=q0+q1i+q2j+q3k。利用四元数可以对欧拉角进行计算:
俯仰角公式:θ=arcsin2(q0q1-q2q3)(1)
翻滚角公式:=atan22(q0q1+q2q3)q20-q21-q22+q23(2)
偏航角公式:ψ=atan22(q0q1+q2q3)q20+q21-q22-q23(3)
通过把四元数转化成欧拉角,对飞行器飞行姿态进行表示,加快了运算速度,避免了万向节锁死问题。
2.5 四轴飞行器的姿态解算算法
姿态解算解决飞行器在地球坐标系中的姿态问题,也叫姿态分析。姿态解算是根据多个惯性测量模块(陀螺仪、加速度计、罗盘等)获取的数据相互校正,从而解算出飞行器的空中姿态,所以也叫作IMU数据融合。本设计采用的IMU有加速度计和陀螺仪两类。常用的姿态解算算法有卡尔曼滤波算法和互补滤波算法。
2.5.1 卡尔曼滤波算法
卡尔曼滤波算法数学公式复杂,递归是卡尔曼滤波的关键,解决了传统滤波噪声大的问题。該算法较为精准,在大型飞行器中广泛使用。
2.5.2 互补滤波算法
针对加速度计和陀螺仪的误差特点,本研究引入互补滤波算法。加速度计数值进行低通滤波后消除高频抖动,排除因电机振动造成的数据干扰。陀螺仪数值进行积分后加入高频滤波,抵消零点漂移[3]。其流程如图1所示。
假设加速度计对角度的测量结果为a,陀螺仪经积分后对角度的测量结果为b,分别用公式表达:
a=x+u(4)
b=x+v(5)
式中:u是高频时的噪声,v是低频时的干扰音。通过互补滤波姿态算法,选择函数:F1(s)+F2(s)=1,F1(s)为低通滤波器,F2(s)为高通滤波器,从而得出x状态下的传递函数为X^(s)=F1(s)a+F2(s)b=X(s)+F1(s)u(s)+F2(s)v(s)。X(s)代表全部通过的信号,u和v信号无法全部通过。由于X(s)可以全部通过,所以该状态下的滤波器也叫作无损滤波器。
本设计中,互补滤波姿态算法用以下公式表示:
angle_X=A·(angle_(X-1)+gyro·dt)+(1-A)·acc(6)
angle_X为测量结果融合后值,A为互补系数,angle_(X-1)为上个策略结果融合的值,gyro为陀螺仪所测数值,acc为加速度计所测数值,dt为积分时间。
A表示陀螺仪和加速度计的权重,通常大于0.9。本文设计了实验:将飞行器水平固定于地面,逐渐增大电机转速,分别记录陀螺仪和加速度计获得的角度值,同各种取值互补系数所计算的融合数值进行比较。实验中,互补系数A为0.9时,融合后的数值没有漂移,但有明显高频振动;互补系数A为0.99时,融合后的数值无明显高频振动,但在中期会有漂移。经过多次实验,将互补系数A设定为0.93最合适。
2.6 四轴飞行器的PID控制
在自动控制领域,PID控制器属于信息反馈部件。它能够按照一定的历史数据以及出现差值的概率,对系统输入值进行调整,提高系统的稳定性。本文使用串级PID控制器。通过这种控制器,可以提高控制效率,缩短时间常数。在设计时使用角度跟角速度串联控制,形成PID控制回路。
本文分析了3种PID控制形式。首先是理想的PID控制。该控制形式对输入信号存在阶跃变化,会在控制信号产生脉冲。其次是针对过程变数进行微分控制的PID,阶跃变化仍会通过比例项转换为控制信号,但微分项对此有一定的抑制效果。最后是针对过程变数进行微分及比例控制的PID,可以完全避免控制信号的不连续性,控制信号有更少的剧烈变化[4]。综合分析,本文采用针对过程变数进行微分控制的PID控制器。
3 四轴飞行器主要模块硬件设计
四轴飞行器的硬件设计主要由微控制器模块、传感器模块、无线通信模块、电源模块、电机驱动模块5部分构成。其微控制器使用STM32单片机。传感器模块使用MPU6050传感器,该类型传感器可以解决传统加速度、角速度传感器间的轴间差问题,且集成性好。无线接收模块使用nRF24L01,这种芯片可以有效地进行无线信号传输。电源模块使用SP6205稳压器,该稳压器静态电流低、压差低。电机驱动模块使用SI2302型MOS管驱动电机。
3.1 微控制器
经过对比市面上的几款微控制器,如表1所示。本设计采用意法半导体公司的STM32F103C8T6微控制器。
3.2 无线通信模块的设计
本设计选用nRF24L01 2.4G无线射频芯片,作为四轴飞行器的遥控器无线传输。其工作于2.4~2.5 GHz频段,传输速率可达2 Mbit/s。其载波监测功能保证了在WLAN干扰下的可靠通信,高速的频率
切换时间减少了与蓝牙等跳频系统出现互相干扰的可能。经过测试,使用PCB天线,室内环境下传输距离为20m,室外环境可达到30 m,能够满足设计要求。无线模块电路如图2所示。采用SPI接口与STM32进行通信,分别连接STM32硬件SPI接口PA1,PA11-15引脚。
3.3 电源模块设计
本文采用低压差稳压器SP6205,如图3所示。只需要一个接在外部的电容进行旁通,就可以低噪音输出,其内部具有过流保护和过热关断设施。该稳压器可以满足各模块的电压需求,确保飞行器稳定飞行。
3.4 驱动模块设计
本设计选取了有刷空心杯电机,其结构为无铁芯转子,具有效率高、旋转惯量小、响应迅速等优点,调速只需改变PWM占空比即可。经测算,其工作电流为500 mA,STM32无法直接驱动,需要设计电机驱动模块。图4为电机驱动电路原理,采用PWM信号控制MOS管SI2302通断来驱动电机运转,其中二极管IN5817起保护作用。
4 四轴飞行器软件系统设计
4.1 软件控制流程
飞行器的控制程序流程如图5所示。通電后,MCU对系统时钟和各模块进行初始化,在每个控制周期内,读取遥控控制信号,然后通过传感器获得机体姿态信号[5]。将两者融合比较,计算出偏差,通过PID控制算法,计算出电机各自的转速,最后通过调节PWM占空比的方法改变电机转速,从而实现飞行姿态同遥控信号相一致的效果。
4.2 姿态解算程序
通过获取加速度传感器和角速度传感器的数值,将欧拉角转换为四元数,融合数据解算出飞行器的飞行姿态,再将四元数转换回欧拉角,其流程如图6所示。
5 四轴飞行器的测试
本设计完成后,经过多次实验,记录下样机的相关性能参数。样机质量:空机重30 g,带电池重量43 g。样机续航时间:约7 min。样机电池充电时长:约30 min。样机控制距离:最远约15 m。其中,调节好的PID参数值,如表2所示。通过飞行试验,四轴飞行器样机能够保持良好的飞行状态,也具备一定的控制精度。
6 结语
本文分析了四轴飞行器控制原理,提出了姿态解算的重要性,选择更适合的四元数表示方式,以避免欧拉角表示方式的万向节锁死问题,选用了互补滤波算法和串级PID控制器。在完成四轴飞行器的硬件和软件设计后进行整机测试,飞行平稳,达到预期效果,但受限于电池容量,滞空时间较短。同样受限于 无线功率,遥控距离有待于今后进一步改进。
参考文献
[1]张仲俊,汪材印.基于STM32单片机的四轴飞行器飞行系统设计[J].集宁师范学院学报,2017(6):27-32.
[2]蔡安江,刘凯峰,郭师虹,等.基于四元数衍生无迹卡尔曼滤波的二段式多旋翼无人机姿态估计算法[J].控制理论与应用,2020(2):365-373.
[3]吕春生.一种改进的四旋翼互补滤波姿态解算方法[J].电子测量技术,2020(18):69-73.
[4]罗昌恩,张国林,戴毅.基于stm32小型四轴飞行器PID参数整定[J].电子世界,2018(19):37-38.
[5]茹岩,张欣.四轴飞行器控制系统设计与实现[J].电子测试,2022(3):42-45,49.
(编辑 姚 鑫)
Design of multi-axis aircraft system based on STM32
Huang Chuanxiang
(Jiangsu Vocational College of Safety Technology, Xuzhou 221000, China)
Abstract: Multirotor aircraft is a kind of unmanned aerial vehicle, which is famous for its vertical takeoff and landing, stable flight attitude and flexible control.It has broad application prospects in military and civil fields.This paper takes the control system of the quadcopter as the research object, expounds the structure and flight principle of the quadcopter, and finally selects the complementary filtering algorithm by comparing the two attitude calculation algorithms of the aircraft.In the hardware design of aircraft, the main modules of the system are selected and the external circuit is designed.In terms of software, the flow chart of control program and the flow chart of attitude settlement algorithm and PID control algorithm are designed.The test results show that the system achieves the expected design function.
Key words: multirotor aircraft; PID controller; STM32