关于直流减速电机作为阀门开关的问题

2019-07-18 15:07发布

我想要实现的功能是电机正转3秒打开阀门,转一圈64个脉冲的霍尔编码器计数,然后加压设备通过阀门加压,传感器采集压强值。当到达设定值时,电机反转霍尔编码器的计数值,阀门关闭。由于脉冲数小,加上是AB相的编码器,测量误差在129个脉冲。file:///C:UsersdellAppDataRoamingTencentUsers809965167QQWinTempRichOle]N~OZ%H5V1LXUXJ9HI9D06H.png [OC7OSPS$X2M@YEH}G~ZNEB.png 然后我在程序上加了个129,脉冲数成图下方的样子了。void PWM_SET1(u8 dir,u16 a)
{
     if(dir==1)
      {
         tiM_SetCompare4(TIM8,0);
         TIM_SetCompare3(TIM8,a);
          dir=0;
      }
    else   {
           TIM_SetCompare3(TIM8,0);
          TIM_SetCompare4(TIM8,a);
           dir=1;
      }
}


PWM_SET1(1,300);  //电机正转
delay_s(2);
PWM_SET1(0,0);        //获取先前的计数值
printf("EncCntAAAA = %d-------",EncCnt);
closeb=EncCnt;     //  EncCnt= hEncoder_Timer_Overflow * 64 + TIM3->CNT,closeb为反转圈数
hEncoder_Timer_Overflow=0;  //hEncoder_Timer_Overflow为电机转一圈的脉冲数
EncCnt=0;

PWM_SET1(0,300);                                
out:if(closeb>=(EncCnt+129)) ///判断脉冲个数,加了129后脉冲数差不多
     {  goto out;  }
PWM_SET1(0,0);
  printf("EncCntBBBB = %d ",EncCnt);                                                                    
hEncoder_Timer_Overflow=0;
EncCnt=0;
choose=0;        




试了下,感觉电机反转的值比正转多一点点。想请教下,如何确保阀门关闭完全呢。如果用传感器采集的压强值作为标准判断是否关闭,这样可以吗。因为我测得的压强值在跳动

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。