求助电机转速与百分比的关系问题,一直没搞定,望大神指点

2019-07-15 09:22发布

现在在做一款冰淇淋机,电机的转速通过霍尔传感器,在外部中断检测脉冲,转速求出来比如是340/分钟,当电机转速是330转的时候要求是显示%80,这个是起始百分比没啥问题,当电机转速达到325转是百分比显示要求达到%99,也就是说,在这五转的时间内要显示从%80到%99,中间不能有跳跃,只能是80,81,82这样加上去,经过计算一个百分比变化大概需要0.26转,0.26转的时间也能求出,在外部中断中是检测一转的时间,然后保存这一转的时间到一个全局变量中,测得一转的时间就把原来的时间清零。然后拿现在的一转时间与起始的时间做一个差值,差值再除以相差的19个百分点,但是这样根本就没法从81,82,83这样累加上去,结果是81,84,86等跳变。搞死人了,望大神指点一下好的方法。先上个程序。
void Extern_Int1(void) interrupt 2                //外部中断1                用于检测转速
{
  if(OKbit0==0)   //标志位初始为零
  {
    if (SpeedFinshedFlag==1)
        {
            timeCount2=TimeCount1;         //转速周期  TimeCount2是保存一转时间的全局变量,TimeCount是在定时器中断里面自加,定时器是0.1ms中断
            OKbit0=1;    //在主程序里面已经清零
        }
        else
        {
                TimeCount1=0;
                SpeedFinshedFlag=1;  //在主程序清零
        }
  }       
}

//下面这段程序是300ms测一次转速
if(start_bit==1&&OKbit0==1){
   TransRun=600000/TimeCount2; //测得的转速
   OKbit0=0;
   SpeedFinshedFlag=0;
   T20ms=0;
}
else{if(T20ms==15){TransRun=0;}} //300毫秒计算一次转速
//下面这个是计算 转速与百分比的关系
if(TransRun>(341-canshu[4])) //canshu[4]是一个修正值,不用管他,只需要知道341-canshu[4]是起始转速
{
        bili=80; //当转速>起始转速时百分比为%80,转速越往下降,比例值就往上加
}
else
{
        bili= 80+((TimeCount2-600000/(341-canshu[4])))*10/14;//时间差值扣大十倍*10
}
最终结果就是我上面说的,不是81,82,83这样累加上去 ,很急,望大神赐教!          

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
人中狼
1楼-- · 2019-07-16 10:21
(当前转速-330)*(5.0/(99-80)),这样算应该可以了,不过现在的问题应该不时如何算的问题,而是测速精度的问题,按整数算,5转分19个点,如果只能测速到整数的话,就不可能逐一递加,要想逐一递加,转速至少要能测到小数1位
xp3539989
2楼-- · 2019-07-16 11:33
人中狼 发表于 2017-11-9 14:51
(当前转速-330)*(5.0/(99-80)),这样算应该可以了,不过现在的问题应该不时如何算的问题,而是测速精度的问题,按整数算,5转分19个点,如果只能测速到整数的话,就不可能逐一递加,要想逐一递加,转速至少要能测到小数1位 ...

不能得,你这个和我((TimeCount2-600000/(341-canshu[4])))*10/14;是一样的  只是我用的是周期  你用的是转速,转速不能半转,但是可以求出半转的周期,所以还是不行   不过还是很感谢的!
人中狼
3楼-- · 2019-07-16 15:25
5转分19个点,至少要能测出1/4转的时间,并不见得好测量,不管用转速还是测周期,其实使用浮点数计算,自然就能得出小数,用整型数计算得不到小数的
xp3539989
4楼-- · 2019-07-16 17:46
人中狼 发表于 2017-11-9 15:28
5转分19个点,至少要能测出1/4转的时间,并不见得好测量,不管用转速还是测周期,其实使用浮点数计算,自然就能得出小数,用整型数计算得不到小数的

你这个方法我也试了    用浮点算 最后扣大十倍  保留小数点后面一位    感觉  也是一样的结果   揪心  是不是哪里理解错了   就是一个周期或者转速的分片   哎   就是不行    脑壳痛   
xp3539989
5楼-- · 2019-07-16 22:14
 精彩回答 2  元偷偷看……
人中狼
6楼-- · 2019-07-17 00:56
你的这个问题应该是转速差的问题,不是转速或转动周期的问题。显示的百分比是转速的变化,所以不是5转分位19个点,而是19个点分成多少转才能递加的显示。
假如传感器只有一个点,也就是转动一圈只有一个信号返回,那么不论是用转速计算,还是用周期计算,最基本的计算单位就是1转,也就是会变化4%,所以5转这个参数无法改变,那么19个点要都能显示,那就是1个点对应1/4转,也就是转动一圈需要有4个信号返回。
没考虑错的话,你需要改硬件了

一周热门 更多>