|
现在在做温度控制的实验,温度采集用热电偶+max6675,加热板用的220V/200W左右的一个加热板,
采集计算为1s,用的是位置式pid算法,下图为kp=0.8,ki=0.005,kd=10的温度曲线,并且积分分离,温度
小于或大于目标温度20℃时不计积分。
我现在不知道如何调整系数,使曲线更加稳定,能不能如图二中Td=4绿色曲线那样。
- PID pid;
- void PID_Init()
- {
- pid.setnum=0.0;
- pid.actualnum=0.0;
- pid.err=0.0;
- pid.lasterr=0.0;
- pid.controlmachine=0.0;
- pid.sumerr=0.0;
- pid.kp=0.8;
- pid.ki=0.005;
- pid.kd=10.0;
- }
- float realizepid(float num)
- {
- int index = 0;
- pid.setnum = num;
- pid.err = pid.setnum - pid.actualnum;
- if(fabs(pid.err) > 20)
- {
- index=0;
- }
- else
- {
- index = 1;
- pid.sumerr += pid.err;
- }
- pid.controlmachine = pid.kp*pid.err + index*pid.ki*pid.sumerr + pid.kd*(pid.err - pid.lasterr);
- pid.lasterr = pid.err;
- if(pid.controlmachine > 256)
- {
- TIM4->CCR3 = 256;
- }
- else if(pid.controlmachine < 0)
- {
- TIM4->CCR3 = 0;
- }
- else
- {
- TIM4->CCR3 = (u8)(pid.controlmachine + 0.5);
- }
- return pid.controlmachine;
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|