声卡数字频率计
PC 中的声卡不仅能输出和录制各种音频信号,利用其内部的 A/D(模拟/数字)转换器,
通过编写程序还可以用来对外部的周期性的模拟信号进行采样,并计算出该信号的频率值。
文中所述的作者设计的程序就是这样的一种程序,能够满足一般电子爱好者把 PC 作为数字
频率计使用的要求。该程序是标准的 Windows 界面,界面友好,以黑色背景红色大号字体
显示频率值,具有醒目、程序简洁和测量精度高的特点,界面如图所示。
一、 原理
该程序是在 VC++6.0 环境中,用 C++语言编写的,分三个模块:一个是程序框架模
块,实现程序的框架结构;二是声卡采样模块,实现声卡对外部模拟信号的采样;三是对采
得的信号进行频率值计算。
现实中的正弦波信号都是非纯正的正弦信号。对非纯正的正弦信号和其它波形信号的
频率值的测量,主要是测量其信号基波的频率值。标准的数字频率计测量信号的频率值时,
为了提高测量精度,一般采用两种方法:当被测信号的频率远高于基准频率时,采用频率记
数法,即基准频率信号作为闸门信号,在该闸门信号的时间间隔内,对被测信号的脉冲进行
记数,用公式:被测信号的频率=被测信号的脉冲数÷闸门信号的时间间隔,计算出信号的
频率值;当被测信号的频率远低于基准频率时,采用周期记数法,即被测信号作为闸门信号,
在该闸门信号的时间间隔内,对基准信号的脉冲进行记数,用公式:被测信号的周期=基准
信号的脉冲数×基准信号的周期,计算出信号的周期,再求其倒数,就可计算出频率。
该程序计算频率值时,也采用两种方法,不同的是,一种是快速复数傅立叶变换
(FFTC)法,即对采得的信号数据进行快速复数傅立叶变换,把时间域的信号转换为频率
域的信号,在频率域中找出最大值,就是该信号基波的频率值;另一种是采样脉冲记数法,
即在时域内,检测出被测信号在采样长度内的周期数 M(M 取整数)和该周期数内的采样
脉冲数 N,采样长度就是对信号采样的点数,用公式:被测信号的频率 =声卡采样频率
×M÷N,计算出信号的频率值。快速复数傅立叶变换(FFTC)法的优点是,不仅能对常见
的标准的周期性波形,如:正弦波、方波、三角波等信号基波的频率进行测量,而且还能计
算出各种复杂波形的和信噪比非常低的信号基波的频率值,如:淹没于噪声中的信号;缺点
是,分辨率受公式:分辨率(Hz)=采样频率(Hz)÷采样长度,的限制,如:当采样频率=
采样长度时,分辨率是 1Hz,最小测量误差是,1Hz÷被测信号的频率(Hz),可见,被
测信号的频率值越低,该方法的测量误差越大。采样脉冲记数法的优点是,测量低频信号时
精度较高;缺点是,不适合波形复杂和信噪比低的信号频率的测量。所以,为了提高测量的
可靠性和精度,在被测信号频率高时,或波形复杂时,或信噪比低时,采用快速复数傅立叶
变换(FFTC)法;否则,采用采样脉冲记数法。在测量的过程中,程序先判断信号上述的
性质,根据信号的性质,自动地采用相应的测量方法。
频率高低分界点的确定。类似于标准数字频率计的基准频率源,声卡采样脉冲的基准
频率源也是由石英晶体震荡器产生的,该石英晶体震荡器的频率稳定度一般是 10
-4
左右,
由此可认定,用声卡测量频率的精度不会超过 10
-4
。设计该程序时,使声卡采样频率等于采
样长度,根据奈奎斯特定律,最高可测量的频率等于声卡采样频率的二分之一,一般的声卡
1
界面图