微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于C8051的GPS/电子罗盘测姿定位系统设计

基于C8051的GPS/电子罗盘测姿定位系统设计

时间:01-09 来源:3721RD 点击:

引言

当前,卫星导航成为导航技术发展的主要方向,自助式导航继续发展,组合导航系统已经成为主要的导航方式。针对电子罗盘经启动后要较长时间才能稳定,而陀螺球转速高、磨损大、寿命短等问题[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 串行通信硬件结构框图

3 系统软件设计

系统的软件实现采用C语言,C语言具有功能丰富的标准函数库,具有运算速度快和可移植性强等特点。用C语言来编写软件会大大缩短开发周期,增强软件的可读性,便于改进和扩充。

对于串口的数据处理有两种方法:一种是查询的方法,另一种是中断的方法。查询的方法是不断地检测接收和发送标志位,当查询到有数据进入到SBUF时对SBUF数据进行判断,是否为所需的数据,如果是则存储到数据寄存器中。由于查询方法在编写程序时比较复杂,需要反复地查询标志位,但是相较于其他算法对于实现循环比较简单。本系统对串口接收和发送的数据采用的是查询的方法[4]。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top