基于ARM11+CPLD的小型无人机飞行控制器设计

发布者:Meiren520最新更新时间:2012-12-12 来源: 21ic 关键字:ARM11  CPLD  飞行控制器 手机看文章 扫描二维码
随时随地手机看文章

1  引言
小型无人机具有重量轻、使用费用低、机动灵活等特点,在军用、民用领域有着广泛的应用。在民用领域,无人机可搭载不同任务载荷完成诸如国土资源保护、城市规划、电视台航拍、大气监测、交通监察、边境及海岸线巡逻、灾情监视等任务;在军事上,可以执行空中侦察、充当靶机、导弹攻击、充当诱饵、战场损伤评估和电子站等任务,已成为许多国家军队的主要武器装备。
飞行控制器承担着无人机的姿态控制、导航控制、与地面控制站的通信、任务载荷控制等任务,是小型无人机的核心。评价小型无人机的飞行控制器的优劣的指标之一是其控制的精度。提高飞行控制器的控制精度的方法有:提高获取飞机状态信息的精度;采用先进的控制算法提高控制性能[1-3];提高控制指令输出的实时性等。而要实现以上目标就须有高性能的MCU和合理的硬件电路设计。
本文针对这一问题,设计了基于ARM11(S3C6410)+CPLD(EPM1270)的飞行控制器。ARM11架构的MCU S3C6410接口丰富、运算速度快;CPLD芯片的应用提高了系统的实时性。以下将阐述该飞行控制器的设计。
2  飞行控制器硬件系统的设计
本文飞行控制器以S3C6410和CPLD(EPM1270)为核心,将无人机系统各部分有机整合,硬件构架具体如图1所示。

S3C6410采用ARM1176JZF-S的核,该核在电压为1.2V的情况下,可以运行到667MHz[4],高主频保证了飞控有较强的计算能力。S3C6410拥有丰富的接口,本文通过UART串口通讯连接了GPS模块和数传电台;SPI通讯接口连接了ADIS16365惯性系统传感器(含加速度、角速度传感器),两个MS5540气压传感器。S3C6410可连接大容量内存和FLASH,本设计中配置了256M 的DDR RAM和1G的NAND FLASH,大容量的内存是飞控进行大量计算及数据存储的保证。
而CPLD模块选用ALTERA公司的EPM1270芯片,该模块完成遥控接收机控制指令的接收及解码;多路PWM控制指令的解码及输出;任务载荷的控制管理。CPLD的应用,使得飞行控制器在处理遥控指令、姿态控制上具备了运算速度快、实时性强的特点。
基于上述两模块构建的飞行控制器,按其功能可分为:导航功能模块、姿态控制功能模块、通信功能模块、任务载荷功能模块。本文选取导航功能模块和姿态控制功能模块的硬件设计进行阐述。
2.1  导航功能模块硬件设计
导航功能模块主要实现无人机按设定航点、航线飞行的功能,这需要计算无人机当前的位置和目标位置之差。本文设计了GPS、气压传感器来获取无人机当前的位置信息,即经度、纬度、高度、速度、航向等。在硬件设计上,设计了UART口与GPS模块连接,气压传感器与GPIO口连接的外围硬件电路。
飞控的GPS模块采用的是UBLOX公司的型号为LEA-5H的GPS模块,本设计中GPS模块采用的是外接的形式,即GPS模块可根据机体的实际情况放置在合适位置,所以设计时在飞控主板的接口中预留TX、RX、VDD5V、GND四个引脚,这四个引脚连接到MCU的UART口。
飞控的两个气压传感器都采用瑞士INTERSEMA公司的MS5540芯片,一个用以测量飞机的高度,另一个用来测量飞机的空速。本设计中利用S3C6410的GPIO,模拟SPI通讯接口方式来实现通讯。MS5540需要外接工作时序脉冲,利用CPLD分频后产生相应工作脉冲,接入MS5540。其余MS5540通讯引脚都与普通IO相连。
2.2  姿态控制功能模块硬件设计
姿态控制功能模块主要由采集姿态数据和输出姿态控制指令两部分构成。
本文姿态传感器采用ADI公司的ADIS16365惯性传感器。ADIS16365内部集成3个陀螺仪和3个加速计,测量范围可达为±300°/sec,±18g,角度分辨率为±80°/sec。应用ADI的iMEMS Motion Signal Processing(运动信号处理)技术,对电压变化、温度变化及其它影响进行校准,具有动态补偿功能[5]。ADIS16365提供一个串行外部接口SPI。硬件电路设计上,连接SPI通讯端口、片选脚,如图2所示。ADIS16365对于电压的稳定性要求较高,其工作电压为4.75V-5.25V,系统板电源设计上要考虑到电压的输出范围。

姿态控制是通过控制无人机上各数字舵机的转角大小和动力大小来实现。本文无人机以锂聚合物电池作为动力电源,由电子调速器来控制直流无刷电机的转速,电子调速器通过输入的PWM信号控制。数字舵机的转动角度由输入到舵机信号线的PWM信号决定。本文无人机上的4路PWM控制信号,周期为20ms,脉宽范围为1ms至2ms,都由CPLD产生,其内部实现过程如图3所示,各模块功能介绍如下:

(1) SPI数据接收模块,负责对MCU发出的数据及指令进行实时的接收。实现的基本原理是模拟从设备SPI通讯协议,数据通讯采用的是16位数据结构,另外SPI接收模块只负责对MCU数据的接收,不负责对CPLD内部数据的发送操作,目的是增加了模块实现的可能性。从SPI接收模块的端口引脚可以大致将其定义为一个由串口通讯转化为并口通讯的转换模块。[page]
(2) 数据内部传送模块,负责对SPI接收进的数据进行解析,主要是将数据与命令分开。这里所谓的命令,指的是PWM控制通道的选择。本设计中只需有4路PWM输出,所以只需在模块中任选4路。通过这种方案,可以实现任意多路PWM输出,可解决MCU PWM输出端口不足,实现端口扩展。
(3) 数据保存模块,数据保存模块功能可以描述成一个数据寄存器,即实现传送数据的保持与刷新,存放的数据即为PWM波形的高电平数值。也可称其为数据的缓冲器,在SPI数据传输到PWM发生器过程中加入该模块,可使得数据更加的稳定可靠。
(4) PWM波形发生模块,通过对端口数据的读写,实现PWM波形的发生。PWM的数据是多变的,即占空比的大小是多变的。在设计时程序中加入了状态判断,实现波形的稳定输出,避免了由于数据多变造成的PWM波失真。PWM发生模块的基准时钟频率由CLK端口进入,周期为0.4us。
(5) PWM周期设定模块,提供了PWM波的周期数据输出,通过改变程序参数可以任意改变波形频率。
(6) 分频模块,实现对系统时钟25M进行分频,提供一个周期为0.4us的PWM基准时钟。
本文飞行控制器在特定模式下可接收地面遥控器的指令实现姿态控制,指令分为升降、副翼、方向、油门、是否定高、是否盘旋、是否开伞、平衡量、任务载荷9个通道发送到无人机上的遥控接收机,遥控接收机转换为PWM信号后,由CPLD采集。CPLD采集接收机PWM信号的实现如图4所示,实现过程如下:

本文设计了9路PWM脉宽数据采集,该模块输入0.4us的基频,将外部PWM波形信息转换为数值信息,再由SPI传输模块,传入MCU。SPI数据传送模块,实现上模拟从SPI设备。该设计有效解决端口不足,释放了MCU资源,也提高系统实时性。

3  软件系统设计
在上述飞行控制器硬件平台上,移植Linux操作系统(Linux 2.6内核),并对Linux内核作裁剪,对内核加上Xenomai补丁[8],Xenomei技术使得操作系统运行在双内核下,多了一个强实时的微内核,能满足飞控的实时性要求。在此基础上进行飞行控制器软件设计。飞行控制器软件主要由硬件接口驱动、导航控制程序、姿态控制程序组成。
3.1  接口驱动程序设计
(1) UART接口驱动:GPS与MCU的连接通过UART串口,所以GPS驱动需要串口驱动的支持。本文的GPS接口驱动,没有采用linux内核里自带的串口驱动程序,而是通过内存映射以及内核函数直接对MCU内部UART寄存器进行读写操作,从而实现了高效的GPS数据读取操作。由于对GPS数据信息实时性要求不高,驱动采用了查询模式[9]。接收的数据量大小为一组完整GPS NMEA协议定义的数据的大小,本设计使用了NMEA协议中的GGA,RMC语句,最后通过底层的内核数据传递函数将GPS数据从内核层传输到应用层。
(2) 姿态传感器驱动程序:ADIS16365通过SPI接口与MCU进行数据通信,所以在ADIS16365驱动模块中要实现SPI的读写驱动。方法是通过内核函数对SPI寄存器读写赋值操作,从而实现数据的收发。除了SPI数据收发驱动外还得构造出ADIS16365规定的数据通信时序,只有正常的时序才能实现数据的正确利用。ADIS16365一次完整的数据读取流程需要32个CLK脉冲,1秒内平均采集数据408次,满足精度要求。
(3) CPLD驱动设计:本文飞控MCU与CPLD的通信采用的是SPI通信方式,驱动程序的实现也是通过内核函数对SPI寄存器读写赋值操作,从而实现数据的读写。CPLD为自定义的硬件模块,其通信的数据格式也是自己定义的,CPLD内部通讯数据位为32位,定义前二位为路数控制地址信号。
3.3  导航控制程序设计
导航控制是指控制无人机按照存储在飞行控制器中的航点数据自主飞行,航点依次两两连接成直线段即构成航线。每个航点包括航点序号、经度、纬度、高度值信息。而航点、航线的输入是通过地面控制站软件中绘制并通过数传电台上传到飞控中,如图5所示,在为本文飞控配套开发的地面控制软件中绘制航线。

导航控制中的高度控制主要通过计算无人机的高度误差,进而计算输出给升降舵机的PWM值来控制高度。高度可由MS5540气压传感器测得的高度与GPS模块的高度数据融合计算后获得。
导航控制中的航向控制流程如图6所示。该流程先读入FLASH中的航点数据,再由GPS获取当前位置信息,进而计算航向角、偏航距、偏航角。航向角的计算是在GPS读出的航向字段基础上,加上前后两时刻的位置差进行修正获得。

偏航距和偏航角的计算如图7所示。

设A点为无人机当前位置,B为第n个航点,C为第n+1个航点。图7中,以B为坐标原点,X轴表示经度,Y轴表示纬度构建直角坐标系。在地球表面,任意两点

离即线段AB的值,无人机与终点距离即线段AC的值,航线起点与终点距离即线段BC的值,再根据点到直线距离公式,可求得线段AD即偏航距,根据三角形余弦定理可求出∠ABD, ∠ABD即为偏航角。
无人机飞行过程中,判断是否过航点是读取下一个航点的必要条件。当无人机飞过航线的垂直线EF既为过航点。判断方法是,过C点绘出Y轴平行的线段CG,求线段BC与CG的夹角减线段AC与CG夹角的差值,计算该差值的绝对值,若|a1-a2|>90则判定为过点。
3.4  姿态控制程序设计
姿态控制主要由俯仰姿态、滚转姿态控制构成,以俯仰姿态控制为例,其控制结构如图8所示:

本文设计了PID控制器实现姿态控制,而俯仰角由姿态传感器ADIS16365测量并经姿态计算而得。ADIS16365测量的是机体坐标系下的数值,而要表达机体相对于参考坐标系的姿态,需进行姿态计算。姿态计算以角速度测量值和运载体的初始条件为输入,姿态计算后,输出飞机的姿态信息和比力坐标变换所需的姿态矩阵。在姿态计算过程中,因四元数法在实际求解中需更新的参数少、精度较高的特点,本文采用四元数法求解。[page]
载体坐标系中的矢量在参考坐标系的表示可通过式(1)计算出:
  (4)


是由其在载体坐标系的对应各轴的角速率分量构成,由姿态传感器ADIS16365测得。本文采用四阶龙格库塔法解(3)式。的求解,构建了姿态矩阵 ,再根据(8),(9),(10)求解俯仰角 、横滚角、偏航角 ,即获得机体的姿态。

基于姿态数据及各轴角速率,PID控制器的输出由(11)式计算[6][7]:

K为采样序号、为第k次控制输出值、为第k次采样输入偏差、为前次采样输入偏差、积分系数、微分系数,为比例系数。
4  系统测试 
基于上述设计方案研制的飞行控制器主板如图7所示,安装于测试飞机如图9所示。


 

本文在某校园区进行多次飞行测试,飞行的航线如图9所示,航线由16个航点构成,航点高度都为300米,航线总长度为8.57公里。无飞机的实际飞行航迹如图9中蓝色线条所示,本次测试从进入航线开始到航线结束共自主飞行了18分钟,姿态稳定,最大偏航距≤15米。

试飞测试的任务载荷为航拍相机,CPLD每4秒输出一拍照脉冲,航拍图片如12所示。


5  结束语
本文阐述基于ARM11+CPLD飞行控制器的构建, ARM11的高速处理能力,使得系统的实时性高,系统飞行更加稳定,且接口丰富,利于功能扩展;CPLD在飞控系统中一方面起到扩充MCU IO口的作用,另一方面提高了系统的实时性。在此飞控主板上,本文实现了导航、姿态、任务等功能模块,飞行测试结果理想。

参考文献:
[1] 徐田来,崔平远,崔祜涛.基于置信度加权的组合导航数据融合算法[J].航空学报,2007,28(6):1389-1394.
[2] Ick-Ho Whang,Won-Sang Ra.Simple Altitude Estimator using Air-Data and GPS Measurements[C].Proceedings of the 17th World Congress of the International Federation of Automatic ControlSeoul,Korea,ION,2008:4060-4065.
[3] 陈龙胜,姜长生.基于干扰观测器的无人机着陆飞行逆控制器设计[J].电光与控制,2009,16(9):52-56.
[4] SAMSUNG Company.S3C6410 HW Design Guide V1.0 [EB/OL].[2011-08-10]. http://www.samsung.com
[5] Analog Devices.ADIS16365 MANUAL [EB/OL]. [2011-08-10].http://www.analog.com
[6] Bryson.A.E.Jr.,Control of Spacecraft and Aircraft[M].Princeton,NJ:Princeton University Press,1994.
[7]ROBERT C.NELSON 顾均晓(译).飞行稳定性和自动控制[M].北京:国防工业出版社,2007.
[8] 韩守谦,裴海龙,王清阳.基于Xenomai的实时嵌入式Linux操作系统的构建[J].计算机工程与设计,2011,(1):96-98
[9] 俞永昌.设备驱动开发技术及应用[M].北京:人民邮电出版社,2010.

关键字:ARM11  CPLD  飞行控制器 引用地址:基于ARM11+CPLD的小型无人机飞行控制器设计

上一篇:STM32的条状指纹采集与拼接系统
下一篇:基于STM32单片机的火控系统信号采集测试

推荐阅读最新更新时间:2024-03-16 13:15

ARM11和DSP协作视频流处理技术3G视频安全帽设计
  本文设计一款基于ARM11和DSP双核视频处理技术的3G视频安全帽,将工作现场音视频信号经过本地高效压缩处理后,通过3G网络实时传送至远端服务器,实现远程指挥监控和与现场双向通话功能。   1.引言   为提高在高危工作场所现场作业的可控性,本文采用仿生学原理和高集成度设计实现了与人眼同视角的3G视频安全帽。本设计由视频安全帽和腰跨式数据处理终端两部分组成,采用高可靠性航空插头连接。其中图像处理采用三星公司的S3C6410ARM11处理器和TMS320DM642 DSP处理器组成。本设计结合DSP处理器在视频压缩方面的优势和运行于ARM之上的Linux操作系统在数据管理与任务调度机制方面的出色表现,由DSP完成图像处理功能
[嵌入式]
<font color='red'>ARM11</font>和DSP协作视频流处理技术3G视频安全帽设计
基于S3C6410的ARM11学习(十三) C语言环境初始化
如今,汇编的部分,就剩下最后一步了。C语言环境初始化。因为后面的代码要用C语言来写了。毕竟C语言编写比汇编要容易对了,而且c程序具有易读性。 C程序要运行,一个最重要的东西就是栈了。因为有栈,c程序才能在程序跳转的时候,保存上文。然后在程序返回的时候,将保存的上文恢复。这样,才保证了调用函数之前和之后的上下文是不变的。 使用汇编代码写的话,是不用设置栈的,因为保护上下文是要用汇编在代码中自行写出的,而C代码是靠编译器编译自动加上的。 栈,有4种。 从图中可以看出四种栈的区别。栈都是放在内存空间的,因为要随时读写。栈的起始地址放在内存的高地址出,那么增长方向就是向下增长,这种就是递减栈。如果栈的起始地址放
[单片机]
基于S3C6410的<font color='red'>ARM11</font>学习(十三) C语言环境初始化
利用单片机实现CPLD的在系统编程
    摘要: 为了获得一定的灵活性,嵌入式系统大都设计而可编程逻辑器件CPLD。利用单片机对CPLD进行编程,可以方便地升级,修改和测试已完成的设计,文中给出了它的实现过程。     关键词: CPLD MCU ISP JTAG 一、问题的提出 嵌入式系统而灵活性的要求。一方面,应用环境会对嵌入式系统不断提出新的要求,需要更改最初的设计;另一方面指生产多个品种时希望尽量能在单一的硬件平台上实现。为了最大限度地满足灵活性的需要,嵌入式系统一般都设计而可编程逻辑器件CPLD。在设计阶段和现场运行之后的各个阶段,都可能会遇到设计的升级、修改和测试问题。FLASH的使用方便了程序的更新;带而在系统可编程(ISP
[应用]
CPLD 实现 GPIB 控制器的设计
摘要:GPIB 控制器芯片是组建自动测试系统的核心,在测试领域应用广泛。本文拟讨论用 ALTERA 公司的低成本 CPLD 来实现 GPIB 控制器的功能。GPIB 控制器芯片的硬件设计主 要分为状态机的实现、数据通道和微处理接口的设计。本文重点介绍了各个模块的实现原理。 关键词:GPIB,CPLD,三线挂钩,三态总线,VHDL。 1. 引言: 1.1 用 CPLD 实现 GPIB 控制芯片的意义 综观现今市场上的测试仪器,不难发现 GPIB 总线有重要的作用,在研制台式测试仪器 的时候,客户几乎均要求具备 GPIB 接口。可是在实际研发过程中,却发现 GPIB 控制芯片很难购买,而且价格昂贵。而且作为测试仪器具备 GPI
[工业控制]
<font color='red'>CPLD</font> 实现 GPIB <font color='red'>控制器</font>的设计
基于CPLD的DSP与声卡接口技术
 1引言   使用复杂可编程逻辑器件(CPLD)可提高系统集成度、降低噪声、增强系统可靠性并降低成本,同时它不仅具有电擦除特性,而且出现了边缘扫描及在线编程等高级特性,因而可用于状态机、同步、译码、解码、计数、总线接口等很多方面,在信号处理领域的应用也非常活跃。MAX7000系列是ALTERA公司采用先进的0.8μmCMOSEEPROM技术制造的高性能、高密度的CPLD 。MAX7000的结构可完全模仿TFL,并可将SSI,MSI,LSI和传统PLD的逻辑函数高密度地集成。EPM7128S是MAX7000系列的高密度器件,它有128个逻辑宏单元和最大100个输入,具有在系统编程(ISP)特性,非常适合输入、输出端要求较多的逻辑
[嵌入式]
基于<font color='red'>CPLD</font>的DSP与声卡接口技术
CPLD有大智慧 灵活应用在高频链逆变电源中
航空配电系统所用115V/400Hz电源一般是由直流逆变所得,主要供军用飞机、雷达等设备使用。逆变电源中的能量转换过程是,直流电通过逆变电路变换成高频脉冲电压,经滤波电路形成正弦波。近来,高频链逆变技术引起了人们越来越浓的研究兴趣。高频链逆变技术用高频变压器来代替传统逆变器中笨重的工频变压器,大大减小了逆变器的体积和重量。高频链逆变技术是由Mr.Espelage于1977年提出的,它与常规的逆变技术最大的不同在于利用高频变压器实现了输入与输出的电气隔离,减小了变压器的体积和重量。 传统的高频链逆变器由常规数字电路构成,存在设计复杂、抗干扰能力差等缺点。为了解决该问题,本文采用复杂可编程逻辑器件(CPLD)来实现控制电路的设计。CP
[电源管理]
小<font color='red'>CPLD</font>有大智慧 灵活应用在高频链逆变电源中
单片机+CPLD在电子设计中的应用
自20世纪80年代单片机引入我国以来,学习和应用单片机的热潮始终不减,特别是MCS51系列。这是由单片机的特点决定的。实际上,从单片机/CPLD应用通用数字集成电路系统,到广泛应用单片机,是我国电子设计在智能化应用水平上质的飞跃。据统计分析,单片机的销量单片机/CPLD到目前为止依然逐年递增,而且在很长一段的时间内,单片机依然会是电子设计的主角(虽然这一地址已经受到了CPLD的挑战)。 1 纯单片机系统优缺点 ①大量单片机/CPLD的外围芯片和接口电路使得单片机应用系统的设计变得简单而且快捷,新型单片机的上市和高级语言的支持(如C51)进一步延长了单片机的寿命。 ②长期稳定的发展和使单片机性价比非常高,而且单片机/CPLD积
[单片机]
单片机+<font color='red'>CPLD</font>在电子设计中的应用
FPGA/CPLD状态机的稳定性设计
  随着大规模和超大规模FPGA/CPLD器件的诞生和发展,以HDL(硬件描述语言)为工具、FPGA/CPLD器件为载体的EDA技术的应用越来越广泛.从小型电子系统到大规模SOC(Systemonachip)设计,已经无处不在.在FPGA/CPLD设计中,状态机是最典型、应用最广泛的时序电路模块,如何设计一个稳定可靠的状态机是我们必须面对的问题.    1、状态机的特点和常见问题   标准状态机分为摩尔(Moore)状态机和米立(Mealy)状态机两类.Moore状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化.Mealy状态机的输出不仅与当前状态值有关,而且与当前输入值有关,这一特点使其控制和输出更加灵活,
[嵌入式]
FPGA/<font color='red'>CPLD</font>状态机的稳定性设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved