thermferm/thermferm.c

changeset 307
249e7d506069
parent 302
3d2bd47f35b4
child 308
876a8420c75a
equal deleted inserted replaced
306:97602274eb58 307:249e7d506069
1318 pv = unit->air_temperature / 1000.0; 1318 pv = unit->air_temperature / 1000.0;
1319 } else if (unit->mode == UNITMODE_PROFILE) { 1319 } else if (unit->mode == UNITMODE_PROFILE) {
1320 sp = unit->prof_target; 1320 sp = unit->prof_target;
1321 } 1321 }
1322 1322
1323 unit->PID_err_old = err; 1323 // unit->PID_err_old = err;
1324 err = sp - pv; 1324 err = sp - pv;
1325 if (err < unit->idle_rangeH && err > unit->idle_rangeL) { 1325 if (err < unit->idle_rangeH && err > unit->idle_rangeL) {
1326 err = 0; 1326 err = 0;
1327 unit->PID_I_err -= unit->PID_err_old; 1327 unit->PID_I_err -= unit->PID_err_old;
1328 } else { 1328 } else {
1333 unit->PID_I_err = -10.0; 1333 unit->PID_I_err = -10.0;
1334 if (unit->PID_I_err > 10.0) 1334 if (unit->PID_I_err > 10.0)
1335 unit->PID_I_err = 10.0; 1335 unit->PID_I_err = 10.0;
1336 P_err = err; 1336 P_err = err;
1337 D_err = err - unit->PID_err_old; 1337 D_err = err - unit->PID_err_old;
1338 unit->PID_err_old = err;
1338 1339
1339 /* 1340 /*
1340 * A postive value means heating, a negative value cooling. 1341 * A postive value means heating, a negative value cooling.
1341 */ 1342 */
1342 Out = (10.0*P_err) + (0.1*unit->PID_I_err) + (5*D_err); 1343 Out = (10.0*P_err) + (0.1*unit->PID_I_err) + (5*D_err);

mercurial