单片机制作精确电子钟的探讨
0 2023-03-15

本文针对用单片机制作电子钟或要求根据时钟启控的控制系统时,出现的校准了的电子时钟的时间竟然变快或是变慢了的情况而提出的一种解决方案。
  
单片机应用中,常常会遇到这种情况,在用单片机制作电子钟或要求根据时钟启控的控制系统时,会突然发现当初校准了的电子时钟的时间竟然变快或是变慢了。
  
于是,尝试用各种方法来调整它的走时精度,但是最终的效果还是不尽人意,只好每过一段时间手动调整一次。那么,是否可使时钟走时更精确些呢?现探讨如下:
  
一、误差原因分析
  
1、单片机电子时钟的计时脉冲基准,是由外部晶振的频率经过12分频后提供的,采用内部的定时,计数器来实现计时功能。所以,外接晶振频率的精确度直接影响电子钟计时的准确性。
  
2、单片机电子时钟利用内部定时,计数器溢出产生中断(12MHz晶振一般为50ms)再乘以相应的倍率,来实现秒、分、时的转换。大家都知道,从定时,计数器产生中断请求到响应中断,需要3_8个机器周期。定时中断子程序中的数据人栈和重装定时,计数器的初值还需要占用数个机器周期。此外。从中断人口转到中断子程序也要占用一定的机器周期。例如:

从上述程序可以看出,从中断人口到定时/计数器初值的低8位装入需要占用2+2+2=6个机器周期。所以,在编程时一般会把这6个机器周期加入定时/计数器的初值中。但是,从定时,计数器溢出中断请求到执行中断需要几个机器周期(3~8个机器周期)。就很难确定准确值,正是这一原因导致了电子时钟计时的不准。
  
二、解决方法
  
1、采用高精度晶振方案
  
虽然采用高精度的晶振可以稍微提高电子钟计时的精确度,但是晶振并不是导致电子钟计时不准的主要因素,而且高精度的晶振价格较高,所以不必采用此方案。
  
2、动态同步修正方案
  
从程序人手,采用动态同步修正方法给定时,计数器赋初值。动态同步修正方法如下:由于定时,计数器溢出后,又会从O开始自动加数,故在给定时/计数器再次赋值前,先将定时,计数器低位(TLO)中的值和初始值相加,然后送人定时,计数器中,此时定时,计数器中的值即为动态同步修正后的准确值。具体程序如下:

采用此种方法后,相信制作的电子时钟的精度已有提高了。
  
3、自动调整方案
  
采用同步修正方案后,电子时钟的精度虽然提高了很多,但是由于晶振频率的偏差和一些其他未知因素的影响(同一块电路板、同样的程序换了一片单片机后,走时误差不一样,不知是何原因),时间长了仍然会有积累误差。为此,可采用自动调整方案。实际上是一种容错技术。其自动调整原理为:实测出误差Is所需的时间,然后每隔这样一段时间后就对秒进行加“1”或减“1”调整。



结语
  
使用此方法调整较费时间,但效果非常好。经实验,一次调整可/以将月误差控制在Is左右,如按此方法再次测出误差Is所需的天数并进行二次调整,其精度会更高。 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【上海/北京/深圳】立即报名SiFive RISC-V论坛


  • 相关技术文库
  • DIY
  • 开源
  • 自制
  • 树莓派
  • BlueCoin软件包FP-SNS-ALLMEMS1的使用

    之前为大家介绍了BlueCoin开发板的配套软件包FP-AUD-SMARTMIC1,这里介绍另一个软件包FP-SNS-ALLMEMS1的使用及功能。操作步骤:1

    03-30
  • BlueCoin配套使用的软件包介绍

    这里给大家介绍一下BlueCoin配套使用的软件包,有如下几个:1.STSW-BCNKT01:嵌入式的软件demo,主要功能包括通过USB和BLE获取数据,保存

    03-30
  • 电子制作中常用的三极管

    半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。它最主要的功能是电流放大和开关作用。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三

    03-22
  • 个人如何制作电路板

    个人制作电路板方法一1.将敷铜板裁成电路图所需尺寸。2.把蜡纸放在钢板上,用笔将电路图按1:1刻在蜡纸上,并把刻在蜡纸上的电路图按电路板尺寸剪下,剪下的蜡纸放在

    03-14
  • 基于CC3200单片机和MPU6050加速度计/陀螺仪的迷你四轴飞行器

    摘要:多旋翼飞行器具有较好的发展前景,也是近年来的热门研究方向。本文讨论的四轴飞行器是一种四旋翼飞行器。首先介绍四轴飞行器的飞行控制原理;其次逐个阐述了基于CC

    02-13
  • 一种USB 摄像头图像采集与显示的通用方法

    目前市场上大部分的图像采集与处理系统是基于DSP芯片的,这种图像采集与处理系统成本高、功耗高、体积约束等特点并不适用于一些简单的应用。随着USB摄像头的普及和基

    01-06
  • 使用Arduino和LED灯做出呼吸灯的效果

    理解PWM需要知道的知识(1)脉冲解释:电子设备中电平状态发生的突变,通常突变时间很短,突变后极短时间后重新变为为原来的电平状态.(突变状态很短,两次突变间的时

    01-04
  • 镍氢电池充电器制作方法

    单体镍氢电池的标称电压为1.2v,充电终止电压为1.5v;放电终止电压一般为1.1v。镍氢电池的充电特性受充电电流、温度和充电时间的影响“电池端电压随充电电流的

    2022-11-22
  • 自制铝空气电池的教程

    铝空气电池的化学反应与锌空气电池类似,铝空气电池以高纯度铝Al(含铝99.99%)为负极、氧为正极,以氢氧化钾(KOH)或氢氧化钠(NaOH)水溶液为电解质。铝

    2022-11-21
  • DIY:手把手教你制作一台开源PCB打印机

      自从很多人开始选择互联网观看和下载电影和电视节目,一度昂贵的蓝光播放机的价格就开始大幅下跌。但是,您知道吗,除了扫描光盘然后播放高清电影的数据,蓝光播放机的

    2022-11-16
  • 利用PID控制算法控制自平衡车

      近两年来,在公共场合常常能见到一种叫做体感车(或者叫平衡电动车)的代步工具,由于其便捷灵活,使得其颇为流行,并被称为“最后一公里神器”.其运作原理主要是建立

    2022-11-02
  • 基于Arduino和三轴加速度传感器的跌倒检测报警系统

      随着人类生活水平的不断提高,人口老龄化成为一个全球性的发展趋势。目前,我国已经进入了老龄化社会,老年人的身心健康问题得到人们更多的关注。老年人因生理结构衰老

    2022-10-31
下载排行榜
更多
广告