1 引言
测频是最基本的电子测量技术。常用的测频方法有较大的局限性,其测量精度是随被测信号频率的下降而降低的,并且被测信号计数则产生±1个数字误差。而采用等精度频率测量方法测量精确,测量精度保持恒定;并且与CPLD(复杂可编程逻辑器件)相结合可使测频范围达到0.1 Hz~100 MHz,测频全域相对误差恒为1/1000。
智能化仪器通常以单片机为核心,而一般单片机自身计数器/定时器的计数/定时范围或精度有时无法满足系统要求。以89C51单片机为例,当其内部两个16位计数器/定时器T0和T1工作在计数方式时,对T0(P3.4)或T1(P3.5)的外部脉冲进行计数。当T0或T1引脚上发生负跳变时,计数器加1。由于识别引脚的负跳变需2个机器周期,即24个时钟振荡周期。T0/T1的最高频率为1/24fosc,当晶体振荡器频率为12MHz时,其最高计数频率为500 kHz。要求高测量频率时,则需对被测信号预处理以扩展测频范围。
2 测量原理
要求测量频率较高时,则需对高频和低频采用不同的测量方法,提高测量精度。
2.1 高频测量
采用测频法测量高频。在确定的阈值时间Tw内,记录被测信号的变化周期数(或脉冲数)Nx,则被测信号的频率:fx=Nx/Tw。测频法原理如图1。由于被测频率较高,单片机难以测量,8051所测量最高频率为500 kHz,因此采用CPLD和8051的内部计数器组成32位计数器。CPLD的计数器为低16位,其进位脉冲再向8051计数。CPLD延时为10 ns,因此,CPLD与8051按测频原理可以精确测量50 Mz的频率。
2.2 低频测量
采用测周法测量低频。测周期法需用标准信号的频率fs,待测信号的一个周期Tx内,记录标准频率的周期数为Ns,则被测信号的频率为:fx=fs/Ns,其原理如图2所示。由于被测频率较低,故可采用8051测量。首先要将被测信号转换成门控信号,其转换电路原理如图3所示。
2.3 脉宽测量
由于被测频率较低,故可采用8051实现。将脉宽信号直接送人8051计数器,采用测周法来测量脉宽,标准信号频率fs记录标准频率的周期数为Ns,则被测信号的脉宽为:Tx=Ns/fs。
3 系统硬件电路设计
3.1 单片机设计部分
快速测量的要求必须保证高精度测频,必须采用高精度的标准频率信号。由于单片机受本身时钟频率和指令运算限制,因此,测频速度较慢,无法满足高速、高精度测频要求。采用高集成度、高速可编程门阵列CPLD可实现快速、高精度测频。其硬件电路如图4所示。
3.2 CPLD设计部分
利用CPLD作为计数器的低16位,而89S51内部计数器作为计数器的高16位,在门控时间内分别对被测信号和标准信号进行计数。由于单片机具有程序运算能力,且频率为周期的倒数(f=1/T),则测频法与测周法互通。CPLD设计部分的硬件电路如图5所示。
4 系统软件设计
系统软件设计采用Keil C51编写。由于单片机能够完成大量运算,且包含浮点数据处理。因此,并采用Keil C51便于运行。并采用Keil C51自带的软件仿真器对所编写的程序进行仿真。
系统软件设计流程为:单片机初始化、LCD初始化、计数器清零、单片机发出启动脉冲,来启动CPLD的两个低16位计数器和单片机的两个高16位计数器。此时,计数器并不开始计数,直到下一个Tx上升沿到来,计数器才开始计数,软件延时1 s后,发出结束脉冲来结束CPLD的两个低16位计数器计数,但此时,计数器并不停止计数,而是直到下一个Fx上升沿两个计数器才都停止计数,随后关闭单片机的两个计数器。CPLD发送结束信号,单片机响应中断。中断函数分两次读取CPLD的两个计数器值。进而单片机处理两个32位计数器值。调用显示函数显示频率,从而完成一次测频。图6为系统软件设计流程图。
5 结语
本系统设计经系统测试,测试数据符合要求。因此,该信号测量仪具有电路简单、体积小巧、便于携带、功能强大,中文液晶显示等特点。其频率测量范围可达0.1 Hz~100MHz,并可随意切换被测信号的频率、周期和脉宽,具有较强的实用价值。