本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

无需依赖GPS或NTP同步,精确度为+/- 1秒/月的精准时钟模块diy

发布时间:2020-01-22
分享到:

无需依赖GPS或NTP同步,精确度为+/- 1秒/月的精准时钟模块diy

发布时间:2020-01-22
分享到:

本项目是基于STM8S003微控制器的LED时钟。该时钟使用固件24位数字控制器振荡器来实现微调公差。校准后,无需外部同步。

产品特点:
-6位7段LED显示屏
-带有Supercap的RTC备份。
-时间,日期,夏令时
-低功耗:5V 20mA

我选择使用普通的12MHz晶体作为频率源,而不是其他项目使用的常规RTC模块。  

如果在温度受控的家庭环境中使用时钟,则温度变化可能很小,足以在不使用TXCO的情况保持可靠 。例如,将加热器设置为21C,将空调设置为25C,则意味着变化约为4C。

STM8中的16位定时器生成20Hz的IRQ。然后,通过使用固件中实现的24位数控振荡器(NCO)可以生成更准确的10Hz 。  

例如,如果您的20Hz为+ 50ppm快速= 20.001Hz,则可以使用NCO将其除以2.0001,以获得10Hz。

NCO可以通过跟踪累加器中的相位来执行小数分频,下面这三行额外的代码是非常精细的分频所需要的! 

RTC代码使用10Hz来更新时间,日期并实现北美的夏令时(DST)。

RTC代码是在固件中实现的,因此可以适合使用不同时间单位的奇数时钟。例如,公制时间或火星时间。

准确性
该测试在11月25日至12月25日进行,并且在1个月后不到+/- 1秒。这包括公差,由于温度,功率等导致的长期漂移。4周6天后,时钟速度降低了1秒。可以看出,这与校准后的一些更好等级的RTC一样准确。

与普遍的看法相反,现成的RTC模块是混在一起的,一些常见的带有外部晶体的晶体根本不准确。

无需任何校准的RTC模块的精度:

>但是,在我们的实验项目中(将该RTC与  Arduino结合使用  用于数据记录器等),我们发现这些DS1307模块的计时精度差异很大-每天增加/减少几秒钟,而另一些每天增加/减少几秒钟/每天最多损失3-5分钟。 

>该模块上的DS3231芯片的精确度为2ppm(百万分之一),这意味着每5至6天丢失或获取的时间不到一秒钟。到目前为止,我们测试过的单位都以不到1ppm的精度输入,因此每月最多损失或增加几秒钟。

使用GPS校准高质量的RTC模块时:

>此(DS3231)RTC在本周的性能为-0.038ppm +/- 0.085 ppm, 每年大约1秒快速

>本周PCF2129的性能为0.462ppm +/- 0.239 ppm,每月大约慢1秒。

这两个参数目前来看还都比较让人满意。

校准
该时钟可以在没有外部频率计数器,GPS等的情况下进行校准。我只是使用二进制搜索算法通过直观地比较时钟的运行速度是否比原子钟网站快/慢来缩小除数的值,这些测试中的每一个只需要足够长的时间就可以注意到差异。随着测试的进行,随着时钟变得更加准确,每个测试的运行时间会更长。优点之一是长期效果/漂移是测试的一部分,因此这是现实生活中的准确性。

到目前为止,我已经将这种比较降低了7-8倍,而我的准确度不到+/- 1秒/月。令我惊讶的是,非常不准确的晶振可以如此出色。当然那我们也可以进行更多的调整,但是我认为其他因素(例如温度漂移等)将成为限制因素,除非我用更稳定的时钟源(例如TXCO或OCXO)代替晶体。

用户界面
时钟和显示时间:

箭头键在时间和日期显示之间切换。例如1月16日(星期四)如下所示。 
7段LED只能显示一组有限的字符。

可以使用3个按钮设置时间​​(以及类似的日期)。

硬件描述:

最初,我计划使用VFD,但4位数字的用户界面有太多限制。(我已经必须用16x2 LCD限制STM8计时器上的UI) 

我使用了STM8S003、74HC595和几个便宜的绿色7段显示器。实际上,显示效率还不错,因为整个时钟都在5V电压下以〜20mA运行。

使用DDS在固件中实现RTC,以进行精细的频率调整,超级电容器可使STM8在电源故障期间工作几分钟,LED驱动器位于单独的导轨上。

PCB已连接到原始PCB,以使用现有按钮。另外,用于公共阴极驱动器的GPIO用于轮询按钮。

我本可以单独使用STM8,但是74HC595腾出来了一些GPIO线,UART,I2C,定时器引脚,电源和调试接口使用现有的RJ11切口连接到I / O面板PCB上的接头连接器。

(此后,我将电源连接器更改为MicroUSB,因为它具有更好的闩锁功能。)

外部I / O
有使用现有孔(一对RJ-11用于呼叫者ID)的I / O连接。它们是5V电源输入,用于硬件调试器的SWIM,3.3V串行端口:Tx,Rx +电源,1 GPIO,I2C。

并排更换了老旅行者的卡西欧钟表,因为它在夜间很难阅读。

 

 

 

文章来源hackaday

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论