引言
当前,卫星导航成为导航技术发展的主要方向,自助式导航继续发展,组合导航系统已经成为主要的导航方式。针对电子罗盘经启动后要较长时间才能稳定,而陀螺球转速高、磨损大、寿命短等问题[1],本文做了载体姿态和位置测量的研究。就测姿定位问题,本文基于单片机最小系统,设计了基于GPS/电子罗盘的测姿定位系统,将GPS与电子罗盘组合,利用多种信息源相互补充,构成了一种有多余度和高精度的导航定位系统。它具有高精度、稳定、小型化、易操作等特点,为最终组合导航的实现奠定了基础。
1 系统总体设计方案
基于GPS/电子罗盘的测姿定位系统结构框图如图1所示。
RXD0为GPS接收机发送到单片机的数据;RXD1为电子罗盘发送到单片机的数据;TXD0为单片机发送到MAX3232的数据;P(2~3)为单片机发送到LCD进行显示的数据。整个流程如下:首先,GPS接收机iTrax0302通过天线接收GPS卫星发射的信号,按要求输出当前经度、纬度和高度信息。电子罗盘HMR3300 实时输出跟踪天线的当前方向、俯仰信息。GPS 接收机iTrax0302和电子罗盘HMR3300 输出的信息由C8051F021单片机通过串行口接收,单片机子系统是整个系统的控制核心,它完成串行信息的接收、数据处理和对各部分电路的控制工作。经处理的信息由单片机串行口输出后,再经过电平转换芯片MAX3232实现由TTL到RS232电平的转换。最后,再由MAX3232将信息传入上位机显示即可。
图1 基于GPS/电子罗盘的测姿定位系统结构框图
2 系统硬件设计
2.1 电路的基本构成
在信息接收模块中,本系统采用iTrax0302作为GPS接收机,GPS上电后将自动从天线接收GPS卫星发射的射频信号,经过一系列的处理过程,通过并行通道完成最佳位置卫星的跟踪,测出卫星到天线的传播距离,解读导航电文,从而计算出经度、纬度、海拔高度等信息。iTrax0302是体积小、功耗低的GPS OEM板,具有极快的信号获取引擎,自带2个UART接口,可接收NMEA0183格式的数据和二进制的iTalk格式数据。
iTrax0302内嵌8 Mb的Flash,可用于存储中间定位数据,并为授时应用提供极高的精度[2]。对偏航、俯仰等姿态信息的获取选用了数字电子罗盘HMR3300,航向精度为±1.0°,分辨率可达0.1°,横滚和俯仰的精度为±0.3°,分辨率为±0.1°,输出端口采用RS232(或RS485)。同时,它还具有体积小、功耗低、价格便宜等特点[3]。
在信息处理模块中,GPS和电子罗盘将采集到的信息通过串口不断发送过来,单片机通过对这些数据的处理提取所需的有用信息,然后将有用信息按一定协议组装成数据包传送给电平转换器发送模块。控制整个系统的中央处理器选用C8051F021,它是集成在一块芯片上的混合信号系统级单片机,其最突出的优点就是改进了可以控制片内数字资源与外部I/O引脚相连的交叉开头网络。
C8051F021具有异步的双串口UART0和UART1,可分别用于接收电子罗盘信息与GPS信息。而在接收电子罗盘信息与GPS信息时要分为两个中断分别进行信息处理。C8051F021具有多中断源,满足这一性能要求。此外,C8051F021还具有低功耗、高速度、低电压工作(3.3 V)、高容量存储器等特性,满足本方案的要求,故信息处理模块采用C8051F021单片机。
信息接收和信息处理模块的硬件电路图如图2所示。
图2 信息接收和信息处理模块的硬件电路图
2.2 串行通信接口电路
在信息传输模块中,由于C8051F021引脚的信号电平为TTL类型,而上位机串口的异步串行通信是基于RS232标准的,两者通信信号的逻辑电平不一致,必须进行信号电平转换。而MAX3232芯片能直接将单片机输出的TTL电平转换成上位机能接收的RS232电平,或将PC机输出的RS232电平转换成单片机能接收的TTL电平,故采用MAX3232来实现其中的电平转换,从而实现系统的串行通信[4]。本系统的串行通信硬件结构框图如图3所示。
3 系统软件设计
系统的软件实现采用C语言,C语言具有功能丰富的标准函数库,具有运算速度快和可移植性强等特点。用C语言来编写软件会大大缩短开发周期,增强软件的可读性,便于改进和扩充。
对于串口的数据处理有两种方法:一种是查询的方法,另一种是中断的方法。查询的方法是不断地检测接收和发送标志位,当查询到有数据进入到SBUF时对SBUF数据进行判断,是否为所需的数据,如果是则存储到数据寄存器中。由于查询方法在编写程序时比较复杂,需要反复地查询标志位,但是相较于其他算法对于实现循环比较简单。本系统对串口接收和发送的数据采用的是查询的方法[4]。
图4 单片机信息处理流程
单片机信息处理流程如图4所示。首先,待单片机初始化后,开启中断0,关闭中断1,开始通过串口0接收电子罗盘信息。电子罗盘HMR3300更新频率为8 Hz,即每秒最多可更新8次[5]。为了保证其稳定输出,每秒钟提取4次电子罗盘信息。然后,以判断回车来表示接收完一次罗盘信息,即hmr[i]=10。待接收完毕后,开启中断1,关闭中断0,通过串口1接收GPS定位信息。iTrax0302更新速率为1fix/s。提取定位信息时,每秒钟提取一次GPS信息。接收到一条完整的语句后将其放入GPS数据存储区。同样地,我们以判断回车来表示接收完一次GPS信息,即gps[i]=10。
GPS信息接收完毕后,再开启中断0,关闭中断1,接收电子罗盘信息。同时,将采集到的姿态和定位信息通过串口0传送给MAX3232后,不断发送给上位机。在中断0中接收电子罗盘的数据时,需要提取的是其航向、俯仰和滚动信息,应判定接收到的数据是否为起始标志位,若是则开始采集数据,读取第二位数,进行采集的同时保存数据;如不是,则继续判定。
由于采用的是非定长通信,因此,在采集数据的同时还要判定当前位是否为结束标志位,若是则进行CRC校验,若正确则对得到的数据进行HPR分离;若否则开始新的采集。同样,在中断1中应在接收有效后,判断是否接收到GGA语句,若是再进行分析处理[6]。也可直接发送指令给GPS接收机,使GPS接收机只输出所需要的语句信息。同样的操作也适用于电子罗盘HMR3300。
4 实验验证
为了验证所设计系统的正确性和有效性,笔者进行了地面跑车实验。将该系统固定于汽车内,实验过程中可见卫星数为11颗,可用卫星为7颗。实验后,将采集到的数据运用MATLAB软件进行数据处理并对结果进行了分析。跑车实验数据分析如图5所示。结论如下:
① 通过对比汽车内的里程显示器与采集回来的实验数据计算得出跑车距离,结果均为2.9 km,基本一致;对比分析图中的轨迹显示与实际跑车路线,基本匹配;对比分析图中的姿态信息与实际跑车路线情况,基本匹配。
② 当卫星信号被某些障碍物暂时阻断时,仪器线路的瞬间故障使基准信号无法与卫星信号混频产生差频信号;外界干扰或接收机所处的动态条件恶劣,使载波跟踪环路无法锁定信号而引起信号的暂时失锁等,所有这些原因都会使GPS计数中断,使恢复跟踪后的整周计数产生错误,如何在短时间内测出何时发生整周数跳变,并求出丢失的整周数,则需要与惯性导航相结合,才能在任何条件下都实现高精度的实时导航定位,为MEMSIMU/GPS/电子罗盘组合导航系统起到更好的辅助作用。
图5 跑车实验数据分析
结语
本文设计了基于GPS/电子罗盘的测姿定位系统,以无线方式实现了载体的定位和姿态数据的采集,并通过将采集到的信息显示于LCD及上位机上,使信息更直观地展示在人们眼前。