找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3610|回复: 15
打印 上一主题 下一主题
收起左侧

日差1秒之内的单片机时间钟方案

  [复制链接]
跳转到指定楼层
楼主
ID:123289 发表于 2021-3-31 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
理论上只要是用晶振作为时基的单片机时间钟,在常温下做到日差1秒之内,甚至更精准是应该极易达成的。
只是许多人并不知道如何达成这个目标的方案。
而且市面很多带单片机的产品中,时间都做不准,这绝对是设计问题。例如:我的车子上的时钟日差有10秒多。
一般大多数人所设计的定时器时常是根据晶振标出的数据(如12M)计算而成的,固定不变,设计呆板。但普通晶振的实际振荡频率是不可能与标出的数据完全相同的,例如:12.00043M,11.99985……,这个误差必然积累,所以时钟就不准了。另外也绝大多数设计没有考虑微调方案,对于日差几秒无法控制。
日差1秒要求的精准是:1秒/(24小时*60分*60秒),对应12M晶振,当频率是12.000014M或11.999986M,日差就有1.2秒,可见用普通晶振做的时间钟,会因精度不够,如果不采取修正措施,时钟日差10多秒是很普遍的。
在我设计的有单片机时间产品中,随机取10个,同时上电,3天后再看时钟,它们之间的最大时间误差,一般都不会超出1秒(普通晶振,不联网)。许多产品月差在1秒之内。
如何做到的呢:
1、将时间的定时中断时常数做成可修正的,且加入微调常数,定时时常数与微调时常数在FLASH中取得。微调时常数用于修正时常数的小数点之后的部分。
2、程序可以对某端口输入的秒脉冲再进行计算,并据之修正定时器的时常数,以及微调常数,并存入FLASH中。达成利用外部精准脉冲源对时钟进行校准的目的,说白了,就是用外校消除普通晶振的个体差异。同时程序也可以输出自己的秒脉冲,这样就可以达成产品之间的互校。
3、选择一个产品,对其时钟进行精确校准(这需要外部精准的时钟源。如果手中没有,可以多花点时间,用手机、电视、广播上的报时进行校准),这样就可以将它做成一个自己的【标准秒脉冲时钟源】。
4、产品出货前,用自己的【标准秒脉冲时钟源】校一下(将输出的标准秒脉冲送入其它产品的校准端口,让其它产品自动完成定时器时常数及微调常数的修正。)
如此处理,时间钟的精度就取决于晶振的稳定度,而不是精度。而晶振的稳定度普遍可以达到PPM级,当环境温度变化不大时,极易保证<11.57PPM,这就达成了日差小于1秒的目的。
产品相关时间基准的程序:(只提方案,不提程序代码。)
1、将端口输入的秒脉冲与本体的晶振频率进行比对,计算出定时器的时常数与微调时常数。(只做一次即可,计算结果保存到FLASH了,其最初值是按晶振的标称值计算确定的)
2、时间微调补偿
3、秒脉冲输出(用于互校,可以放弃不写)
要点:定时器的时常数不是程序直接赋值,而是从FLASH中调取的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:22266 发表于 2021-4-1 03:30 | 只看该作者
我以前也是自制过好几个时钟,一开始是用定时器的特别不精确一天差了数分钟,程序怎么补偿效果都不佳,我一直以为是电容或者晶振的温飘导致的,而温度补偿的话太过麻烦,后来就放弃研究了改用了DS3231,过了准了很多,不过还是太理想一天误差也有小几秒,不知道是芯片来路不正还是什么原因,反正几块钱的那种.后来偶得一片被弄掉了一个角的残缺ds12c887,于是到论坛里面找程序,这货居然是好的,尽管外表破旧不堪,神奇的这个有瑕疵的ds12c887居然非常精确连续几天都不差一秒.
看了楼主的文章,突然茅塞顿开,有时间也去测试下,毕竟你这个方法是最省的.
回复

使用道具 举报

板凳
ID:433029 发表于 2021-4-1 07:51 | 只看该作者
以前用内部RTC做了一个时钟,校正了,拿回老家就不准了,老家温度很低0度左右,后面改用GPS定时校正。
回复

使用道具 举报

地板
ID:824490 发表于 2021-4-1 09:18 | 只看该作者
高稳时钟,温补晶体了解一下,并不是很贵,
此款为温补贴片晶振 TCXO 3.2x2.5mm 4脚 DSB321SDN 1XTW24000MDA 24.0000MHZ 1.8V-3.3V 供电 宽温 -40-85 ℃ 高稳定性 高精度 +-0.5ppm 是您通讯设计 移动设备 蓝牙 GPS 等接收信号的 好选择。KDS 进口品牌 DSB321SDN 正弦波输出 振幅 0.8VPP-1.0VPP

回复

使用道具 举报

5#
ID:746422 发表于 2021-4-1 15:45 | 只看该作者
日差1秒,这个误差已经是很恐怖的了,一个月就30秒,2个月1分钟,半年3分钟,一年6分钟。
回复

使用道具 举报

6#
ID:155507 发表于 2021-4-1 18:12 | 只看该作者
影响晶振精准度的各种因素
晶振的精度是采购选购晶振时候最重要的一个参数,单位是PPM,精度不仅决定了晶振的价格,也决定了是否符合你产品的技术参数,一般常用的精度值为20PPM。那么,哪些因素会影响晶振精度频率误差?松季电子具体介绍如下。
  尽管一个石英晶体振荡器的频率精度是±20ppm,但可能会因为电压变动有±1ppm的影响,焊接温度有±5ppm的影响,机械震动与冲击有±3ppm的影响,温度范围可能有±5-20ppm的影响等等。这些都是十分常见的影响精度的因素,必须考虑进去,但石英晶体振荡器厂商却只告诉客户产品的精度是±20ppm,事实上,实际应用环境中精度可能只能达到50ppm。因此,客户需要50ppm精度的时候,选择了20ppm的石英晶体振荡器是正确的。
  晶振的精度对于产品的选型是至关重要的,找准你要的精度,松季电子提醒各位采购商选型的时候尽量和供应商提出你们做什么产品的,这样供应商可方便的为您找出适合您产品的精度。

回复

使用道具 举报

7#
ID:47286 发表于 2021-4-1 20:21 | 只看该作者
直接上GPS信号读吧 反正哪天要是没GPS信号肯定是出大事了 咱这小百姓也没工夫弄片子 得先忙活活着吧

不过楼主这技术显然是很牛的 佩服
回复

使用道具 举报

8#
ID:517951 发表于 2021-4-4 08:15 | 只看该作者
DS12887基本可以达到这一要求,我做了5个单片机时钟都是这个IC,精度还不错。
回复

使用道具 举报

9#
ID:469589 发表于 2021-4-4 13:25 | 只看该作者
不错的思路,如果再加点温度补偿,就很容易作成“高精度”时钟源了,例如高速采集的时标、校时等用途。
回复

使用道具 举报

10#
ID:469589 发表于 2021-4-4 13:27 | 只看该作者
很好的思路,如果再加上点温度补偿,就可以很轻松成为“时钟标准”了,
可以广泛用到高速采集时标或同步控制等方面。
回复

使用道具 举报

11#
ID:746422 发表于 2021-4-4 19:52 | 只看该作者
rayin 发表于 2021-4-4 08:15
DS12887基本可以达到这一要求,我做了5个单片机时钟都是这个IC,精度还不错。

似乎这个芯片很贵,用DS3231它不香吗?
回复

使用道具 举报

12#
ID:420836 发表于 2021-4-5 04:06 | 只看该作者
要制作准确的实时时钟,不仅需要精确的实时时钟芯片(例如DS3231),还需要具有温度补偿功能的精确晶体。 +/- 20ppm的晶体每小时可能漂移高达72mS,或者每天漂移1.7秒。 如果系统具有通过Internet或GPS进行自动时间调整的功能,则可能会获得优于每天1秒的精度。
回复

使用道具 举报

13#
ID:883242 发表于 2021-4-5 14:13 | 只看该作者
用JJY60或者BPC68.5自动校准好了。GPS室内无信号,室外天线又怕被雷劈。
回复

使用道具 举报

14#
ID:3212 发表于 2021-4-5 15:39 | 只看该作者
rayin 发表于 2021-4-4 08:15
DS12887基本可以达到这一要求,我做了5个单片机时钟都是这个IC,精度还不错。

887的精度是不错!就是体积太大了……
回复

使用道具 举报

15#
ID:3212 发表于 2021-4-5 15:44 | 只看该作者
一生最爱 发表于 2021-4-4 19:52
似乎这个芯片很贵,用DS3231它不香吗?

是的!887精度可以,就是太贵了,还是并行接口,耗费I/O口,都不如3231,RX8025
回复

使用道具 举报

16#
ID:344848 发表于 2024-4-25 18:10 | 只看该作者
时钟芯片DS12C887可以解决上述问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表