1. 程式人生 > >初探電波鍾(A Brief Introduction Of Radio Controlled Clock AND Its Appliciations)

初探電波鍾(A Brief Introduction Of Radio Controlled Clock AND Its Appliciations)

文件識別符號:Radio_Controlled_Clock_T-D-P11

作者:DLHC

最後修改日期:2020.10.12

本文連結:https://www.cnblogs.com/DLHC-TECH/p/Radio_Controlled_Clock_T-D-P11.html

 

前言

     如何獲取準確的時間?古人通過觀察太陽在天空的方位獲取當前的時間,這種方法所獲取的時間很粗略,但是它仍然被許多求生者使用。現代社會對時間的準確性、同步性要求很高。比如說你9月10日去坐火車,但是由於你手機的時間慢了20分鐘,你成功地錯過了火車(但現在這很少發生)。有沒有一種方法可以使"時間"以光速傳播?

     無線電在20世紀初開始得到應用,最初用於軍事、船舶導航和通訊,那麼無線電與時間有什麼關係?我們知道無線電可以傳播資訊,如果有一些機構擁有準確的時間,那麼他們就可以將編碼了時間的資訊調製到一定頻率的無線電波上,並且發射出去,使一定區域內的使用者可以捕獲此訊號並解碼出當前準確的時間,這一過程的誤差為發射到解碼的時間差。目前所廣泛使用的授時方法有:衛星授時、網路授時、無線電廣播授時和電波鍾。本文所討論的就是一種基於無線電低頻時碼授時的方法----電波鍾(Radio Controlled Clock或簡稱RCC)。

     在我國,電波鐘的知名度似乎不太高(火腿除外),但是它的應用卻非常廣泛:BPC掛鐘、手錶自動更新時間等。中國在河南商丘修建了100kW中國商丘低頻時碼訊號發播臺(以下簡稱BPC)

[1],發射頻率為68.5KHz[1],發播時間:9:00—17:00,21:00—5:00[1],其覆蓋範圍見圖0.0,中國大部分地區以及周邊鄰國可以接收到該訊號。為什麼要使用68.5KHz的頻率?68.5KHz位於長波[2]波段,長波可以通過天波----即電離層[3]反射,的方式傳播,其傳播範圍很廣。

     除中國外(中國不是第一個應用此項技術的國家),也有其他國家使用電波鍾授時,包括:德國、英國、日本和美國,詳細見表0.0

圖0.0-中國商丘低頻時碼訊號發射臺覆蓋範圍示意圖

國家/地區 座標 發射站名稱 發射頻率(KHz) 發射功率(KW) 發射時間
中國/商丘 33° 43'N, 114° 49'E BPC 68.5K 100KW 09-17&21-05
德國/Mainflingen 50° 01'N, 09° 00'E DCF 77 77.5K 50KW 全天
瑞士/Prangins 46° 24'N, 06° 15'E HBG 75K 20KW 全天
英國/Rugby 52° 22'N, 01° 11'W MSF[9] 60K 50KW 全天(部分時間有短暫中斷)
美國/Fort Collins/Colorado 40° 40'N, 105° 03' W WWVB 60K 50KW 全天
日本/福島縣 37° 22'N, 140° 51'E JJY40 40K 50KW 全天
日本/福崗, 佐賀縣 33° 28'N, 130° 11'E JJY60 60K 50KW 全天

表0.0-世界各國電波鍾一覽[4]

 

三個接收並解碼BPC的方法

     方法一:通過SDR和調諧到68.5KHz的天線即可完成接收和解碼,最簡單。

     方法二:DIY接收部分的電路和天線以及微控制器解碼系統,最複雜,可以參考這裡。

     方法三:使用積體電路模組(CME6005)和調諧到68.5KHz的天線以及微控制器解碼,比方法二簡單,並且可以探索BPC編碼方式,本文將採用此方法。

圖1.0-CME6005模組(正)

圖1.1-CME6005模組(反)(反面的絲印竟然也是反的?!)

 

 BPC編碼機制

     BPC的編碼方法相當簡單:每1分鐘傳送3幀資料,每1幀資料由20個片段組成(只有19個片段包涵了有效資訊),每1個片段由長為1s的脈衝構成[6]。

                                  每一幀資料包含了“秒” “時” “分” “星期” “上下午” “日” “月” “年”以及“校驗位”,相鄰的幀之間使用1個空白的片段間隔[6],理論上1分鐘可以解碼出3次時間。

                                  資訊編碼在這些1s的脈衝中,脈寬0.1s、0.2s、0.3s、0.4s分別對應四進位制0、1、2、3。採用四進位制編碼可以很方便地將資訊進行拓展為二進位制,這種方法叫做碼位複用,詳見表1.0[6]。注意不同的位有不同的權值,見圖2.0

     具體編碼機制:以幀為單位進行分析,同時分析1分鐘內3幀的差別,詳見表1.1與圖1.0。理論上,1分鐘內的3幀只有“幀號”和“校驗位”不同,其他位均相同。

四進位制 二進位制
0 00
1 01
2 10
3                                                                                                    11                                                                                                 

 表1.0-四進位制與二進位制的轉換關係 

序號 名稱 四進位制位數 等效二進位制位數 表示範圍(DEC) 說明 備註
1 幀號 1 2 無意義

 0表示第1秒,1表示第21秒,2表示第41秒

 通過這一位可以判斷當前時間的秒位
2 保留 1 2 無意義  未使用位,暫無意義(目前恆為四進位制"0") 為未來升級BPC編碼預留
3 小時 2 4 0~11  轉換為十進位制表示當前時間的小時位  有效資料
4 分鐘 3 6 0~59  轉換為十進位制表示當前時間的分鐘位  有效資料
5 星期 2 4 1~7  轉換為十進位制表示當前時間的星期位  有效資料
6 午別&校驗 1 2 無意義  將此位四進位制數轉換為兩位二進位制數,高位表示上下午,0表示上午,1表示下午;低位為幀的第0位至第8位的校驗(幀的第一位記為0)----將其轉換為二進位制後,有奇數個1為1,有偶數個1為0  指示上下午,並對此幀前半部分的資料進行校驗
7 3 6 1~31  轉換為十進位制表示當前時間的日期位  有效資料
8 2 4 1~12  轉換為十進位制表示當前時間的月份位  有效資料
9 年(低6位(Bin)) 3 6 0~63  加上年的最高位(此時表示範圍拓寬到0~127)並轉換為十進位制後加上2000即表示當前時間的年份位,按照這樣編碼,BPC最久可以用到2127年末  有效資料
10 保留&校驗 1 2 無意義  將此位四進位制數轉換為兩位二進位制數,高位表示年的最高位(目前恆為四進位制"0");低位為幀的第10位至第17位的校驗(幀的第一位記為0)--有奇數個1為1,有偶數個1為0  拓寬年份的表示範圍,並對此幀後半部分的資料進行校驗
11 幀起始預告位 1 2 無意義  未使用位(缺少脈衝,NTCO引腳輸出1s的低電平)  分隔相鄰的幀

表1.1-BPC幀格式[6][7][8]

圖2.0-BPC幀格式圖解[8]

圖2.1-一個BPC編解碼例項[7]

 

實際上應該如何解碼BPC

     最簡單的解碼方法莫過於使用微控制器,通過對微控制器進行程式設計,使其檢測BPC傳送訊號的脈寬(實際上,CME6005模組從天線接收BPC訊號,並將解調後的訊號交給微控制器解碼),從而識別出每段片段對應的碼值。接收完一幀資料後,就可以解碼出相應的時間。

     但是,實際情況並沒有這麼簡單。無線電在傳播過程中會有一定程度的衰減,加上環境中的電磁干擾,以及地理位置和天線等諸多因素,你所接收到的BPC訊號可能會存在一定的誤差,這時候我們就需要使用校驗位對資料幀進行校驗。

     綜上,對解碼提出以下要求:

1.實現對時、分、年、月、日、星期的解碼。

2.實現秒指示。

3.實現資料糾錯。

 

聽一聽電波鐘的聲音

     將CME6005模組反相輸出的解調後的BPC訊號經過音訊功率放大,驅動無源蜂鳴器發聲。

     CME6005模組包含了CME6005電波鍾積體電路、調諧到68.5KHz的磁棒天線以及外圍分立元件。模組引出了電源、地、PON和NTCO四個引腳。PON為工作模式選擇引腳,NTCO為解調後的訊號的反向輸出引腳,CME6005框圖如圖3.0所示。模組工作電壓1.2v~~5.5v,休眠電流0.03uA,最大工作電流120uA[4]。

     以下是原文對CME6005積體電路的描述:CME6005 是一款高度整合的 BI-CMOS 低頻接收解碼晶片。 這一款高靈敏度,低功耗的晶片能解調多國電波訊號包括美國 (WWVB)、 德國(DCF77)、 日本(JJY40 和 JJY60)、 英國(MSF)和瑞士(HBG)。 CME6005 內含了一個獨特的雙頻晶體補償功能、 單/雙頻電波接收功能、 AGC鎖定功能、使 CME6005 成為一個極理想的無線電波方案。[4]

     功放採用TBA820M,乙類功放,供電電壓3v~~16v,最大輸出功率為2w。引腳定義和典型電路如圖3.1圖3.2所示。

     實際測試中,會出現兩種情況。第一種,蜂鳴器持續發出噼~噼~啪~啪的聲音,並且時而密集,時而稀疏,可以想象成一大串鞭炮爆炸的場景。這種情況是無效的,沒有有效的電波鍾資料輸出。第二種,蜂鳴器發出的聲音呈現特定規律,例如:噼~噼~噼~安靜| 噼~噼~安靜| 噼~噼~噼~噼~安靜,並且週期為1s。此時接收到的是有效的電波鍾原始資料,解碼該資料就可以獲得當前時間。

     實際測試中,戶外可以接收到有效資料,室內偶爾也可以接收到有效資料,但是接收到無效資料(上述第一種情況)的機率似乎更大(測試地點:四川)

圖3.0-CME6005框圖[4]

圖3.1-TBA820M引腳定義[10]

圖3.2-TBA820M典型電路[10]

 圖3.3-實驗電路(正)

圖3.4-實驗電路(反) 

 

簡單地看一下電波鐘的波形

     如果沒有邏輯分析儀,可以使用微控制器讀取NTCO引腳電平狀態並通過串列埠發回。如果每20ms取樣一次,通訊的波特率為500bps(8位資料位-1位起始位-1位停止位),使用51微控制器就可以實現。如果20ms取樣一次,每秒可以取樣50次,NTCO的最短高電平時間為100ms,理論上可以實現波形的復現而不失真。下圖即為一次除錯過程中獲得的波形資料。

圖4.0-串列埠發回的時長為20s的波形

 

獲取BPC有效資料並解碼

     微控制器每10ms對NTCO引腳取樣一次,為了獲取一幀有效資料,需要完成以下步驟:

  1.檢測幀起始標誌位,即:長達1s的低電平(實際上NTCO引腳存在由外界干擾所產生的噪聲,所以應該設立一個閾值,超過該閾值則判定其為幀起始標誌位)。

  2.檢測到幀起始標誌位後,通過定時取樣NTCO引腳以獲取有效資料(為了消除噪聲帶來的影響,應該設立一個閾值,以判斷有效資料的四進位制狀態)。

  3.校驗獲取的資料,並將其按照一定格式轉換為時間。

     以圖5.0最後一組資料為例,詳細介紹如何將獲取到的有效資料轉換為時間。

     最後一組資料為“0 0 1 3 1 1 1 1 0 3 0 2 0 2 2 1 1 0 1”,下面演示如何解碼原始資料。

     0:第1秒

     0:保留位,恆為0

   13:時,4+3+12=19

 111:分,16+4+1=21

   10:星期,4+0=4

     3:高位為1,表示下午;低位為1,表示奇檢驗。

020:日,0+8+0=8

  22:月,8+2=10

110:年,16+4+0+2000=2020

     1:高位為0,即年的最高位為0;低位為1,表示奇校驗。

     具體的程式見github。

圖5.0-實際獲取的有效資料

圖5.1-解碼出的時間(圖中所示的“第一段校驗錯誤”有Bug,已經得到修復)

 

 github

     程式和部分參考資料見github:https://github.com/HaochuanDeng/Radio-Controlled-Clock_BPC-China

 

Acknowledgment

[1]XNY Electronic(淘寶店鋪,老闆熱心地提供了模組資料)

 

Reference

[1]電波鍾;https://baike.baidu.com/item/%E7%94%B5%E6%B3%A2%E9%92%9F/1809735?fr=aladdin

[2]長波;https://baike.baidu.com/item/%E9%95%BF%E6%B3%A2

[3]電離層;https://baike.baidu.com/item/%E7%94%B5%E7%A6%BB%E5%B1%82#10

[4]世界各國電波鍾詳情;CME6005-A11_datasheet

[5]BPC;https://baike.baidu.com/item/bpc

[6]BPC授時編碼專利;

[7]BPC電波授時編碼詳細格式;

[8]電波鍾;周勝鋒

[9]Time from NPL (MSF);https://en.wikipedia.org/wiki/Time_from_NPL_(MSF)

[10]TBA820M_datasheet;SGS-THOMSON

 

宣告

     本文未經DLHC允許,禁止轉載。DLHC保留所有權利。<