普仕凡,徐名峰,張麗艷,費(fèi)繼友,雷子浩
(1.中國(guó)人民解放軍91550部隊(duì),遼寧 大連 116023;2.大連交通大學(xué) 電氣信息學(xué)院,遼寧 大連116028)*
基于AVR單片機(jī)的IRIG-B碼授時(shí)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
普仕凡1,徐名峰2,張麗艷2,費(fèi)繼友2,雷子浩2
(1.中國(guó)人民解放軍91550部隊(duì),遼寧 大連 116023;2.大連交通大學(xué) 電氣信息學(xué)院,遼寧 大連116028)*
針對(duì)野外測(cè)量站點(diǎn)測(cè)量控制儀器對(duì)時(shí)的需求,采用AVR單片機(jī)為控制核心,通過(guò)GPS模塊獲取準(zhǔn)確時(shí)間,利用AVR單片機(jī)的PWM功能生成IRIG-B(Inter-Range Instrumentation Group-B,靶場(chǎng)儀器組B型碼),研制了一套IRIG-B碼授時(shí)系統(tǒng).闡述了設(shè)計(jì)思路和軟硬件設(shè)計(jì)思想,給出了原理框圖及部分線(xiàn)路圖.
IRIG-B碼;AVR單片機(jī);PWM;GPS模塊
目前的測(cè)量裝備自動(dòng)化程度越來(lái)越高,大多都具備IRIG-B碼輸入接口,對(duì)時(shí)間的準(zhǔn)確性也提出更高要求.當(dāng)測(cè)量裝備連接測(cè)控網(wǎng)時(shí),時(shí)間統(tǒng)一信號(hào)由指揮控制中心實(shí)時(shí)提供,保證測(cè)控網(wǎng)內(nèi)所有裝備時(shí)間一致.距離指揮控制中心較遠(yuǎn)的野外測(cè)量站點(diǎn)無(wú)重大測(cè)控任務(wù)時(shí),得不到指揮控制中心傳來(lái)的授時(shí)信號(hào),只能通過(guò)自身的固有時(shí)鐘進(jìn)行守時(shí).如果裝備出現(xiàn)時(shí)鐘掉電時(shí)間就沒(méi)了,而且裝備長(zhǎng)時(shí)間不對(duì)時(shí)會(huì)出現(xiàn)較大的時(shí)間偏差,嚴(yán)重影響裝備平時(shí)的操控訓(xùn)練.為此研制本授時(shí)系統(tǒng).
本系統(tǒng)產(chǎn)生的IRIG-B碼的基準(zhǔn)碼元前沿,相對(duì)于GPS模塊輸出的1PPS前沿的時(shí)間同步誤差小于0.01 ms.能夠滿(mǎn)足授時(shí)要求.
基于AVR單片機(jī)的IRIG-B碼授時(shí)系統(tǒng)硬件總體框圖[1-3]主要由主控單片機(jī) ATMEGA128、GPS模塊、電源電路和產(chǎn)生差分 IRIG-B碼的MAX485電路組成,如圖1所示.
圖1 IRIG-B碼授時(shí)系統(tǒng)原理框圖
電源模塊選擇LM2576HV系列降壓型開(kāi)關(guān)穩(wěn)壓器[4],LM2576HV 輸入電壓高,可達(dá) 60 V,對(duì)野外站點(diǎn),可以使用電壓等級(jí)小于60 V的蓄電池組或者直流穩(wěn)壓電源為本裝置供電.電源電路[5]如圖2所示.
圖2 電源電路
圖2中的J4是電源接入插座,D9為IN4007,起到極性保護(hù)作用,當(dāng)輸入電壓接反時(shí),電路不工作,不會(huì)燒壞電路板上的電子元器件.C16、L5、C17構(gòu)成兀型濾波電路.D10是大功率的TVS,反向可承受6 A的電流,當(dāng)電壓高于60 V時(shí),反向?qū)?,拉低輸入電壓,保護(hù)LM22596HV開(kāi)關(guān)電源芯片不被高壓損壞.IC3是開(kāi)關(guān)電源芯片,它將輸入5~60 V以?xún)?nèi)的直流電源變換成3.3 V的直流電源VCC輸出,為單片機(jī)電路和GPS模塊供電.D2、L3、C9、C12 構(gòu)成LM22596HV-33 的外圍電路.
GPS模塊選用u-blox公司的u-blox NEO 6M.u-blox公司新推出的u-blox NEO 6M GPS模塊體積小,功能多,支持USB,支持UART,支持I2C,支持SPI,是目前UBLOX家族中性?xún)r(jià)比最高的GPS模塊.GPS模塊外圍電路[6]如圖3所示.
圖3 GPS模塊外圍電路
圖3中ANT為GPS天線(xiàn)接入端,LED1為秒脈沖指示燈,LED1由1PPS信號(hào)驅(qū)動(dòng),當(dāng)NOE6M鎖住至少一顆星能夠輸出GPS時(shí)間后,LED1將1 s一閃爍.
ATmega128單片機(jī)是本IRIG-B碼授時(shí)系統(tǒng)的控制核心,其主要完成對(duì)GPS模塊u-blox NEO 6M的設(shè)置、NMEA協(xié)議語(yǔ)句的讀取(只讀GPRMC語(yǔ)句);根據(jù)所獲得的GPS時(shí)間和1PPS的上升沿,將時(shí)間信息以脈沖編碼的形式調(diào)制到成IRIGB編碼信號(hào)輸出.單片機(jī)外圍電路[1-3]如圖4所示.
圖4 單片機(jī)外圍電路
圖4中J3是JTAG接口,ATmega128單片機(jī)的程序仿真調(diào)試通過(guò)該接口完成,JTAG接口還實(shí)現(xiàn)對(duì)Flash,EEPROM,熔絲位和鎖定位的編程,最終調(diào)試穩(wěn)定后的程序也是通過(guò)JTAG接口固化到單片機(jī)內(nèi)部Flash中.ATmega128單片機(jī)通過(guò)UART1與GPS模塊進(jìn)行數(shù)據(jù)通信.單片機(jī)的外中斷4(INT4)為1PPS輸入端,INT4設(shè)置成上升沿觸發(fā)中斷,中斷后即刻啟動(dòng)單片機(jī)的PWM信號(hào)輸出.單片機(jī)的定時(shí)器1工作在快速PWM模式,PWM信號(hào)就是直流B碼信號(hào),該信號(hào)由OC1B引腳輸出即IRIG-B(TTL).圖4中的U2為485轉(zhuǎn)換芯片,485芯片設(shè)計(jì)成只發(fā)送狀態(tài),其作用是將直流B碼信號(hào)轉(zhuǎn)換成差分信號(hào)傳輸,顯著提高信號(hào)的傳輸距離.圖4中J1是B碼信號(hào)輸出接口,J1的1為差分信號(hào)正,2為差分信號(hào)負(fù),3為直流B碼,4為信號(hào)地.
IRIG-B碼是時(shí)間系統(tǒng)中的一種常用串行傳輸方式,接口標(biāo)準(zhǔn)化,國(guó)際通用.IRIG-B碼又包括兩種方式:B(DC)碼和B(AC)碼,本文只討論B(DC).IRIG-B(DC)時(shí)間碼格式幀速率為1幀/s,可將1幀(1 s)分為10個(gè)字,每字為10位,每位的周期均為10 ms.每位都以高電平開(kāi)始,分為3種碼型:高電平8 ms低電平2 ms(表示參考碼元,即每秒開(kāi)始的第一字的第一位;位置標(biāo)志P0~P9,即每個(gè)字的第十位)、高電平5 ms低電平5 ms(表示邏輯“1”)、高電平 2 ms低電平 8 ms(表示邏輯“0”).基本碼元如圖5所示.
圖5 IRIG-B(DC)碼基本碼元
B碼第一個(gè)字傳送的是秒(s)信息,第二個(gè)字是分(min)信息,第三個(gè)字是小時(shí)(h)信息,第四、五個(gè)字是天(從1月1日開(kāi)始計(jì)算的年積日).另外,在第八個(gè)字和第十個(gè)字中分別有3位表示上站和分站的特標(biāo)控制碼元.一幀完整的IRIG-B(DC)碼[7]如圖6 所示.
圖6 一幀完整的IRIG-B(DC)碼
本設(shè)計(jì)采用ATmega128單片機(jī)定時(shí)器1的PWM波形來(lái)產(chǎn)生B碼.設(shè)置ATmega128單片機(jī)的定時(shí)器1工作在快速PWM模式,用來(lái)產(chǎn)生高頻的PWM波形.可通過(guò)設(shè)置選擇PWM波形從OC1A、OC1B或OC1C輸出,本設(shè)計(jì)選擇OC1B接通PWM輸出,快速PWM模式計(jì)數(shù)器從BOTTOM計(jì)到TOP,然后立即回到BOTTOM重新開(kāi)始.設(shè)置輸出比較引腳OC1B在TCNT1與OCR1B匹配時(shí)清零,在TOP時(shí)置位,TOP值為 ICR1.設(shè)置子程序Timer1_PWM_Init(),該子程序?qū)崿F(xiàn)定時(shí)器的初始化.程序中將設(shè)置定時(shí)器1工作在快速PWM模式,OCR1B與PWM輸出信號(hào)連接,啟用OCR1B匹配中斷功能,設(shè)置TOP值為ICR1,設(shè)置ICR1=2 499,分頻因子為64.輸出的PWM 頻率可以通過(guò)式(1)計(jì)算得到.
其中,fclk為單片機(jī)時(shí)鐘,本設(shè)計(jì)采用16 MHz的晶體振蕩器,變量N代表分頻因子,TOP為ICR1中存放的數(shù)值.由圖5 IRIG-B(DC)碼基本碼元可知,基本碼元每位的周期均為10 ms即頻率為100 Hz,這就是PWM信號(hào)的頻率fPWM.因此可得由式(2)計(jì)算TOP值.
即ICR1=2 499.定時(shí)器1從0~2 499計(jì)數(shù),一共有2 500個(gè)計(jì)數(shù)步長(zhǎng),周期是10 ms,因此1 ms對(duì)應(yīng)于250個(gè)計(jì)數(shù)步長(zhǎng).OCR1B的值由匹配中斷子程序SIGNAL(SIG_OUTPUT_COMPARE1B)中計(jì)算得到.
每個(gè)基本碼元的高電平時(shí)間到后TCNT1與OCR1B匹配,程序轉(zhuǎn)入OCR1B匹配中斷子程序運(yùn)行.OCR1B匹配中斷子程序用于確定下一個(gè)基本碼元的高電平持續(xù)時(shí)間.中斷子程序中設(shè)置Times_cent[]存放1 s數(shù)據(jù)從0~100碼元高電平時(shí)間的數(shù)組,設(shè)置變量pTimes_cent指向碼元位置.單片機(jī)INT4中斷發(fā)生時(shí),1PPS信號(hào)的上升沿到來(lái),此時(shí)設(shè)置碼元位置為0首位碼元脈寬8 ms即 pTimes_cent=0,Times_cent[0]固定為 8 啟動(dòng)單片機(jī)的PWM信號(hào)輸出.數(shù)組Times_cent[]的實(shí)時(shí)值根據(jù)讀取的GPS時(shí)間進(jìn)行配置.
ATmega128單片機(jī)通過(guò)UART1讀取GPS模塊輸出的時(shí)間.UART1的設(shè)置子程序?yàn)閁sart_init(void).在該程序中設(shè)置UCSR1B的值為0,UCSR1A的值為0,UBRR1L的值為103,UBRR1H的值為0,UCSR1C和UCSR1B的值分別如式(4)、(5)所示.
GPS模塊GPRMC語(yǔ)句通過(guò)UART1中斷程序讀取.數(shù)組UTCtime[]中存放了UTC時(shí)間數(shù)據(jù),數(shù)組UTCdate[]中存放了UTC日期數(shù)據(jù).
B碼的第四、五個(gè)字是天(從1月1日開(kāi)始計(jì)算的年月日).其計(jì)算程序用calatydays(uint Y,uint M,uint D)表示.其中Y,M,D分別表示當(dāng)日的年、月、日,函數(shù)返回值為當(dāng)日是一年中的第幾天.設(shè)置變量CurrentDay中存放的就是當(dāng)日是一年中的第幾天.
圖7 系統(tǒng)程序流程
子程序TimeChange()將時(shí)間數(shù)據(jù)映射到B碼對(duì)應(yīng)位上,在程序中判斷 UTCtime[5]和 UTC-time[4]的每一位,如果該位的值都是1,則將Times_cent[i]的值置為5,如果該位的值不都是1,則Times_cent[i]的值置為 2.
基于AVR單片機(jī)的IRIG-B碼授時(shí)系統(tǒng)程序[8]采用 C語(yǔ)言編寫(xiě),可讀性強(qiáng),存于 ATMEGA128單片機(jī)內(nèi)部的FLASH存儲(chǔ)器中,程序流程如圖7所示.
基于AVR單片機(jī)的IRIG-B碼授時(shí)系統(tǒng)產(chǎn)生的B碼基準(zhǔn)沿,與GPS模塊輸出的1PPS信號(hào)上升沿之間的的誤差小于0.01 ms,具有較高的授時(shí)精度.本系統(tǒng)具備IRIG-B碼的差分傳輸輸出,可以同時(shí)為多臺(tái)具備差分IRIG-B碼輸入接口的裝備提供遠(yuǎn)距離授時(shí)服務(wù).
基于AVR單片機(jī)的IRIG-B碼授時(shí)系統(tǒng)可廣泛運(yùn)用到需要IRIG-B碼授時(shí)服務(wù)的電力監(jiān)控、移動(dòng)通信基站等場(chǎng)合.
[1]普仕凡,張麗艷,李桂林,等.基于89C52單片機(jī)的智能溫控儀設(shè)計(jì)[J].大連交通大學(xué)學(xué)報(bào),2008(3):93-96.
[2]劉振超,張麗艷,普仕凡.基于W78E516控制的觸摸液晶顯示屏AG320240A4STCW-T51的應(yīng)用[J].現(xiàn)代顯示,2009(1):45-48.
[3]普仕凡,付曉偉.基于AVR單片機(jī)的煙敏傳感器檢測(cè)電路設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2012(4):87-88.
[4]普仕凡.基于AVR單片機(jī)的無(wú)線(xiàn)液位監(jiān)視儀設(shè)計(jì)及實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012(25):103-106.
[5]薛明軍,張輝,趙敏.LM2575系列開(kāi)關(guān)穩(wěn)壓集成電路及其應(yīng)用[J].國(guó)外電子元器件,2001(1):67-68.
[6]趙晶.Protel99高級(jí)應(yīng)用[M].北京:人民郵電出版社,2001.
[7]馬紅皎,胡永輝.GPS&IRIG -B 碼時(shí)間系統(tǒng)分析[J].電子科技,2005(7):23-27.
[8]沈文,Eagle lee,詹衛(wèi)前.AVR單片機(jī)C語(yǔ)言開(kāi)發(fā)入門(mén)指導(dǎo)[M].北京:清華大學(xué)出版社,2003.
Design and Implementation of IRIG-B Code Timing System Based on AVR Microcontroller
PU Shi-fan1,XU Ming-feng2,ZHANG Li-yan2,F(xiàn)EI Ji-you2,LEI Zi-hao2
(1.Institute 230 of Unit 91550,PLA,Dalian 116023,China;2.School of Electrical and Information Engineering,Dalian Jiaotong University,Dalian 116028,China)
Aiming at the time hack needs of measurement control instrument in the field measurement site,AVR microcontroller is used as the control core to obtain accurate time though GPS module,and PWM function of AVR MCU is used to generate IRIG-B(DC)code to develop a set of IRIG-B timing system.The paper illustrates the design of software and hardware,the principle drawing and some circuit diagrams.
IRIG-B code;AVR MCU;PWM;GPS modle
A
10.13291/j.cnki.djdxac.2014.03.023
1673-9590(2014)03-0097-04
2013-11-05
國(guó)家自然科學(xué)基金資助項(xiàng)目(51376028)和國(guó)家863計(jì)劃資助項(xiàng)目(2013AA041108)
普仕凡(1975-),男,工程師,碩士,主要研究方向?yàn)榍度胧较到y(tǒng)開(kāi)發(fā)的研究
E-mail:pushifan@163.com.