|
|
@ -322,17 +322,17 @@ unsigned char Temperature::soft_pwm[HOTENDS]; |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_T_MIN, min); |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_T_MAX, max); |
|
|
|
if (cycles > 2) { |
|
|
|
Ku = (4.0 * d) / (3.14159265 * (max - min) * 0.5); |
|
|
|
Ku = (4.0 * d) / (M_PI * (max - min) * 0.5); |
|
|
|
Tu = ((float)(t_low + t_high) * 0.001); |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_KU, Ku); |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_TU, Tu); |
|
|
|
workKp = 0.6 * Ku; |
|
|
|
workKi = 2 * workKp / Tu; |
|
|
|
workKd = workKp * Tu * 0.125; |
|
|
|
SERIAL_PROTOCOLLNPGM(MSG_CLASSIC_PID); |
|
|
|
SERIAL_PROTOCOLLNPGM("\n" MSG_CLASSIC_PID); |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_KP, workKp); |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_KI, workKi); |
|
|
|
SERIAL_PROTOCOLPAIR(MSG_KD, workKd); |
|
|
|
SERIAL_PROTOCOLLNPAIR(MSG_KD, workKd); |
|
|
|
/**
|
|
|
|
workKp = 0.33*Ku; |
|
|
|
workKi = workKp/Tu; |
|
|
@ -390,40 +390,38 @@ unsigned char Temperature::soft_pwm[HOTENDS]; |
|
|
|
|
|
|
|
#if HAS_PID_FOR_BOTH |
|
|
|
const char* estring = hotend < 0 ? "bed" : ""; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Kp ", workKp); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Ki ", workKi); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Kd ", workKd); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Kp ", workKp); SERIAL_EOL; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Ki ", workKi); SERIAL_EOL; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Kd ", workKd); SERIAL_EOL; |
|
|
|
#elif ENABLED(PIDTEMP) |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_Kp ", workKp); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_Ki ", workKi); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_Kd ", workKd); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_Kp ", workKp); SERIAL_EOL; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_Ki ", workKi); SERIAL_EOL; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_Kd ", workKd); SERIAL_EOL; |
|
|
|
#else |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKp ", workKp); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKi ", workKi); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKd ", workKd); |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKp ", workKp); SERIAL_EOL; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKi ", workKi); SERIAL_EOL; |
|
|
|
SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKd ", workKd); SERIAL_EOL; |
|
|
|
#endif |
|
|
|
|
|
|
|
#define _SET_BED_PID() \ |
|
|
|
#define _SET_BED_PID() do { \ |
|
|
|
bedKp = workKp; \ |
|
|
|
bedKi = scalePID_i(workKi); \ |
|
|
|
bedKd = scalePID_d(workKd); \ |
|
|
|
updatePID() |
|
|
|
updatePID(); } while(0) |
|
|
|
|
|
|
|
#define _SET_EXTRUDER_PID() \ |
|
|
|
#define _SET_EXTRUDER_PID() do { \ |
|
|
|
PID_PARAM(Kp, hotend) = workKp; \ |
|
|
|
PID_PARAM(Ki, hotend) = scalePID_i(workKi); \ |
|
|
|
PID_PARAM(Kd, hotend) = scalePID_d(workKd); \ |
|
|
|
updatePID() |
|
|
|
updatePID(); } while(0) |
|
|
|
|
|
|
|
// Use the result? (As with "M303 U1")
|
|
|
|
if (set_result) { |
|
|
|
#if HAS_PID_FOR_BOTH |
|
|
|
if (hotend < 0) { |
|
|
|
if (hotend < 0) |
|
|
|
_SET_BED_PID(); |
|
|
|
} |
|
|
|
else { |
|
|
|
else |
|
|
|
_SET_EXTRUDER_PID(); |
|
|
|
} |
|
|
|
#elif ENABLED(PIDTEMP) |
|
|
|
_SET_EXTRUDER_PID(); |
|
|
|
#else |
|
|
|