打印

杀**用牛刀

[复制链接]
3342|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
emailli|  楼主 | 2007-4-15 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
详细的分析请参考我的博客:

http://emailli.21ic.org
/*******************************************************************/

测量要求:被测频率范围为0.1Hz—100KHz。要求测量精度在1‰之内。成本越低越好,电路越简单越好。
 
解决方案:主芯片采用ARM7内核的LPC2103。

定时器0为32位定时器,定时频率可以达到11.0592Mhz(此时使用的晶振为11.0592Mhz,程序运行频率为4倍频,即44Mhz)。

20s内测量被测脉冲,如果测量到10次(M1)脉冲,则退出测量,用M1来计算频率,如果20s时间到,还没有测量到10次(M1’),那么就用此时测得的次数M1’来计算频率。

为什么是20s内测量,因为测量0.1hz的被测频率,至少需要20s才能够准确的捕捉到一个周期的方波。

无论测量高频还是低频,都使用11.0592Mhz来作为高频计数频率。由前面的分析可以知道,当被测频率为100Khz的时候,需要的高频计数频率大于10.01Mhz即可。由此可知,用11.0592Mhz来作为高频计数频率来计数,在0—100Khz范围内,测量误差都可以小于1<‰。

还有一个问题就是大家关心的溢出问题。

0.1hz频率的时候,在20s内显然只能数到一次,也就是10s的高频计数时间,那么,需要计数次数为11059200 10=110592000。而LPC2103为32位定时器,32位整型变量的范围是0—4294967295,显然,32位定时器够用,不存在溢出。

相关帖子

沙发
xwj| | 2007-4-15 12:01 | 只看该作者

误差不是这样算的

使用特权

评论回复
板凳
emailli|  楼主 | 2007-4-15 22:25 | 只看该作者

请问一下,误差是怎么计算的!谢谢!

使用特权

评论回复
地板
maychang| | 2007-4-15 23:30 | 只看该作者

杀**用牛刀

用最简单的单片机就可以做到,却要采用ARM7内核的LPC2103。

使用特权

评论回复
5
emailli|  楼主 | 2007-4-16 08:11 | 只看该作者

楼上的,请给出一个能够实现的方案!谢谢!

使用特权

评论回复
6
fiann| | 2007-4-16 08:24 | 只看该作者

用普通单片机足够了

一个定时器+一个外部中断

使用特权

评论回复
7
80572892| | 2007-4-16 11:53 | 只看该作者

一片51就能搞定!!!!!!

精度的都不是问题,肯定可以做到,频率计测量的是数字量对外界的干扰不怎么太名感,可是CPU的晶振是基于模拟电路的。模拟电路是受外界环境影响的,所以这部分一定要处理好,如果处理不好的话,所有东西那就都是白扯了。。。。。。。。 

使用特权

评论回复
8
emailli|  楼主 | 2007-4-17 17:06 | 只看该作者

用51来做的话,外部恐怕要加分频电路才可以搞定吧。

事实上,你的51只是一个数据读取而已。

真正的计数是用数字电路实现的!

而一个系统中,已经有了MCU了,何必再外加额外的电路呢?

很多的项目内都可能用到测频率的。

你都用数字电路来搭建?

使用特权

评论回复
9
音乐乐乐| | 2007-4-17 17:15 | 只看该作者

一个小CPLD加一个单片机?

使用特权

评论回复
10
lyjian| | 2007-4-17 17:54 | 只看该作者

LZ的思维有问题

如果51只是一个数据读取而已那ARM不是一样吗?
对于低频率信号一般都用测周期的方式来做,很少有人像LZ那样用计数方法来测的(计数的方法慢而且不准确)。
如果LZ是担心51只有16bit的定时器在测0.1Hz时会溢出的话而选用ARM(因为ARM有32位的定时器)那是完全没必要的,51用软件的方式完全可以把定时器扩展为32位或更大的定时器,并且不会影响测量的精度。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

98

主题

1172

帖子

55

粉丝