|
|
@ -36,6 +36,7 @@ |
|
|
|
* C<joules/kelvin> Block heat capacity. |
|
|
|
* E<extruder> Extruder number to set. (Default: E0) |
|
|
|
* F<watts/kelvin> Ambient heat transfer coefficient (fan on full). |
|
|
|
* H<joules/kelvin/mm> Filament heat capacity per mm. |
|
|
|
* P<watts> Heater power. |
|
|
|
* R<kelvin/second/kelvin> Sensor responsiveness (= transfer coefficient / heat capcity). |
|
|
|
*/ |
|
|
@ -43,7 +44,7 @@ |
|
|
|
void GcodeSuite::M306() { |
|
|
|
if (parser.seen_test('T')) { thermalManager.MPC_autotune(); return; } |
|
|
|
|
|
|
|
if (parser.seen("ACFPR")) { |
|
|
|
if (parser.seen("ACFPRH")) { |
|
|
|
const heater_id_t hid = (heater_id_t)parser.intval('E', 0); |
|
|
|
MPC_t &constants = thermalManager.temp_hotend[hid].constants; |
|
|
|
if (parser.seenval('P')) constants.heater_power = parser.value_float(); |
|
|
@ -53,6 +54,7 @@ void GcodeSuite::M306() { |
|
|
|
#if ENABLED(MPC_INCLUDE_FAN) |
|
|
|
if (parser.seenval('F')) constants.fan255_adjustment = parser.value_float() - constants.ambient_xfer_coeff_fan0; |
|
|
|
#endif |
|
|
|
if (parser.seenval('H')) constants.filament_heat_capacity_permm = parser.value_float(); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
@ -70,8 +72,10 @@ void GcodeSuite::M306_report(const bool forReplay/*=true*/) { |
|
|
|
SERIAL_ECHOPAIR_F(" R", constants.sensor_responsiveness, 4); |
|
|
|
SERIAL_ECHOPAIR_F(" A", constants.ambient_xfer_coeff_fan0, 4); |
|
|
|
#if ENABLED(MPC_INCLUDE_FAN) |
|
|
|
SERIAL_ECHOLNPAIR_F(" F", constants.ambient_xfer_coeff_fan0 + constants.fan255_adjustment, 4); |
|
|
|
SERIAL_ECHOPAIR_F(" F", constants.ambient_xfer_coeff_fan0 + constants.fan255_adjustment, 4); |
|
|
|
#endif |
|
|
|
SERIAL_ECHOPAIR_F(" M", constants.filament_heat_capacity_permm, 4); |
|
|
|
SERIAL_EOL(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|