chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

電波校時鐘的制作

454398 ? 來源:網(wǎng)絡整理 ? 作者:網(wǎng)絡整理 ? 2019-11-21 09:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡介:

手頭有一個項目,需要一個“精確”的頻率計,作為DIY一族,準備動手制作一個。在制作頻率計之前,需要一個 能精確測量晶振頻率的東西。之前嘗試過NTP對時,發(fā)現(xiàn)精度太差,不好使。所以準備改用電波對時。百度搜了一下,動手做電波表的朋友還真不少, 但講得不夠詳細,解碼部分還是“保密”的。只好嘗試自立更生了。

BPC電波鐘模塊

電波對時需要一個接收頭,接收授時中心發(fā)出的電波信號。我們國家的授時信號頻率為68.5Khz,發(fā)射臺在商丘。 接收頭實際上是一個窄帶信號接收器,其帶寬只有幾個赫茲,通常采用晶體濾波器來限制接收帶寬。由于工作頻率比較低,放大部分是比較 容易設計的,有一定無線電基礎的都可以做出來。

這里我們直接從某寶上買來一個完整的電波鐘模塊?;?5大洋,省了很多事。

電波校時鐘的制作

BPC模塊上用到的引腳有4條。

VCC :電源,1.5~3.5V

GND :地

SIG :BPC授時信號輸出

EN :模塊使能(低電平使能,高電平關閉模塊)

BPC解碼和校時

電波鐘模塊輸出的BPC信號如下圖,1分鐘包含3個幀,一個BPC幀的周期為20秒,除了第“0”秒外,其余19秒每秒一個 脈沖。方波秒脈沖有0.1S,0.2S,0.3S,0.4S四種脈沖寬度狀態(tài),分別表示四進制的0, 1, 2, 3,現(xiàn)有的時間編碼都以二進制表示時間信息, 是為了采用微處理器解碼方便。但四進制只是數(shù)值的一種表示方式,并不影響微處理器把它作為二進制處理,或者采取簡單的變換就可將1位 四進制數(shù)變成2位二進制數(shù)。

P0設在每分鐘0,20, 40秒,以缺少秒脈沖使幀與幀隔開,同時作為幀起始預告。

P1為幀標志,P1=0表示幀起于第1秒,P1=1表示幀起始于21秒,P1=2表示幀起始于41秒。幀標志是必需的,它用來確定整分的起始。 例如:當接收完一組包含著“10時38分”的時間編碼時,如果幀標志標明該幀為第二幀,就可以把下一幀的P1位置標定為10時38分41秒, 再過20秒便是10時39分的起始。

P2為預留位。用于需要擴充信息。

時&分表示了時間

其他各位數(shù)據(jù)在本案中沒有用到,不做詳細說明

解碼MCU采用了TI公司的MSP430G2211IPW14,MSP系列的MCU以低功耗著稱,非常適合于電池供電的應用。本例中, MCU大部分時間工作在約20uA的低功耗模式下。

BPC解碼軟件使用了MSP430G2211的TimeA,TimeA的計數(shù)器由32768Hz的晶振提供時鐘,從0~0xFFFF循環(huán)計數(shù)。每2秒 循環(huán)一周。BPC信號接在MCU的中斷請求上,在上下跳變沿均產(chǎn)生中斷,中斷服務程序中讀取TimerA計數(shù)器。根據(jù)脈沖寬度解碼BPC編碼的信號。 由于BPC信號的最小脈寬為0.1秒,軟件中還加入了濾波處理,可以濾除脈寬較窄的干擾信號。

if (MCU_INT_GET(BPC_SIGNAL_PORT, BPC_SIGNAL_PIN)) { static uint16 wPrevToggle = 0; //前一次跳變時刻 static uint16 wLastPulseWidth = 0; //前一次脈沖寬度 static uint8 bLastPulsePolarity = 0; //前一次脈沖極性(1:正脈沖,0:負脈沖) static uint8 ucBpcBitPos = 0xFF; //BPC解碼位置,0xFF表示解碼狀態(tài)機復位 static uint8 ucBpc[2]; //BPC碼數(shù)據(jù),只取包含“時:分:秒”信息的前面2字節(jié)。 uint16 wCurToggle; //本次跳變時刻 uint16 wCurPulseWidth; //本次脈沖寬度 uint16 wBpcSecond; //BPC解碼得到的時間秒數(shù) uint8 bCurPulsePolarity; //本次脈沖極性(1:正脈沖,0:負脈沖) uint8 ucTmp; MCU_INT_XOR_EDGE(BPC_SIGNAL_PORT, BPC_SIGNAL_PIN); MCU_INT_CLEAR(BPC_SIGNAL_PORT, BPC_SIGNAL_PIN); //正跳變,表示的是負脈沖(結束) bCurPulsePolarity = MCU_INT_GET_EDGE(BPC_SIGNAL_PORT, BPC_SIGNAL_PIN) ? 0 : 1; wCurToggle = GetCurTimerA(); wCurPulseWidth = wCurToggle - wPrevToggle; if ((wCurPulseWidth 《 PULSE_FILTER_OUT) || (bCurPulsePolarity == bLastPulsePolarity)) { //本次跳變脈寬過短,將當作干擾毛刺被過濾掉,脈寬同前一次合并 //本次脈寬極性同前一次相同(跟在干擾毛刺后),脈寬也同前一次合并 wLastPulseWidth += wCurPulseWidth; } else { //前一次脈寬數(shù)據(jù)有效,可以處理了。 if (!bLastPulsePolarity && (wLastPulseWidth 》 PULSE_10ms * 100)) { //每幀數(shù)據(jù)頭部有1秒時間的空檔期,表示幀起始 ucBpcBitPos = 14; //只用到前14bit數(shù)據(jù) ucBpc[0] = ucBpc[1] = 0; } else if (ucBpcBitPos != 0xFF) { if (!bLastPulsePolarity) { //負脈沖 if (wLastPulseWidth 《 PULSE_10ms * 55) //BPC編碼正脈沖寬度最小600ms,《550ms為非法,解碼狀態(tài)機復位 ucBpcBitPos = 0xFF; } else { //正脈沖 ucTmp = 0xFF; if (wLastPulseWidth 《 PULSE_10ms * 45) { if (wLastPulseWidth 》 PULSE_10ms * 35) //400ms脈寬 ucTmp = 3; else if (wLastPulseWidth 》 PULSE_10ms * 25) //300ms脈寬 ucTmp = 2; else if (wLastPulseWidth 》 PULSE_10ms * 15) //200ms脈寬 ucTmp = 1; else if (wLastPulseWidth 》 PULSE_10ms * 5) //100ms脈寬 ucTmp = 0; } if (ucTmp == 0xFF) { //脈寬非法,解碼狀態(tài)機復位 ucBpcBitPos = 0xFF; } else { //保存合法數(shù)據(jù) ucBpcBitPos -= 2; ucBpc[ucBpcBitPos 》》 3] |= ucTmp 《《 (ucBpcBitPos & 0x07); if (ucBpcBitPos == 0) { //一幀數(shù)據(jù)接收完成 ucBpcBitPos = 0xFF; //解碼狀態(tài)機復位,等待下次數(shù)據(jù) wBpcSecond = ((ucBpc[1] 《《 2) | (ucBpc[0] 》》 6)) & 0x0F; //小時 wBpcSecond *= 3600; wBpcSecond += ((uint16)(ucBpc[0] & 0x3F)) * 60; //分鐘 wBpcSecond += ((ucBpc[1] 》》 4) & 0x03) * 20 + 21; //秒數(shù) //如果相臨近的兩次BPC校時都是準確的(沒有誤碼),守時中斷應該在BPC //信號的邊界前后,因此,秒數(shù)只可能差0或1秒。據(jù)此判斷校時成功 if ((wBpcSecond - s_wRealSecond) 《 2) s_wEvent |= BPC_FINISHED; s_wRealSecond = wBpcSecond; s_wTarSecond = wCurToggle + COUNT_1S; } //if (ucBpcBitPos == 0 } } } wPrevToggle = wCurToggle; wLastPulseWidth = wCurPulseWidth; bLastPulsePolarity = bCurPulsePolarity; } }

守時信號輸出

TimerA的通道0工作在比較器模式,用作守時和UART波特率發(fā)生器。時間以12小時內的秒數(shù)表示,從00:00:00或12:00:00 開始計數(shù),在每秒開始時將時間讀數(shù)從UART口發(fā)出去。MSP430G2211沒有專用的UART,需要軟件實現(xiàn)。UART數(shù)據(jù)格式為8位、無校驗、1200波特率??偣?16bit數(shù)據(jù),需要用2個字節(jié)表示,加上每字節(jié)的起始位、停止位,總共20位。

#pragma vector=TIMER0_A0_VECTOR __interrupt void Uart_ISR(void) { static int8 iBits = 0; static uint16 wMask; TACCTL0 &= ~TAIFG; //清中斷 //每秒起始位置把16bits實時時間通過UART發(fā)送出去 if ((iBits == 0) || (iBits == 10)) { MCU_IO_CLR(UART_TX_PORT, UART_TX_PIN); //起始位 } else if ((iBits == 9) || (iBits == 19)) MCU_IO_SET(UART_TX_PORT, UART_TX_PIN); //停止位 else { //發(fā)送數(shù)據(jù)位 if (s_wRealSecond & wMask) MCU_IO_SET(UART_TX_PORT, UART_TX_PIN); else MCU_IO_CLR(UART_TX_PORT, UART_TX_PIN); wMask 《《= 1; } iBits++; if (iBits == 20) { //實時時間發(fā)送完畢,準備在下一秒再次發(fā)送 s_wTarSecond += COUNT_1S; TACCR0 = s_wTarSecond; s_wRealSecond++; if (s_wRealSecond 》= ((uint16)12*3600)) s_wRealSecond = 0; iBits = 0; wMask = 1; s_wEvent |= SECOND_EVENT; } else TACCR0 += UART_BIT_WIDTH; __low_power_mode_off_on_exit(); }

守時時鐘校準

本系統(tǒng)需要依靠標稱頻率為32768Hz晶振提供時間基準來守時,晶振負載電容對頻率有微調作用。為了測定晶振實際工作 頻率,可測量一段時間內的積累誤差。例如在10:00:00時進行第一次BPC校時,6個小時后在16:00:00進行第二次BPC校時,用串口工具接收并打印出 第二次BPC校時前后從UART口輸出的守時信號

校時之前

【2017-10-11 15:58:47:850】CB 0D

【2017-10-11 15:58:48:850】CC 0D

校時之后

【2017-10-11 15:59:47:827】07 0E

【2017-10-11 15:59:48:827】08 0E

從打印出來的數(shù)據(jù)可以看出,在校時前后兩點(0x0E08-0x0DCC = 60秒),對應PC機系統(tǒng)時間為59:48:827-58:48:850 = 59.977秒,也就是說6小時內積累的誤差為-0.023秒,可以忽略不計。否則可能需要調整負載電容來對頻率進行微調,或者也可以調整代碼中的 COUNT_1S的宏定義值來重新標定“1秒”。

機芯驅動

本設計初衷是要制作一個能夠準確計時(無累積誤差)的東西。因此完成守時信號輸出就OK了,但既然動了手,就準備弄個 完整的電波鐘玩玩。拆解了一個多時不用的石英鐘,只將機芯步進馬達的線圈引出,其他電路統(tǒng)統(tǒng)拆掉。這里我范了一個錯誤,本以為馬達是1秒 走一步或二步,按此設計了驅動代碼,結果馬達跑得非常別扭,走走退退,不知怎回事,弄了半天才發(fā)現(xiàn)問題所在,實際上這個機芯步進馬達是每秒16步 的,差得也太遠了。因此,建議朋友在拆機前先測一下原機的驅動波形。

這種步進電機的驅動信號為正負交替的脈沖信號。脈沖寬度需要有個合理的范圍,拆機時沒有先用示波器測一下,只好自己 湊了。不過,就算測了也只能供參考,因為原機是1.5V供電的,現(xiàn)在改成3V,脈寬肯定需要調窄,理論上升到2倍電壓后脈寬應是原來的1/4.我的這個馬達 用12ms脈寬驅動,工作得很Happy.朋友自己制作時可以自行調整MOTOR_PULSE_DUTY。

為了實現(xiàn)正負極性的交替,使用了2個IO端口(石英鐘機芯馬達不分極性直接連在這兩個端口上就行了),輸出兩路移相的方波信號。兩路方波信號之間的相差即為脈沖寬度。當鐘面顯示 的時間同實際時間有偏差時,需要改變脈沖周期以調整電機速度,使兩者趨于一致。機芯驅動使用了TimeA的通道1,在其中斷服務中實現(xiàn)

#pragma vector=TIMER0_A1_VECTOR __interrupt void Motor_drv_ISR(void) { if (TACCTL1 & CCIFG) { // 步進電機驅動信號,一個周期分4個Stage,電機走2步。 // S1,S3提供動力輸出。 // ------ // | S1 | // | | // --------------| |--------------| | // S0 S2 | | // | | // ------ // S3 static uint8 ucStage = 0; //步進電機每走一步分2個stage。 uint16 wS0S2; //S0,S2時間長度 TACCTL1 &= ~CCIFG; //清中斷 if (ucStage == 2 * STEP_1S - 1) { //每秒末進入此處 ucStage = 0; s_wDisplaySecond++; if (s_wDisplaySecond 》= ((uint16)12 * 3600)) s_wDisplaySecond = 0; } else ucStage++; //先假定鐘面時間總是偏“快”的,算一下“快”了多少 if (s_wDisplaySecond 》 s_wRealSecond) wS0S2 = s_wDisplaySecond - s_wRealSecond; else //超了一圈(12小時) wS0S2 = ((uint16)12 * 3600) - (s_wRealSecond - s_wDisplaySecond); //如果算下來“快”了9小時以內,認為其確實“快”了,否則認為實際是“慢”了3小時不到。 //之所以不以6小時分界,是因為步進馬達可以無限放慢,有限地加快。 if (wS0S2 《 2) //偏快不多,正常運行 wS0S2 = MOTOR_PERIOD - MOTOR_PULSE_DUTY; //正常運行 else if (wS0S2 《 ((uint16)9 * 3600)) //偏快,降速運行 wS0S2 = MOTOR_PERIOD_SLOW - MOTOR_PULSE_DUTY; else //偏慢,加速運行 wS0S2 = MOTOR_PERIOD_FAST - MOTOR_PULSE_DUTY; //步進電機驅動信號4個stage一個循環(huán),走2步 switch(ucStage & 0x03) { case 0: MCU_IO_CLR(MOTOR_DRVN_PORT, MOTOR_DRVN_PIN); TACCR1 += wS0S2; break; case 1: MCU_IO_SET(MOTOR_DRVP_PORT, MOTOR_DRVP_PIN); TACCR1 += MOTOR_PULSE_DUTY; break; case 2: MCU_IO_SET(MOTOR_DRVN_PORT, MOTOR_DRVN_PIN); TACCR1 += wS0S2; break; case 3: MCU_IO_CLR(MOTOR_DRVP_PORT, MOTOR_DRVP_PIN); TACCR1 += MOTOR_PULSE_DUTY; break; } } __low_power_mode_off_on_exit(); }

使用方法

由于系統(tǒng)無法讀取鐘面顯示的時間,因此在系統(tǒng)上電啟動時,必須先把鐘面撥到00:00:00的默認位置。上電時,MCU默認為 鐘面顯示時間和系統(tǒng)實際時間為00:00:00.系統(tǒng)在00:00:02啟動BPC對時,對時成功后,“實際時間”就準確了,這時,從UART輸出的守時信號也是準確的了。 但鐘面時間需要一段時間后才能逐步同實際時間一致。以后,系統(tǒng)會在每天的00:00:02和12:00:02各啟動BPC對時一次,如果對時成功或20分鐘內不能對時 則自動關閉BPC模塊以節(jié)約電池。對時成功,照明等會點亮2秒。

在每天的17:00-21:00, 05:00-9:00兩個時段內是BPC發(fā)射臺是關閉的,在這兩個時段內開機是無法對時的。

系統(tǒng)提供了一個按鈕,短按按鈕可以點燈5秒,以便夜間照明。長按2秒以上可以立即打開BPC對時,對時成功或5分鐘內不成功 則自動關閉BPC模塊。這些業(yè)務邏輯都在主程序中實現(xiàn)。

實物圖

原理圖

JI為下載接口。MSP430G2211晶振匹配電容內置,可配置,所以不需要外接電容

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電波鐘
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7249
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    安徽京準:NTP校時服務器賦能智慧水務監(jiān)管優(yōu)化

    安徽京準:NTP校時服務器賦能智慧水務監(jiān)管優(yōu)化
    的頭像 發(fā)表于 11-26 08:37 ?140次閱讀
    安徽京準:NTP<b class='flag-5'>校時</b>服務器賦能智慧水務監(jiān)管優(yōu)化

    NTP子母鐘系統(tǒng)、數(shù)字時鐘系統(tǒng)、NTP校時

    數(shù)字時鐘
    西安同步電子科技有限公司
    發(fā)布于 :2025年11月12日 17:02:04

    NTP自動校時服務器的核心優(yōu)勢介紹

    NTP自動校時服務器是一種基于網(wǎng)絡的時間同步設備,它通過與高精度時間源(如GPS、原子鐘或國家授時中心)進行通信,獲取準確的時間信息,并將其分發(fā)到網(wǎng)絡中的各個設備。其核心優(yōu)勢在于能夠實現(xiàn)毫秒級甚至
    的頭像 發(fā)表于 11-11 15:28 ?200次閱讀
    NTP自動<b class='flag-5'>校時</b>服務器的核心優(yōu)勢介紹

    校時服務器在安防監(jiān)控系統(tǒng)中的應用解析

    在當今這個信息化飛速發(fā)展的時代,安防監(jiān)控系統(tǒng)作為保障公共場所安全的重要手段,其穩(wěn)定性和同步性對于整個系統(tǒng)的有效運行至關重要。而在這其中,校時服務器扮演著一個角色。本文旨在探討校時服務器在校時服務器在
    的頭像 發(fā)表于 11-06 14:55 ?159次閱讀
    <b class='flag-5'>校時</b>服務器在安防監(jiān)控系統(tǒng)中的應用解析

    電波局放如何及時發(fā)現(xiàn)?

    電波局放現(xiàn)象源于開關柜內部絕緣系統(tǒng)的局部放電,當開關柜內某區(qū)域發(fā)生放電時,其產(chǎn)生的電磁波會向四周傳播,這些電磁波在經(jīng)過開關柜的接縫、觀察窗等非連續(xù)部位時,會通過這些縫隙泄漏到金屬殼體外部,并在殼體
    的頭像 發(fā)表于 10-28 15:58 ?181次閱讀

    北斗衛(wèi)星校時時鐘使用經(jīng)驗分享

    身處時間精度要求極高的行業(yè),我們對時鐘的守時能力有著嚴苛的考量。過去依賴多種授時手段,總不免遇到些細微的困擾,比如局部的信號延遲或偶爾的波動。近年來,因工作需要深入接觸了北斗衛(wèi)星校時時鐘,它帶來了一種不同的體驗。
    的頭像 發(fā)表于 10-28 14:38 ?163次閱讀
    北斗衛(wèi)星<b class='flag-5'>校時時鐘</b>使用經(jīng)驗分享

    選擇考場時鐘三大注意事項、考場時鐘系統(tǒng)、學校時鐘

    時鐘分配儀器儀表
    西安同步電子科技有限公司
    發(fā)布于 :2025年10月22日 10:28:56

    北斗衛(wèi)星校時服務器:安徽京準提升DCS系統(tǒng)精準度

    北斗衛(wèi)星校時服務器:安徽京準提升DCS系統(tǒng)精準度
    的頭像 發(fā)表于 06-18 17:23 ?578次閱讀
    北斗衛(wèi)星<b class='flag-5'>校時</b>服務器:安徽京準提升DCS系統(tǒng)精準度

    校時鐘系統(tǒng),標準考場時鐘系統(tǒng),AI亮相2025高考,賽思時鐘系統(tǒng)為教育公平筑起“精準防線”

    2025年#高考將在近日拉開帷幕,#AI監(jiān)考一度沖上熱搜。當AI深度融入高考,#時間同步不再是輔助功能,而是決定AI監(jiān)考系統(tǒng)成敗的“生命線”。AI亮相2025高考,40種異常行為0.5秒精準識別2025年高考即將拉開帷幕,江西、湖北、廣東等全國多地啟用AI智能巡考系統(tǒng)。該系統(tǒng)通過教室頂部的廣角攝像頭實時捕捉考生動態(tài),依托深度學習算法構建骨骼關節(jié)點模型,可識別
    的頭像 發(fā)表于 06-09 13:34 ?1097次閱讀
    學<b class='flag-5'>校時鐘</b>系統(tǒng),標準考場<b class='flag-5'>時鐘</b>系統(tǒng),AI亮相2025高考,賽思<b class='flag-5'>時鐘</b>系統(tǒng)為教育公平筑起“精準防線”

    GPS校時器是什么?如何用?

    GPS校時器是一種與全球定位系統(tǒng)(GPS)相關的設備,用于校準時間的精確度和準確性。隨著科技的進步和人們對時間的需求越來越高,GPS校時器成為了現(xiàn)代社會中不可或缺的重要工具。GPS校時器利用GPS
    的頭像 發(fā)表于 05-08 14:52 ?710次閱讀
    GPS<b class='flag-5'>校時</b>器是什么?如何用?

    GPS校時服務器(GPS時鐘同步系統(tǒng))介紹

    產(chǎn)品在繼承衛(wèi)星同步鐘所有功能的同時,內嵌流行的NTP-SERVER服務,以NTP/SNTP協(xié)議給各個網(wǎng)絡設備提供準確的時間校對服務,其他網(wǎng)絡系統(tǒng),可直接作為網(wǎng)絡校時服務器接入網(wǎng)絡。具有多種校時方式,使用方便。
    的頭像 發(fā)表于 04-23 14:00 ?519次閱讀

    安徽京準:NTP校時服務器精準同步的可靠選擇

    安徽京準:NTP校時服務器精準同步的可靠選擇
    的頭像 發(fā)表于 04-18 11:09 ?492次閱讀
    安徽京準:NTP<b class='flag-5'>校時</b>服務器精準同步的可靠選擇

    安徽京準:GPS北斗衛(wèi)星校時服務器助力大數(shù)據(jù)云計算

    安徽京準:GPS北斗衛(wèi)星校時服務器助力大數(shù)據(jù)云計算
    的頭像 發(fā)表于 04-02 09:27 ?555次閱讀

    安防監(jiān)控NTP校時服務器:讓視頻數(shù)據(jù)更有意義

    安防監(jiān)控NTP校時服務器:讓視頻數(shù)據(jù)更有意義
    的頭像 發(fā)表于 12-16 10:59 ?877次閱讀
    安防監(jiān)控NTP<b class='flag-5'>校時</b>服務器:讓視頻數(shù)據(jù)更有意義