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

时间:2009-10-23

  一、引言

  近一、二十年来,单片机以其体积小、价格低、功能强的优点而广泛应用于各种测控系统中。但是单片机系统的输入信号总是存在着不同形式和程度的噪声和干扰,这给准确测控带来了一定的难度。采用滤波电路是削弱和消除这些干扰信号的方法之一。对于大多数高频干扰信号,硬件滤波的方法能起到很好的作用。但对于一些特殊的干扰信号,采用硬件电路滤波则效果不大。其中有一类干扰具有以下形式:干扰的幅值与实际采样信号的幅值相差不大,甚至大于采样信号的幅值;干扰只出现在实际信号工作之前或之后,在系统真正工作时并不与采样信号产生叠加;干扰的作用时间比系统实际所需信号的作用时间小得多(至少相差一个数量级)。此类干扰不同于一般的高频干扰,利用硬件方法难以消除。针对这种干扰,我们在设计生铁团矿压力实验仪中采用了一种软件方法,来消除它的影响。这种方法借助单片机中的定时/计数器,对采集到信号的作用时间进行计量、比较,利用干扰信号和实际信号作用时间相差特别大的特征,来区分干扰信号和实际信号。下面是这种方法的原理和程序编制及其在智能压力实验仪上的实际应用。

  二、原理

  在金属抗拉、抗压强度和生铁团矿破碎压力测量等实验中,要求实验仪器能准确测量出被采样信号的值。由于单片机价格低廉,动作可靠,因此这些实验仪器常选用单片机进行控制。在理想无干扰的状态下,实验过程中这些被采样信号的时域曲线有一个共同的特点:在到达值之前,曲线呈单调递增趋势,而在值之后,信号呈现单调递减趋势,且递减速率比上升速率大得多。例如,在理想状态下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来区分干扰信号和实际测量信号。

  三、应用实例

  下面介绍这种设计思想在生铁团矿压力实验仪中的应用。

  在高炉炼铁中,铁矿粉不能直接加入炉内冶炼,而应先制成球团,称为生铁团矿。为了保证生铁团矿在运输和装炉过程中不至碎裂,必须测出其抗压强度。团矿压力实验仪要求能准确地测出生铁团矿的破碎压力值,并显示和打印出来。笔者设计的生铁团矿压力实验仪中单片机采样和控制系统框图如图3所示,该实验仪的工作过程如下:团矿放置在生铁团矿压力实验仪的托盘上,电机正转,托盘上升,球团矿与传感器接触并受压,传感器压力信号通过A/D转换后输入单片机,由单片机通过计算求出值。得到值后立即停止电机运转,显示、打印破碎压力值。然后电机反转,托盘下降,进行下实验。

  图3 压力实验仪单片机系统框图

  在球团矿压力实验仪中,存在着电机频繁地启动与停止,在电机启动与停止的瞬时,由于电路中存在能量的突变,产生了严重的电磁干扰,给采样信号造成很大的影响,从而引起电机的误动作。但干扰作用时间很短,一般为十几微秒到几十微秒,而球团矿从受压到破碎这一过程一般在10~50ms。此干扰不易为一般的RC滤波器所滤除。笔者使用上述软件方法,基本上使此干扰得到控制。软件的程序流程图如图4。

  图4 生铁团矿压力实验仪单片机控制程序流程图

  对于采样信号作用时间长的系统,则需要采用定时器的中断工作方式。主程序的流程图与图4很类似,二者只是在定时器的初始化设置上有些不同。中断程序的流程图如图5所示。

  图5 中断程序流程图

  四、结语

  本文介绍了一种软件消除瞬时干扰的的方法。利用瞬时干扰比实际信号工作时间相差很大这个特点,借助单片机内部的定时/计数器,通过编程来实现消除瞬时干扰的目的,思路新颖。利用这种方法,既避免了普通消除干扰方法中繁杂的硬件电路设计,又充分利用了单片机的内部资源。通过实践应用发现,此方法使瞬时干扰得到了很好的控制。


  
上一篇:PCI Express 在嵌入式系统中的应用
下一篇:基于ZigBee的瓦斯无线监测系统硬件设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料