|
本帖最后由 mmxx2015 于 2024-9-4 16:41 编辑
一、什么是中国码电波钟
中国码电波钟是指通过接收商丘BPC授时台授时信号对时的各种钟表,包括手表、数码钟、指针钟。BPC授时台发送载波频率68.5KHz的OOK调制信号,电波钟接收解调后经CPU解码得到时间信息。
二、中国码电波钟特点
优点:低功耗,接收模块工作电流<1mA;不依赖网络,中国大部分地区都可接收到。
缺点:离发射台约远的信号越弱,接收越困难,尤其是白天,以这里为例(距发射台约1400Km),使用X宝卖的接收模块测试,窗外晚上约一半时间可以接收到,白天几乎收不到;数据校验很弱,信号弱时可能会解析错数据。
三、接收中国码电波钟信号需要什么设备
可以使用X宝卖的接收模块,10cm磁棒天线+模块15元,20cm磁棒天线+模块35元,这种模块使用的接收芯片一般是CME6005或MAS6180B,CME6005有正反脉冲输出,MAS6180B只有正脉冲输出,一般电波钟使用的是正脉冲作为信号输入;用分立元件搭建接收电路,尝试画XJW01(许剑伟)设计的接收电路,发现板子大小9x3cm,就算再优化,估计只能做到6x3cm左右,比买的模块大许多。
X宝卖的接收模块:
四、中国码电波钟解码
中国码电波钟编码资料网上很容易找到,附件是我找到的比较完整、准确的版本。
下面以一帧高电平有效的信号为例简单说一下中国码电波钟解码方法。
一帧电波钟数据大致如下图:
电波钟信号解码的关键是读取脉冲宽度,精度不需要太高,只需1mS左右读取一次电波钟模块输出信号即可。
电波钟信号解码过程:
(1)空闲脉冲:等待1秒以上的连续低电平;
(2)接收到空闲脉冲后,进入19个高电平脉冲接收过程(如果接收到异常信号,如脉冲太窄或太宽,丢弃数据,从第(1)步开始接收下一帧数据);
(3)接收完19个脉冲后转存数据,从第(1)步开始接收下一帧数据;
(4)如果有待解析的转存数据,解析数据,如果数据有效,保存解析出的数据,根据最后一个脉冲的编码延时(1000-100)~(1000-400)mS后使用保存的数据(每个脉冲1秒,高电平只是脉冲的一部分)。
电波钟信号解码流程图:
(1)BPC解析总框图
(2)读取BPC信号
(3)解析BPC信号
(4)使用解析BPC数据
解码数据增强可靠性处理:
因为BPC编码使用奇偶校验可靠性比较弱,需要辅助其它方法确保数据可靠。
(1)成功接收多帧数据才使用。可以连续接收成功2~3帧数据才使用,这几帧数据之间还可以进一步校验,比如时间差小于阈值才使用。
(2)异常数据排除。根据BPC编码协议,星期编码从0~6(0表示星期日;网上流传的电波钟对时模拟软件星期日的编码使用7,购买的几个电波钟也接受星期日编码=7,可以按有效编码0~7处理),年编码从0~99(猜测),月编码1~12,日编码1~当月最多天数,P1脉冲最大值=2,这些有效编码外的数据均做无效数据处理。
五、中国码电波钟解码程序实例
以下是用X宝买的电波钟接收模块+中颖SH79F6481P+12864LCD实现的解码程序,逻辑与上面的流程图接近,接收、解码程序在User_BPC.c、User_BPC.h中,如果移植到其它8051芯片,只需把这两个文件包含进工程,少量修改,按要求的时间间隔调用即可实现相同的功能,如果移植到非8051芯片,部分计算程序需要修改。
硬件原理图:
Keil C51工程:
接收成功演示视频:
六、中国码电波钟解码辅助测试程序
如果离授时台的距离、干扰比较强等原因导致无法正常接收到对时信号,无法调试解码程序,这种情况下可以用模拟BPC信号来调试解码程序,模拟BPC信号有2种方式:
(1)直接脉冲方式:直接模拟电波钟接收模块输出的脉冲。这种方式直接将模拟信号输入主控芯片,不需要电波钟接收模块。
(2)调制信号方式:模拟装置输出和授时台一样与日期、时间关联的68.5KHz信号,可以使用网上流传的电波钟对时模拟软件通过耳机输出特定音频信号实现,不过,实测这种方式产生的信号比较弱,对时成功率不高,可以用单片机产生68.5KHz 50%占空比PWM驱动耳机或喇叭实现,实测5V工作输出模拟信号驱动4cm喇叭产生的信号强很多,离喇叭40cm都可以对时。
以下是用STC8H8K64U实现的直接脉冲方式模拟程序,默认P50输出BPC脉冲,高电平有效,可以通过修改Interface.h、Option.h里的条件编译设置改为其它I/O或低电平有效。
硬件原理图:
Keil C51工程:
Interface.h
- //BPC IO设置
- //P50(直接脉冲模式)
- #define BPC_IO_Mode_Set() P5M1&=(~BIT0); P5M0|=BIT0;
- #define BPC_IO_High() P50=1;
- #define BPC_IO_LOW() P50=0;
复制代码
Option.h
- #define C_BPC_PULSE_HIGH 1 //1--BPC高电平有效
复制代码
如果要修改为调制信号模拟,修改Interface.h设置, 由输出高低电平改为开关68.5HKz PWM。
- //(68.5KHz PWM载波模式)
- #define BPC_IO_Mode_Set() //设置PWM为68.5KHz 50%占空比
- #define BPC_IO_High() //68.5KHz PWM OFF
- #define BPC_IO_LOW() //68.5KHz PWM ON
复制代码
顺便说一下,我在海鲜市场上看到有用ESP8266模拟BPC对时信号的模块,使用直接脉冲方式模拟,配置模块连接WIFI对时后再把信号输出到电波钟,对电波钟信号弱地区外部电源供电的电波钟比较有用。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|