📄 main.i
字号:
/*电池充电电流大小设置函数
current_value------电流大小
pwm_initial_value----PWM控制占空比中ORC的初始值
电流由PID控制器控制PWM的占空比实现*/
unsigned int giADC_DataSave[10];
unsigned char time_20ms_ok;
unsigned char LCD_I_value[3]={0,0,0};
void current_adc(unsigned char adc_flag);
int adc_data_cmp();
typedef struct PID {
int SetPoint; // 设定目标 Desired Value
float Proportion; // 比例常数 Proportional Const
float Integral; // 积分常数 Integral Const
float Derivative; // 微分常数 Derivative Const
int LastError; // Error[1]
int PrevError; // Error[2]
int SumError; // 误差累计值
} stPID;
void controlled_current (unsigned char current_value,unsigned char pwm_intial_value){
float fi;
int current_data;
int fout;
if (time_20ms_ok){
current_adc(0); //参数为0代表对电流采样
current_data=adc_data_cmp();
fi=current_data*rr4/rr5/rrs; //把ADC值转换成对应的真实电流值
LCD_I_value[0]=fi/100;
LCD_I_value[1]=fi%100/10;
LCD_I_value[2]=fi%10;
stPID.Proportion=1;
stPID.Integral=0.5;
stPID.Derivative=0.0;
fout=PIDCalc(&stPID,fi);
active();
}
}
//============================================================================================
//函数:float PIDCalc( PID *pp, int NextPoint )
//语法:float PIDCalc( PID *pp, int NextPoint )
//描述:PID计算
//参数:1、PID数值2、采样当前电流或电池电压值
//返回:PID输出值
//============================================================================================
float PIDCalc( PID *pp, unsigned long NextPoint ) //nextpoint为当前温度
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -