Browse Source

Fix a bug where the PID controllers D action kicks in hard as soon as the PID controller starts.

daid 11 years ago
parent
commit
a504c88346
1 changed files with 1 additions and 2 deletions
  1. 1
    2
      Marlin/temperature.cpp

+ 1
- 2
Marlin/temperature.cpp View File

436
           //K1 defined in Configuration.h in the PID settings
436
           //K1 defined in Configuration.h in the PID settings
437
           #define K2 (1.0-K1)
437
           #define K2 (1.0-K1)
438
           dTerm[e] = (Kd * (pid_input - temp_dState[e]))*K2 + (K1 * dTerm[e]);
438
           dTerm[e] = (Kd * (pid_input - temp_dState[e]))*K2 + (K1 * dTerm[e]);
439
-          temp_dState[e] = pid_input;
440
-
441
           pid_output = constrain(pTerm[e] + iTerm[e] - dTerm[e], 0, PID_MAX);
439
           pid_output = constrain(pTerm[e] + iTerm[e] - dTerm[e], 0, PID_MAX);
442
         }
440
         }
441
+        temp_dState[e] = pid_input;
443
     #else 
442
     #else 
444
           pid_output = constrain(target_temperature[e], 0, PID_MAX);
443
           pid_output = constrain(target_temperature[e], 0, PID_MAX);
445
     #endif //PID_OPENLOOP
444
     #endif //PID_OPENLOOP

Loading…
Cancel
Save