控制工程师论坛

教程与手册

单片机中定时/计数器在消除瞬时干扰中的应用

wilton_gao
wilton_gao

2008-09-13

原理

  在金属抗拉、抗压强度和生铁团矿破碎压力测量等实验中,要求实验仪器能准确测量出被采样信号的最大值。由于单片机价格低廉,动作可靠,因此这些实验仪器常选用单片机进行控制。在理想无干扰的状态下,实验过程中这些被采样信号的时域曲线有一个共同的特点:在到达最大值之前,曲线呈单调递增趋势,而在最大值之后,信号呈现单调递减趋势,且递减速率比上升速率大得多。例如,在理想状态下45钢抗拉强度实验中,试棒所受拉力的时域曲线如图1所示。但是,在这些实验中,不可避免地会存在各种形式的干扰。45#钢在有瞬时干扰情况下拉力时域曲线如图2所示。干扰的存在给这些实验仪器的研制带来了很大的技术困难。

  根据金属抗拉、抗压强度和生铁团矿破碎压力在测试过程中时域曲线变化特征,利用89C51单片机中的定时/计数器,结合相应的的软件处理,可消除采样过程中的瞬时干扰,准确测量出金属的抗拉、抗压强度和生铁团矿破碎时的压力最大值。


图1 45#钢无干扰状态拉力时域曲线
 

图2 45#钢在瞬时干扰下的拉力时域曲线

  在89C51单片机中有两个可编程的定时/计数器—定时/计数器0与定时/计数器1(8032/8052还有定时/计数器2),可由程序选择作为定时器用或作为计数器用,定时时间或计数值由程序设定。定时/计数器的核心是一个十六位的加法计数器,当作定时器用时,加法计数器对内部机器周期脉冲计数。在定时器的工作过程中,加法计数器的内容是可读回CPU的。借助单片机中定时/计数器的这些特点来编制消除瞬时干扰的程序。

  软件具体编制方法如下:把定时/计数器选作定时器用,设置好工作方式,在程序运行过程中不产生中段请求信号,选择内存中的某一单元(例如R0),在其中设一初始值(如果初始值大于255,则需要两个内存单元),使得此初始值对应的机器周期的时间比干扰信号的作用时间长,而比实际所需采样信号的作用时间短(由于干扰信号与实际所需信号作用时间存在很大的差异,做到这一点并不困难)。由CPU对A/D输入信号进行处理,当检测到被采样信号有上升趋势时启动定时器,并将定时器的初值设为0,在被采样信号到达最大值时,读回定时器中十六位计数器的值,以之与R0初始值比较。若比初始值小,说明采集到的是干扰信号的幅值,应该舍去,并给计数器清零,重新返回采样;若比初始值大,则可确定此时采集到的为所需的测量值,可以存储起来或者通过显示、打印输出。

  由于十六位计数器最多只能计时216个机器周期,如果系统晶振为12MHz,则其最长计时时间为66.5毫秒,对于作用时间比较长的采样系统就显得不够。由于实际信号作用时间长,当采样到最大值时加法计数器可能早已溢出,此时我们就不能确定计数器里的值与R0中所设初始值的大小了。为了解决这个问题,可对上述程序做些修改,具体如下:将定时器设为中断工作方式,定时初值为0,R0中设初始值A,在检测干扰信号时,由于干扰信号作用时间短,检测到干扰信号幅值时计数器中的值小于R0中的初始值A;而在检测实际作用信号时,定时器会产生溢出。定时器溢出时向CPU发出中断请求。在中断程序中给定时器设立另一初值B,使B>A,中断返回后计数器从B开始计数,当测试到被测信号的最大值时,加法计数器中的值一定比初始值A大。因此我们就可以通过比较加法计数器中的值和R0中的初始值A来区分干扰信号和实际测量信号。

回帖

评论1

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China