最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电子DIY > 单片机 >

【参赛】BPC长波自动授时LED数码钟制作

时间:2017-05-28 21:48来源:www.crystalradio.cn 作者:bluegrass 点击:
本帖最后由 bluegrass 于 2016-1-18 22:49 编辑 一直想做一个分秒不差的时钟放在客厅用,也好让家里众多的时钟有一个可靠的对时参考,于是便有了下面的制作:用CPLD解码BPC长波授时信号,驱动LED数码管进行显示,同时可以在凌晨2:00或4:00自动校准的数码表
本帖最后由 bluegrass 于 2016-1-18 22:49 编辑

一直想做一个分秒不差的时钟放在客厅用,也好让家里众多的时钟有一个可靠的对时参考,于是便有了下面的制作:用CPLD解码BPC长波授时信号,驱动LED数码管进行显示,同时可以在凌晨2:00或4:00自动校准的数码表。
背景篇:
电波授时是将高精度原子钟精确时间信息用时间编码方式,通过无线发射,以低频(20KHz—100KHz)无线电波进行传播,用户端利用无线接收机接收信号并解调以恢复时间编码,再经过微处理器对编码进行解码得到精确时间信息。目前在德、美、英、日等国家,电波授时已广泛应用于电力,通信,民航,铁路等各个领域。
2007年,中国科学院国家授时中心在河南商丘建立了一座大功率、连续发播的低频时码的商丘授时台,构筑了我国新一代BPC低频时码授时系统,授时信号可以有效覆盖京、津和长江三角洲等我国政治文化和经济中心。BPC低频时码授时系统是一个载频为68.5KHz的调幅无线发播系统。调幅脉冲下降沿的起始点,指示着国家授时中心UTC(NTSC)秒信号的发生时刻。调幅脉冲的宽度按指定的传输协议给出日历和时间的数字编码信息。低频时码信号形式都是以1秒为单位变化的,在1秒中包含了信号的秒脉冲信息和时间编码信息。BPC帧周期为20秒,每分钟包含三帧;以秒脉冲宽度表示四进制数的 0,1,2,3,以四进制数表示相应的“分”“时”“日”“月”“年”“星期”等时间信息。
【参赛】BPC长波自动授时LED数码钟制作
【参赛】BPC长波自动授时LED数码钟制作

原理篇:
BPC的接收过程类似AM广播接收,使用磁棒线圈和电容谐振于68.5KHz的载波频率,通过晶体滤波器去除干扰,通过AGC控制,最终解调出1PPM的秒脉冲。下图是专用长波授时信号接收芯片以及软封装版本的PCB。
【参赛】BPC长波自动授时LED数码钟制作

对MAS6180加电后便可以通过示波器观测到如下图所示的1PPM信号,可以看到,波形的上升沿是每秒的起点,脉冲宽度携带着更多信息,需要解码处理才能恢复出具体时间信息。
【参赛】BPC长波自动授时LED数码钟制作 

解码可以通过单片机或FPGA、CPLD等实现,手头刚好有几个CPLD的最小系统板(成本约35元),就决定了用CPLD解码BPC,同时控制LED扫码显示的最终方案。实现本方案所需的主要材料见下图。
【参赛】BPC长波自动授时LED数码钟制作

为配合调试过程中监测波形时序,同时使用了一个FPGA作为辅助调试手段,主要利用了FPGA的Signal Tab虚拟逻辑分析仪功能,单独CPLD是不具备这个能力的。
【参赛】BPC长波自动授时LED数码钟制作

实现时间同步的第一步是使本地时钟的秒脉冲与标准BPC秒脉冲同步,下图所示便是检测每一个BPC秒脉冲的上升沿,并在检测到多个稳定的上升沿后复位本地时钟计数器,使本地秒脉冲的上升沿与BPC秒脉冲上升沿同步。
【参赛】BPC长波自动授时LED数码钟制作

然后通过判断每个BPC脉冲的宽度,恢复出携带的时间信息,逐步凑齐时、分、秒等信息,并进行校验。如果校验结果正确,则将当前的时刻刷新到LED显示部分,并使用本地时钟驱动后续走时,完成了一次BPC授时过程,实现了对本地时钟的修正。
自动授时便是在凌晨2:00自动开始上述过程,如果失败则在4:00再进行一次。之所以选择这两个时刻,是因为此时工业活动相对较少,电磁干扰小,有利于AM信号可靠接收。
【参赛】BPC长波自动授时LED数码钟制作

制作篇:
已经验证的电路最终装到盒子里就没有太多的悬念了。为了让显示字体大一些,选择了0.8英寸和0.4英寸的白色LED数码管。由于没有买到相同接线方式的LED(共阴或共阳)使得实现起来费了些周折。而且考虑到CPLD的I/O电平只有3.3V,白色LED的压降约3V,直接驱动亮度不足,所以需要增加一级驱动,增加CPLD驱动电平。
为了使时钟在断电下维持走时,找了一个接近废弃的锂离子电池作为后备电源,平时电路通过手机5V充电器供电,遇到断电情况则自动切换到电池。
左边两个按键分别手动调整小时和分钟,单按会使小时或分钟加1,长按会加速自动递增;右边的按键触发手动授时,1分钟内授时不成功则自动退出,不做时间修正。
无论是自动授时或是手动授时,均会在授时过程中关闭LED扫描,避免扫描噪声干扰授时信号接收,实践证明,此举是必要的也是有效的。
【参赛】BPC长波自动授时LED数码钟制作
【参赛】BPC长波自动授时LED数码钟制作
【参赛】BPC长波自动授时LED数码钟制作
【参赛】BPC长波自动授时LED数码钟制作

软件篇:
本制作的核心功能是通过VHDL软件实现的,VHDL属硬件描述语言,可以被综合器生成固化在CPLD内部的逻辑。CPLD和FPGA不同于MCU,可以多线程同时运行,在某些对并行运算和信号处理要求高的应用中CPLD和FPGA是其他处理器无法取代的。
下面的代码可以实现按键防抖动,不至于因为按键接触不稳定产生多次触发。
【参赛】BPC长波自动授时LED数码钟制作

通过对BPC脉冲宽度进行解码分析,生成时间帧。
【参赛】BPC长波自动授时LED数码钟制作

自动授时部分的代码。
【参赛】BPC长波自动授时LED数码钟制作

通过Quartus II软件编译,VHDL软件被自动将软件代码转换为硬件逻辑,并下载到CPLD芯片内部。以后每次CPLD加电便具有了特定的功能。下图则是硬件描述语言对应的硬件逻辑的部分区域。
【参赛】BPC长波自动授时LED数码钟制作

电路篇:
电路部分涉及CPLD最小系统,限于篇幅可参考MAX II EPM1270T144的数据手册,下面仅对主要电路构成作以简要说明。为了使LC谐振在68.5KHz频点上,可一边用示波器监测晶体滤波器输出端的信号幅度,一边增减线圈,使幅度最大。LED数码管采用扫描方式工作,下图仅表示出共阴0.8英寸的白色数码管的接法。
【参赛】BPC长波自动授时LED数码钟制作

花絮篇
本制作先利用手头的零件作了一次验证,确认工作稳定可靠后才购买了白色数码管完成的。因为刚开始,只找到了单个的LED数码管,所以还得费劲半天用漆包线连成共阴的阵列显示形式。
【参赛】BPC长波自动授时LED数码钟制作
【参赛】BPC长波自动授时LED数码钟制作

性能篇:
这个小制作从2015年3月正式投入使用,一直稳定工作到现在。每天都能够正常自动授时,进行时间修正,所以时刻能够与天文台原子钟保持着1ms以内的精确同步。试验发现,如果禁止自动授时功能,则误差可控制在0.5s/周的范围内(20度室温)。气温偏低会使时钟变快一些(反之变慢),如有需要,可通过更换TCXO降低对温度的敏感。下图分别是授时状态和正常走时状态,为了美观,塑料盒内增加了一层淡蓝色磨沙膜,让LED看起来柔和一些。这款时钟还提供了另外一个实用功能:客厅里的小夜灯……
【参赛】BPC长波自动授时LED数码钟制作
【参赛】BPC长波自动授时LED数码钟制作



补充整机原理框图
【参赛】BPC长波自动授时LED数码钟制作

以及中国BPC服务范围图(图片来自网络)
【参赛】BPC长波自动授时LED数码钟制作


本帖最后由 bluegrass 于 2016-1-24 17:08 编辑

增加两张内部图片。
图中白色磁环用于使用外部5V开关电源(手机充电器)供电时减小纹波干扰,AM实在是比较脆弱的...
【参赛】BPC长波自动授时LED数码钟制作

为了电路整洁,同时维修和组装方便,内部各PCB的连接均使用IDC插头和插座对接,即便是连接按键的普通导线也做了IDC的压接处理。
【参赛】BPC长波自动授时LED数码钟制作

待改进之处:
当时制作中走了捷径,省掉了锂电池充电控制和保护电路,虽然电池仅作为临时停电后备使用,但是一旦充电,需要外甩一个小尾巴用外部4.2V充电器充电,比较繁琐。
以后有时间准备增加一个充电控制和电池低压保护电路,让这个小制作更加完美些。再次感谢大家的关注和支持。

 

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容