[求助] 码盘测速

落日归侠   2014-8-30 22:22 楼主
我用namiki空心杯直流减速电机的编码器测电机转速下面是测得的数据:
count1:1;0r/min(L);
count1:1;0r/min(L);
count1:1;0r/min(L);
count1:10;0r/min(L);
count1:68;0r/min(L);
count1:126;0r/min(L);
count1:186;0r/min(L);
count1:247;0r/min(L);
count1:307;0r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:81;120r/min(L);
count1:144;120r/min(L);
count1:210;120r/min(L);
count1:276;120r/min(L);
count1:18;120r/min(L);
count1:81;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:146;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:146;120r/min(L);
count1:212;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:81;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:18;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);
count1:19;120r/min(L);
count1:82;120r/min(L);
count1:146;120r/min(L);
count1:212;120r/min(L);
count1:278;120r/min(L);
请问怎么会是这样的?
以下是程序:
    //把每一秒钟编码器码盘计得的脉冲数,换算为当前转速值
    //此编码器码盘一圈两个信号,减速比为80。
    Freq1=double (count1/2/80);
    //Freq2=double (count1/2/80);
    rpm1 =double (Freq1*60);
    //rpm2 =double (Freq2*60);
    count1 = 0; //把脉冲计数值清零,以便计算下一秒的脉冲计数

回复评论 (3)

count1本来就不大给除没了,先double再除,(double)count1/2/80;
点赞  2014-8-30 23:58
引用: huo_hu 发表于 2014-8-30 23:58
count1本来就不大给除没了,先double再除,(double)count1/2/80;

不是没有啊   一开始是我没开电源  关键是数据总是呈规律性变化:count1:19;120r/min(L);
count1:82;120r/min(L);
count1:145;120r/min(L);
count1:211;120r/min(L);
count1:277;120r/min(L);

计数总是19,82,145,211,177(),最不明白的是转速却始终是120(虽然这个转速是对的)


还有想问一下下面这个外部中断计数函数对吗?编码器外部中断不是不是来了就触发计数吗?为什么还要还要大于5ms才计数,如果信号周期小于5ms不就计数不对了吗?我是网上看到的程序
// 编码器码盘计数中断子程序
void Code1()
{
  //当2次中断之间的时间大于5ms时,计一次有效计数
  if((millis()-time1) > 5)
    //当编码器正交编码板OUTA脉冲信号下跳沿每中断一次,
    count1 += 1; // 编码器码盘计数加一
    time1=millis();
}

点赞  2014-8-31 09:52
引用: 落日归侠 发表于 2014-8-31 09:52
不是没有啊   一开始是我没开电源  关键是数据总是呈规律性变化:count1:19;120r/min(L);
count1:82;120 ...

搞不清楚是怎么对的.count1=19转速怎么是120的?
点赞  2014-8-31 12:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复