PID_ADD_EXTRUSION_RATE based on MarlinKimbra
This commit is contained in:
		@@ -417,19 +417,29 @@ float Temperature::get_pid_output(int e) {
 | 
			
		||||
 | 
			
		||||
        pid_output = pTerm[e] + iTerm[e] - dTerm[e];
 | 
			
		||||
 | 
			
		||||
        #if ENABLED(SINGLENOZZLE)
 | 
			
		||||
          #define _NOZZLE_TEST     true
 | 
			
		||||
          #define _NOZZLE_EXTRUDER active_extruder
 | 
			
		||||
          #define _CTERM_INDEX     0
 | 
			
		||||
        #else
 | 
			
		||||
          #define _NOZZLE_TEST     e == active_extruder
 | 
			
		||||
          #define _NOZZLE_EXTRUDER e
 | 
			
		||||
          #define _CTERM_INDEX     e
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        #if ENABLED(PID_ADD_EXTRUSION_RATE)
 | 
			
		||||
          cTerm[e] = 0;
 | 
			
		||||
          if (e == active_extruder) {
 | 
			
		||||
          cTerm[_CTERM_INDEX] = 0;
 | 
			
		||||
          if (_NOZZLE_TEST) {
 | 
			
		||||
            long e_position = stepper.position(E_AXIS);
 | 
			
		||||
            if (e_position > last_position[e]) {
 | 
			
		||||
              lpq[lpq_ptr++] = e_position - last_position[e];
 | 
			
		||||
              last_position[e] = e_position;
 | 
			
		||||
            if (e_position > last_position[_NOZZLE_EXTRUDER]) {
 | 
			
		||||
              lpq[lpq_ptr++] = e_position - last_position[_NOZZLE_EXTRUDER];
 | 
			
		||||
              last_position[_NOZZLE_EXTRUDER] = e_position;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
              lpq[lpq_ptr++] = 0;
 | 
			
		||||
            }
 | 
			
		||||
            if (lpq_ptr >= lpq_len) lpq_ptr = 0;
 | 
			
		||||
            cTerm[e] = (lpq[lpq_ptr] / planner.axis_steps_per_unit[E_AXIS]) * PID_PARAM(Kc, e);
 | 
			
		||||
            cTerm[_CTERM_INDEX] = (lpq[lpq_ptr] / planner.axis_steps_per_unit[E_AXIS]) * PID_PARAM(Kc, e);
 | 
			
		||||
            pid_output += cTerm[e];
 | 
			
		||||
          }
 | 
			
		||||
        #endif //PID_ADD_EXTRUSION_RATE
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user