资深版主
 
- 积分
- 1702
- 金钱
- 1702
- 注册时间
- 2012-5-10
- 在线时间
- 439 小时
|

楼主 |
发表于 2020-12-21 11:34:52
|
显示全部楼层
本帖最后由 xsx127 于 2020-12-21 11:37 编辑
加热控制都弄好了,就是调参数不太会
- /**
- * tar_temp:目标温度
- * cur_temp:当前温度
- */
- unsigned short pid_cal(PID * PP, float tar_temp, float cur_temp)
- {
- float dError=0, Error=0, result;
-
- Error = tar_temp - cur_temp;//当前误差 //PID算法第一步 设定转速减去当前转速 赋值给 Error
- ZLG_sumError += Error;//误差和
- dError = Error - ZLG_lastError;//误差偏差
- ZLG_lastError = Error;
-
- result = pid_p*Error + pid_i*ZLG_sumError + pid_d*dError;
- //目标值大于当前温度10℃,则100%加热
- if(Error>15)
- result = 100;
- else if(Error < -15)
- result = 0;
- //增量式PID算法 增量式PID需每次叠加
- else if (result > 100)
- result = 100;
- else if (result < 0)
- result = 0;
- //printf("cur:%.2f, Error:%.2f, result:%.0f\n", cur_temp, Error, result);
- //占空比
- return result;
- }
复制代码 |
|