GPS(Global Positioning System)全球定位系统是利用美国的24颗GPS地球卫星所发射的信号而建立的导航、定位、授时的系统。目前,GPS系统广泛地应用在导航、大地测量、精确授时、车辆定位及防盗等领域。
GPS授时功能是其主要功能之一。时间信号的准确与否,直接关系到人们的日常生活、工业生产和社会发展。GPS时钟为满足精密定位和导航的需要,在系统设计与实验之初就建立了自己专用的时间系统,该系统简写为GPST,它由GPS主控站的高精度原子钟守时和授时。由于计算机技术、网络技术、通信技术、GPS定位技术等相关技术的发展,以及GPS OEM板价格的降低,GPS时钟已经具备了为各个应用领域提供高精度授时的可能性。
本文旨在通过利用GPS所提供的精确授时功能,采用 单片机 技术,设计适合于需要精确授时的高精度时钟系统,并通过LCD进行显示。
2.GPS授时原理
GPS时间系统是由GPS系统定义和使用的时间系统。卫星定位系统以时间为基本观测量,由于卫星高速飞行,因此要求时间系统必须十分精确,否则就会带来很大的距离误差。GPS时间系统以原子频率标准作为时间基准,以1980年1月6日0时作为起点。它不存在跳秒,它的时间与协调时秒以下的差异可以保持在100微妙内,并定期公布误差,在星历文件中发布的卫星钟差就是相对GPS时间系统的钟差。
GPS 授时的基本原理是: 卫星不间断地发送自身的星历参数和时间信息, 用户接收到这些信息后,经过计算求出接收机的三维位置、三维方向以及运动速度和时间信息。这里只需要 GPS 授时系统的时间信息。若设(x,y,z)为接收机的位置, (xn,yn,zn)为已知卫星的位置, 则解下列方程就可以得 x,y,z到和标准时间 T:
(x-x1)2+(y-y1)2+ (z-z1)2 =C2(T+ T-T1 - 1)
(x-x2)2+(y-y2)2+ (z-z2)2 =C2(T+ T-T2 - 2)
(x-x3)2+(y-y3)2+ (z-z3)2 =C2(T+ T-T3 - 3)
(x-x4)2+(y-y4)2+ (z-z4)2 =C2(T+ T-T4 - 4)
其中△T为用户时钟与 GPS主钟标准时间的时差;Tn 为卫星 n 所发射信号的发射时间; 为卫星 n 上的原子钟与GPS主钟标准时间的时差[1]。
3.本系统构成及硬件软件实现
3.1 本设计采用GPS板介绍
本设计采用THALES-NACIGATION公司生产的A12 GPSOEM接收板,它采用了先进半导体设计手段,具有尺寸小、功耗低、性能稳定、性价比高等优良特性。利用它可以方便、快速地开发出各种GPS应用系统。其主要性能指标如下:
接收通道——12通道并行接收,可同时跟踪12颗卫星;
授时精度——小于400ns,无累计误差;
数据更新时间——1s;
体积和重量——39mm×60mm×10mm,约重40g;
数据输出格式——NMEA-0183 v2.0;RTCM-sc104 v2.0;
环境工作温度——-30℃~+80℃;
正常工作参数——电压5(1±0.05)V;电流70mA。
图1 GPSOEM板A12
GPSOEM板提供硬件接口如表1所示:
管脚
信号类型
功能
1
VCC
电源
2
V_ANT
天线电源接口
3
V_BACK
备用电源
4
GND
地
5
RTCM
接收信号口B
6
RXD
接收信号口A
7
TXD
发送信号接口A
8
1PPS
1个脉冲输出/秒
表 1 GPS输出接口定义
其输出数据逻辑电平为 TTL 电平,这样能够很方便地与 单片机 相连。格式位默认为:波特率4800,8个数据位,1个停止位,无奇偶校验位。GPS输出数据采用NME-0813格式输出,数据代码采用ASCII码字符,本设计采用NME-0813中RMC格式,下面是GPS输出的一组数据:$GPRMC,140736.00,A,3800.9040,N,11226.5364,E,00.0,355.6,121106,04,W,D*3B,其中140736.00代表14时07分36.00秒,121106代表06年11月12日,根据系统需要,我们需要提取这个数据。GPS所得时间为格林尼治时间(零时区),要得到北京时间(东八区)一定要将提取到的世界时加上 8 h 才是北京时间。
3.2 系统组成及其实现
系统选用ATmega128 单片机 ,它有丰富的外部资源,利用它的USART1与GPS接收机通信:
液晶显示器采用含控制器S1D15G14的3510i彩色液晶显示,S1D15G14附带有LCD电源驱动电路的LCD驱动器,可在单片上实现彩色显示,能显示4096色,分辨率是98x67。它与 单片机 ATmega128采用串口连接。
主程序提取GPS数据采用查询方式[2],
GPS时钟在ATmega128上软件实现[3] (其中LCD函数为显示函数):
if(USART1_Receive() == $) // USART1_Receive()为串口接收函数
{ while((gps_data_buff[counter ++] = USART1_Receive()) != *);
data = 1; j = 0; i = 0 ; //接收数据放入gps_data_buff[ ]数组当中
for (i=0;i<69;i++)
{if(gps_data_buff[i] == ,)
{ data ++ ; j = 0;
}
switch(data)
{ case 1: break;
case 2: time[j ++] = gps_data_buff[i + 1];time[j] = \0 ; break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
[1] [2] 下一页
本文关键字:暂无联系方式AVR单片机,单片机-工控设备 - AVR单片机