linux gpsd 授时原理,app/ntp/gps/README.md · 王者归来/ITTS - Gitee.com

## [原创] 用GPS模块建立高精度ntp服务器

本文原创:**中国科学技术大学 张焕杰**

修改时间:2019.02.26

# 零、高精度时间的定义

简单的说,衡量时间主要有2个参数,分别是offset和jitter。offset可以理解为与标准时间的偏差,jitter可以理解为时间均匀度。

比如一个石英钟,每天对比与CCTV新闻联播时间一致,可以认为jitter为0,但offset并不一定为0,因为电视信号传播需要时间。

理想的ntp服务器,offset和jitter都为0。

对于现实的计算机,我们希望:

* 时间单向增加,也就是不会发生往回调表的情况。

* 时间均匀增加,也就是不会忽快忽慢,即上面描述的jitter尽量接近0。

* 与标准时间偏差尽量少,即上面描述的offset尽量接近0。

使用GPS模块授时的ntp服务器,据称offset可以到10µs(即0.01ms,大约相当于光或电波传播3km的时间)左右,jitter与服务器晶振和环境温度有关,一般可以到10µs以下(即0.01ms)。

# 一、GPS授时简单原理

GPS卫星有精密时钟源,GPS模块依靠接收到信号时间差来计算位置,同时可以通过以下两种方式对外输出时间信息:

一是通过串口输出NMEA语句,如下的北斗格式(GPS格式,前面是$GPRMC)输出:

```

$GNRMC,015022.00,A,3150.59184,N,11716.04078,E,0.242,,260219,,,D,V*12

```

其中的015022是时间01:50:22(UTC时间,对应的北京时间是09:50:22),260219是2019年2月26日。

这种输出,由于串口工作在9600BPS速率,误差比较大。

二是通过引脚 1PPS,信号的上升沿表示每秒钟的开始。1PPS信号的精度比较高,在10-30ns。

结合以上两种方式,可以从GPS模块得到高精度的时钟信号。

# 二、GPS模块/接收器的选择

如果是连接PC机使用,建议选择RS232信号电平的模块,如果连接树莓派机器使用,可以使用TTL信号电平的模块。

绝大部分GPS模块,引出了电源、地、RX、TX四根线,而并未将1PPS信号引出。用作ntp时,购买时让商家断开RX信号,引出1PPS信号。

我从taobao 深圳北天通讯 购买的 GPS/北斗双模BS-70DU接收器,其中USB口用来给模块供电,RS232口用来通信。

特别注意:购买时与店主沟通,让店主断开RX信号,将1PPS信号连接到DB9的1口,即DCD信号。

模块外形如下:

![BS-70DU](bs-70du.png)

后来&#x

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值