Browse Source

PID_ADD_EXTRUSION_RATE based on MarlinKimbra

Scott Lahteine 8 years ago
parent
commit
0c7c45063b
1 changed files with 16 additions and 6 deletions
  1. 16
    6
      Marlin/temperature.cpp

+ 16
- 6
Marlin/temperature.cpp View File

@@ -417,19 +417,29 @@ float Temperature::get_pid_output(int e) {
417 417
 
418 418
         pid_output = pTerm[e] + iTerm[e] - dTerm[e];
419 419
 
420
+        #if ENABLED(SINGLENOZZLE)
421
+          #define _NOZZLE_TEST     true
422
+          #define _NOZZLE_EXTRUDER active_extruder
423
+          #define _CTERM_INDEX     0
424
+        #else
425
+          #define _NOZZLE_TEST     e == active_extruder
426
+          #define _NOZZLE_EXTRUDER e
427
+          #define _CTERM_INDEX     e
428
+        #endif
429
+
420 430
         #if ENABLED(PID_ADD_EXTRUSION_RATE)
421
-          cTerm[e] = 0;
422
-          if (e == active_extruder) {
431
+          cTerm[_CTERM_INDEX] = 0;
432
+          if (_NOZZLE_TEST) {
423 433
             long e_position = stepper.position(E_AXIS);
424
-            if (e_position > last_position[e]) {
425
-              lpq[lpq_ptr++] = e_position - last_position[e];
426
-              last_position[e] = e_position;
434
+            if (e_position > last_position[_NOZZLE_EXTRUDER]) {
435
+              lpq[lpq_ptr++] = e_position - last_position[_NOZZLE_EXTRUDER];
436
+              last_position[_NOZZLE_EXTRUDER] = e_position;
427 437
             }
428 438
             else {
429 439
               lpq[lpq_ptr++] = 0;
430 440
             }
431 441
             if (lpq_ptr >= lpq_len) lpq_ptr = 0;
432
-            cTerm[e] = (lpq[lpq_ptr] / planner.axis_steps_per_unit[E_AXIS]) * PID_PARAM(Kc, e);
442
+            cTerm[_CTERM_INDEX] = (lpq[lpq_ptr] / planner.axis_steps_per_unit[E_AXIS]) * PID_PARAM(Kc, e);
433 443
             pid_output += cTerm[e];
434 444
           }
435 445
         #endif //PID_ADD_EXTRUSION_RATE

Loading…
Cancel
Save