Fixes for PID AutoTune from menu

Fixes for #3189

Setting a temp is still missing
This commit is contained in:
WPBack 2016-03-21 19:02:31 +01:00 committed by Scott Lahteine
parent 3b3e8a02b5
commit e3f583a3be
5 changed files with 16 additions and 25 deletions

View File

@ -718,7 +718,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
//#define REVERSE_MENU_DIRECTION // When enabled CLOCKWISE moves UP in the LCD menu //#define REVERSE_MENU_DIRECTION // When enabled CLOCKWISE moves UP in the LCD menu
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
#define ULTIPANEL //the UltiPanel as on Thingiverse //#define ULTIPANEL //the UltiPanel as on Thingiverse
//#define SPEAKER // The sound device is a speaker - not a buzzer. A buzzer resonates with his own frequency. //#define SPEAKER // The sound device is a speaker - not a buzzer. A buzzer resonates with his own frequency.
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click

View File

@ -5142,7 +5142,7 @@ inline void gcode_M226() {
inline void gcode_M303() { inline void gcode_M303() {
int e = code_seen('E') ? code_value_short() : 0; int e = code_seen('E') ? code_value_short() : 0;
int c = code_seen('C') ? code_value_short() : 5; int c = code_seen('C') ? code_value_short() : 5;
bool u = code_seen('U') && code_value_short() == 1; bool u = code_seen('U') && code_value_short() != 0;
float temp = code_seen('S') ? code_value() : (e < 0 ? 70.0 : 150.0); float temp = code_seen('S') ? code_value() : (e < 0 ? 70.0 : 150.0);

View File

@ -199,7 +199,7 @@ static void updateTemperaturesFromRawValues();
//================================ Functions ================================ //================================ Functions ================================
//=========================================================================== //===========================================================================
void PID_autotune(float temp, int extruder, int ncycles, bool set_result) { void PID_autotune(float temp, int extruder, int ncycles, bool set_result /* = false */) {
float input = 0.0; float input = 0.0;
int cycles = 0; int cycles = 0;
bool heating = true; bool heating = true;

View File

@ -141,7 +141,7 @@ int getHeaterPower(int heater);
void disable_all_heaters(); void disable_all_heaters();
void updatePID(); void updatePID();
void PID_autotune(float temp, int extruder, int ncycles, bool set_result); void PID_autotune(float temp, int extruder, int ncycles, bool set_result = false);
void setExtruderAutoFanState(int pin, bool state); void setExtruderAutoFanState(int pin, bool state);
void checkExtruderAutoFans(); void checkExtruderAutoFans();

View File

@ -1189,39 +1189,30 @@ static void lcd_control_temperature_menu() {
raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \ raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
MENU_ITEM_EDIT(float52, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \ MENU_ITEM_EDIT(float52, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I ELABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E ## eindex); \ MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I ELABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E ## eindex); \
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex); \ MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex)
if (eindex == 0) { \
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR("M303 U1")); \
} \
else if (eindex == 1) { \
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR("M303 U1 E1")); \
} \
else if (eindex == 2) { \
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR("M303 U1 E2")); \
} \
else { \
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR("M303 U1 E3")); \
}
#if ENABLED(PID_ADD_EXTRUSION_RATE) #if ENABLED(PID_ADD_EXTRUSION_RATE)
#define PID_MENU_ITEMS(ELABEL, eindex) \ #define PID_MENU_ITEMS(ELABEL, eindex, AUTOTUNE_CMD) \
_PID_MENU_ITEMS(ELABEL, eindex); \ _PID_MENU_ITEMS(ELABEL, eindex); \
MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990) MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990); \
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR(AUTOTUNE_CMD))
#else #else
#define PID_MENU_ITEMS(ELABEL, eindex) _PID_MENU_ITEMS(ELABEL, eindex) #define PID_MENU_ITEMS(ELABEL, eindex, AUTOTUNE_CMD) \
_PID_MENU_ITEMS(ELABEL, eindex); \
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR(AUTOTUNE_CMD))
#endif #endif
#if ENABLED(PID_PARAMS_PER_EXTRUDER) && EXTRUDERS > 1 #if ENABLED(PID_PARAMS_PER_EXTRUDER) && EXTRUDERS > 1
PID_MENU_ITEMS(MSG_E1, 0); PID_MENU_ITEMS(MSG_E1, 0, "M303 U1");
PID_MENU_ITEMS(MSG_E2, 1); PID_MENU_ITEMS(MSG_E2, 1, "M303 U1 E1");
#if EXTRUDERS > 2 #if EXTRUDERS > 2
PID_MENU_ITEMS(MSG_E3, 2); PID_MENU_ITEMS(MSG_E3, 2, "M303 U1 E2");
#if EXTRUDERS > 3 #if EXTRUDERS > 3
PID_MENU_ITEMS(MSG_E4, 3); PID_MENU_ITEMS(MSG_E4, 3, "M303 U1 E3");
#endif //EXTRUDERS > 3 #endif //EXTRUDERS > 3
#endif //EXTRUDERS > 2 #endif //EXTRUDERS > 2
#else //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1 #else //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
PID_MENU_ITEMS("", 0); PID_MENU_ITEMS("", 0, "M303 U1");
#endif //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1 #endif //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
#endif //PIDTEMP #endif //PIDTEMP