自制电子钟,元件座-第1部分,时间测量

也许每个喜欢自制电子产品的极客都会迟早想到制作自己独特的手表的想法。这个主意非常好,我们将弄清楚制作它们的方式和方法。首先,我们假设一个人知道如何对微控制器进行编程,了解如何通过i2c或串行端口发送2个字节,并且可以将多根导线焊接在一起。原则上,这就足够了。

显然,手表的关键功能是测量时间(谁会想到的,是吗?)。并希望尽可能准确地执行此操作,有很多选择和陷阱。

那么,我们可以使用什么方法来测量硬件中可用的时间?

内置RC发电机


想到的最简单的想法是简单地设置一个软件计时器并倒数秒。所以,这个主意不好。时钟肯定可以工作,但是内置发生器的精度没有任何调节,它可以“浮动”在标称值的10%以内。每个人每月需要耗时15分钟的时间很少。

DS1307实时模块


实时时钟是在大多数“民俗”产品中也使用的更正确的选择。该芯片通过I2C与微控制器进行交换,它需要最少的绑定(石英和一对电阻)。发行价格约为每个微电路100卢布,对于带有微电路,存储模块和电池连接器的成品板,每个ebee约为1美元。

数据表中的方案:



同样重要的是,该芯片采用DIP封装,因此任何初学者都可以焊接。即使关闭电源,内置电池也可以使手表保持运转。

似乎一切都很好,即使不是因为一个问题-准确性低。表石英的近似精度为20-30ppm。 ppm-百万分率表示百万分率。看起来超级百万分之一,但是对于32768Hz的频率,结果是20 * 32768/1000000 =±0.65536Hz,即已经半赫兹了通过简单的计算可​​以看出,每天如此差异的发电机“坚持”了额外的(或丢失的)56000个循环,相当于每天2秒。石英可能会有所不同,有些用户写到每天5秒的错误。不知何故,它不是很准确-一个月后,这种手表至少会消失一分钟。这已经是一个不错的区别,用肉眼可以看到(当祖母最喜欢的系列从11.00开始,并且时钟显示11.05时,在亲戚面前开发这种手表的人会感到不舒服)。

但是,由于房间的温度或多或少是稳定的,并且石英的频率不会有太大变化,因此可以添加软件校正。论坛上给出的另一项建议是使用旧主板上的石英表;根据评论,那里的石英表非常准确。

DS3231实时模块


我们不是第一个提出准确性问题的人,达拉斯满足了我们的意愿,发布了更高级的模块-DS3231。它被称为“极精确的实时时钟”,它具有一个带有温度校正功能的内置发生器。精度提高了10倍,达到2ppm。发行价格略高,但是微电路外壳是为SMD安装而设计的,焊接不是那么方便,但是您可以在其上购买现成的电路板。


(来自卖方网站的照片)

每月6秒的准确度,这已经是一个不错的成绩。但是我们会走得更远-理想情况下,根本不需要调整21世纪的时钟。

无线电模块DCF-77


该方法颇为奇特,但出于完整性考虑,不能忽略。很少有人知道,但是自70年代以来,确切的时间信号已通过无线电发送。 DCF-77发送器位于德国法兰克福附近,以77.5 KHz的SDV频率发送时间戳(是的,它们在20年前已经有不需要调整的壁钟和桌面时钟)。

该方法的优点在于电路具有低功耗,因此现在也正在生产具有这种技术的手表。成品的DCF-77入场券可以在eBay上购买,价格为20美元。



许多时钟和气象站都具有接收DCF-77的能力,唯一的问题是信号实际上没有到达俄罗斯。维基百科覆盖图:



如您所见,只有莫斯科和圣彼得堡位于接待区的边界。根据所有者的说法,仅偶尔会收到信号,这当然不适合实际使用。

GPS模块


如果时钟离窗户不远,那么获取准确时间的一种非常真实的方法是GPS模块。这些模块可以在ebay上便宜地购买(发行价10-15美元)。例如,Ublox NEO-6M直接连接到处理器的串行引脚,并以9600的速度输出NMEA字符串。



数据的格式大致如下:“ $ GPRMC,040302.663,A,3939.7,N,10506.6,W,0.27,358.86,200804 ,, * 1A“,即使对于较弱的Arduino,解析它们也不难。顺便说一句,爱国者可以购买更昂贵的Ublox NEO-7N模块,该模块同时支持GPS和Glonass(根据评论)。

显然,GPS模块对不同的时区一无所知,因此开发人员将不得不自己计算并更改夏/冬时间。使用GPS的另一个缺点是其相对较高的功耗(但是,某些模块可以使用单独的命令置于“睡眠模式”下)。

无线上网


最后,获得确切时间的最后一种方法(目前最明显)是从互联网上获取时间。有两种方法。首先,也是最简单的方法是使用带有Linux的Raspberry PI之类的东西作为监视板,然后您无需执行任何操作,一切都将立即可用。如果你想“异国情调”-那么最有趣的选择是esp8266模块。



这很便宜(问题价格大约是每个eBay 200卢布),WiFi模块可以通过处理器串行端口与服务器交换,如果您愿意的话,它也可以刷新(有很多第三方固件),部分逻辑(例如轮询时间服务器)可以在模块本身中完成。第三方固件支持从Lua到C ++的所有内容,因此“舒展大脑”选项就足够了。

关于此主题,时间测量可能会关闭。在下一部分中,我们将仔细研究输出时间的处理器和方法。

Source: https://habr.com/ru/post/zh-CN383091/


All Articles