APP下载

基于STM32的飞行姿态运动模拟器设计

2018-10-30于秀萍吕淑平张耀坤

实验室研究与探索 2018年9期
关键词:舵机模拟器中断

于秀萍, 吕淑平, 刘 涛, 张耀坤

(哈尔滨工程大学 自动化学院,哈尔滨 150001)

0 引 言

课程设计是专业实践环节的必修课,是课堂教学的延伸和发展,是理论知识与工程实践之间的衔接。通过课程设计使学生加深理解飞行器惯性器件、制导与控制系统等专业核心课程课堂教学的理论内容,学会综合运用专业基础理论,培养分析问题和解决问题的能力,在专业知识与研究方法方面为后续的毕业设计及工作奠定良好的基础[1]。基于STM32的飞行姿态运动模拟器设计即是专业课设题目之一,该模拟器以飞行姿态控制为主要教学内容,要求学生实现模拟飞行姿态运动的程序控制,掌握MEMS传感器MPU6050的应用方法,掌握STM32控制器的应用、脉冲宽度调制(PWM)信号控制舵机的方法,探索2自由度云台运动姿态控制系统设计与应用方法,深化学生对专业知识的理解[2]。

飞行姿态运动模拟器设计包括硬件系统和软件设计与实现两大部分。设计产品需要调试与功能测试,需要应用Matlab软件包对二轴转台飞行姿态数据进行仿真分析验证,设计要求2周完成。本设计可锻炼并检验学生综合运用专业基础理论知识及进行制导与控制系统分析、设计与仿真的能力;培养了学生对实际系统进行设计、调试、分析与解决问题的科学素质[1-2]。

1 硬件系统设计

硬件主要包括数字控制器、电源系统、角度测量传感器、执行机构等部分,通过对各部分进行合理的器件选型和方案制定,对STM32控制器最小系统、电源系统、光电隔离等各个模块分别进行具体的设计。

1.1 STM32数字控制器

数字控制器是硬件系统的关键组成部分,通过对其编程可以实现复杂的控制算法,控制执行机构动作,进而实现系统功能,因此控制器的选取在一定程度上决定硬件系统的性能。控制器的选取一般应考虑其运行速度、外设资源、开发的难易程度等方面。实验室为学生准备了51单片机、STM32及Arduino Uno控制器。其中,STM32F103系列单片机代表具有高性能、低成本、低功耗、便于低电压操作等优点,嵌入式应用专门设计的ARM Cortex-M3内核,32 Byte字长,时钟频率达到72 MHz。内部自带12位ADC单元,6通道DMA,多达8个定时器,以及强大灵活的特定控制接口。控制和计算功能十分强大,是同类产品中性价比较高的产品,但系统开发需要有较强的编程能力和微机硬件基础。为了达到更好的控制效果,选用STM32F103单片机作为控制器,通过软件编程实现控制算法,达到姿态角控制的目的。

为了简化系统设计,使用STM32F103C8T6最小系统模块和配套下载仿真器J-link-OB模块。其中最小系统模块使用3.3 V直流电压供电,外接8 MHz晶振和硬件复位电路,并通过排针引出所有I/O口。根据STM32F103C8T6的芯片手册[3-6]并结合系统硬件资源的需求,分配片上硬件资源情况如表1所示。

表1 STM32片上硬件资源分配

1.2 电源系统

电源主要功能是为硬件系统中的其他部分提供合适的供电电压。

由于该飞行姿态运动模拟器仅用于原理验证说明,功耗低,体积小,考虑成本和使用范围等方面因素,本设计使用220 V交流电作为系统总的电源输入,通过AC-DC转换模块得到需要的较高电压的直流电源,再通过DC-DC稳压模块分别得到其他任意值的直流电压。该供电方式适用于固定的设备,输出电流大,负载能力强。

系统总电源使用220 V交流输入,通过开关稳压电源分别转化为12 V/1 A直流电源作为控制电源输入;5 V/3 A直流电源作为舵机动力电源输入。由于控制器和传感器模块分别使用5 V和3.3 V供电,因此,通过DC-DC降压模块LM2596,将12 V电压转化为5 V电压,进一步使用DC-DC降压芯片MIC5219将5 V电压转化为3.3 V电压。整个电源系统的结构图如图1所示。

1.3 光电隔离

光电隔离通常将电子信号转换为光信号,在另一边再将光信号转换回电子信号。如此两边电路互相隔离开来,从而防止驱动电路的高电压、脉动电流对微控电路的影响。由于要通过信号的频率为50 Hz,因此选用低速光耦TLP521。

图1 电源系统结构图

1.4 角度测量传感器

陀螺仪作为惯性器件的一种,常用来测量角速度和角度,而MEMS陀螺由于成本较低,在对角度精度要求不高的工业和民用产品中最常使用。按照题目要求选用MPU6050作为角度测量的传感器。

MPU6050是一种利用MEMS技术集成三轴陀螺仪,三轴加速度计的运动处理组件,通过I2C总线通信,输出测量的各个轴向的角速度和加速度的ADC值,通过对其输出值的解算,可以得到其相对于惯性空间的姿态角度。由于MPU6050的解算涉及到较复杂的导航解算算法,不在本题目设计要求范围内,因此选用已解算好角度,通过串口通信输出数据的MPU6050模块,直接通过串口读入角度信息实现本系统的角度测量反馈。

1.5 执行机构

执行机构通常包括电动机和相关的机械结构,其作用于被控对象(安装小飞行器模型的二轴平台),实现控制作用。执行机构选取时常考虑负载的大小,实现的难易程度,成本等因素。因此选取了两个电动舵机,通过一定的机械连接实现两个方向的旋转控制,可控制模拟飞机的俯仰和航向运动。电动舵机使用PWM信号驱动,内部通过电位器反馈,实现信号脉宽和旋转角度的一一对应,操作简单,响应迅速,常用于对角度的控制。

1.6 硬件系统电气连接

综合上面对系统各个部分实现方案的选择,STM32控制器可通过串口通信方式向PC机发送被控对象当前的姿态角信息,在PC机串口助手的上位机软件中可实时查看并保存姿态角数据,用于分析。

综合以上各部分硬件设计,绘出硬件系统简要电气连接图,如图2所示。

图2 硬件系统电气连接

2 软件设计

飞行姿态运动模拟器实时控制软件的基本结构采用主程序加中断服务程序的形式,并将程序分为主函数,姿态角数据采集与处理,角度控制算法等部分,其中姿态角数据采集与处理程序在DMA中断中进行,角度控制程序在定时器中断中进行[7]。程序总框架图3所示。根据软件设计思路,在MDK4.29编程环境下,对各部分进行编程实现。给出系统中较为关键的 PWM信号输出配置程序,角度数据解算程序,数字PID控制程序,中断服务程序等功能函数。

2.1 主函数

主函数主要完成全部硬件资源的初始化配置和向上位机输出角度信息的功能。主函数程序流程图如图4所示。

图3 程序总体框架图

图4 主函数程序流程图

2.2 中断服务程序

在中断中完成至关重要的角度信息解算和控制量输出的任务。其中角度解算是在串口DMA传输完成中断中执行,控制量输出是在定时器中断中执行。

串口数据DMA传输完成中断在一组完整的数据包传输完成时产生。MPU6050发送数据的频率为100 Hz,因此DMA中断的频率大约为100 Hz。当中断发生时,先对数据的正确性进行校验,若数据正确,则直接执行角度解算函数。

定时器中断频率是500 Hz,即基本定时时间是2 ms。通过中断程序里定义计时变量累加实现更长时间的定时周期。由于舵机的时间常数一般在几十ms左右,因此控制周期设置为4 ms,即控制周期250 Hz;同时设定LED指示灯的闪烁频率为2 Hz。

2.3 姿态角数据采集与处理

(1)姿态角度数据包的解算算法。MPU6050模块通过串口输出二轴转台相对于惯性空间的角速度、角度、加速度等信息,因此只需要配置好串口通信程序,接收数据即可得到该系统需要的姿态角。为了保证传输过程中数据的准确性,数据经过特殊通信协议的处理加工,因此得到的数据需要经过相反的解码过程才能够得到想要的角度信息。串口通信的协议分为3个数据包,其中角度数据包协议内容[8-9]如表2所示。

表2 角度数据包协议

根据协议规定,编写角度解算程序。为了避免系统上电时载体抖动或者放置不平等因素带来的角度误差,3个轴向的角度分别采集100次,做算术均值滤波后作为载体启动时的角度初始值,并在以后的角度解算中统一减去,从而保证3个轴向的姿态角均是以0为初值。另外,由于三轴是耦合的,只有在小角度时才会表现出独立性,在大角度时姿态角度会耦合变化,比如当X轴接近90°时,即使姿态只绕X轴转动,Y轴的角度也会跟着有较大的变化,这是欧拉角表示姿态的固有问题。因此为了减小该现象的影响,将两个轴向的姿态角均限制在约-60°~+60°之间。

(2)姿态角数据采集与处理。姿态角数据是通过串口接收原始数据,在串口接收中断里对数据进行辨识,找到数据帧头后开启DMA传输,直接将数据保存到内存,一组数据包传输完成后触发中断,在中断中对数据进行校验,若数据正确无误则对其进行解算,最终得到角度信息。姿态角数据采集与处理程序的流程图如图5所示。

2.4 角度控制算法

在定时器中断中执行角度的PID控制,并输出控制量,改变PWM信号的脉宽,达到控制舵机的目的。角度控制程序流程图如图6所示。

(1) 数字PID控制算法[10-11]。离散的位置式PID算法:

(1)

增量式为:

(2)

增量式可以写为位置式:

u(k)=u(k-1)+Δu(k)

(3)

图5 姿态角数据采集与处理程序流程图

图6 角度控制程序流程图

根据式(1)~(3)编写PID算法函数。

(2) PWM信号输出配置程序。PWM把恒定的直流电压调制成频率一定、脉冲宽度(占空比)可变的电压信号。STM32上自带PWM信号发生单元,基本原理是利用高速时钟的周期T0为基本时间单元,通过设定周期寄存器和比较寄存器输出PWM。假设周期寄存器设定的值为N,则PWM波的周期T=NT0。当启动PWM单元工作后,对应定时器工作,当定时器的计数值与比较寄存器相等时,对应输出管脚的电平发生翻转,当计数结束又从新开始,周而复始,生成PWM波。用中断模拟的方式要占用CPU的资源,因此使用STM32自带的PWM发生单元产生PWM波信号。

由于舵机的控制信号是周期20 ms,脉宽0.5~2.5 ms的PWM波信号,因此程序中配置的PWM波输出频率是50 Hz,比较装载值设为60 000时,对应的脉宽等效值范围为1 500~7 500。对于量程是180°的舵机,若1.5 ms脉宽的PWM信号对应机械零位,则通过调节PWM信号的脉宽,可以控制舵机在-90°~+90°绝对角度范围内的旋转,从而控制载体的姿态角。考虑机械安装的误差,为了使载体上电初始位置是水平的,应先调节舵机角度,找到对应载体水平时的脉宽,作为中值零位脉宽。另外,由于陀螺仪大角度下各轴角度耦合变化,因此,将双轴舵机的旋转角度均要使用软件限位。

3 系统调试与数据分析

(1) PID参数整定。在硬件与软件完成的基础上,通过对PID参数的整定[12-13],反复调节使系统有良好的性能。舵机的电压输出与角度输出近似成一级惯性环节,因此采用PI控制规律。PID调试参数中Td设为0,只需反复调节Kp和Ti,直到达到很好的控制性能。

由于2自由度云台两个轴向的运动姿态是相互独立的,为了使调试更加简单,先固定1个轴向的角度不予控制,只调节另1个轴向的角度控制参数,然后用同样的方法调试第2个轴向的参数。最后将两个轴向的控制量同时加上,再根据系统性能微调PID参数。

(2) 二轴转台模拟飞行性能测试与数据分析。在PC机监控调试过程中,通过串口将需要的角度信息发送到PC机,在PC机上使用串口助手软件接收显示数据。因为数据发送是在DMA中断里数据解算完成后即发送的,因此发送的频率略小于系统采样频率100 Hz。将接收到的俯仰角与偏航角数据(Pitch,Yaw)保存到Text文件后,导入到MATLAB软件中进行分析,并绘制出系统在不同输入值(Pitch,Yaw)下的阶跃响应曲线[14-15]。通过上述方法得到二轴转台模拟俯仰与偏航角运动阶跃响应曲线如图7所示。由图7可见,Pitch角在第20个采样点后稳定在10°的位置,即调节时间约为0.2 s,稳态误差在2%左右,说明系统的稳态性能很好。同时看到曲线在第10个采样点,即0.1 s时达到第1个峰值13°,随后经过一次波动达到稳定状态,可知系统的响应速度很快,但超调量有些大。对于姿态控制系统来说,要求系统的响应快,精确度高,超调量在可接受范围内即可,因此该参数对应下的系统是可用的,还可以进一步调节,达到更好的性能指标。

图7 转台俯仰与偏航角运动阶跃响应曲线

(3) 二轴转台程控指令功能测试。进一步程序发出俯仰与偏航两个轴向的角度设定值指令,按照一定时间改变设定值(Pitch,Yaw)的变化,模拟飞机的起飞、航行和降落过程。程序变化指令序列为(0,0);(0,10);(0,20);(0,30);(0,0);(10,0);(20,0);(30,0);(0,0);(10,10);(20,20);(30,30);(0,0);(10,-10);(0,0);(-30,-30);(0,0),得到二轴转台角度的实时响应曲线如图8所示。

图8 在程控指令(Pitch,Yaw)序列作用下,二轴飞行模拟器俯仰与偏航角运动阶跃响应

从图8可以看出,飞行姿态模拟器的动态响应迅速和稳态误差很小,俯仰和偏航角运动能稳定响应程控给定指令,性能指标均符合设计要求。因此该程控二轴云台姿态角模拟器设计任务完成。程控姿态模拟器实物如图9所示。

图9 程控姿态模拟器实物图

4 结 语

本设计的实践教学效果是从学生设计的程控飞行姿态运动模拟器实物演示与提交的课设报告数据仿真分析得到的。该模拟器以二轴云台为研究对象,实现了飞机的俯仰和偏航运动,采用STM32为控制器控制转台的运动姿态,采用基于新型MEMS传感器MPU6050作为检测元件,同时利用MPU6050内部数据处理器得到完整的融合演算数据,准确检测转台的运动姿态。转台姿态控制与转台姿态检测两者相互融合,形成一个完整的简易飞行姿态运动模拟器。通过系统调试与数据分析,进一步验证了程控二轴飞行转台能稳定跟踪给定姿态角。实践证明,学习态度认真、专业基础知识扎实、对课设题目感兴趣、肯于专研的学生能在2周内完成课程设计任务。本设计不足之处是电源体积较大不灵活,可改用可充电电池供电。

该课程设计,既提高了学生实践动手能力,又增加了学生对专业理论知识的感性认识,为学生创新能力锻炼提供了良好基础,这对于培养学生的创新能力和工程实践能力具有重要意义。

猜你喜欢

舵机模拟器中断
了不起的安检模拟器
盲盒模拟器
划船模拟器
含齿隙弹载舵机的全局反步模糊自适应控制
基于FPGA的中断控制器设计*
基于dsPIC单片机的飞艇舵机控制实现
跟踪导练(二)(5)
千里移防,卫勤保障不中断
基于高速同步485总线通信的多通道舵机控制器设计
动态飞行模拟器及其发展概述