普仕凡,徐名峰,張麗艷,費繼友,雷子浩
(1.中國人民解放軍91550部隊,遼寧 大連 116023;2.大連交通大學 電氣信息學院,遼寧 大連116028)*
基于AVR單片機的IRIG-B碼授時系統設計與實現
普仕凡1,徐名峰2,張麗艷2,費繼友2,雷子浩2
(1.中國人民解放軍91550部隊,遼寧 大連 116023;2.大連交通大學 電氣信息學院,遼寧 大連116028)*
針對野外測量站點測量控制儀器對時的需求,采用AVR單片機為控制核心,通過GPS模塊獲取準確時間,利用AVR單片機的PWM功能生成IRIG-B(Inter-Range Instrumentation Group-B,靶場儀器組B型碼),研制了一套IRIG-B碼授時系統.闡述了設計思路和軟硬件設計思想,給出了原理框圖及部分線路圖.
IRIG-B碼;AVR單片機;PWM;GPS模塊
目前的測量裝備自動化程度越來越高,大多都具備IRIG-B碼輸入接口,對時間的準確性也提出更高要求.當測量裝備連接測控網時,時間統一信號由指揮控制中心實時提供,保證測控網內所有裝備時間一致.距離指揮控制中心較遠的野外測量站點無重大測控任務時,得不到指揮控制中心傳來的授時信號,只能通過自身的固有時鐘進行守時.如果裝備出現時鐘掉電時間就沒了,而且裝備長時間不對時會出現較大的時間偏差,嚴重影響裝備平時的操控訓練.為此研制本授時系統.
本系統產生的IRIG-B碼的基準碼元前沿,相對于GPS模塊輸出的1PPS前沿的時間同步誤差小于0.01 ms.能夠滿足授時要求.
基于AVR單片機的IRIG-B碼授時系統硬件總體框圖[1-3]主要由主控單片機 ATMEGA128、GPS模塊、電源電路和產生差分 IRIG-B碼的MAX485電路組成,如圖1所示.

圖1 IRIG-B碼授時系統原理框圖
電源模塊選擇LM2576HV系列降壓型開關穩壓器[4],LM2576HV 輸入電壓高,可達 60 V,對野外站點,可以使用電壓等級小于60 V的蓄電池組或者直流穩壓電源為本裝置供電.電源電路[5]如圖2所示.

圖2 電源電路
圖2中的J4是電源接入插座,D9為IN4007,起到極性保護作用,當輸入電壓接反時,電路不工作,不會燒壞電路板上的電子元器件.C16、L5、C17構成兀型濾波電路.D10是大功率的TVS,反向可承受6 A的電流,當電壓高于60 V時,反向導通,拉低輸入電壓,保護LM22596HV開關電源芯片不被高壓損壞.IC3是開關電源芯片,它將輸入5~60 V以內的直流電源變換成3.3 V的直流電源VCC輸出,為單片機電路和GPS模塊供電.D2、L3、C9、C12 構成LM22596HV-33 的外圍電路.
GPS模塊選用u-blox公司的u-blox NEO 6M.u-blox公司新推出的u-blox NEO 6M GPS模塊體積小,功能多,支持USB,支持UART,支持I2C,支持SPI,是目前UBLOX家族中性價比最高的GPS模塊.GPS模塊外圍電路[6]如圖3所示.

圖3 GPS模塊外圍電路
圖3中ANT為GPS天線接入端,LED1為秒脈沖指示燈,LED1由1PPS信號驅動,當NOE6M鎖住至少一顆星能夠輸出GPS時間后,LED1將1 s一閃爍.
ATmega128單片機是本IRIG-B碼授時系統的控制核心,其主要完成對GPS模塊u-blox NEO 6M的設置、NMEA協議語句的讀取(只讀GPRMC語句);根據所獲得的GPS時間和1PPS的上升沿,將時間信息以脈沖編碼的形式調制到成IRIGB編碼信號輸出.單片機外圍電路[1-3]如圖4所示.

圖4 單片機外圍電路
圖4中J3是JTAG接口,ATmega128單片機的程序仿真調試通過該接口完成,JTAG接口還實現對Flash,EEPROM,熔絲位和鎖定位的編程,最終調試穩定后的程序也是通過JTAG接口固化到單片機內部Flash中.ATmega128單片機通過UART1與GPS模塊進行數據通信.單片機的外中斷4(INT4)為1PPS輸入端,INT4設置成上升沿觸發中斷,中斷后即刻啟動單片機的PWM信號輸出.單片機的定時器1工作在快速PWM模式,PWM信號就是直流B碼信號,該信號由OC1B引腳輸出即IRIG-B(TTL).圖4中的U2為485轉換芯片,485芯片設計成只發送狀態,其作用是將直流B碼信號轉換成差分信號傳輸,顯著提高信號的傳輸距離.圖4中J1是B碼信號輸出接口,J1的1為差分信號正,2為差分信號負,3為直流B碼,4為信號地.
IRIG-B碼是時間系統中的一種常用串行傳輸方式,接口標準化,國際通用.IRIG-B碼又包括兩種方式:B(DC)碼和B(AC)碼,本文只討論B(DC).IRIG-B(DC)時間碼格式幀速率為1幀/s,可將1幀(1 s)分為10個字,每字為10位,每位的周期均為10 ms.每位都以高電平開始,分為3種碼型:高電平8 ms低電平2 ms(表示參考碼元,即每秒開始的第一字的第一位;位置標志P0~P9,即每個字的第十位)、高電平5 ms低電平5 ms(表示邏輯“1”)、高電平 2 ms低電平 8 ms(表示邏輯“0”).基本碼元如圖5所示.

圖5 IRIG-B(DC)碼基本碼元
B碼第一個字傳送的是秒(s)信息,第二個字是分(min)信息,第三個字是小時(h)信息,第四、五個字是天(從1月1日開始計算的年積日).另外,在第八個字和第十個字中分別有3位表示上站和分站的特標控制碼元.一幀完整的IRIG-B(DC)碼[7]如圖6 所示.

圖6 一幀完整的IRIG-B(DC)碼
本設計采用ATmega128單片機定時器1的PWM波形來產生B碼.設置ATmega128單片機的定時器1工作在快速PWM模式,用來產生高頻的PWM波形.可通過設置選擇PWM波形從OC1A、OC1B或OC1C輸出,本設計選擇OC1B接通PWM輸出,快速PWM模式計數器從BOTTOM計到TOP,然后立即回到BOTTOM重新開始.設置輸出比較引腳OC1B在TCNT1與OCR1B匹配時清零,在TOP時置位,TOP值為 ICR1.設置子程序Timer1_PWM_Init(),該子程序實現定時器的初始化.程序中將設置定時器1工作在快速PWM模式,OCR1B與PWM輸出信號連接,啟用OCR1B匹配中斷功能,設置TOP值為ICR1,設置ICR1=2 499,分頻因子為64.輸出的PWM 頻率可以通過式(1)計算得到.

其中,fclk為單片機時鐘,本設計采用16 MHz的晶體振蕩器,變量N代表分頻因子,TOP為ICR1中存放的數值.由圖5 IRIG-B(DC)碼基本碼元可知,基本碼元每位的周期均為10 ms即頻率為100 Hz,這就是PWM信號的頻率fPWM.因此可得由式(2)計算TOP值.

即ICR1=2 499.定時器1從0~2 499計數,一共有2 500個計數步長,周期是10 ms,因此1 ms對應于250個計數步長.OCR1B的值由匹配中斷子程序SIGNAL(SIG_OUTPUT_COMPARE1B)中計算得到.
每個基本碼元的高電平時間到后TCNT1與OCR1B匹配,程序轉入OCR1B匹配中斷子程序運行.OCR1B匹配中斷子程序用于確定下一個基本碼元的高電平持續時間.中斷子程序中設置Times_cent[]存放1 s數據從0~100碼元高電平時間的數組,設置變量pTimes_cent指向碼元位置.單片機INT4中斷發生時,1PPS信號的上升沿到來,此時設置碼元位置為0首位碼元脈寬8 ms即 pTimes_cent=0,Times_cent[0]固定為 8 啟動單片機的PWM信號輸出.數組Times_cent[]的實時值根據讀取的GPS時間進行配置.
ATmega128單片機通過UART1讀取GPS模塊輸出的時間.UART1的設置子程序為Usart_init(void).在該程序中設置UCSR1B的值為0,UCSR1A的值為0,UBRR1L的值為103,UBRR1H的值為0,UCSR1C和UCSR1B的值分別如式(4)、(5)所示.

GPS模塊GPRMC語句通過UART1中斷程序讀取.數組UTCtime[]中存放了UTC時間數據,數組UTCdate[]中存放了UTC日期數據.
B碼的第四、五個字是天(從1月1日開始計算的年月日).其計算程序用calatydays(uint Y,uint M,uint D)表示.其中Y,M,D分別表示當日的年、月、日,函數返回值為當日是一年中的第幾天.設置變量CurrentDay中存放的就是當日是一年中的第幾天.

圖7 系統程序流程
子程序TimeChange()將時間數據映射到B碼對應位上,在程序中判斷 UTCtime[5]和 UTC-time[4]的每一位,如果該位的值都是1,則將Times_cent[i]的值置為5,如果該位的值不都是1,則Times_cent[i]的值置為 2.
基于AVR單片機的IRIG-B碼授時系統程序[8]采用 C語言編寫,可讀性強,存于 ATMEGA128單片機內部的FLASH存儲器中,程序流程如圖7所示.
基于AVR單片機的IRIG-B碼授時系統產生的B碼基準沿,與GPS模塊輸出的1PPS信號上升沿之間的的誤差小于0.01 ms,具有較高的授時精度.本系統具備IRIG-B碼的差分傳輸輸出,可以同時為多臺具備差分IRIG-B碼輸入接口的裝備提供遠距離授時服務.
基于AVR單片機的IRIG-B碼授時系統可廣泛運用到需要IRIG-B碼授時服務的電力監控、移動通信基站等場合.
[1]普仕凡,張麗艷,李桂林,等.基于89C52單片機的智能溫控儀設計[J].大連交通大學學報,2008(3):93-96.
[2]劉振超,張麗艷,普仕凡.基于W78E516控制的觸摸液晶顯示屏AG320240A4STCW-T51的應用[J].現代顯示,2009(1):45-48.
[3]普仕凡,付曉偉.基于AVR單片機的煙敏傳感器檢測電路設計與實現[J].電腦編程技巧與維護,2012(4):87-88.
[4]普仕凡.基于AVR單片機的無線液位監視儀設計及實現[J].電腦知識與技術,2012(25):103-106.
[5]薛明軍,張輝,趙敏.LM2575系列開關穩壓集成電路及其應用[J].國外電子元器件,2001(1):67-68.
[6]趙晶.Protel99高級應用[M].北京:人民郵電出版社,2001.
[7]馬紅皎,胡永輝.GPS&IRIG -B 碼時間系統分析[J].電子科技,2005(7):23-27.
[8]沈文,Eagle lee,詹衛前.AVR單片機C語言開發入門指導[M].北京:清華大學出版社,2003.
Design and Implementation of IRIG-B Code Timing System Based on AVR Microcontroller
PU Shi-fan1,XU Ming-feng2,ZHANG Li-yan2,FEI 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
國家自然科學基金資助項目(51376028)和國家863計劃資助項目(2013AA041108)
普仕凡(1975-),男,工程師,碩士,主要研究方向為嵌入式系統開發的研究
E-mail:pushifan@163.com.