資源簡介
第十一屆恩智浦智能汽車競賽電磁直立組華南賽區一等獎代碼,速度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個文件信息
評論
共有 條評論