本发明涉及一种基于arm和fpga架构的固定翼无人机的自动驾驶仪,属于嵌入式控制、无人机技术领域。
背景技术:
自动驾驶仪是按技术要求自动控制飞行器轨迹的调节设备,对于无人飞机,它可以与其他导航设备配合完成规定的飞行任务。自动驾驶仪在现代飞行器上,特别是在微型飞行器或微型无人机上逐渐获得广泛应用。
现有的无人机自动驾驶仪一般是由一个微处理器作为cpu来对输入的各种信息进行处理,同时将处理结果输出到各外设接口,驱动外设工作,实现无人机自动驾驶。这些自驾仪采用的处理器一般是单片机,arm或者dsp。这些自驾仪设计方案的缺点和不足之处在于使用单一处理器,对于信息的处理能力受到了限制,由于无人机的带载能力有限,多数自驾仪只采用了单处理器,这就导致了,单cpu既要采集处理各种传感器数据,还要对无人机的外设进行输出以进行稳定和导航的控制,单处理器要进行满负荷工作甚至超负荷工作,影响了系统的响应速度。
现有技术中也出现了一些用双处理器作为自驾仪处理器的例子,这样两个处理器之间的通讯就必须增加一个双口ram来进行协调工作。由于双口ram的操作本身就比较复杂,这样就使得自驾仪系统从软件和硬件上的逻辑结构都变得更加复杂,额外增加了处理器开销,系统的调试也变得困难。
现在的很多自驾仪采用成品的姿态获取器件,使自驾仪包含多个分离器件,体积较大,系统集成度不高,而且这些自驾仪控制软件中并未加入姿态解算算法,这就导致自驾仪不能对多传感器数据根据不同的环境情况进行融合优化,限制了自驾仪的适应性。
技术实现要素:
为了解决以上现有技术中的不足,本发明提出了一种基于arm和fpga架构的高度集成化的双处理器自驾仪。
本发明采用模块化的设计思路,整个系统包括处理器模块,flash模块,sdram模块,fpga配置模块,传感器模块,a/d转换模块,舵机控制信号输出模块,遥控接收机模块,数传电台模块,gps接收机模块,串口可扩展模块,复位电路模块,系统供电模块。其中,处理器模块基于arm和fpga架构,包括主处理器arm与协处理器fpga;传感器模块包括三轴角速率陀螺、三轴加速度计、动压传感器、静压传感器。
主处理器在系统中负责与无线电台的数据通信、无人机的控制计算、无人机的导航算法计算及与gps接收机数据交换,包括串口通信模块、控制导航模块、解姿态解算模块、遥控量接收模块、传感器读取模块和控制量输出模块;串口通信模块和传感器读取模块的输出都分别连接至控制导航模块和姿态解算模块,姿态解算模块的输出与控制导航模块相连,控制导航模块和遥控量接收模块的输出分别与控制量输出模块相连。
自驾仪有手动控制和自动控制两种工作模式,通过判断接收机指定通道的值,以实现自驾仪在两种模式间的自由切换。在手动控制模式时,遥控量接收模块从fpga获取接收机的控制量后,直接给到控制量输出模块,由控制量输出模块把pwm舵机控制信号输出到fpga;在自动控制模式时,串口通信模块通过串口通信协议从串口读取数传电台和gps接收机的数据,同时传感器读取模块也从fpga获取传感器数据,姿态解算模块综合gps数据和惯性传感器数据计算出无人机的姿态角,最终数据汇总到控制导航模块,计算出舵机的控制量,并由控制量输出模块输出给fpga。本发明的串口可扩展模块提供可扩展的通信串口,以便于增加外设。
本发明将协处理器作为主处理器的外设,主处理器按操作自身存储空间的方式对协处理器进行操作。主处理器和协处理器通过数据线和地址线连接,数据线设计为8根,数据以字节的形式传送,地址线数量可以根据外设数量和主处理器的地址空间选择。在设计中,与协处理器连接的每一个传感器都被分配一个独立固定的地址空间,主处理器通过地址线直接对特定地址进行读写,实现对该地址相对应的传感器进行操作,传感器读取的数据直接通过数据线传递到主处理器,实现了双处理器之间的数据交换。
协处理器在系统中完成外围传感器信号的采集、遥控量的输入采集、飞控电压和动力电压的采集、舵机控制量的输出,包括顶层模块、a/d读取模块、毛刺去除模块、接收机读取模块、气压传感器读取模块和pwm信号输出模块。顶层模块分别与a/d读取模块、接收机读取模块、气压传感器读取模块和pwm信号输出模块相连接,毛刺去除模块与接收机读取模块连接。顶层模块负责与主处理器进行数据交换,通过识别主处理器地址线上发过来的地址,判断主处理器对哪个外设进行操作,然后对a/d读取模块、接收机读取模块、气压传感器读取模块或pwm信号输出模块进行相应的操作,并将获得的数据传回给主处理器。a/d转换模块通过模拟的spi接口与a/d转换器相连,它的时序和数据读取采用状态机的方式编写,即通过设置不同的状态机及不同状态机之间的跳换,实现对spi时序的控制,进而实现数据输入和输出的控制,由于fpga的always语句之间是并行执行的,因此这种状态机的跳换效率更高,可实现对多个通道a/d输出量单独的进行读取;接收机读取模块采集手控接收机的pwm信号,毛刺去除模块直接与遥控接收机的各个输入通道相连,对接收机的输入信号进行去噪处理,避免噪声信号对自驾仪的干扰;气压传感器模块直接与动压、静压传感器通过模拟的spi接口相连,spi的时序是由主处理器控制;pwm信号输出模块直接与舵机控制输出模块相连,接收从顶层模块传过来的pwm信号,经过处理之后输出到舵机控制输出模块。
flash模块用来存储arm的控制程序,它通过标准的spi接口与arm通信。
sdram模块是对arm内部ram的扩展,是arm控制程序的运行空间,通过并行接口与arm进行数据交换。
fpga配置模块用来在上电时对fpga进行配置并存储fpga的配置信息,它与fpga的连接遵从altera公司的配置接口协议。
传感器模块包括三轴角速率陀螺、三轴加速度计、动压传感器、静压传感器。三轴角速率陀螺用来测量机体坐标系下无人机的三轴角速率,三轴加速度计用来测量无人机的三轴加速度,角速率陀螺和加速度计为模拟量传感器,它们的输出与a/d转换模块相连;动压传感器用来测量无人机飞行中的动压,静压传感器用来测量无人机的静压,二者为数字传感器,通过模拟的spi接口与协处理器fpga连接。
a/d转换模块完成三轴角速率陀螺、三轴加速度计及系统输入的飞控电压的模数转换,它通过模拟的spi接口与fpga连接。
舵机控制输出模块直接与fpga连接,对fpga输出的舵机控制pwm信号进行放大,并输出到无人机的各个舵机上。
遥控接收机模块用来接收外围的rc接收机的pwm控制信号,它直接与fpga相连。
数传电台模块通过串口通信协议与主处理器相连,它完成自驾仪与地面站之间的数据交换。
gps接收机模块也是通过串口通信协议与主处理器连接,它实时接收gps信息并传送给自驾仪。
串口扩展模块用来对自驾仪的备用扩展,以增强自驾仪的通用性。
复位电路模块用来对系统中的arm和fpga进行复位。
系统供电模块对外围的直流供电电压进行分类转换。
系统各组成的连接关系为:数传电台模块、gps接收机模块和串口扩展模块分别连接至主处理器的串口通信模块;主处理器的遥控量接收模块、传感器读取模块和控制量输出模块分别与协处理器的顶层模块相连;flash模块、sdram模块分别与主处理器扩展接口相连;fpga配置模块与协处理器的配置接口相连;复位电路模块分别连接到arm和fpga的复位引脚;系统供电模块分别为arm、fpga、a/d转换模块提供合适的工作电压。
本发明的双处理器自驾仪的工作过程为:协处理器实时读取无人机的各传感器信号(包括陀螺仪信号、加速度计信号、接收机信号、高度信号、速度信号),然后通过数据总线传递给主处理器,主处理器接收到这些信号后,综合串口通信模块读取的数据,进行姿态解算和控制导航后,最后主处理器将计算出的舵机控制量信号给到协处理器,并由协处理器输出给无人机的各个舵机,以此过程循环往复,实现对无人机的控制。
有益效果
相对于现有技术,本发明的优点在于:
1)本发明采用双处理器结构,主处理器负责控制计算,协处理器负责信号采集和输出,分工明确,效率高,系统响应速度快。
2)本发明的处理器架构中,将协处理器设计作为主处理器的外设,即主处理器可以按操作自身存储空间的方式对协处理器进行操作,减少了两个处理器之间因为交换数据而产生的额外工作量,效率更高。
3)本发明的fpga部分设计中,采用顶层模块加若干底层模块的设计思想,层次分明,并且在a/d模块的读取中采取状态机的方法进行,工作效率更高。
附图说明
图1是本发明的自动驾驶仪的结构示意图;
图2是本发明的主处理器的功能结构示意图;
图3是本发明的协处理器的功能结构示意图;
图4是具体实施方式中自动驾驶仪在某型无人机上的飞行轨迹图。
具体实施方式
下面结合附图对本发明作更为详细的描述。
本发明的组成框图如图1所示,包括处理器模块,flash模块,sdram模块,fpga配置模块,传感器模块,a/d转换模块,串口扩展模块,舵机控制信号输出模块,遥控接收机模块,复位电路模块,系统供电模块。
处理器模块包括主处理器arm,协处理器fpga。本发明中主处理器选用基于arm9tdmi内核的at91rm9200,它采用256引脚的bga封装,工作于180mhz时性能高达200mips,存储器管理单元具有16kb的数据缓存、16kb的指令缓存,它的内部sram16k,rom128k,均不能满足本发明的要求,因此都必须进行外扩。本发明中协处理器选用cyclone系列的ep1c6t144c8,它具有2910个逻辑单元,1个锁相环,13个m4kram块,59904位ram总量,34个差分通道,100个管脚,可以满足设计的需要。本发明中主处理器在系统中负责与无线电台的数据通信、无人机的控制计算、无人机的导航方法计算及与gps接收机数据交换,协处理器在系统中完成外围传感器信号的采集、遥控量的输入采集、飞控电压和动力电压的采集、舵机控制量的输出。
对于主处理器arm与协处理器fpga的连接,本发明采用8位数据总线,根据arm需要对fpga外接设备的操作数量,采用7根地址线进行区分即可。把fpga连接到arm的chipselect2上,这种连接方式相当于把fpga作为arm的外扩存储空间。由于只连接了7根地址线,地址范围为0x30000000-0x3000007f。此时,arm要对fpga的操作,只要定义好指向该空间的指针,就能像对外扩存储器读写操作一样对fpga进行读写操作。fpga通过arm的的片选信号判断是否有有效操作。如果操作有效,则fpga通过读取地址线上的地址,就可以判断是对连接在fpga上的哪个设备进行的读写操作。fpga通过对arm的与信号线的判断,就可以判断arm是对fpga读或者写。其中,与都是低电平有效。如果arm是写数据,则fpga经过相应的数据转换,把数据总线上的数据输出到外接设备。同样,如果arm是要读,则fpga就把已经读取到存放在寄存器中的值放到数据总线上,供主处理器读取。通过这这种设计方式,可以方便的完成arm与fpga的便捷、迅速的通信,协同完成处理器模块的功能。
本发明的flash模块采用atmel公司的串行dataflash,选用at45db041b存储器,容量为4mbits,除了主存以外,at45db041b还有两个容量为264字节的sram数据缓存,它采用spi串行模式与arm连接,大大的减少了占用的处理器接口。
sdram模块选择hynix公司的hy57v641620同步动态ram,存储容量为64mb(4banks*1mbit*16bit),通过主处理器集成的sdram控制器(sdramc)进行连接,具有独立的sdram刷新控制逻辑,不需要加入另外的刷新控制逻辑,sdram在arm系统中主要作程序的运行空间、数据缓冲及堆栈区,它通过并行的16位数据总线与arm进行数据交换。
fpga配置模块电路的设计是fpga部分的设计中的关键部分。本发明选用altera公司cyclone系列的一种低成本串行配置芯片epcs4,采用主动串行(as)模式对fpga进行配置,它与fpga的连接遵循altera公司的主动串行配置接法。
传感器模块包括角速率陀螺仪、加速度计惯性传感器和气压传感器。气压传感器包括动压传感器和静压传感器,动压传感器用于测量无人机相对于空气的速度,静压传感器用于测量无人机的气压高度,本发明采用ms5801压力传感器进行动压和静压的测量,两个压力传感器采用相同的片选和输入信号,输出信号采用两根不同的信号线连接到fpga上,采用在fpga上模拟类似spi通信逻辑,分别控制ms5801的sclk、csb和sdi管脚,完成对两个气压传感器的操作。本发明中采用基于mems技术的adxrs610单轴角速率陀螺仪sca610单轴加速度计,采用bga封装,都是模拟量传感器,分别采用三个陀螺仪和三个加速度计,安装位置互相垂直来测量无人机的三个轴的角速率与线加速度。角速率陀螺仪和加速度计采集到的模拟信号也通过ads1256转换为数字信号,arm再根据采集到的传感器测量信号进行姿态解算计算,进行数据融合,得到精确稳定的姿态角信息。
a/d转换模块选用ti公司的ads1256芯片,该转换芯片是8通道、24位的高精度a/d转换器。它内部集成了输入模拟多路开关(mux)、输出缓冲器(buf)、可编程增益放大器(pga)和可编程数据滤波器,具有较低的噪声。本发明采用8通道单极输入配置,aincom作为公共端接模拟地,ain0-ain2连接3个角速率陀螺仪,ain3-ain4连接3个加速度计,ain5、ain6可作为电压输入检测,用来检测自动驾驶仪供电电压和舵机供电电压,电压在输入前要经过分压处理。接+3.3v电源,采用指令方式进行同步和复位操作。4个i/o口d0-d3不使用,d0的时钟输出设定为无效状态,其余设定为输出的管脚悬空,这样有利于减小电源的消耗。ads1256读取采用修改mux寄存器循环读取的方式,对8个通道逐个读取,ads1256通过spi总线与协处理器fpga进行连接。
本发明中遥控接收机模块用来接收遥控器的各个通道的输入,它与接收机的各个通道直连,并将采集到的遥控信号直接输入到协处理器fpga。它可以完成切换无人机的自动/手动模式,并在手动模式下对无人机进行遥控控制。
本发明中,at91rm9200有个3个通用同步/异步发送/接收器(usart)和一个两线调试串口uart。在正常工作模式下,调试串口和普通串口一样,这样就有四个uart可以使用,可以方便的与外部串口设备进行连接。本发明的数传电台模块是连接到arm的调试串口,但是需要进行电平的转换,即由tll电平转换为rs-232c电平,以方便与外围的x-tend无线数传模块进行通信。发明采用多通道的rs-232驱动器/接收器max3243芯片进行电平转换。数传电台模块接收地面站传送的数据包给arm,实现地面站对无人机控制参数等的修改,同时又可以将无人机的状态信息传送给地面站,实现地面站对无人机的实时监控。
本发明中将gps接收机模块与uart0连接,不需要转换为rs-232c电平,gps接收机采用瑞士μblox公司的lea-5s系列的gps接收机,设计供电电源采用+3.3v,由复位电路提供上电复位,与主处理器arm接口采用uart串行通讯,采用ubx通讯协议,发送的数据中包含经度,纬度,航向等导航信息。
自驾仪通过控制舵机的转动角度来完成对升降舵、方向舵、副翼、油门和其它负载的控制。舵机信号输出模块通过输出pwm信号来控制各个负载的开度,将油门开度控制指令转化为pwm信号输出给油门舵机,以此来控制无人机的速度,将升降舵、方向舵、副翼的舵面开度控制指令转化为pwm信号输出给多路舵机,以此来控制无人机的姿态,高度和速度,驱动器选用philips公司的74alvc16245驱动芯片,74alvc16245分为a、b两组端口,通过控制1dir和2dir管脚可以控制na和nb端口的数据的方向。通过控制和可以禁止和使能a、b端口的数据输出。a组端口接fpga管脚,电压为+3.3v,不用的输入管脚作接地处理;b组管脚作为输出连接数字舵机,数据流向从a到b,使能输出。
为了保证处理器能稳定可靠的工作,复位电路模块是本发明中必不可少的部分。本发明主要有arm、fpga、dataflash和gps接收机需要上电复位,设计采用专用的复位芯片tcm809,由它产生的复位信号直接连接到各个芯片的复位引脚。
系统供电模块为无人机提供+5v、+3.3v、+1.8v、+1.5v等多档电压。为了获得较好的电源电压性能,减少信号的串扰,陀螺仪、加速度计等模拟量部分要和数字量部分分开接地。
本发明通过图1所示的结构将以上各个模块连接起来,自驾仪通过各个传感器获取信息,包括姿态信息,高度,空速等信息,通过arm中的飞行控制程序以及来自地面站的指令,按照控制律,根据设定的参数对无人机各个舵机以及油门开度进行有效控制,保持无人机稳定的飞行,并完成规定任务。
本发明的自驾仪在某型无人机上的实际飞行实验结果如图4所示。小圆点是预设航点,直线是预设航线,曲线是实际的飞行轨迹。无人机在箭头所示的点处由手动状态切换到自动状态,并按照预设的航线进行飞行,压线效果良好。实验表明,本发明的自动驾驶仪对无人机的控制达到了预期的要求。