单片机系统中日历时钟自动校准及调整
扫描二维码
随时随地手机看文章
1、概述
在各类检测控制系统中,需要通过日历时钟进行时间上的控制或对事件所发生的时间进行记录。如电网检测系统,路灯控制系统等。但日历时钟时常跑快跑慢的缺陷不可避免。经过日积月累,就会产生较大的误差,这会影响控制与检测的准确性。为了解决日历时钟的准确度问题,我们设计了能够自动校准和调整运行速度的日历时钟。它在每天的12:00和00:00都会自动校准一次,并根据12个小时运行的误差大小自动调整时钟的运行速度。可使时钟运行的准确度相当高。
我们设计的思路是:利用小型收音机中接收部分电路接收中央人民广播电台播出的中心频率为106.1MHz的调频信号,并解调出音频信号,将音频信号输入两个锁相环路。这两个锁相环路分别跟踪800Hz和1600Hz的报时信号。当接收到报时信号时,为单片机提供外部中断,通过执行中断程序即可完成对日历时钟的自动校准。并根据运行误差,自动调整日历时钟芯片X1205内部的数字微调寄存器和模拟微调寄存器,在+146ppm至-67ppm范围内调整时钟运行速度。
2、电路设计
电路由单片机AT89C52、日历时钟芯片、自动校准电路、4×4键盘及显示电路组成。
2.1日历时钟芯片X1205与AT89C52的接口
X1205是一个带有时钟、日历、两路报警、振荡器补偿和电池切换的实时时钟集成电路[1]。 I2C总线结构,外接32.768KHz的晶体。时钟/控制寄存器的地址范围为0000H~003FH。
X1205各引脚功能及与单片机AT89C52的连接如图1所示:
X1,X2:外接石英晶体振荡器端。
:在应用报警功能时,该引脚输出中断信号,低电平有效。本电路采用循环中断方式,每秒中断一次。
SCL:由单片机给X1205提供的串行时钟的输入端。
SDA:数据输入/输出引脚。
VSS:接地端。
VCC、VBACK:前者为电源输入端,后者为备用电源。在实际应用中,通常可以接成如图1中所示的电路。在VCC与VBACK之间接二极管,在 VBACK与地之间接电容。在正常供电情况下,VCC给电容充电。掉电后,电容充当备用电源。在VCC掉电后,备用电源电流小于2μA ,电容C用10μF的钽电解质电容亦可。
X1205片内的数字微调寄存器DTR(地址0013H)的第2、1、0三位DTR2、DTR1、DTR0调整每秒钟的计数值和平均ppm误差。DTR2 是一个符号位,1为正ppm补偿,0为负补偿。DTR1和DTR0是刻度位,DTR1给出的是10ppm调整,DTR0给出的是20ppm调整。通过这三位可以在-30ppm 至 +30ppm范围内进行调整补偿。模拟微调寄存器ATR(地址0012H)的第5至第0位ATR5、ATR4……和ATR0用来调整片内负载电容。ATR 值以补码形式表示,ATR(000000)=11.0pF ,每步调节0.25pF ,整个调整范围从3.25pF至18.75Pf。可以对额定频率提供从+116ppm至-37ppm的补偿。通过对DTR及ATR的调整,可以在+146ppm至-67ppm范围内调整补偿。
2.2 自动校准电路
自动校准电路由接收中央人民广播电台信号电路和音频锁相环路组成。
接收电路是由一片调频收音机集成电路TDA7010T和少量分离元件组成。TDA7010T集成电路内部含有变频、中频滤波、鉴频和前置放大等电路[2]。用于接收中央人民广播电台106.1MHz的信号,并将其解调出音频信号。
锁相环路是由两片NE567及外围电路组成。该电路所完成的任务是锁定来自接收电路的音频信号中800Hz和1600Hz两个频率的报时信号。即将报时音频信号转换成负脉冲信号,给单片机提供外部中断,经中断程序分析后对时钟进行自动校准,如图2所示。图中只画出两片NE567中锁定800Hz音频信号的部分。NE567由鉴频器(PDI)、直流放大器(A1)、电流控制振荡器(CCO)、正交鉴频器(PDII)及与外部电容C17、C18构成的两个滤波器组成[3]。NE567的5、6脚外接的电容CT和电阻RT =R2+R3决定着CCO的振荡频率f0(800Hz或1600Hz),f0≈1.1/(RTCT) 。选择CT=0.1μf ,对于图中f0=800Hz的电路,RT≈13.7KΩ;图中未画出的负责锁定1600Hz音频信号的电路, RT≈6.8KΩ 。
当NE567的3脚接收到的音频信号中不含有频率为f0(800Hz和1600Hz)或带宽内的信号时,则锁相环路始终不能进入锁定状态。若音频信号中含有频率为f0或带宽内的信号时,则在锁相环路中鉴频器PDI输出的电压经内部电阻r2及外部电容C18所组成的环路滤波器滤波后,加到直流放大器A1上。 A1输出电流来控制CCO振荡频率的变化。从而使CCO振荡频率在一定范围内向输入音频信号的某些频率靠拢。达到锁定后,环路被稳定下来。NE567内部正交鉴频器PDII在锁相环路的捕获过程中,不断地接收CCO输出的信号和外部输入信号,随着两信号频率的逐步接近,其输出电压逐渐变小。当锁相环路进入锁定状态时,这个电压降低到小于Ur,A2输出低电平,引起单片机中断。
3、程序设计
单片机AT89C52的主程序不断检测X1205的时、分寄存器单元的数据是否为11:50或23:50。若为其中一个,将P2.7引脚置0,打开接收信号电路的电源,开中断。报时信号共6声,每声长度为0.5秒,每两声间隔时间为1.5秒,前5声信号频率为800Hz,第6声信号频率为1600Hz。两个频率的报时信号经NE567锁相后产生的负脉冲经与门输入到AT89C52的中断输入端,引起中断后89C52通过定时器T0测量脉冲宽度。在报时前后,电台往往要播出音乐广告,其音乐声中具有800Hz和1600Hz左右的音频信号甚多,但音乐声的频率是连续变化的,在某一频宽范围内持续的时间较短,将脉宽小于400ms的信号视为干扰信号不予考虑。若接收到脉宽大于400ms 的1600Hz的音频信号所产生的中断时,并在此之前有效的800Hz的报时信号已达5次,则对显示数据和X1205内部时钟寄存器的数据予以修正。并根据12个小时以来时钟运行的误差(毫秒级的误差借助89C52的定时器T1测得)大小修正X1205的数字微调寄存器和模拟微调寄存器的数据。将P2.7 引脚置1,关断接收信号电路的电源,并关 中断。
主程序检测到X1205的时、分寄存器单元的数据是12:10或00:10时,若P2.7引脚仍输出低电平,说明在20分钟内未接收到报时信号,取消接收报时信号状态及所有标记,关断接收信号电路的电源,并关 中断。程序流程图如图3。
4、结束语
经作者长时间实验观察,干扰信号持续时间大都小于100ms,达到200ms者属偶然现象。以400ms的脉宽限制干扰信号是比较安全的。如果出现持续时间大于400ms的干扰信号,也只能在接收到5次800Hz的报时信号后1.5S内接收到1600Hz的干扰信号才能出现误差小于1.5S的误校准。这种可能性是罕见的。即便出现也会在12个小时后予以重新校准。
参考文献
[1] X1205 Real Time Clock/Calendar. www.icbase.com
[2] 集成电路手册编委会.中外集成电路数据手册•音响电路.北京:电子工业出版社,1997:1372-1373.
[3] 张厥盛,郑继禹,万心平.锁相技术. 西安:西安电子科技大学出版社,1994:118