• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 申请书 > 正文

    延时继电器 [延时继电器定时算法研究]

    来源:六七范文网 时间:2019-04-02 04:47:35 点击:

      【摘要】延时继电器的一个重要参数是定时精度。本文以ATTINY13作为控制芯片设计一种高精度的延时算法。本设计具有实用性强、延时范围宽、灵活性好、延时精度高等特点。   【关键词】延时继电器;延时算法;ATTINY13
      一、国内目前采用的定时方法
      目前国内用来定时的方法主要有以下几种方法:
      (1)RC电路的充、放电。这种电路定时精度较低、成品体积较大、调试比较麻烦。
      (2)定时芯片。这种电路精度较高,灵活性差,通用性差。
      (3)单片机做定时。这种电路实用性强、灵活性好、调试方便、定时范围宽。但是算法设计是否科学将直接影响定时精度的高低,本文以产品成本和定时精度为考虑要素,折中选择价格低廉具有制动重载功能和内部振荡器的ATTINY 13为例,通过改进定时算法来提高定时精度。旨在实现低成本高精度的需求。
      二、定时误差来源
      (1)振荡器本身误差
      由图2-1和图2-2得知影响内部RC振荡器精度主要由ATTINY 13的工作电压和工作温度,而ATTNY13出厂时是在5v、25oC条件下校正的。为了能提高产品在任意温度下的定时精度,就要知道产品工作电压,和工作温度然后对RC振荡器校正,但是即便进行校正后精度也不能太高,太高会导致校正失败一般可以将精度校正到±1%.如果要使用更高精度定时,则推荐用无源晶振加非门做振荡器,或者用有源晶振,这样一来产品成本会有所提高。
      (2)定时算法带来误差
      传统的定时算法大致会经过如图2-3所示。定时器溢出后,主程序可能正在执行某条指令,执行完这条指令需要的时间为T1,经T1时间后可以响应中断,但在这个过程中可能会有比定时中断更高级的中断申请,如果有则执行高级中断,经过T2后高级中断结束进入定时中断,经T3后定时器/计数器加载初值成功,开始启动下一次定时。经过以上分析得知T1和T2是随机误差,其值是不可预知,而T3是进入定时中断后装载定时初值耗费的时间,它的值是固定的。定时误差为T1+T2+T3,如果能有效减小T1、T2就能达到减小误差提高精度的目的。
      三、减小误差方法
      (1)RC振荡器校正
      对于RC振荡器的校正可以利用STK500,AVRISP,JTAGICE和JTAGICE mkIIAVR校正工具,校正程序可以到ATMEL官方网站下载,校正流程可以参考下面说明(该说明译自ATMEL):
      1)下载AVR053的源代码。
      2)安装AVR Studio 4.11 SP1。
      3)创建工程名为rc_calib,添加源文件RC_Calibration.asm到工程中。
      4)在RC_Calibration.asm中选择目标单片机所需的文件,不需要的文件用“;”屏蔽掉。
      5)选择接口,和选择目标单片机所需文件方法一样。
      6)校正时钟频率使用频率计或者晶体振荡器作为校正源。校正源的时钟信号出现在STK500/AVRISP的MOSI引脚,或者JTAG ICE的TDI引脚。在接口文件的“.EQU CALIB_CLOCK_FREQ=XXXX”语句中来修改XXXX作为所需标称频率值。
      7)指定用户系统期望的频率和精度。精度太高会可能校正失败,需要参考数据手册查看能达到的精度。
      8)编译工程生成hex二进制文件。
      目前国内生产的晶体振荡器精度已经具有较高精度,受温度影响也非常小,一般都不需校正都能实现高精度的定时,但是相应的成本会有所提高,在精度要求非常高的产品中可以考虑使用外接晶振方式。
      (2)延时算法设计
      1)自动重载补偿
      利用定时器0自动重载功能补偿T1和T2其算法流程如图3-1所示。定时/记数寄存器(TCNR0)初始化设定为256-t×fosc/n(t为特定定时时间,n为分频数,fosc为RC振荡频率)。当进入第一次中断后就需要补偿T1,T2,T3将TCNR0的初值设定为256-t×fosc/n+定时器重载值(该值等于(T1+T2)×fosc/n用于补偿T1和T2的消耗)+设定初值所耗费的时钟个数(用于补偿T3的消耗)。重载记数值为定时器重载到设定初值这段时间内的记数值。
      以下是ATTINY 13定时器部分参考程序代码,内部RC振荡频率为4.8M,定时时间为0.05S。值得一提的是:在此模式下的定时算法的定时精度跟TCNT0设定的值有关系,在振荡频率一定时TCNT0的值越小能定时时间越长精度越高。由于定时器\记数器0为8位定时器,在振荡频率为4.8M采用1024分频的时候最大定时时间为54.4mS考虑定时计算方便和定时精度,参考程序折中选择50mS作为定时时间。还需注意的是:在有高级中断产生时一定要保证运行完成高级中断的时间小于单次规定的定时时间,否则会出现较大误差。
      就参考代码而言如需要定时的时间大于50mS,比如说1S定时,可以在进入中断函数20次后响应一次任务代码。
      }
      2)采用ATTINY 13的CTC模式重载立即定时
      此模式下是将定时\记数的最大值存放在定时比较寄存器(OCR0A)当TCNT0的值与比较寄存器(OCR0A)值相等时,如果相应的中断允许下就会产生中断,TCNT0会立即清零、立即开始记数。在这种模式下产生的中断不会产生T1、T2、T3误差,定时精度基本上只取决与振荡器。OCR0A设置的值=t×fosc/n.
      以下是ATTINY 13定时器部分参考程序,内部RC振荡器振荡频率为4.8M,定时时间为0.05S。在此模式下定时值得注意的是:在有高级中断产生是一定要保证运行完成高级中断的时间小于OCR0A规定的定时时间,否则会出现较大误差。
      就参考代码而言如需要定时的时间大于50mS,比如说1S定时,可以在进入中断函数20次后响应一次任务代码。
      3)进一步调节
      在以上算法的基础上,为了进一步提高精确度,可以在进行这一步调节。在某一段时间tx内如果定时误差为±ter则没当定时器定时为tx±ter时进行一次校正,在自动重载算法下TCNT0设置规则TCNT0=256-t×fosc/n(tr×fosc),在CTC模式下将OCR0A­的设定规则OCR0A= t×fosc/n ±(tr×fosc)。
      四、结论
      笔者通过上述算法采用avr芯片自带的RC振荡器做1S定时,90分钟时间内定时器定时5404S误差4S精度达到0.074%.当然还可对此定时精度做进一步调节提高定时精度。这种算法可用在动作延时、释放延时、限时定时、重复循环定时延时继电器中可以提高延时继电器动作精度,减少继电器成品体积,降低产品投入成本。当然也可以将此算法应用到其他需要较高定时精度的用途。定时时间的调节只需要修改烧录的程序,调节方便、灵活性好、实用性高。
      
      参考文献
      [1]于正林,苏成志.AVR单片机原理及应用[M].国防工业出版社.
      [2]沈文,Eagle Lee詹卫前.AVR单片机C语言入门指导[M].清华大学出版社.
      [3]Attiny 13用户手册[S].

    推荐访问:延时 继电器 算法 定时