资源简介

第十一届恩智浦智能汽车竞赛电磁直立组华南赛区一等奖代码,速度2.4m/s,方向控制采用了模糊控制。

资源截图

代码片段和文件信息

 /************************************
说明:
总中断控制函数
包括串口通讯中断函数
***********************************/

#include “common.h“
#include “GlobalDefine.h“ 
#include “AngleControl.h“
#include “SpeedControl.h“
#include “DirectionControl.h“
#include “Initalize.h“
#include “SCI_show.h“
#include “Motor.h“
#include “LCD5110.h“

float g_Angle_ControL_P=185;//180;//60;      //直立控制的PID值       //150
float g_Angle_ControL_D=0;//1.66;//3.62;//3.25;//3.85;                               //1.20

float g_Speed_Control_P=60;//51;//51;//164;//180;       //速度速度控制的PID值   //450
float g_Speed_Control_I=0.5;//0.5;//0.78;//0.9;//0.9;                             //20.0
 
float g_Direction_ControL_P=20;//23;//13;//15;//60;   //方向控制的PID值       //0200/1000
float g_Direction_ControL_D=0.9;//1.4;//1.3;//1.3;//1.5;                           //0.50/1.80

float Speed=0.0;
int8 num2=0num5=0num20=0;
int8 SpeedPeriod=0;
int8 DirectionPeriod=0;
int8 Time;
int8 s1=2s2=3s3=7s4=8;

void main (void)

  int8 Page=0;
  init_all();
  LCD5110_Init();
  while(1)
  {
    if(PTD8_I == 0)
    {
      //去抖
      delay1();
      if(PTD8_I==0)
      {
        Page++;
        LCD_Clear();
      }
      //直到按键松开再运行
      while(PTD8_I==0);
    }
    switch(Page)
    {
    case 0:KEY_OFFSET_Adjust();break;
    case 1:KEY_Paremeter_Adjust();break;
    case 2:KEY_Advance_Adjust();break;
    default :Page = 0;
    }
  } 
}
/********启动速度梯度设定*********/
void Speed_Change(void)
{
  Time++;
  if((Car_Speed_Set-Speed)>0.5)
   Car_Speed_Set = Speed;
  if(Time>=2)
  {
    if(Car_Speed_Set      Car_Speed_Set += 0.1;
    Time = 0; 
  }
}
/************** 中断主函数 **************/
void pit_isr(void)    //PIT中断函数1ms中断函数
{
  num5++;         //时间片段标志;共5个时间片段;
  SpeedPeriod++;
  SpeedControl_smooth_div();
  
  DirectionPeriod++;
  DirectionControl_smooth_div();//方向控制平滑输出
  
  if(num5==1)
  {
    Get_ADresult();             //AD并20次平均
  }
  else if(num5==2)
  {
    AngleControl();            //计算角度控制PID值;
  }
  else if(num5==3)
  {
    Pid_Assemble_Output();     //整合量输出电机;
    send_data();               //上位机发送数据
  }
  else if(num5==4)
  {
    num20++;                   //20次计数;
    Speed_Calculate();         //5ms计算一次车速;
    if(num20>=20)
    {
      SpeedControl();         //速度控制PID计算;
      Speed_Change();         //2ms更改一次速度;
      num20 = 0;
      SpeedPeriod=0;
    }
  }
  else if(num5>=5)
  { 
    num5 = 0;
    num2++;
    Get_DirADresult();         //获取方向数据(陀螺仪、电感电压)
    if(num2 >= 2)
    {
      //DirectionControl();
      Fuzzy_DirectionControl(); //方向模糊算法控制
      num2 = 0;
      DirectionPeriod = 0;   
    }
  } 
}
/************** 参数整改函数 **************/
void PIDreset(void)     //格式务必为:Tx=xxxx                    
{
  int8 i=0ReArr[6]GetArr[6];
  if(LPLD_UART_GetChar(UART5)== ‘T‘)
  {
    for(i=0;i<=5;i++)
    {
      ReArr[i] = LPLD_UART_GetChar(UART5);
      GetArr[i]=ReArr[i]

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5470  2016-03-26 10:02  ok\app\k60_card.h

     文件       5404  2016-05-13 21:04  ok\app\ok.c

     文件       3254  2016-05-11 15:41  ok\app\user\AngleControl.c

     文件        210  2016-03-25 19:23  ok\app\user\AngleControl.h

     文件       8617  2016-05-16 18:56  ok\app\user\DirectionControl.c

     文件        302  2016-03-31 21:16  ok\app\user\DirectionControl.h

     文件       2012  2016-05-13 20:35  ok\app\user\GlobalDefine.h

     文件       7198  2016-04-13 12:55  ok\app\user\Initalize.c

     文件        461  2016-04-12 14:58  ok\app\user\Initalize.h

     文件      15177  2016-05-16 19:47  ok\app\user\LCD5110.c

     文件        884  2016-05-13 20:35  ok\app\user\LCD5110.h

     文件        138  2016-01-16 09:42  ok\app\user\Motor.h

     文件       3122  2016-05-13 21:04  ok\app\user\Motor_out.c

     文件       2750  2016-05-06 13:59  ok\app\user\Sci_show.c

     文件        216  2016-01-15 19:20  ok\app\user\SCI_show.h

     文件       6642  2016-05-11 15:41  ok\app\user\SpeedControl.c

     文件        250  2016-01-20 22:29  ok\app\user\SpeedControl.h

     文件      25896  2016-04-17 10:16  ok\iar\FLASH\Exe\ok_K60DZ10.bin

     文件     318792  2016-04-17 10:16  ok\iar\FLASH\Exe\ok_K60DZ10.out

     文件      26823  2016-04-15 20:42  ok\iar\FLASH\Exe\ok_K60DZ10.sim

     文件      17574  2016-03-26 10:06  ok\iar\FLASH\List\alloc.lst

     文件      12616  2016-03-26 10:06  ok\iar\FLASH\List\alloc.s

     文件      43438  2016-04-15 15:54  ok\iar\FLASH\List\AngleControl.lst

     文件      27288  2016-04-15 15:54  ok\iar\FLASH\List\AngleControl.s

     文件       6881  2016-03-26 10:06  ok\iar\FLASH\List\assert.lst

     文件       5575  2016-03-26 10:06  ok\iar\FLASH\List\assert.s

     文件      97753  2016-04-17 10:16  ok\iar\FLASH\List\DirectionControl.lst

     文件      54746  2016-04-17 10:16  ok\iar\FLASH\List\DirectionControl.s

     文件     101760  2016-03-26 10:06  ok\iar\FLASH\List\HW_ADC.lst

     文件      70558  2016-03-26 10:06  ok\iar\FLASH\List\HW_ADC.s

............此处省略272个文件信息

评论

共有 条评论