单片机系统实时时钟日差补偿的算法设计

2019-12-19 02:04吴天强叶敏朱剑潘超
科技风 2019年34期
关键词:单片机

吴天强 叶敏 朱剑 潘超

摘 要:根据实时时钟运行的日差大小,在计时控制程序中,设置自动补偿并校正参数的功能,使系统的计时运行误差,在连续较长的一段时间内,保持在较小的波动范围,以减少计时的累积误差,提高计时精度。该算法适用于低成本的单片机或嵌入式系统,使用软件控制自动补偿计时日差,代替人工校正过程。其缺点是不同时钟芯片的计时日差,各不相同,首次运行时,需要与标准计时进行校对,以确定其合适的补偿量。

关键词:单片机;实时时钟;日差;算法设计

1 问题提出

实时时钟(RTC)也称为时钟芯片,是一种广泛应用的电子器件,用于提供精确的实时时间,或者为电子系统提供时间基准。大多数时钟芯片,均采用精度较高的晶体振荡器作为时钟源,因此,晶振的频率误差大小,决定了计时系统的性能。

时钟芯片和晶振组成的计时系统,短期内有较高的精度,长期运行,因累积误差,导致其计时误差越来越大。例如,独立应用实时时钟的各种电子产品,运行一段时间后,与标准时间会有较大差异,需要人工手动调整计时参数,以适合计时需求。

单片机或嵌入式芯片组成的实时时钟系统,若在控制程序中,设置计时自动补偿功能,用以代替人工手动校正,能够减少计时系统的累积误差,达到优化产品性能目的。本文将从晶振的参数、补偿方法、算法设计等三个方面说明实时时钟计时补偿的方法。

2 晶振的参数

石英晶体振荡器(以下简称晶振)是利用石英晶体的压电效应制成。晶振可以分为普通晶振、温补晶振和恒温晶振。不同类型的晶振,其技术指标有较大差异。文献[1]指出晶振的性能参数有开机特性(10-6~10-11)、日频率波动(10-6~10-11)、日老化率(10-6~10-11)、頻率复现率(10-6~10-11)、频率准确度(10-5~10-10)和1秒频率稳定度(10-8~10-12)。

从上述指标系数中可以看出,符合规格要求的晶振,其1秒频率稳定度相对较高,而频率准确度的指标系数则相对较低,故频率准确度是判别晶振好环的一个重要因素。另外,由于温漂影响,晶振的频率准确度也与运行环境温度相关,因此,温度补偿,是提高晶振频率准确度的有效方法。

3 补偿方法

3.1 温度补偿

温度补偿是为消除温度变化引起晶振的频率误差。恒温晶振使用具有单层或双层的恒温装置,以及对应的温控电路,使晶振工作过程温度尽可能保持不变,减少温度变化对频率稳定度的影响。

温补晶振则是把温度变化对振荡所产生的频率误差进行补偿,以提高晶振的频率稳定度。“在常温下(25℃),实时时钟精度约为±20ppm,针对晶体振荡器的温漂特性,设计了一种分频链的频率校准算法,校准精度达±0.25ppm”[2]。集成温补晶振具有更宽温度范围的工作性能,“其输出信号的频率稳定性可在宽温范围(-30℃~+85℃),达到±1×10-6”[3]。以上案例表明,温补晶振能有效提高频率稳定度的指标系数。

温补晶振和恒温晶振均通过辅助电路或装置,来减小或消除温度的影响,提高晶振的频率稳定度,但是也不能完全消除频率误差。获得更高精度时钟的另一种方法,是采用同步时钟。

3.2 同步时钟

同步时钟精度高,一般用于对时钟有严格要求的系统。常用的同步时钟有卫星同步时钟和网络同步时钟。

卫星时钟同步,是利用晶振短期计时精度高的特点,与卫星时钟进行同步,可以得到高性能价格比的高精度时钟发生装置[4]。“将GPS信号的长期稳定度和准确度与晶振的短期稳定度相结合,大大提高了频率源的性能”[5],若“使用全球定位系统(GPS)接收机的整秒脉冲信号和串口时间信息,作为高精度的时间源,同步精度优于500μs”[6]。卫星“时间同步在航天测控、卫星遥感、军事靶场、视觉测量、电力运输等领域有重要意义”[6]!

网络时钟同步,也是一种获得高精度时钟的方法。基于“IEEE1588高精度时间同步算法,通过晶振补偿和OffsetTime滤波,达到了微秒级高精度同步系统的要求,适用于机电控制、通信等领域”[7]。

除了上述的温度补偿、同步时钟以外,在时钟同步精度要求不高的场合,也可用采用日差补偿的方法,来提高时钟芯片的计时精度。

3.3 日差补偿

计时器一天的走时误差,称为日差。由于时钟芯片所使用的晶振,存在频率误差,因而独立使用时钟芯片的计时器,一定存在走时误差。对于时钟同步要求不高的场合,存在走时偏差的时钟,可以人工校准,也可以由程序自动校正。

如图1实时时钟偏慢补偿示意图所示,将实时时钟与标准时钟进行比较,可以得到补偿量,将此补偿量,向前叠加到实时时钟(加快实时时钟)的计时数据中,可完成实时时钟的偏差调整。若实时时钟偏快,则需要将得到的补偿量,向后叠加到实时时钟(减慢实时时钟)的计时数据,以完成计时校正。

对于以独立时钟芯片的作为计时依据的各种电子产品,可以采用日差补偿的方法,提高计时的准确度。具体实施方法是,经24小时实走,与标准时钟进行比较,得到日差补偿量,在程序中设置对应补偿参数。然后,在实际计时过程中,每天由软件自动校正偏差,减少计时的累积误差,达到优化计时性能目的。

日差测试所需时间较长,应用不方便。如果计时系统显示最小位是秒的产品,可以在首次运行时,由用户根据实际运行天数的走时误差,估算出日差补偿量,并进行参数设置即可。实时时钟的日差补偿量,也可以通过测量瞬时日差得到。

4 算法设计

单片机系统实时时钟日差补偿,如图2日差自动校正流程图所示,根据时钟校正的时刻点不同,可以分为(a)、(b)两种情况。程序设计中,这两种情况都需要设定一个“标记位”的变量,其作用是记录能否进行日差补偿的状态,防止程序循环执行中,多次连续、重复进行日差补偿,而使计时出错。

以图2日差自动校正流程图(a)为例,说明“标记位”变量的作用。程序运行时,“标记位”变量初始状态被置1,以及计时到达“时间点1”的时刻,“标记位”变量也置1,置1表示允许进行日差补偿。计时到了“时间点2”的时刻,并且“标记位”变量是1时,则由程序自动将设置好的补偿量,向前(加快)或向后(减慢)叠加到当前时钟数据上,得到新的时钟数值,同时将新的时钟数值,写入实时时钟芯片,完成以上调整后,将“标记位”变量置0,以确保每天的日差补偿有且只有一次。

在图2时钟校正流程图(a)和(b)中,“时间点1”和“时间点2”之间的时间间隔值(以下称间隔值),应该要大于可能设定的补偿量,否则,在自动调整时钟过程中,向前(加快)或向后(减慢)调整后的时钟值,有可能会跳至“时间点1”和“时间点2”的时刻所界定的时钟区间之外,使程序运行出错。因此,以下两种可能,在程序编程中,应该避免发生。

第一种情况,如图2日差自动校正流程图(a)所示,在“时间点2”时刻,自动向后(减慢)调整时钟数值,完成调整后,“标记位”变量被置0。若补偿量超过“间隔值”,必定使新时钟的数值,指向“时间点1”前的某一个时刻,使“标记位”置1的程序又被触发,导致程序反复进行日差补偿,进入死循环。

第二种情况,如图2日差自动校正流程图(b)所示,若在“时间点1”时刻,自动向前(加快)调整时钟数值时,补偿量大到超过“时间点2”的时刻,则程序会跳过“标记位”变量置1的执行流程,使日差补偿动作,只执行一次,程序失去计时补偿功能。

因此,程序流程中的“间隔值”,必须大于日差补偿量,且要留有一定裕量。非专用型的液晶数字秒表,其瞬时日差为±1.5S/d[8],参考此数据值,程序中的补偿量范围,可以限值在60S以內,间隔值则应大于60S。对于某些家用产品上的独立时钟,进行日差自动补偿调整的时刻,宜选在凌晨两、三点钟较为合适。

5 仿真结果

图3是PROTEUS日差补偿仿真图,仿真时钟芯片为DS1302,截图中的LCD显示,当前设定的日差补偿量为+2秒/天,“+”表示是加快时钟的补偿量。对于计时最小单位是秒的时钟芯片,若遇到实际走时日差不足1S时,应增加天数,直至误差达到1秒以上,才进行时钟校正。对于计时显示最小单位是分钟的产品,也可以考虑将月差作为自动调整的周期。将“标记位”变量的置、复位控制,改成日期计数功能,可以实现对于任意周期天数的计时偏差进行补偿。

6 结语

上述提出的日差补偿算法,是对独立时钟芯片的计时系统,在实际应用环境,综合运行一段时间后产生的误差,进行补偿的方法,适用于低成本的单片机和嵌入式系统,由软件程序设置自动补偿功能,代替人工校准过程,在不提高产品器件成本的前提下,优化计时性能,提高产品的用户满意度。其缺点是不同器件的计时误差,各不相同,首次运行时,需要与标准计时进行比对,以确定其合适的补偿量。

参考文献:

[1]JJG180-2002,电子测量仪器内石英晶体振荡器检定规程[S].北京:中国计量出版社,2003.

[2]李根岱.可校准实时时钟芯片的研究和设计[D].华中科技大学,2007.

[3]江玉洁,陈辰,等.一种全集成化的温补晶体振荡器[J].宇航计测技术,2003(03):52-57.

[4]曾祥君,尹项根,等.GPS时钟在线监测与修正方法[J].中国电机工程学报,2002(12):42-47.

[5]马彦青.恒温晶振OCXO自适应驯服保持技术研究[D].西安电子科技大学,2011.

[6]王向军,张亚元,等.基于GPS和高精度实时时钟的时间同步方法[J].纳米技术与精密工程,2016,14(01):66-70.

[7]桂本烜,冯冬芹,等.IEEE1588的高精度时间同步算法的分析与实现[J].工业仪表与自动化装置,2006(04):20-23.

[8]GB/T22778-2008,液晶数字式石英秒表[S].北京:中国标准出版社,2008.

基金项目:2018年度高校访问工程师“校企合作项目”(项目编号:FG2018242)

作者简介:吴天强(1977-),男,工程硕士,讲师,从事电子电路教学研究工作。

猜你喜欢
单片机
基于单片机MCU的IPMI健康管理系统设计与实现
浅析51单片机的特点与应用
单片机在智能控制中的应用
C8051F020与80C51单片机的异同点
MCS—51单片机多串口通讯技术应用分析
一种单片机虚拟实验室的建立方法
点阵式液晶显示器lMl2864与51单片机的接口设计
单片机I/O口模拟串行通讯的C51实现方法
单片机调试方法的探讨
用PIC单片机制作的时间继电器