ahong 发表于 2008-7-31 11:03:39

请教马老师在测量频率不断变化的情况下,怎么用输入捕捉方式测量频率

马老师你好,看了很多用定时计数器测量频率的方法,但是基本都是测量频率稳定输出的,如果频率变化比较大,并且随机性强的话我感觉这些测量方法都有一些问题。我遇到的问题是,如果我要测量的频率假如就是两个,一个是10kHZ的,一个是20khz的,但是这两个频率的出现是随机的,并且每种频率出现的周期为20或者40,请问怎么测量呢?请帮忙解惑。谢谢

ahong 发表于 2008-8-1 09:09:17

马老师没时间看,自己顶一下。请高手帮忙解惑

ecat 发表于 2008-8-1 09:32:50

用模拟滤波器,放大整形后去中断。

ahong 发表于 2008-8-1 10:17:27

不明白,2楼的能详细说一下吗?谢谢

ssyniuej 发表于 2008-8-1 11:18:12

周期单位?秒?如果你这个例子就是实际的情况,那么很简单。因为频率已经不低了。相对存在的周期完全可以正常显示出来,但如果周期不是秒,是毫秒的话(我估计不会是微秒,否则还不会出现完整周期),人眼睛根本就不容易对这么快的显示做出反应,对于单片机显示倒不难,只是你显示出来能够看清吗?

machao 发表于 2008-8-1 11:36:15

我要测量的频率假如就是两个,一个是10kHZ的,一个是20khz的,但是这两个频率的出现是随机的,并且每种频率出现的周期为20或者40,请问怎么测量呢?

这个与普通的测频率不同了。

分析你的问题,应该是这样的要求:2个频率为固定已知的,要以最快的速度知道当前的频率是20K还是10K

这实际是简单的,采用捕捉方式,捕捉输入信号的一个周期(两次上升沿),后一个上升沿中断的计数值减去前一个上升沿中断的计数值,差值就是周期。因为2个输入信号频率固定,10K的周期肯定比20K的周期大一倍左右,因此在一个周期的时间中就能明确的知道现在信号的频率是10K还是20K。

20K的周期是50us,如果系统时钟采用4M,那么50/0.25 = 200,可以执行200条指令,中断服务肯定够了。

ssyniuej 发表于 2008-8-1 12:01:05

马老师,他这个可能有另外一个问题,就是那个周期,楼主没有给出周期的单位,如果是毫秒的话,那么用什么来显示?20毫秒如果在随机过程中出现快速变化,那么就看不清到底是多少了(指的是通过人眼来判断)就是40毫秒也不容易判断哪。测频率反而是个容易的事情了,测量完成了这个显示倒成问题了。

ahong 发表于 2008-8-1 14:06:48

谢谢马老师的解答,你说的这种方法我也考虑过,但是采用捕捉方式,捕捉输入信号的一个周期(两次上升沿),后一个上升沿中断的计数值减去前一个上升沿中断的计数值,差值就是周期。不就是测周期吗?但是你的书里也有提到如果频率较低时采用测周法,频率较高时采用测频法,采用测周的话准确性会不会差些?再次谢谢马老师!

ahong 发表于 2008-8-1 14:13:02

to:4楼,我测量的频率10KHz时,周期为1/10000=100us,频率为20kHz时,周期为50us,测量出来后可以通过相关的换算显示出来的

ssyniuej 发表于 2008-8-1 15:23:55

那你那个20和40是什么东西。当然对于标准的10KHz和20KHz频率周期是能够算出来的,但你说的那个20或者是40没有单位,让人只能猜成是你的信号持续时间。

machao 发表于 2008-8-1 17:24:30

假定采用16M时钟,也作为T1的计数时钟,那么一个CLK是0.0625us.

20K,周期为50us, 50/0.0625 = 800.相对精度为1/800。因此20K +/- 25Hz   
10k,周期为100us,100/0.0625 = 1600.相对精度为1/1600。因此 10K +/- 6.25Hz

ahong 发表于 2008-8-1 23:40:10

谢谢马老师的详细解答,知道该怎么做了。谢谢

yinhe 发表于 2008-9-11 21:42:41

记号

liu252799093 发表于 2011-7-14 10:22:22

mark.

taocongrong 发表于 2011-12-18 16:20:39

hongkong 发表于 2013-7-25 12:25:06

学习捕捉

osesemi 发表于 2013-11-15 23:29:20

过来搜搜,正在做测试50HZ的频率
页: [1]
查看完整版本: 请教马老师在测量频率不断变化的情况下,怎么用输入捕捉方式测量频率