四旋翼飞行器控制系统设计
编者按:本文基于四旋翼飞行器的工作原理和性能特点,给出了飞行器控制系统设计方案,进行了姿态和高度数据采集的软件设计,并基于卡尔曼滤波算法完成了传感器数据融合,设计了PID控制器并完成了软件实现。实验结果表明,该控制系统能够稳定可靠运行,具有较强的鲁棒性。
摘要:本文基于四旋翼飞行器的工作原理和性能特点,给出了飞行器控制系统设计方案,进行了姿态和高度数据采集的软件设计,并基于卡尔曼滤波算法完成了传感器数据融合,设计了PID控制器并完成了软件实现。实验结果表明,该控制系统能够稳定可靠运行,具有较强的鲁棒性。
引言
四旋翼飞行器是一种具有6个自由度和4个控制输入的系统,能进行垂直起降、悬停、前飞、侧飞和倒飞等运动。其与直升机不同之处在于它通过4个旋翼产生可以相互抵消的反扭力矩,因而不需要专门的反扭矩桨。被广泛应用于无人侦察、森林防火、灾情监测、城市巡逻等领域。并且随着目前发展状况,四旋翼飞行器主要优点有: (1)拥有简单的机械结构; (2)飞行姿态稳定。同时飞行控制系统通过传感器采集飞行姿态数据,实时监测和控制飞行姿态,可以使飞行器保持平稳飞行。相比传统单旋翼直升飞机,四旋翼飞行器的飞行更为稳定。
1 系统硬件结构
1.1 飞行器的原理以及机械结构
四旋翼飞行器的基本结构如图1所示,四旋翼飞行器的4只旋翼安装于十字形机体的4个顶点位置,分为顺时针旋转(1、3) 和逆时针旋转 (2、4)2组,当4只旋翼转速相等时,相互间抵消反扭力矩;同时增加或减小4只旋翼的转速可实现上升或下降运动;当1号与3号旋翼转速增加(减小),2号和4号转速不变,飞行器实现偏航;当1号和3号旋翼转速固定,2号旋翼转速增加(减小),4号旋翼转速减小(增加),飞行器实现向左(向右)飞行;当2号和4号旋翼转速固定,1号旋翼转速增加(减小),3号旋翼转速减小(增加),飞行器实现后退(前进)飞行。
1.2 硬件平台整体设计方案
硬件的选择对控制系统的性能有很重要的影响,一个良好的硬件搭配会极大地提高控制系统的安全性、稳定性和准确性等各项性能指标。
如图2所示为本次研究所用飞行器的实际构造框图。由上位机或遥控手柄接受指令,控制芯片通过超声波模块获取高度信息,再通过MPU6050获取姿态信息以及加速度信息,经过数字PID控制器计算得到控制量,再经过控制芯片处理,向电调发出对应于控制量的PWM波,改变电机的转速。
1.2.1 I2C总线
对MPU6050的控制与数据的读写主要通过I2C总线形式。I2C构造简单,仅需要两根线(SCL时钟控制线,SDA数据传输线)即可实现对芯片的控制与数据读取,并且每个芯片都有其独立的识别地址。在本实验中,因为只有一个MPU6050,且只有它使用的是I2C总线,因此,只需要设置其工作在从发送模式即可。
对于STM32F103RBT6单片机而言,其硬件I2C接口极不稳定,容易发生数据错误和陷入死循环中,导致程序崩溃跑飞。因此,本实验通过设置普通GPIO接口进行模拟I2C与MPU6050进行通讯。
1.2.2 对飞行器整体的控制
对飞行器的控制主要有三个部分。首先是对无刷直流电机的控制,在这里主要表现为PWM波的产生与调节。另一部分是对惯导系统信息的采集与读取,以及高度信息的获取。最后一部分就是如何处理上位机与遥控手柄发来的指令,即控制流程如何实现。
2 控制系统的软件设计
2.1 对无刷直流电机的控制
对无刷直流电机的控制主要有两个方面,一方面是通过PID算法得到控制量,另一方面是根据控制量输出相应的PWM波。
另外,在对无刷电机的驱动问题上,经过实际调试发现,首先需要对电调输入最高电压,电调对PWM信号的识别需要一段时间,之后再对电调输入最低电平才能实现PWM波调节范围的设定。
2.1.1 基于PID控制器的PWM波控制量的计算
实际上,信号的传递并不一定是连续的,比如在本实验中,信号的读取是根据控制定时器决定读取数据时间间隔的。因此,本设计为数字式PID控制器。
在实际编程中,使用离散型PID控制算法实现,具体表达式经简化表示为:
其中AUK为输出的控制量,KP、KI和KD为PID的三个参量,但需实际飞行时进行调整。EK为设定值与本次采样值的差值;EK_1为设定值与上一次采样值的差值;EK_2为再上一次的设定值与采样值的差值。
图3所示为具体程序流程框图。其中针对不同的PID控制器,如俯仰PID控制器与横滚PID控制器的不同点仅在于“控制量输出”部分。从控制量到电机输入电压的转化这一部分涉及到控制量的分配问题。因为针对每一个控制信号,以“phi_ctrl_in(横滚控制输入)”为例,横滚角的控制量与2号电机和4号电机的输入电压相关,即该控制量的大小会改变两个电机的输入电压的大小。因此,一个控制量的改变会影响整个飞行器的飞行姿态,经过反馈后,会带动其他控制回环进行控制。即这四个控制量之间的耦合性很高。因此,在这里进行控制量分配。
经过反复调试后,得到一组最理想的PID参数。横滚角phi控制器PID参数为:Kp=0.15,Ki=0,Kd=0.02;
俯仰角theta控制器参数: Kp=0.2,Ki=0,Kd=0.03;
偏航角psi控制器参数:Kp=1.1,Ki=0,Kd=0.4;
高度height控制器参数:Kp=6,Ki=0.2,Kd=2;
x轴方向加速度PID控制器参数:Kp=7,Ki=1.0,Kd=0;
y轴方向加速度PID控制器参数:Kp=6,Ki=1.0,Kd=0。
2.1.2 PWM波调速
本实验所用四旋翼飞行器硬件平台采用无刷直流电机,使用电子调速器作为驱动模块。控制的核心方法为向电调发出PWM波,通过控制PWM输出的占空比来改变电机的控制电压,实现对电机转速的控制。PWM波通过主控芯片产生。本文使用的主控芯片为STM32F103RBT6,它通过配置定时器工作在PWM模式下,对于通用的定时器,可以独立地同时发出四路PWM波,完全可以满足本实验的要求。
硬件实现上,使用定时器4输出四路PWM波信号。使定时器4工作在复用模式下,对应的外部端口为:PB6、PB7、PB8和PB9,他们分别连接1号、2号、3号和4号电机的信号控制线。
在对定时器4的配置上,首先打开定时器4的时钟RCC_APB1Periph_TIM4,以及对应PB端口的时钟RCC_APB2Periph_GPIOB。因为定时器4为通用定时器,可进行16位自动重装载计数。使用的是单片机的固定频率72M的时钟信号,但可以通过改变预分频寄存器里的值,改变计数时钟频率。本实验中设定为72-1;设置波形周期TIM_Period计数上限为2000,为向上计数模式。配置TIM_OCMode为PWM1模式(即TIM脉冲宽度调制模式1),使能四个比较通道。之后配置输出端口,将端口设置为50MHz复用推挽输出。最后打开使能定时周期TIM_Cmd(TIM4, ENABLE)即可开始工作。通过比较TIM_Period中的值与寄存器TIM4_CCRx中的值可以输出不同占空比的波形。
经过实际实验发现,只有当设定值为1050以上时,电调才能识别出电压信号,即只有当占空比大于50%时,电调才会认可输出PWM波信号。因此,对电机的占空比调节范围为:1050/2000~2000/2000;当设定值为1050时,电机刚开始旋转,当设定值为2000时,电机达到最高转速。为了防止TIM4_CCRx中的值超过计数上限,也为了控制电机的最高转速,在向TIM4_CCRx写入转速控制变量前进行限幅滤波,使其写入值始终在可靠范围内。
本文来源于中国科技期刊必威娱乐平台 2016年第9期第48页,欢迎您写论文时引用,并注明出处。
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码