diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 54929bac3d..15518f2de3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -118,7 +118,8 @@ // PID settings: // Comment the following line to disable PID and enable bang-bang. #define PIDTEMP -#define PID_MAX 256 // limits current to nozzle; 256=full current +#define BANG_MAX 256 // limits current to nozzle while in bang-bang mode; 256=full current +#define PID_MAX 256 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 256=full current #ifdef PIDTEMP //#define PID_DEBUG // Sends debug data to the serial port. //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 6093c99346..58c7b60e6f 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -325,10 +325,10 @@ void manage_heater() #ifndef PID_OPENLOOP pid_error[e] = target_temperature[e] - pid_input; if(pid_error[e] > PID_FUNCTIONAL_RANGE) { - pid_output = PID_MAX; + pid_output = BANG_MAX; pid_reset[e] = true; } - else if(pid_error[e] < -PID_FUNCTIONAL_RANGE) { + else if(pid_error[e] < -PID_FUNCTIONAL_RANGE || target_temperature[e] == 0) { pid_output = 0; pid_reset[e] = true; }