資源簡介
單片機C語言PID控制
代碼片段和文件信息
#include?“control.h“
??/**************************************************************************
作者:平衡小車之家
我的淘寶小店:http://shop114407458.taobao.com/
**************************************************************************/
/**************************************************************************
函數功能:所有的控制代碼都在這里面
??????????TIM1控制的定時中斷?
**************************************************************************/
u8?Flag_Velocity=1;
int?TIM1_UP_IRQHandler(void)??
{????
if(TIM1->SR&0X0001)//5ms定時中斷
{???
??TIM1->SR&=~(1<<0);?????????????????????????????//===清除定時器1中斷標志位 ??????
??if(Menu_MODE==1)
{
Encoder=Read_Position(4);??????????????????????//===更新位置信息
Moto=Position_PID(EncoderTarget_Position);????//===位置PID控制器
}
??else?if(++Flag_Velocity>2)?????????????????????????//===速度控制20ms一次,一般建議10ms,因為這里使用USB供電,速度比較慢,20ms可以延長獲取速度的單位時間,提高數值
{
Flag_Velocity=1;
Encoder=Read_Velocity(4);??????????????????????//===更新速度信息
??if(Encoder<0)?Encoder=0;
Moto=Incremental_PI(EncoderTarget_Velocity);??//===速度PI控制器
}
??if(delay_flag==1)
??{
?if(++delay_50==5) ?delay_50=0delay_flag=0;????//===給主函數提供50ms的精準延時
??}
??Xianfu_Pwm();????????????????????????????????????//===PWM限幅
if(Flag_Stop==0) Set_Pwm(Moto);?????????????//===賦值給PWM寄存器
else? ??????????????? Set_Pwm(0);????????????????//===賦值給PWM寄存器
??Led_Flash(100);??????????????????????????????????//===LED閃爍指示系統正常運行?
Key();???????????????????????????????????????????//===掃描按鍵變化
Voltage=Get_battery_volt();??????????????????????//===采集供電電壓
}???????
?return?0; ??
}?
/**************************************************************************
函數功能:賦值給PWM寄存器
入口參數:PWM
返回??值:無
**************************************************************************/
void?Set_Pwm(int?moto)
{
???? if(moto<0) AIN2=1 AIN1=0;
else? ??????????AIN2=0 AIN1=0;
PWMA=myabs(moto);
}
/**************************************************************************
函數功能:限制PWM賦值?
入口參數:無
返回??值:無
**************************************************************************/
void?Xianfu_Pwm(void)
{
??int?Amplitude=7100;????//===PWM滿幅是7200?限制在7100
??if(Moto<-Amplitude)?Moto=-Amplitude;
if(Moto>Amplitude)??Moto=Amplitude;
}
/**************************************************************************
函數功能:按鍵修改運行狀態?
入口參數:無
返回??值:無
**************************************************************************/
void?Key(void)??
{
int?tmptmp2Position_Amplitude=260Velocity_Amplitude=5;?
tmp=click_N_Double(50);?
?if(Menu_MODE==1)??//改變運行位置?
?{
? if(tmp==1)Target_Position+=Position_Amplitude;
if(tmp==2)Target_Position-=Position_Amplitude;
?}
?else?????????????//改變運行速度
?{
if(tmp==1)Target_Velocity+=Velocity_Amplitude;
if(tmp==2)Target_Velocity-=Velocity_Amplitude;
?}
?if(Target_Velocity>60)Target_Velocity=60;?//速度最大值限幅
?if(Target_Velocity<0)Target_Velocity=0;???//速度最小值限幅
tmp2=Long_Press();??????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5403??2020-01-02?21:22??單片機PID控制學習程序\BALANCE\CONTROL\control.c
?????文件??????11154??2016-02-22?15:13??單片機PID控制學習程序\BALANCE\CONTROL\control.c~RF18b9998.TMP
?????文件????????582??2016-05-06?09:55??單片機PID控制學習程序\BALANCE\CONTROL\control.h
?????文件??????????0??2016-02-22?11:47??單片機PID控制學習程序\BALANCE\CONTROL\MFC10DB.tmp
?????文件??????????0??2016-02-23?08:58??單片機PID控制學習程序\BALANCE\CONTROL\MFC3A5E.tmp
?????文件???????2891??2015-07-09?14:05??單片機PID控制學習程序\BALANCE\DataScope_DP\DataScope_DP.C
?????文件????????586??2015-07-09?14:05??單片機PID控制學習程序\BALANCE\DataScope_DP\DataScope_DP.h
?????文件??????19342??2012-12-14?11:16??單片機PID控制學習程序\BALANCE\DMP\dmpKey.h
?????文件???????6765??2012-12-14?11:16??單片機PID控制學習程序\BALANCE\DMP\dmpmap.h
?????文件??????84104??2015-07-09?14:05??單片機PID控制學習程序\BALANCE\DMP\inv_mpu.c
?????文件???????4335??2015-07-09?14:05??單片機PID控制學習程序\BALANCE\DMP\inv_mpu.h
?????文件??????57839??2015-07-09?14:05??單片機PID控制學習程序\BALANCE\DMP\inv_mpu_dmp_motion_driver.c
?????文件???????3386??2015-07-09?14:05??單片機PID控制學習程序\BALANCE\DMP\inv_mpu_dmp_motion_driver.h
?????文件???????2105??2015-12-07?15:52??單片機PID控制學習程序\BALANCE\filter\filter.c
?????文件????????399??2015-12-07?15:52??單片機PID控制學習程序\BALANCE\filter\filter.h
?????文件??????11099??2015-12-04?10:34??單片機PID控制學習程序\BALANCE\MPU6050\MPU6050.c
?????文件??????14787??2015-10-17?15:04??單片機PID控制學習程序\BALANCE\MPU6050\mpu6050.h
?????文件???????6211??2020-01-02?21:42??單片機PID控制學習程序\BALANCE\show\show.c
?????文件????????332??2017-03-11?14:51??單片機PID控制學習程序\BALANCE\show\show.h
?????文件???????4685??2016-05-06?10:25??單片機PID控制學習程序\HARDWARE\ADC\adc.c
?????文件????????487??2016-04-23?15:27??單片機PID控制學習程序\HARDWARE\ADC\adc.h
?????文件???????2887??2015-06-07?00:48??單片機PID控制學習程序\HARDWARE\DataScope_DP\DataScope_DP.C
?????文件????????581??2015-05-04?12:37??單片機PID控制學習程序\HARDWARE\DataScope_DP\DataScope_DP.h
?????文件???????4201??2016-07-01?19:38??單片機PID控制學習程序\HARDWARE\ENCODER\encoder.c
?????文件????????558??2016-05-04?08:56??單片機PID控制學習程序\HARDWARE\ENCODER\encoder.h
?????文件???????2423??2017-11-15?19:42??單片機PID控制學習程序\HARDWARE\EXTI\exti.c
?????文件????????454??2017-11-15?19:23??單片機PID控制學習程序\HARDWARE\EXTI\exti.h
?????文件??????10779??2015-12-07?15:46??單片機PID控制學習程序\HARDWARE\IIC\IOI2C.c
?????文件???????3118??2015-11-03?08:45??單片機PID控制學習程序\HARDWARE\IIC\IOI2C.h
?????文件???????2858??2017-11-15?19:24??單片機PID控制學習程序\HARDWARE\KEY\key.c
............此處省略169個文件信息
- 上一篇:安卓c語言開發SDL2+opengles
- 下一篇:圍棋C語言代碼
評論
共有 條評論