欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
飛思卡爾K60dz電磁直立車程序
[打印本頁]
作者:
蘋果謝謝
時間:
2019-3-3 10:24
標題:
飛思卡爾K60dz電磁直立車程序
別人的程序分享一下
電磁直立省二完整程序,預賽發揮失常,開源散經驗,僅供參考,大神勿噴。芯片K60dz,程序基于野火5.0庫,control.c:直立環、速度環、方向環的控制與整合、電機控制; tiaocan.c:按鍵調參、可設置所有PID參數、陀螺儀中值、設定速度、電感歸一化; main.c:藍牙發送數據、oled顯示電感值、干簧管停車、5次1毫秒中斷
單片機源程序如下:
/*
* 底層庫:基于野火5.0庫開發
* 作者:北華航天工業學院 秋明山車神隊
* 注意:未經作者允許,請勿用于商業,可以任意轉載,但請保留作者原創
*
*/
/***************************************************************/
#include "common.h"
#include "include.h"
/**************************************************************/
extern float Gyro_Now,g_fCarAngle;
extern float OutData[4]; //SCI示波器參數
extern float Gyro_Now,angle_offset_vertical; //陀螺儀轉化后的角速度,轉化后的加速度角度
extern float g_fCarAngle,g_fGyroscopeAngleIntegral; //融合后的角度
extern volatile int MMA7361 ,ENC03,real_angle; //加速度計AD ,陀螺儀AD,模塊輸出的角度
extern void PIT0_IRQHandler(void);
extern void OutPut_Data(void); //SCI采參數
void main()
{
DisableInterrupts; //禁止總中斷
LCD_Init(); //顯示屏初始化
GYRO_VAL=flash_read(255, 0, uint16);
GYRO2_VAL=flash_read(254, 0, uint16);
led_Init(); //LED初始化
adc_Init(); //ad采集初始化
QD_Init(); //編碼器初始化
uart_init (UART1, 115200); //藍牙初始化
Key_Init(); //按鍵初始化
//flash_init(); //FLASH不要初始化
gpio_init (PTA4, GPI,0); //PTA4設置下拉
port_init (PTA4, PULLDOWN );
FTM_PWM_init(FTM0, FTM_CH1,10000,0);
FTM_PWM_init(FTM0, FTM_CH2,10000,0);
FTM_PWM_init(FTM0, FTM_CH3,10000,0);
FTM_PWM_init(FTM0, FTM_CH4,10000,0);
FTM_PWM_Duty(FTM0,FTM_CH1,0);
FTM_PWM_Duty(FTM0,FTM_CH2,0);
FTM_PWM_Duty(FTM0,FTM_CH3,0);
FTM_PWM_Duty(FTM0,FTM_CH4,0);
pit_init_ms(PIT0, 1); //初始化PIT0,定時時間為: 5ms
set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler); //設置PIT0的中斷復位函數為 PIT0_IRQHandler
enable_irq (PIT0_IRQn); //使能PIT0中斷
DELAY_MS(1000);
EnableInterrupts; //中斷允許
while(1)
{
Key();
/*#if 1
OutData[0] = g_fDirectionControlOut;
OutData[1] = g_fCarSpeednew;
OutData[2] = g_fCarSpeedleft;
OutData[3] = g_fCarSpeedright;*/
/* #if 1
OutData[0] = 1000*(AD[0]-AD[3])/(AD[0]+AD[3]);
OutData[1] = 1000*(AD[1]-AD[2])/(AD[1]+AD[2]);
OutData[2] = 1000*(AD[0]-AD[3]);
OutData[3] = 1000*(AD[0]+AD[3]);
OutPut_Data();
#endif
*/
/*
#if 1 //直立角度
OutData[0] = ENC03;
OutData[1] = MMA7361;
OutData[2] = angle_offset_vertical ;
OutData[3] = g_fCarAngle;
OutPut_Data();
#endif
*/
/* #if 1 //車速
OutData[0] = g_fSpeedControlIntegral;
OutData[1] = (g_fSpeedControlOutNew-g_fSpeedControlIntegral);
OutData[2] = g_fCarSpeednew ;
OutData[3] = 10*CAR_SPEED_SET;
OutPut_Data();
#endif
*/
/*#if 1 //車速
OutData[0] = g_fSpeedControlIntegral;
OutData[1] = bianhualeft;
OutData[2] = bianhuaright;
OutData[3] = g_fCarSpeednew;
OutPut_Data();
#endif*/
if(Star_flag==0&&g_nInterrupt_Count==2)
{
LCD_Fill(0x00); //初始清屏
LCD_PrintU16(0,0,AD_average[0]);
LCD_PrintU16(32,0,AD_average[1]);
LCD_PrintU16(64,0,AD_average[2]);
LCD_PrintU16(96,0,AD_average[3]);
LCD_PrintU16(0,2,AD[0]);
LCD_PrintU16(32,2,AD[1]);
LCD_PrintU16(64,2,AD[2]);
LCD_PrintU16(96,2,AD[3]);
LCD_PrintFloat(50,4,g_fCarAngle);
}
}
}
/**********************中斷服務程序*******************/
void PIT0_IRQHandler(void)
{
DisableInterrupts;
if(jishu>=8000) //干簧管檢測延時
{
jishu=8000;
led(LED5,LED_ON);
if(key_check(KEY_STOP) == KEY_DOWN) //干簧管停車
{
KEY_START_flag=0; //調參界面復位
Star_flag=50; //電機停轉
led(LED4,LED_ON);
}
}
if(KEY_START_flag>=5) //調參界面5開始中斷計數,干簧管延時
{jishu++;
}
g_nInterrupt_Count++; //一堆計數
g_nSpeedControlPeriod++;
SpeedControlOutput(); //一堆平滑輸出
g_nDirectionControlPeriod++;
DirectionControlOutput() ;
if(g_nInterrupt_Count>=5) //三個環控制
{
GetMotorPulse();
g_nInterrupt_Count=0;
}
else
if(g_nInterrupt_Count==1)
{
Get_AD_data();
Rd_Ad_Value();
}
else
if(g_nInterrupt_Count==2)
{
AngleCalculate();
AngleControl(g_fCarAngle,Gyro_Now);
MotorOutput();
led_turn (LED1);
}
else
if(g_nInterrupt_Count==3)
{
g_nSpeedControlCount++;
if(g_nSpeedControlCount>=20)
{
led_turn (LED2);
SpeedControl();
g_nSpeedControlCount=0;
g_nSpeedControlPeriod=0;
}
}
else
if(g_nInterrupt_Count==4)
{
g_nDirectionControlCount++;
DirectionVoltageSigma();
if(g_nDirectionControlCount>=2)
{
DirectionControl();
g_nDirectionControlCount=0;
g_nDirectionControlPeriod=0;
}
}
PIT_Flag_Clear(PIT0); //清中斷標志位
EnableInterrupts;
}
復制代碼
所有資料51hei提供下載:
smart_car-16.7.20.7z
(785.66 KB, 下載次數: 88)
2019-3-5 03:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
kakaokok
時間:
2019-3-5 09:29
這個黑科技不錯,如果能把硬件材料明細標出來就完美了
作者:
ikon路
時間:
2019-3-8 14:18
不錯,下下來學習一下
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1