方向控制环节与控制量

描述

控制环节与控制量

整个系统的控制器就是偏差处理函数,方向环多为离散的PD控制器(PD控制器会在后面PID的文章中做介绍)

这里就理解为一个公式吧,而控制量就是偏差处理函数计算出的结果,还是以电磁为例;下面是电磁偏差处理代码片。

/*******************************************************************************
* 函数名    :Direction_out
* 描述      :方向环
* 参数      :void
* 返回      :void
* 编写者    :  小向是个Der
* 编写日期  :  2021-12-19
*******************************************************************************/
void Direction_Out(void)
{
   My_Direction.KP=10.0; 
   My_Direction.KD=2.5;
   //转向PD控制//电感差比和算出的偏差做位置式PD计算
   My_Direction.SumError=My_Direction.KP*My_Direction.NowError+
   My_Direction.KD*(My_Direction.NowError-My_Direction.PrevError);
   My_Direction.PrevError=My_Direction.NowError;
  //中心偏差滤波、加权滑动平均滤波
   My_Direction.Pre1_Error[3]= My_Direction.Pre1_Error[2];
   My_Direction.Pre1_Error[2]= My_Direction.Pre1_Error[1];
   My_Direction.Pre1_Error[1]= My_Direction.Pre1_Error[0];
   My_Direction.Pre1_Error[0]=My_Direction.SumError;
   My_Direction.Direct_Parameter=My_Direction.Pre1_Error[0]*0.8+My_Direction.Pre1_Error[1]*0.1+
     My_Direction.Pre1_Error[2]*0.06+My_Direction.Pre1_Error[3]*0.04 ;
   //此处Price_PWM就是控制量
   Price_PWM=(int16)(My_Direction.Direct_Parameter);
}

执行机构

执行机构在此系统中主要是电机驱动和舵机,其中电机驱动已经在硬件篇介绍过,也有大佬们的文章作为参考

原理就是利用控制器输出的控制量这里就是上述代码中的Price_PWM,分别加减到两个电机的PWM占空比上,实现内外轮速度差,进而使小车转向差速代码片如下,这里对于电机驱动不在做过多赘述,重点介绍一下舵机。

//差速处理
  dutyL=200+Price_PWM/5+2*error;
  dutyR=200-Price_PWM/5-2*error;
  //电机动作 单极控制
  pwm_duty(PWMA_CH2P_P62, 0);
  pwm_duty(PWMA_CH1P_P60, dutyL*12);
  pwm_duty(PWMA_CH4P_P66, 0);
  pwm_duty(PWMA_CH3P_P64, dutyR*12);
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分