三自由度直升机的嵌入式控制系统
三自由度直升机可以应用于飞行器控制系统的半实物仿真试验和性能测试等场合,用以模拟横列式直升机,即倾转旋翼机的直升机状态[1]。其控制系统属于典型的多输入-多输出系统,具有非线性和强交叉耦合性,不易用传递函数和状态方程描述,是控制系统中较为复杂的被控对象[2,3]。实验室配备的三自由度直升机平台采用PC机+运动控制卡的控制方案,运动控制卡实时测量并控制三自由度直升机平台的飞行姿态,控制量的计算则由PC机完成[4]。该方案偏离了真实直升机的飞行控制系统方案。为此,本文采用嵌入式设计方法重新设计了三自由度直升机的控制系统。在此基础上,改变外接的飞行摇杆的俯仰角和横侧角,并以此为指令信号,实时控制三自由度直升机平台的飞行姿态。通过对飞行摇杆上快捷键的控制,可以实现系统在“辅助操纵”、“全自动驾驶”和“改平”3种工作模式之间的切换。
1 系统工作原理
1.1 系统的整体方案
三自由度直升机可以绕3个相互垂直的轴旋转,分别对应直升机模型的俯仰角、横侧角和航向角。飞行摇杆选用北通公司的幻影318飞行摇杆,利用摇杆的俯仰和横侧转动,输出与摇杆的俯仰角和横侧角对应的直流电压,用于控制三自由度直升机的俯仰角和横侧角的指令信号;利用摇杆手柄上的按钮,输出脉冲信号,用于控制三自由度直升机在不同工作模式之间切换。
1.2 系统的工作模式
系统具有辅助操纵(有人工操作)、全自动驾驶(无人操作)、(强制)改平3种工作模式[5]。由飞行摇杆上的若干快捷按钮实现对各种工作模式的切换。
1.2.1 辅助操纵
由人工操纵飞行摇杆的俯仰和倾斜,以此作为三自由度直升机俯仰角和横侧角的指令信号,由嵌入式控制器依据闭环反馈的PID控制律实现整体操纵。
这种工作模式用于模拟飞机的有人驾驶状态。此时飞行控制系统辅助飞行员通过摇杆对飞机操纵,可以减轻操纵者的工作负担;同时对飞机进行控制增稳,既确保飞机的稳定,又可抵御阵风等外部干扰,减轻扰动对飞行品质的影响。
1.2.2 全自动驾驶
飞行摇杆对系统的控制被屏蔽,系统以进入该工作模式时刻三自由度直升机的俯仰角和横侧角的当前值为指令信号,由交叉耦合性交叉耦合性控制器依据闭环反馈的PID控制律实现整体操纵。
这种工作模式用于模拟飞机的无人控制全自动飞行状态。当飞行员人工把飞机操纵到理想的飞行姿态后,通过切换按钮进入这种模式,由飞行控制系统对飞行姿态的当前值进行稳定,保证飞机按刚进入该状态时的各种姿态角、速度、高度、航向飞行;同时对飞机进行控制增稳,提高飞行品质。该工作模式突出体现了飞行控制系统的功能,可以大大降低飞行员的工作量,减轻疲劳。
1.2.3 改平
系统强制俯仰角和横侧角的指令值都为0,飞行摇杆对系统的控制被屏蔽,以此强制控制三自由度直升机俯仰角和横侧角为0,实现三自由度直升机的水平稳定运行。
这种工作模式用于模拟飞行控制系统的改平功能。当飞行员遇到突发情况时(如飞行员受伤等),采用这种功能可以很方便地把飞机由任何姿态改变为匀速平飞的稳定状态。当然这种功能也可以用于飞行员平时把飞机拉平的过程,即采用“改平”模式可以方便飞行员的操作。
2.1 硬件设计
硬件部分的主体是嵌入式控制盒。控制盒由EasyARM1138开发板[6]、信号调理板和机箱外壳3部分组成。
2.1.1 EasyARM1138开发板
EasyARM1138使用32 bit ARM Cortex-M3内核,具有丰富的接口资源。具体配置如下:
(1)采用EasyARM1138的2个ADC端口(ADC0、ADC1)测量飞行摇杆输入的模拟电压信号,采用软件等比例地换算成对应的角度信号,由此实现对飞行摇杆的指令角度信号的测量。
(2)采用EasyARM1138的3个GPIO口(PB0、PF6、PF4)测量三自由度直升机的俯仰角信号的输出脉冲,3个GPIO口(PB2、PF1、PF2)测量三自由度直升机的横侧角信号的输出脉冲。通过软件编程,采用中断的方法实现脉冲计数,由此实现对三自由度直升机飞行姿态的测量。
(3)采用EasyARM1138的Time2模块产生PWM信号,将Timer2模块中的TimerA和TimerB配置为16位的递减计数器,其对应的EasyARM1138上的2个GPIO口(PF7和PC4)的PWM输出作为三自由度直升机的2个直流无刷电机的控制信号,通过调整TimerA和TimerB中的匹配值来等效地调整2个直流无刷电机的输入电压,从而实现对这两个直流无刷电机转速的控制。
2.1.2 信号调理板
由于GPIO测量的8个信号(三自由度直升机的角度信号对应的6个脉冲信号和飞行摇杆对应的2个角度信号)在实际测量时不可避免地存在噪声,被噪声污染的信号直接送入EasyARM1138会使测量出现很大的误差,从而对系统产生不利影响。严重时会使三自由度直升机的电机以最大转速运行,此时系统实际上已经发散,无法平衡。
EasyARM1138的GPIO需要测量的8个信号量先经过信号调理电路调理以后,再送入EasyARM1138。经过实际测试发现系统可以稳定运行,而且动态性能理想。
2.1.3 控制盒
嵌入式控制器的外部采用通用的塑料机箱外壳,在其侧面开口用于安放各种接口。控制盒整体采用外接的5 V、2 A电源供电,盒上保留了与外部稳压整流电源的插口。盒上安放了一个电源开关用于对控制盒的供电进行控制,并用一个LED二极管指示灯指示电源的开关状态。
控制盒的端面安放了一个橙色的无锁开关,用来对EasyARM1138进行复位操作。在该端面同时有一个DB9的插孔,用于和来自飞行摇杆(北通瞬风318飞行摇杆改装)的DB9插头相连接。在另一端面安放了一个DB25插孔,用于和来自三自由度直升机的DB25插头相连。
2.2 软件设计
全部软件基于IAR Embedded Workbench for ARM编程平台[7],在μC/OSII操作系统中使用C语言进行开发。生成的全部软件通过外接的USB电缆下载至EasyARM1138。软件整体上分为接口和控制两个功能模块。
2.2.1 接口功能的实现
(1)ADC采样
飞行摇杆上下摇动给出俯仰信号,左右摇动给出横侧信号,2路信号通过滤波电容进行整形,送到EasyARM1138开发板的ADC,ADC同时将2路连续的模拟电压转换成离散的数字量。通过电压的比例换算,计算出飞行摇杆给出的俯仰与横侧的角度。
EasyARM1138开发板的ADC采样模块提供的最大电压为3.3 V,设置摇杆输入的电压量程为0 V~3.3 V,ADC采样率为125 kS/s。ADC模块的转换分辨率为10 bit,其转换范围为0~1 024。当摇杆模拟信号输入到ADC,ADC将其转换成对应的数字量ulVal0,则摇杆输入的电压值ulVal1=(ulVal0/1 024)×3 300。再根据三自由度直升机俯仰角的范围0°~60°将摇杆的电压值转换成对应的角度值,即摇杆输入俯仰的角度angle02 =ulVal1/3 300×60。同理可以将摇杆输入横侧的角度算出来。