调整实时时钟(RTC)精度以补偿温度变化正式版

更新时间:2023-05-16 09:55:53 阅读: 评论:0

调整实时时钟(RTC)精度以补偿温度变化正式版
文档资料可直接使用,可编辑,欢迎下载
调整实时时钟(RTC)精度以补偿温度变化
摘要:在那些需要进行实时数据分析的应用中,实时时钟(RTC)是个十分重要的元件。5ppm以上的RTC精度对于保证数据的可靠性是十分必要的。在众多影响RTC精度的环境因素中,温度波动是造成RTC误差的主要原因。本应用笔记给出了如何运用MAXQ3100微控制器计算的微调因子,以补偿温度变化造成的RTC误差。
介绍
实时时钟(RTC)是需要实时数据的应用中的关键元件。比如,RTC用于电表中,是计算各家耗电的关键元件。RTC在气流计算机应用中有多种作用。它是测量气体产量的关键元件;它可以精确记录气流计算机中发生的各种事件的时间,以便在最终结果里对这些值进行补偿。很多实时采集数据的软件往往要求具有精确的RTC,以便进行复杂数据分析。明显的,RTC以及它的精度是那些处理实时数据的应用中的关键因素。
多数标准应用都要求RTC具有5ppm (百万分之一)以上的精度。RTC精度直接取决于其晶体时基的频率。环境的变化,包括温度、湿度、压力以及振动都会降低晶体谐振频率的精度,但在这些因素中温度起伏是最主要并且影响最大的因素。
怎样测量并调节RTC的精度,以补偿环境温度的变化呢?本应用笔记给出了如何使用headphoneMAXQ3100微控制器和它的片上温度传感器计算数字调节函数所需的微调因子,然后利用它来补偿由于温度变化造成的RTC精度的波动。
测量由于温度造成的RTC误差
MAXQ3100使用一个标称频率为32.768kHz的音叉晶振。如上所述,环境温度的变化会影响MAXQ3100晶振的谐振频率。当温度介于-40°C到+80°C之间时,使用一个频率计测量并记录下微控制器产生1Hz输出所需要的时间(图1)。数据显示晶振频率与温度的呈抛物线关系(图2)。温度偏离理想温度+23°C (室温)越多,晶振频率越慢,从而使RTC变得更慢。
图1. -40°C到+80°C温度范围内测试到的MAXQ3100 1Hz输出的数据
图2. 图1数据显示,温度偏离+23°C (室温)越多,晶振频率就越慢。(:用下面公式计算晶振频率:频率 = (1/周期)* 32.768 ))
在对时间要求较高的应用中,RTC的误差是不能接受的。那么如何才能补偿这些温度造成的差异呢?
通过计算对温度波动实施补偿
MAXQ3100包含一个片上温度传感器和数字调节功能,可用于对RTC的振荡器进行补偿。温度传感器实时读取片上温度,而调节功能每10秒钟插入或移除脉冲,以补偿RTC使其变快或变慢。要确定插入或移除的脉冲数,需要通过如下步骤计算一个关于温度的二次方程。
1.计算每个脉冲实际增加的秒数,由于微调因子每隔10秒插入或移除脉冲:
脉冲 = (1/32768) / 10秒 = 3.052µs
2.根据产生1Hz输出所需的周期确定添加的脉冲数(表1)。
n = (周期 - 1) / 脉冲
式中,“脉冲”约等于0.000003052
表1. 根据温度和时间计算的添加脉冲数*
batter出国留学中介机构
Temperature (°C)
Period
No. of Puls to Add
-35
1.000120504
39.48675072
-30
1.000102766
33.67436288
-25
1.00008535
27.967488
-20
1.000070136learn的用法
22.98216448
-15
1.000056025
18.358272
-10
1.000045206
14.81310208
-5
1.000034355
11.2574464
0
1.000025078
8.21755904
+5
1.000017937
5.87759616
+10
1.00001248
4.0894464
+15
1.00000806
2.6411008
+20
1.00000519
1.7006592
+25
1.000003799
1.24485632
+30
1.00000448
1.4680064
+35
1.000007354
2.40975872
+40
1.00001105
3.620864
+45
1.000016831
5.51518208
+50
1.000025447
8.33847296
+55
1.000034671
11.36099328
+60
1.000049247
16.13725696
+65
1.000060162
19.71388416
+70
1.000077059
25.25069312
+75
1.000095825
31.399936
+80
1.000117828
38.60987904
*数据是基于图1记录的周期算的。
3.在Excel上将收集的数据绘制成图。
4.最后,生成二次方程,生成曲线并将其显示在屏幕上。
图3. 图表示出根据温度波动所需要添加的脉冲数。
图3给出了需要添加的脉冲数与温度的对应关系(:要想在不影响方程输出的前提下去掉一次项,只需简单的将读取的温度值减去25即可)。 interval是什么意思
得到的二次方程为:
n = 0.0113x^2 + 0.0272x + 1.2768.
这个二次方程给出了温度与脉冲之间的抛物线关系。由于温度值由片上温度传感器得到,因此可根据该方程计算所需的脉冲数以补偿RTC晶振单位频率的变化。
实例
如果x = - 60 n = ?
n = 0.0113x^2 + 0.0272x + 1.2768
n = 0.0113(-60^2) + 0.0272(-60) + 1.2768
n = 0.0113(-60^2) + 0.0272(-60) + 1.2768
n = (0.0113 * 3600) - 1.632 + 1.2768
n = 40.3248
为验证方程,计算如下:
1 - 周期 - ((n / 10) / 32768) < .000005 // 5ppm
例子:
1 - 1.000120504 - .000123 < .000005
1 - .0.999997442 < .000005
.0000026 < .000005 = arrange是什么意思
一旦确定插入/移除的脉冲数,就可以设置RTRM寄存器的值了。数字调节功能会自动添加或删除RTRM寄存器中所设定的脉冲数。
如果算出的二次方程是正确的,从该方程得到的微调因子就会根据温度补偿单位周期或频率的变化。经过补偿的和未补偿的温度曲线如图4图5所示。
图4. 数据给出了采用微调因子进行温度补偿与未进行温度补偿的时间差异。
图5. 数据给出了采用微调因子进行温度补偿与未进行温度补偿的频率差异。
总之,MAXQ3100的片上温度传感器和数字微调功能,可以很方便的测量并补偿由于环境温度变化而引起的RTC精度的变化。经过温度补偿后,可以调整RTC的精度,使其在整个-40°C到+80°C范围内具有5ppm (百万分之一)以上的精度。
附录A. 例程
//*******************************************************************//
// Function:    calculate_trim_factor
// Description: calculate trim factor bad on temperature input
// Returns:      trim factor
// Destroys:    N/A
// Notes:          N/A
//*******************************************************************//
int calculate_trim_factor (int temperature)
{
    // 2nd order equation derived from experiment Temperature vs Puls per 10 c
    // y = 0.0113x^2 + 0.0272x + 1.2768
    return ((0.0113 * (temperature * temperature)) + (0.0272 * temperature) + 1.2768) + 0.5;
}
//*******************************************************************//
// Function:    t_trim_factor
// Description:  subroutine to get temperature and do trim calculation
// Returns:      N/A
// Destroys:    N/A
// Notes:        RTRM will be assigned value returned from
//                              calculate_trim_factor
//*******************************************************************//
void t_trim_factor (void)
{
    while (1)
    {
        if ((TPCFG & START) != START)  // make sure temperature conversion is not running
        {
            TPCFG |= START;            // t bit to start temperature conversion
        while (1)     
        {
            if ((TPCFG & TPIF) == TPIF) // wait for temperature conversion to complete
            {
                wait_for_rtc();
                RCNT |= 0x8000;          // write enable real time clock
                wait_for_rtc();
                RTRM = calculate_trim_factor(((TEMPR & 0x1FFF) >> 4) - 25);  // t trim factor
                                                       
                wait_for_rtc();
                RCNT &= ~0x8000;      // turn off write access
                TPCFG &= ~TPIF;        // ret interrupt flag
                break;
                }
            }
            break;
        }
    }
}
//*******************************************************************//
// Function:      main
// Description:  main sub for application
// Returns:      N/A
// Destroys:      N/A
// Notes:        subroutine in charge of peripheral initialization,
//                handling interrupts, display lcd data, and determining
//                when it is time to go grab on chip temperature
//                to determine trim factor
//*******************************************************************//
void main (void)
{
        unsigned long time = 0;
        unsigned char flg = 0;
       
        initialize_lcd();      // initialize lcd
        initialize_clock();    // initialize real time clock
   
            TPCFG |= 0x40;    // t temperature resolution and enable temp. interrupt
thanksalot            EIE0 |= EX7;    // enable external interrupt (SW2)
            EIES0 |= IT7;
        clear_lcd();        // clear LCD gments
    while (1)
    {
        if ((EIF0 & IE7) != 0)  // check external interrupt
        {
        flg += 1;              // toggle lcd data display
我爱你我的祖国
        if (flg == 3)
            flg = 0;
        EIF0 &= ~IE7;                                                  // ret interrupt
        }
        time = ((unsigned long) RTSH) << 16 | RTSL;
美国的饮食习惯        switch (flg)
        {
cucumber
        ca 0:
            display_time(time);              // display time on lcd
            break;
            ca 1:
            if ((TPCFG & START) != START)    // make sure temperature conversion is not running
            {
                TPCFG |= START;              // t bit to start temperature conversion
                while (1)     
                {
                if ((TPCFG & TPIF) == TPIF)  // wait for temperature conversion to complete
                {
                        display_val(TEMPR);  // display temperature value
                        TPCFG &= ~TPIF;      // ret interrupt flag
                        break;
                }
                }
            }
            break;
            default:
            display_val(RTRM);                                  // display trim factor
            break;
        }
        // go grab the temperature and t trim value on the top of every 5 minutes intervals
        if (((((time % 3600) / 60) % 5) == 0) && ((((time % 3600) % 60) % 60) == 0))
        {
            t_trim_factor();
        }
    }
}

北京交通大学
硕士学位论文
高精度GPS同步时钟研究与开发
******
申请学位级别:硕士
专业:安全技术及工程
*******
20060301
GPs的基本授时原理是【ll:卫星不问断地发送自身的星历参数和时间信息,用户接收到这些信息后,经过计算求出接收机的三维位置,三维方向以及运动速度和时间信息。GPS授时系
统需要的只是时间信息。GPS的基本授时原理示意如图2.5。GPS向全球范围内提供定时和定位的功能,全球任何地点的GPS用户通过低成本的GPS接收机接受卫星发出的信号,获取准确的空问位置信息、同步时标及标准时问。GPS系统受美国军方控制,其P码较C/A码精度高但是仅对美国军方和授权用户开放。民用c/A码则免费向全球开放。GPS授时系统就是接收的民用c/A码。GPs要实时完成定位和授时功能,需要4个参数:经度、纬度、高度和用户时钟与GPs主钟标准时间的时刻偏差,所以需要接受4颗卫星的位置。若用户已知自己的确切位置,那么接受1颗卫星的数据也可以完成定时。
若设(x,y,z为接收机的位置,(x。,y。,z。为己知卫星的位置,则列解下列方程就可以得到x,y,z和标准时间T: (x—x12+(y—yI2+(z—zI2=c2(T+△T.Tl—T1(1.3
(x・x22+(y—y22+(z—z22=C2(T+△TIT2一T2(1.4
(x—x32+(y-y32+(z・z32=c2(T+△1二T3一t3(1.5
(x—x42+(y—y42+(z-z42=C2(T+△T-T4-k(1.6
14图2.5
GPS授时原理
北京交通大学硕士专业学位论文
图3.1GPs同步时钟硬制:结构幽
及控制处理软件,使Jupiter捕捉和重捕卫星的能力更加迅速,航迹平滑和高效率导航更可靠,即使在城市和树林中,Jupiter02I/03l也能定位自如‘”】。
20图3.2Juiterl2
oEM板的外形示意图
3.4微机控制系统硬件电路m删

本文发布于:2023-05-16 09:55:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/110475.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:温度   补偿   频率   计算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图