直立行车控制

        第一次想写博客的Idea萌生2018年,没有别的Reason,(嘻嘻), 刚好度过四年的大学时光,有伤悲,也有收获,静下心来,沉淀一下子,because某些原因,耽误大半年,好了,回归主题吧,既然第一次写CSDN, 主要是了解整个博客的生产,出售过程,(想找表情包,没有看到,哈哈),有写的不好的地方,还请大家谅解!

       给大家带来一段节选自曾经恩智浦智能车比赛用的PID控制程序,如下所示:

void PIT_IRQHandler()  //2ms一次中断
{
  static uint8 flag_100ms,cnt=0;
  PIT_Flag_Clear(PIT0);       //清中断标志位
 
  if(start_flag == 0)
  {
  /* if(imgprocessed==0)  //此段不超过0.5ms 200ms主频  6ms 或8ms 执行一次 
    {
      img_extract(img,imgbuff,CAMERA_SIZE); 
      Search();  
      Direction_Control();
      imgprocessed=1;
    }*/
   
    flag_100ms++;
    if(flag_100ms>50)
    {    
      flag_100ms=0; 
      Speed_Control();  //100ms进行一次速度控制  5Hz
      LED_RED_TURN;
      SpeedCount=0;  // 又一次速度更新
    }
  }
 
   cnt++;
  if(cnt==1)      //4ms运行一次  125Hz
  {
     Get_Attitude();
     Angle_Calculate();
     Angle_Control();
     Get_Speed();  // 计算速度
   }
 
   if(cnt>=2)
   {
     cnt=0;
   }
 
   SpeedCount++;
   Speed_Control_Output();
   Moto_Out();
}
 

    平衡控制是直立行车的关键因素之一,也是小车流畅运行的保障,因此控制周期(4ms)要设计成最小的。

发布了9 篇原创文章 · 获赞 4 · 访问量 1061

猜你喜欢

转载自blog.csdn.net/hello071375/article/details/89104840
今日推荐