时钟使用由Arduino控制的2个电子机械时钟运动来显示日和月。第三个石英控制机芯显示时间潮低潮或高潮。
日历是全自动的,并考虑到闰年以及夏季和冬季时间的变化。
时钟所有4个季度和每小时钟声都有完整的威斯敏斯特钟声。
时钟是独立的,不需要主时钟。
它有一个内置的解码器,用于DCF77“原子钟”。
辅助LCD显示屏显示时间,日期以及DCF77信号和解码器信息。
请在此处查看我的日历时钟网页。
步骤1:
时钟设计围绕一个12英寸(300毫米)的英文办公室拨号时钟盒,我没有动静地从Ebay上捡起来。
金属表盘被剥掉,重新粉刷并用我自己的表盘设计重新标记了
橡木表盘环绕被剥去,拆开了然后将它漂白以减轻颜色。
我安装了铰链和一个锁扣,因此表盘可以打开可以访问内部的控件/电子设备。
图1和图2显示了安装在背板上的时钟组件。
图3显示了表盘后面的空背框。
图4显示了安装在表盘背面的3个时钟动作。 30秒的日间机芯直接用螺栓固定在表盘上。月份和潮汐运动安装在拧到木制表盘环绕的条上。
这可以隐藏固定螺母。
步骤2:连接
Chimes fig 1 adafruit Audio FX Sound Board
时钟通过adafruit Audio FX Sound Board + 2x2W发出季度小时和小时放大器
主板上有16MB的存储空间,因此您可以存储长达15分钟的高质量压缩音频。如果你使用单声道而不是立体声,那就加倍了
内置大容量存储USB - 将任何微型USB线插入声卡和计算机,你可以直接拖放文件,就好像它是一个USB密钥
压缩或未压缩音频 - 使用压缩的Ogg Vorbis文件获取更长的音频文件或未压缩的WAV文件
高质量声音-44.1KHz 16位立体声。解码硬件可以处理任何比特/采样率和单声道或立体声
11触发器 - 最多连接11个按钮或开关,每个按钮或开关可以触发音频文件播放
立体声线路输出 - 在线路级别左右声道均有突破,因此您可以随时连接任何类型的立体声或有源扬声器
五种不同的触发效果 - 通过更改文件名称,您
此时钟可以使用2种不同的铃声选项
选项1小时铃声是从4英寸长钟钟和钟琴的四分钟钟声。选项2小时钟是手铃和长钟钟的组合,而QT钟则是手铃。
每个音符都是单独采样,然后在Audacity中放在一起,为钟声制作音乐的每个部分。
对于每种类型,总共有六个编钟样本al,每季度四个,小时钟两个。四分之一的钟声分段组成,并提供威斯敏斯特式的钟声。
选项1(Glockenspiel)见上面的zip文件夹
有分段
第1节注释FAGC Quarter Chime T01.wav
第2节注释CGAF Half Chime T02.wav
第3节注释AGFC Three Quater Chime T03.wav
第4节注释CGAF Full Chime T04.wav
Quarter过去的时间播放第1节
半小时播放第1节然后第2节
小时过去一小时播放第1,2节然后第3节。
全部小时播放第1,2,3节然后播放第4节。
请注意,整小时响铃在59分49秒播放,因此它可以在小时开始播放小时之前播放。修改第843行至第49行的代码,例如if(minutes == 59 && seconds == 49 && chimepwr == 1)//允许完整的威斯敏斯特钟声在小时钟声开始之前响起49个老钟声
小时钟包括两个样本都是单个钟声。第一个样本持续不到一秒钟,然后结束时钟声消失。小时短T06.wav
第二个样本持续9秒,包含完整的单个铃声,因为它慢慢消失。小时长T05.wav
在一个真正的钟表中,锤子撞到铃铛,导致铃声响起。通常它会轻轻地消失,但如果时钟再次敲击钟声,例如如果它超过1点钟鸣响,那么铃声会停止消失并再次大声响起。
为了模拟这个效果,除了最后一个钟声之外,最后一个钟声都是短暂的钟声,最后9秒的钟声响起铃声响起。
选项2(手铃)见上面的zip文件夹
有部分
第1节注释FAGC Quater Chime T01.wav
第2节注释CGAF Half Chime T02.wav
第3节注释AGFC Three Quater Chime T03.wav
第4节注释CGAF Full Chime T04.wav
小时过去小时播放第1节
小时过半播放第1节然后第2节
小时过去小时播放第1,2节然后第3节。
Full Hour播放第1,2,3节然后播放第4节。
请注意,整小时响铃在59分47秒播放,因此它可以在小时开始播放小时之前播放。修改第843行到第47行的代码,例如if(minutes == 59 && seconds == 47 && chimepwr == 1)//允许完整的威斯敏斯特钟声在小时钟声开始之前响起49个老钟声
小时钟包括两个样本都是单个钟声。第一个样本持续不到一秒钟,然后结束时钟声消失。小时短T06.wav
第二个样本持续9秒,包含完整的单个铃声,因为它慢慢消失。小时长T05.wav
在一个真正的钟表中,锤子撞到铃铛,导致铃声响起。通常它会轻轻地消失,但如果时钟再次敲击钟声,例如如果它超过1点钟鸣响,那么铃声会停止消失并再次大声响起。
为了模拟这个效果,除了最后一个钟声之外,最后一个钟声都是短暂的钟声,最后9秒的钟声响起铃声响起。
按下“测试音按钮”时,还会播放测试波形文件。这允许您设置音量而无需等待时钟敲击。 T00.wav
小时编钟序列
小时。
1点钟 - 长鸣声
2点钟 - 短铃声然后长铃声
3点钟 - 短铃声,短铃声然后长编钟
4点 - 短铃,短铃,短铃,然后是长铃。等。
第3步:控制面板
除了主板上的Arduino复位开关外,控制面板还包含控制日历时钟的开关。
有关每个开关的详细信息,请参见上面的表4。
步骤4:LCD显示器
时钟背板上安装了4x20 LCD显示器。
显示器用于监控DCF77库和一些基本时钟功能。控制面板上的开关用于打开和关闭显示屏,通常仅在打开时钟时保持打开状态。
显示屏显示以下信息。
第1行
时间和日期。请注意,日期为英国格式dd/mm/yyyy
第2行
第1节在3个状态之间旋转
1显示下一个计算的闰年
2 DCF77库设置的石英调谐频率
3以Hz为单位的石英晶体精度。
注意这不是时钟精度,但DCF77信号应该损失石英晶体精度。 DCF77库通过将其与DCF77信号进行比较,自动调整Arduino石英晶体频率。
第2节时区和夏季/冬季时间指示器
第3行
第1节显示是否在开机时禁用了钟声。由于声卡在电源恢复时默认为全音量,因此在开机时会禁用响铃。我不想在停电后半夜被满卷钟声吵醒。通过按控制面板上的“Chime On”开关启用钟声。一旦开启,它们一直持续到断电并恢复。如果需要,控制面板上有一个手动“扬声器开/关”开关。
第2节显示DCF77库状态“Sync‘d”,“Locked”,“Dirty”或“Fail”
第4行
第1部分以百分比显示信号匹配。该库预测信号应该是什么,并将其与输入的DCF77信号进行比较。
Secton 2显示月份电机逻辑的状态。
步骤5:拨号
图1带有bezal的表盘可以安装时钟动作
图2用Turbo Cad设计的空白表盘
日历时钟表盘是使用Turbo Cad设计和绘制的。
然后将最终设计作为巨型贴纸打印在A3 Lazertran喷墨纸上。
首先擦掉原来的表盘,去除所有旧油漆和刻字。然后涂上一层白色(白色在旧钟表中看起来很糟糕)。然后将表盘贴纸应用于空白刻度盘,然后在干燥时,在顶部喷涂3层丙烯酸清漆。这使得贴花背景变得清晰,因此可以通过顶部的刻度字体看到白色表盘。
步骤6:日间运动控制
日间运动是30秒的奴隶运动。这些机芯适用于办公室和工厂的时钟,并由主时钟每30秒步进一次。
我在这个时钟中使用Synchronome机芯图1,因为它更紧凑。
图2和3大多数30秒的从动装置的工作方式与较大的根特型机芯相同。
零件和操作如下。
A是主棘轮,有120个牙齿
B操作电磁铁
C电枢
D电枢杆
E驱动棘爪,它移动棘轮 - 驱动弹簧通常使驱动棘爪与棘轮啮合,并且电枢远离电磁铁
G后吸杆,当衔铁被吸引时,可防止棘轮移动,这可能是由于振动或带有外露表盘的时钟 - 手上的风压力
H动量停止,这可以防止棘轮出现问题g每个脉冲移动一个以上的齿,并且用棘爪E将棘轮锁定在脉冲之间
J限制衔铁行程的行程极限停止,
当电磁铁B被来自主时钟的脉冲激励时,电枢C被吸引,棘爪E抵抗弹簧F的压力向右推进,并落入棘轮A上的下一个齿。当脉冲停止时,春天F驱动爪子! E向前,棘轮旋转一个齿,相当于表盘半分钟。 ’分钟‘手附着在。棘轮还通过一系列减速比为12比1的齿轮驱动’小时‘手。
工作电流运动的工作电流为250 mA。电磁铁的电阻在7.5到10欧姆之间,它们可以在电路中连接而不参考极性。
分针驱动用于指示月份的日期。这只手直接连接到由时钟电机棘轮驱动的120齿轮。因此,在原始时钟中,120 x 30秒脉冲将分钟驱动1小时。
图4 120齿轮被放大并叠加在时钟显示屏上,以显示每颗牙齿与月中的日期的关系。每个月最多有31天,所以120个牙齿除以31,得到3.87个牙齿,可以移动1天的手段。这显然是不可能的,因此时钟设计为每天移动3手牙齿。这一个月最多使用3x31天或93颗牙齿。在每个月末,添加额外的脉冲以将日期移动到该月的第1天。由于每个月的天数变化,Arduino微控制器在每个月结束时计算出来,需要多少额外的脉冲才能将日期移动到当月1日。
图5显示了多少额外的
这可以在图6中看到。将日手从1天移动到下一个需要3个脉冲所以需要脉冲从每个月末开始回到第1天。
例如,在31个月结束时,将发送额外的30个脉冲以在该月的第1天停止日期。
步骤7:月份拨号
图1月份表盘
月份指针由Lavet型步进电机驱动。
电机来自石英钟表机芯,石英控制板切出。电机需要非常低的电流来驱动它,并且可以通过微调电阻直接从Arduino输出驱动。电阻器用于调节电动机的电流,使其工作时不会过度驱动。
图2通过将极性反转到驱动线圈来驱动电机,这使得永磁体齿形转子(下面的红色)转动180°。每次驱动电机极性反转时,齿形转子将继续沿相同方向转动。
Arduino的2个输出引脚用于驱动电机,1个引脚始终与另一个相反。
月份指针指针连接到秒齿轮。这个轮子每60个极性变化一次,并且由于一年中有12个月,时钟电机需要步进5次(60个牙齿/12个月),以便在月经表盘上移动月份1个月。
请注意代码总是发送6个脉冲,因为第一个脉冲将被忽略,因为极性不会改变。在6个脉冲结束时,两个Arduino引脚都设置为“低”,因此在下个月之前没有电流通过驱动线圈。
在初始设置时,月份手可由2个开关控制,“stepmonth 1”和“stepmonth 5”。这是一个单中心关闭锁定开关。 “stepmonth 1”开关每秒对单个电机施加一次交替脉冲,并保持开启直到手开始移动。如果开关保持在月份,则电动机将继续步进,直到开关移动到中心关闭位置。 “stepmonth 5”开关每秒一次向蛾马达施加5个交替脉冲。要使用将开关移至开启位置并等待月份指针开始移动,然后返回中心关闭位置。然后月份将提前1个月然后停止。要设置月份指针,首先使用“stepmonth 1”开关将指针设置为一个月,然后使用“stepmonth 5”开关逐步执行整个月,直到显示正确的月份。
第8步:月运动修改
UTS石英钟运动哈克
我使用U.T.S.运动无花果在我的大多数时钟中都是1,因为它们质量很好,有一个安全的分针固定,并且可用于大手的高扭矩型号。
如果你没有U.T.S.然后你应该能够找到一种修改它的方法,因为它们都非常相似。唯一不能使用的是“静音”动作,扫描秒针,因为它们不依赖于1秒脉冲来驱动它们。通过将薄螺丝刀向下滑入图2中机箱顶部和底部可见的插槽,小心地将机芯分开,然后松开锁定卡舌。图3移除了顶部和底部的箱子部分。图4然后可以将石英PCB和电机部分作为一部分提起,留下空壳和电池座部分。将电池端子拉出并丢弃。图5现在可以修改上一步中移除的石英PCB和电机部分。图6用锋利的刀将轨道从集成电路(黑色斑点)切割到其中一个驱动线圈。焊接到驱动线圈的电线并将它们送入空电池槽。图7使用一小块vero板19个孔×4个条带构成石英电机驱动接口电路。该电路具有保护齐纳二极管x2 @ 8.3v,用于设置Lavett电机驱动电流的10K预设电阻,一个On/Off开关和一对PCP连接器,用于将电路连接到Arduino电路板的驱动输出。图8显示了Vero板的后部和切割轨道的位置。图9最后将电线从电机线圈焊接到Vero板,然后将外壳重新卡在一起。用少量热熔胶将Vero板粘贴到位。
步骤9:潮汐时钟
潮汐时钟显示低潮或高潮的时间。由于潮汐时间受到许多变量的影响,潮汐时钟使用现成的潮汐时钟模块,只需连接潮汐手。
使用在互联网上找到当地海滨的潮汐时间,然后设置时钟运动的调节轮。
步骤10:原理图
图1显示原理图和图2 Arduino Uno连接
原理图也可以在这里看到
步骤11:Vero Board布局
Arduino和音效板的组件安装在vero板上。然后将其安装在钟表的背板上。电路板上安装了一个反极性保护二极管
,这将使输入电压降低几分之一伏。电路板显示5.6伏连接,但需要调低电压,以便在连接Arduino和音板之前电源电压为5伏或更低。
步骤12:测试
由于时钟是全自动的,因此无需手动设置时间和日期。所有测试都是通过将DCF77格式的虚拟无线电时间和日期代码发送到时钟来完成的。
幸运的是,用于解码此时钟DCF77信号的DCF77库的设计者Udo Klein也设计了一个DCF77用于Arduino的无线电代码生成器。
一旦电路板被编程,就将1K电阻连接到引脚3和一个小环路连接到Gnd引脚。在您正在测试的设备的DCF77天线周围缠绕一次导线。加载终端程序或只是从Arduino接口打开串行监视器。将波特率设置为115200并按Enter键。您应该在串行监视器上看到以下内容
正在运行
输出D3
到设定目标时间使用以下格式之一
简单模式: sYY.MM.DD hh:mm.ss
扩展模式: x :YY.MM.DD hh:mm.ss w sbtl
当前时间设置(YY.MM.DD hh:mm.ss w sbtl)w =工作日,s =夏季,b =备用天线,t = timzone更改预定,l =闰秒预定09.01.01 00:52:03 4 8001
这为您提供了如何设置时间的基本说明在Uno上的日期和日期已准备好设置为您设备上的时间和日期。
作为测试我的日历从6月30日到7月1日踩踏的示例,我发送此命令“x16.07.01 06: 30:00 1 1000“设定日期和时间至2016年7月1日06:30:00。我的时钟设置为GMT,因此当它解码时,它将设置为05:30。在1月1日的所有月份栏上,日历设定为在06:00而不是午夜(由于时钟运动的噪音)进行校正。
请记住,一旦您将命令发送到DCF77发生器,时钟就会从您设置的时间开始,所以当您的时钟解码时,它将在几分钟后开始。这就是为什么我把它设置为05:30而不是06:00。这使我的日历时钟时间能够解码准备好在06:00进行时间和日期的信号。
这是另一个例子
触发GMT的闰秒(CET需要一小时休息)
发送x15.01.01 00:45:00 1 0001
输出
正在运行
输出D3
当前时间设置(YY.MM.DD hh:mm.ss w sbtl)
w =工作日,s =夏令时,b =备用天线,t = timzone更改预定,l =闰秒预定15.01.01 00:45:00 1 232001
设置目标时间使用以下格式之一
简单模式: sYY.MM.DD hh:mm.ss
扩展模式: x:YY.MM.DD hh:mm.ss w sbtl
当前时间设置(YY.MM.DD hh:mm.ss w sbtl)
w =工作日,s =夏令时,b =备用天线, t = timzone更改预定,l =闰秒预定15.01.01 00:45:00 1 232001
这实际设置我的时钟(设置为GMT)一旦解码到12月31日23:45 2015加上几分钟的解码时间。
我在主时钟上使用它来检查注入的闰秒被检测到并传递到我的1秒从时钟上。
更多示例
x15.01.01 00:45:00 1 0001 = 23:52:00 2015/12/12 gmt + 0触发闰秒
x14.03.30 01:50:00 1 0010 = 00:45:00 30/03/14 gmt + 0触发时钟+1小时
x14.10.26 02:50:00 1 1000 = 02: 45:00 26/10/14 gmt + 1触发时钟返回
x21.03.01 05:20:00 1 1000 = 21.03.01 05:20:00 1 49000 2月28日之后没有闰年触发在06:00hrs
x16.02.28 06:20:00 1 1000 = 05:20 28 feb 2016闰年步骤到29
x16.03.01 06:30:00 1 1000 = 05:30 01 2016年3月闰年步骤从29到01
x16.07.01 06:30:00 1 1000 = 05:30 2016年7月1日步骤从30到01
x14.03.30 23:30:00 1 0000 = 22:30 2014年3月30日
x14.03.30 01:30:00 1 0000 = 00:30 2014年3月30日
x14 .03.30 13:30:00 1 0000 = 12:30 2014年3月30日
步骤13:代码
代码v18 for Udo Klein的v3库
-
时钟
+关注
关注
10文章
1712浏览量
131260 -
Arduino
+关注
关注
187文章
6456浏览量
186472
发布评论请先 登录
相关推荐
评论