基于AVR单片机的IRIG-B码授时系统设计与实现

2014-01-27 03:00普仕凡徐名峰张丽艳费继友雷子浩
大连交通大学学报 2014年3期
关键词:码元子程序高电平

普仕凡,徐名峰,张丽艳,费继友,雷子浩

(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模块

0 引言

目前的测量装备自动化程度越来越高,大多都具备IRIG-B码输入接口,对时间的准确性也提出更高要求.当测量装备连接测控网时,时间统一信号由指挥控制中心实时提供,保证测控网内所有装备时间一致.距离指挥控制中心较远的野外测量站点无重大测控任务时,得不到指挥控制中心传来的授时信号,只能通过自身的固有时钟进行守时.如果装备出现时钟掉电时间就没了,而且装备长时间不对时会出现较大的时间偏差,严重影响装备平时的操控训练.为此研制本授时系统.

本系统产生的IRIG-B码的基准码元前沿,相对于GPS模块输出的1PPS前沿的时间同步误差小于0.01 ms.能够满足授时要求.

1 系统硬件总体组成

基于AVR单片机的IRIG-B码授时系统硬件总体框图[1-3]主要由主控单片机 ATMEGA128、GPS模块、电源电路和产生差分 IRIG-B码的MAX485电路组成,如图1所示.

图1 IRIG-B码授时系统原理框图

1.1 电源电路

电源模块选择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 的外围电路.

1.2 GRS模块外围电路

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一闪烁.

1.3 单片机外围电路设计

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为信号地.

2 软件设计思想

2.1ATmega128单片机PWM信号设置

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时间进行配置.

2.2 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日期数据.

2.3 时间数据与B码的映射

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所示.

3 结论

基于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.

猜你喜欢
码元子程序高电平
一种基于FPGA的PWM防错输出控制电路
基于ZYNQ的IRIG-B(DC)码设计与实现
LFM-BPSK复合调制参数快速估计及码元恢复
基于差分时延差编码的水声发射系统研制
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
浅谈物理电路与数字电路
基于极大似然准则的短猝发信号盲解调
PDM 1kW中波广播发射机保护电路分析
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索