单片机测频率信号的参数分析
摘 要: 针对MCS---51、98系列单片机定时/计数器的工作特点,本文通过对频率信号的分析,对不同参数的信号提出了不同的方法,通过分析阐明了方法的模块性规律,系统地解决了用单片机测频率这一类问题。
关键词: 单片机 频率 频率的特征参数
1.引言
无论何种类型的信号,连续的或离散的,有规律的或无规律的,对计算机控制系统而言,首先得通过前向通道的调理,使信号能够被机器所检测:高低电平的范围,时序的配合、是否需要锁存、是否需要分频等等。
测速、测V/I、测相位等一般都要用到频率信号,特别是在工业控制中。很多变送器如电压、电量变速器,功率、行程变速器等都有频率信号或者说脉冲信号的输出。 频率信号抗干扰性能好,适于远距离传送,并且频率信号所需的接口简单,占用资源少,一般它只占用一路计数器接口直接进行计数或一个中断源输入接口,在中断服务程序中对脉冲进行计数,当然也可利用外部计数装置输入若干路通用I/O接口中。
总之频率信号的测量具有灵活的输入方式,对频率信号的各种参数的测量有重要的意义。频率参数主要包括周期、高低电平的持续时间以及占空比。
2. 周期的测量
因为 周期=脉冲数/时间 ,为了计算出单位时间的脉冲数,首先要有一个时间基准。如果用单片机的定时器进行定时则直接接入单片机内的信号的最高频率取决于晶振频率,由于所测信号的每一个脉冲的高低电平要持续至少一个机器周期,即它的周期不得高于2倍的机器周期;另一方面,一个机器周期等于6个状态周期,一个状态周期等于2个晶振周期。 故有: T待测<=24*T晶振。
2.1低频信号周期的测量 接线示意图如图1,前端属于信号调理电路,工作原理是:用一个计数器,一个定时器,在设定的时间内对脉冲数进行累加;另一方法是一个定时器一个中断口,中断为下降沿触发,在中断程序中计数。
很明显,上述方法所得计数值会受到定时误差的影响;在精度要求高的场合可以用外接精密脉冲源的方法来规避此误差。即:使用外部脉冲进行比较计数时没有定时原因造成的误差。如图2。此时会有如下的关系式: F待测*COUNT标准=F标准 *CONNT待测
javascript:window.open(this.src);" style="cursor:pointer;"/> javascript:window.open(this.src);" style="cursor:pointer;"/>
2.2 高频信号周期的测量,图3是一个典型的电路
javascript:window.open(this.src);" style="cursor:pointer;"/>
这个电路中各部分的功能说明如下:
AD9686:将非TTL电平信号转变为TTL电平,属于前向调理电路。
累加器是二进制计数器,目的是对信号进行分频,MR为清零端。此处用了两种不同性能的计数器,即74LS197和74LS93。其中LS197是四位二进制计数器,最高计数频率100MHz,它可以进行16分频,如果根据单片机的主频计算分频后的频率仍然高于可测频则需继续分频,当然对后面的分频芯片的最高工作频率的要求可以降低。各管脚的输出为:
74LS197的输出: 74LS93的输出:
Q1:Fin的2分频 Q2:Fin的4分频 Q1:Fin的32分频 Q2:Fin的64分频
Q3:Fin的8分频 Q1:Fin的16分频 Q3:Fin的128分频 Q1:Fin的256分频
本电路采用硬件控制方式,门控位置”1”时,74LS00打开,待测脉冲与基准脉冲同时进入外部硬件计数器计数,延时一定时间后,门控位置0,停止计数,根据此时的计数值我们有如下关系式: COUNT待测/F待测=COUNT基准/F基准根据需要可只将相应的分频管脚接入单片机内计数,也可采用I/O口全部读入各位分频脚的方法,由电路的结构,我们知道此电路有模块化的优点。
3 脉冲高电平持续时间的测量
3.1当脉冲频率较高,每周期高电平时间较短,为了保证精度,需对N次高电平的时间值进行平均。接线和流程示意图如下:
javascript:window.open(this.src);" style="cursor:pointer;"/>
3.2当脉冲频率较低时,意味着高电平持续时间较长,此时可用T0或T1的门控方式直接计数,为了防止从图5中的B点开始计数,此时有两种方法来减少误差:利用软件的方法:将待测信号经过一个非门接入中断口,在中断程序中同时打开门控方式的定时,从而保证了从脉冲的上升沿开始计数;也可用硬件方法确保从A点开始,这种方法说明如下,采用图6的JK触发器电路,当Fin的下降沿到来时,C点电位为高,送入INT0的为低电位。
上述方法如果高电平时间超过了65535个计数值,则应对TF0标识进行判别来扩大计数量程。
javascript:window.open(this.src);" style="cursor:pointer;"/>
很显然,只要脉冲信号取反输入,我们就能得到其低电平持续时间的测量方法,此不多述。
4 8098系列单片机的应用
利用定时器计数,测脉冲的宽度。这种方法和上面的相似:通过检测引脚的上跳变开中断,同时记录该时刻值T1,通过检测引脚的下跳变关中断,记录该时刻的时刻值T2,T2 减 T1加上中断记录的中断次数对应的时间就等于一个周期内高电平的持续时间。
有特色的是使用8098中的HSI部件(高速输入通道)。通过引脚输入脉冲信号,同时可以以四种工作方式:正跳变、负跳变、正负均跳变、每8个正跳变触发一次的方法记录事件发生的时刻,而不占用CPU的时间。由于事件发生的时间以定时器T1作为时间基准,T1又是每8个状态计数一次,每个状态周期是晶振周期的3分频,所以正负电平持续的时间均应大于12倍的晶振周期。当频率过高时可以8分频测频,频率可以直接测量时可用两个HIS引脚输入同一信号,分别记录正跳变、负跳变时刻以及周期个数从而算出脉冲周期、正电平时间、负电平时间,进一步算出占空比。
5 结论
用单片机测频,关键在于分频、同步、计数量程这几点;前述的方法,计数口和外部中断口可互换使用,只是计数的实现不同,这要求输入的方式做响应的变化;测出了脉冲信号的高低电位时间就可以利用单片机的运算功能测占空比。