3286|4

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

89c51用于比较高的精度测速 [复制链接]

这个程序是很好,但是对于测试要转速在3--10000转每分钟来说,精确度低了,范围小了,
我想通过计数器的值来测出一个转速脉冲的所用的指令条数,然后用1s(或者一分钟) CPU可以执行的条数,来求出转速。
这个方法可行吗?如何测出这个转速脉冲的计数器的值呢?谢谢各位支援
引用 2 楼 guetcw 的回复:
乱七八糟的,试试这个

C/C++ code
volatile unsigned int Tick;
volatile unsigned char IrqTimes;
bit Falg_TimeOut;

void Time0_IRQ() interrupt 1 using 1
{
    TH0 = 0x3C;
    TL0 = 0xB0;//50mS
    if(++IrqTimes >= 10)
    {
        IrqTimes = 0;
        Flag_TimeOut = 1;
    }
}

void INT0_IRQ() interrupt 0
{
    if(! Flag_TimeOut)
    {
        Tick++;
    }
}

void Regi…

最新回复

转速在3--10000转每分钟 如果换成脉冲的话那就是: 10000Hz哈 也就10K 用快点的单片机 26M 26 000 000 / 10 000 == 2 600 如果单片机够快,是完全没有问题的 这个容量大 呵呵  详情 回复 发表于 2008-10-24 14:02
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
引用楼主 longhaluo 的帖子:
我想通过计数器的值来测出一个转速脉冲的所用的指令条数,然后用1s(或者一分钟) CPU可以执行的条数,来求出转速。

你这个方法精度更低,除非你用FPGA。你可以算算10000转的时候,每转周期是100uS,以12M晶振来算,一个机器周期是1uS,中断响应大概10uS左右,你算算这个误差是多大。正确方法是,高频段用定时一定的时间(51的定时器最长只能定时60多ms,12M晶振,可以重复多次从而获得更长的定时时间),在这个时间里去对中断脉冲计数。这种方法误差一般不会超过2Hz,但在频率很低的时候误差就大了,这时候可以加大定时时间,只要处理好定时精度和益出处理,误差基本为0,我在学校的时候做1Hz-100KHz的误差不会超过1Hz,当然实际处理要复杂些。
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果你想要高频低频都测得比较准,建议你用AVR单片机做,用它的定时器捕获功能,测占空比都可以达到比较高的精度。
我曾经用AVR的单片机测1-1MHz误差都不会超出1Hz。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
是10000/分钟哈,频率在160HZ低频就低了,在0.05HZ左右,如何把中断设置成上升沿触发呢,看到的都是下降沿触发
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
转速在3--10000转每分钟

如果换成脉冲的话那就是:

10000Hz哈

也就10K

用快点的单片机

26M

26 000 000 / 10 000 == 2 600

如果单片机够快,是完全没有问题的

这个容量大

呵呵
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表