仪器社区

做用51单片机做一个频率计,测量范围为0.1Hz~10kHz

花言巧语jx 2011-01-03
做用51单片机做一个频率计,测量范围为0.1Hz~10kHz。思想是:用T0作为外部计数器,采样时间固定为0.5秒不能改变,测量2Hz~10KHz倒是好办。现遇到的问题是:怎样才能测量到小数点后面的频率?即0.1Hz~0.9Hz这个频段。程序(小弟会汇编)就是写不出来!希望哪位好... 做用51单片机做一个频率计,测量范围为0.1Hz~10kHz。思想是:用T0作为外部计数器,采样时间固定为0.5秒不能改变,测量2Hz~10KHz倒是好办。现遇到的问题是:怎样才能测量到小数点后面的频率?即0.1Hz~0.9Hz这个频段。程序(小弟会汇编)就是写不出来!希望哪位好心大哥帮忙解答一下,小弟感激万分!
评论
全部评论
Uj01us9
在不改变定时时间的前提下,也就是0.5秒定时,是不能实现0.1~2Hz频率的测量的。
你所谓2Hz~10KHz易实现也是基于这个道理。但这个也是理论情况。
当你0.5s内刚好检测到一个脉冲,你认为这个时候是2Hz而不是2.5hz或者3.9hz?
这中间存在一个测量精度的问题。实际上你所测到的信号是在2hz到4hz之间。

实际上我们在测量信号的时候,低频一般会采用测周期,高频用测频才能提高测量的准确性。
至于高低频的临界点,跟你的计数频率有关,感兴趣的话可以去看《电子测量原理》。

下面我来讲下测周实现的方法,可以使用边沿触发的D触发器输出作为单片机的外部定时控制,测量信号作为触发时钟,计数值作为该信号的周期。
20 0 2016-12-01 0条评论 回复
xhk812651
先把所有的测得的数据X10 ,Z后计算之后/10,不就可以了吗?
15 0 2011-01-04 0条评论 回复
wszaizhj
写程序的话,可能比较麻烦,说说思路吧,小数点后面的可以用计数的方法,实际上就是在一个输入时钟内,计数,看计数到几,由于单片机的时钟是已知的,所示用计数值乘以时钟周期就可以得出外部输入时钟的,小数点后面部分的周期,从而可得F频率
6 0 2011-01-04 0条评论 回复
zhangchi123060
很明显啊,在测量小于1Hz频率时,测量时间必须大于1s,比如10s,20s或者更长时间,这样才能保证测量准确。

既然你一次定时0.5s不能变,那就有程序控制累加多个0.5s的测量结果再计算频率值。

所以程序中使用自适应方法,首先测量一个0.5s,看得到的频率值是否大于1,如果大于1即直接测量,如果频率值为0,表示被测频率小于1Hz,就转入长时间测量的模式。
7 0 2011-01-05 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论