直立行車控制

 

        第一次想寫博客的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 · 訪問量 2095
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章