Arduino万年历日历时钟DIY图解

时钟使用由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的无线电代码生成器。
使用发生器下载udo的代码并通过串口对uno进行编程。
一旦电路板被编程,就将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库

电子工程师们都在用的故障检查法
溅射生长的铜和钨薄膜的应力调整
诺基亚8最新消息:诺基亚8国行版价格确定,旗舰的配置、情怀的售价,你愿意买吗?
魅族16Xs珊瑚橙版即将发售该机采用全等边对称设计支持屏幕指纹解锁
HORIBA MIRA采购VI-grade驾驶模拟器
Arduino万年历日历时钟DIY图解
大数据热潮愈演愈烈 IB数据中心网络布线走向智能化
Xilinx可编程逻辑器件设计与开发(基础篇)连载18:Spartan
联发科发布5G战略 不与华为、Ericcson、Nokia竞争小型基站
虚拟服务器中的共享和独享有什么区别
机器人教育的优势
75亿美元拿下GitHub,微软已不是当年封闭的微软
数字孪生是什么意思?数字孪生的基础是什么?
爱立信拿下美国5G大订单 价值245亿!
关于保护印制电路板防腐剂
神了!三摄手机竟有两个摄像头是装饰
成立电池研究小组 巴西启动电动车研发项目
努比亚推出专业电竞旗舰手机——红魔3 颠覆我们对传统手机的认知
太阳能不间断电源,Solar power supply
数说宪法:宪法宣传电子屏