diff --git a/Marlin/src/gcode/temperature/M303.cpp b/Marlin/src/gcode/temperature/M303.cpp index f7012778548576ce82987275d3594a638519058a..874264bcbd61023f5f92656e95c9b167696665d9 100644 --- a/Marlin/src/gcode/temperature/M303.cpp +++ b/Marlin/src/gcode/temperature/M303.cpp @@ -32,7 +32,7 @@ * * S<temperature> sets the target temperature. (default 150C / 70C) * E<extruder> (-1 for the bed) (default 0) - * C<cycles> + * C<cycles> Minimum 3. Default 5. * U<bool> with a non-zero value will apply the result to current settings */ void GcodeSuite::M303() { diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index cf6e16c24a5268ff25e17fb22309b4e06ddd4eb5..b909caf15813addae6d26697c4590fc144dd4e0e 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -330,6 +330,8 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; * * Alternately heat and cool the nozzle, observing its behavior to * determine the best PID values to achieve a stable temperature. + * Needs sufficient heater power to make some overshoot at target + * temperature to succeed. */ void Temperature::PID_autotune(const float &target, const int8_t heater, const int8_t ncycles, const bool set_result/*=false*/) { float current = 0.0; @@ -540,7 +542,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS]; break; } - if (cycles > ncycles) { + if (cycles > ncycles && cycles > 2) { SERIAL_ECHOLNPGM(MSG_PID_AUTOTUNE_FINISHED); #if HAS_PID_FOR_BOTH