Merge pull request #1541 from thinkyhead/fixup_temperature
Cleanup of temperature code
This commit is contained in:
commit
49f471a5fc
|
@ -159,6 +159,43 @@
|
|||
|
||||
#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
|
||||
|
||||
// temperature.cpp strings
|
||||
#define MSG_PID_AUTOTUNE "PID Autotune"
|
||||
#define MSG_PID_AUTOTUNE_START MSG_PID_AUTOTUNE " start"
|
||||
#define MSG_PID_AUTOTUNE_FAILED MSG_PID_AUTOTUNE " failed!"
|
||||
#define MSG_PID_BAD_EXTRUDER_NUM MSG_PID_AUTOTUNE_FAILED " Bad extruder number"
|
||||
#define MSG_PID_TEMP_TOO_HIGH MSG_PID_AUTOTUNE_FAILED " Temperature too high"
|
||||
#define MSG_PID_TIMEOUT MSG_PID_AUTOTUNE_FAILED " timeout"
|
||||
#define MSG_BIAS " bias: "
|
||||
#define MSG_D " d: "
|
||||
#define MSG_MIN " min: "
|
||||
#define MSG_MAX " max: "
|
||||
#define MSG_KU " Ku: "
|
||||
#define MSG_TU " Tu: "
|
||||
#define MSG_CLASSIC_PID " Classic PID "
|
||||
#define MSG_KP " Kp: "
|
||||
#define MSG_KI " Ki: "
|
||||
#define MSG_KD " Kd: "
|
||||
#define MSG_OK_B "ok B:"
|
||||
#define MSG_OK_T "ok T:"
|
||||
#define MSG_AT " @:"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h"
|
||||
#define MSG_PID_DEBUG " PID_DEBUG "
|
||||
#define MSG_PID_DEBUG_INPUT ": Input "
|
||||
#define MSG_PID_DEBUG_OUTPUT " Output "
|
||||
#define MSG_PID_DEBUG_PTERM " pTerm "
|
||||
#define MSG_PID_DEBUG_ITERM " iTerm "
|
||||
#define MSG_PID_DEBUG_DTERM " dTerm "
|
||||
#define MSG_HEATING_FAILED "Heating failed"
|
||||
#define MSG_EXTRUDER_SWITCHED_OFF "Extruder switched off. Temperature difference between temp sensors is too high !"
|
||||
|
||||
#define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !"
|
||||
#define MSG_THERMAL_RUNAWAY_STOP "Thermal Runaway, system stopped! Heater_ID: "
|
||||
#define MSG_SWITCHED_OFF_MAX " switched off. MAXTEMP triggered !!"
|
||||
#define MSG_MINTEMP_EXTRUDER_OFF ": Extruder switched off. MINTEMP triggered !"
|
||||
#define MSG_MAXTEMP_EXTRUDER_OFF ": Extruder" MSG_SWITCHED_OFF_MAX
|
||||
#define MSG_MAXTEMP_BED_OFF "Heated bed" MSG_SWITCHED_OFF_MAX
|
||||
|
||||
// LCD Menu Messages
|
||||
|
||||
// Add your own character. Reference: https://github.com/MarlinFirmware/Marlin/pull/1434 photos
|
||||
|
|
|
@ -255,7 +255,7 @@
|
|||
#define MSG_VOLUMETRIC "Filament"
|
||||
#endif
|
||||
#ifndef MSG_VOLUMETRIC_ENABLED
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
|
||||
#endif
|
||||
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_0
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||
|
@ -383,23 +383,41 @@
|
|||
#ifndef MSG_ENDSTOP_ABORT
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
#endif
|
||||
#ifndef MSG_HEATING_FAILED_LCD
|
||||
#define MSG_HEATING_FAILED_LCD "Heating failed"
|
||||
#endif
|
||||
#ifndef MSG_ERR_REDUNDANT_TEMP
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP ERROR"
|
||||
#endif
|
||||
#ifndef MSG_THERMAL_RUNAWAY
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#endif
|
||||
#ifndef MSG_ERR_MAXTEMP
|
||||
#define MSG_ERR_MAXTEMP "Err: MAXTEMP"
|
||||
#endif
|
||||
#ifndef MSG_ERR_MINTEMP
|
||||
#define MSG_ERR_MINTEMP "Err: MINTEMP"
|
||||
#endif
|
||||
#ifndef MSG_ERR_MAXTEMP_BED
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED"
|
||||
#endif
|
||||
|
||||
#ifdef DELTA_CALIBRATION_MENU
|
||||
#ifndef MSG_DELTA_CALIBRATE
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_X
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_Y
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_Z
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_CENTER
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_X
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_Y
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_Z
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#endif
|
||||
#ifndef MSG_DELTA_CALIBRATE_CENTER
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#endif
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
#endif // LANGUAGE_EN_H
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
#error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
|
||||
#endif
|
||||
|
||||
#if EXTRUDERS > 3
|
||||
#error RUMBA supports up to 3 extruders. Comment this line to keep going.
|
||||
#endif
|
||||
|
||||
#define X_STEP_PIN 17
|
||||
#define X_DIR_PIN 16
|
||||
#define X_ENABLE_PIN 48
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -85,55 +85,25 @@ extern float current_temperature_bed;
|
|||
//inline so that there is no performance decrease.
|
||||
//deg=degreeCelsius
|
||||
|
||||
FORCE_INLINE float degHotend(uint8_t extruder) {
|
||||
return current_temperature[extruder];
|
||||
};
|
||||
FORCE_INLINE float degHotend(uint8_t extruder) { return current_temperature[extruder]; }
|
||||
FORCE_INLINE float degBed() { return current_temperature_bed; }
|
||||
|
||||
#ifdef SHOW_TEMP_ADC_VALUES
|
||||
FORCE_INLINE float rawHotendTemp(uint8_t extruder) {
|
||||
return current_temperature_raw[extruder];
|
||||
};
|
||||
|
||||
FORCE_INLINE float rawBedTemp() {
|
||||
return current_temperature_bed_raw;
|
||||
};
|
||||
FORCE_INLINE float rawHotendTemp(uint8_t extruder) { return current_temperature_raw[extruder]; }
|
||||
FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; }
|
||||
#endif
|
||||
|
||||
FORCE_INLINE float degBed() {
|
||||
return current_temperature_bed;
|
||||
};
|
||||
FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; }
|
||||
FORCE_INLINE float degTargetBed() { return target_temperature_bed; }
|
||||
|
||||
FORCE_INLINE float degTargetHotend(uint8_t extruder) {
|
||||
return target_temperature[extruder];
|
||||
};
|
||||
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) { target_temperature[extruder] = celsius; }
|
||||
FORCE_INLINE void setTargetBed(const float &celsius) { target_temperature_bed = celsius; }
|
||||
|
||||
FORCE_INLINE float degTargetBed() {
|
||||
return target_temperature_bed;
|
||||
};
|
||||
FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; }
|
||||
FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; }
|
||||
|
||||
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) {
|
||||
target_temperature[extruder] = celsius;
|
||||
};
|
||||
|
||||
FORCE_INLINE void setTargetBed(const float &celsius) {
|
||||
target_temperature_bed = celsius;
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isHeatingHotend(uint8_t extruder){
|
||||
return target_temperature[extruder] > current_temperature[extruder];
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isHeatingBed() {
|
||||
return target_temperature_bed > current_temperature_bed;
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isCoolingHotend(uint8_t extruder) {
|
||||
return target_temperature[extruder] < current_temperature[extruder];
|
||||
};
|
||||
|
||||
FORCE_INLINE bool isCoolingBed() {
|
||||
return target_temperature_bed < current_temperature_bed;
|
||||
};
|
||||
FORCE_INLINE bool isCoolingHotend(uint8_t extruder) { return target_temperature[extruder] < current_temperature[extruder]; }
|
||||
FORCE_INLINE bool isCoolingBed() { return target_temperature_bed < current_temperature_bed; }
|
||||
|
||||
#define degHotend0() degHotend(0)
|
||||
#define degTargetHotend0() degTargetHotend(0)
|
||||
|
@ -141,38 +111,36 @@ FORCE_INLINE bool isCoolingBed() {
|
|||
#define isHeatingHotend0() isHeatingHotend(0)
|
||||
#define isCoolingHotend0() isCoolingHotend(0)
|
||||
#if EXTRUDERS > 1
|
||||
#define degHotend1() degHotend(1)
|
||||
#define degTargetHotend1() degTargetHotend(1)
|
||||
#define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
|
||||
#define isHeatingHotend1() isHeatingHotend(1)
|
||||
#define isCoolingHotend1() isCoolingHotend(1)
|
||||
#define degHotend1() degHotend(1)
|
||||
#define degTargetHotend1() degTargetHotend(1)
|
||||
#define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1)
|
||||
#define isHeatingHotend1() isHeatingHotend(1)
|
||||
#define isCoolingHotend1() isCoolingHotend(1)
|
||||
#else
|
||||
#define setTargetHotend1(_celsius) do{}while(0)
|
||||
#define setTargetHotend1(_celsius) do{}while(0)
|
||||
#endif
|
||||
#if EXTRUDERS > 2
|
||||
#define degHotend2() degHotend(2)
|
||||
#define degTargetHotend2() degTargetHotend(2)
|
||||
#define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
|
||||
#define isHeatingHotend2() isHeatingHotend(2)
|
||||
#define isCoolingHotend2() isCoolingHotend(2)
|
||||
#define degHotend2() degHotend(2)
|
||||
#define degTargetHotend2() degTargetHotend(2)
|
||||
#define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2)
|
||||
#define isHeatingHotend2() isHeatingHotend(2)
|
||||
#define isCoolingHotend2() isCoolingHotend(2)
|
||||
#else
|
||||
#define setTargetHotend2(_celsius) do{}while(0)
|
||||
#define setTargetHotend2(_celsius) do{}while(0)
|
||||
#endif
|
||||
#if EXTRUDERS > 3
|
||||
#define degHotend3() degHotend(3)
|
||||
#define degTargetHotend3() degTargetHotend(3)
|
||||
#define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
|
||||
#define isHeatingHotend3() isHeatingHotend(3)
|
||||
#define isCoolingHotend3() isCoolingHotend(3)
|
||||
#define degHotend3() degHotend(3)
|
||||
#define degTargetHotend3() degTargetHotend(3)
|
||||
#define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3)
|
||||
#define isHeatingHotend3() isHeatingHotend(3)
|
||||
#define isCoolingHotend3() isCoolingHotend(3)
|
||||
#else
|
||||
#define setTargetHotend3(_celsius) do{}while(0)
|
||||
#define setTargetHotend3(_celsius) do{}while(0)
|
||||
#endif
|
||||
#if EXTRUDERS > 4
|
||||
#error Invalid number of extruders
|
||||
#error Invalid number of extruders
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
int getHeaterPower(int heater);
|
||||
void disable_heater();
|
||||
void setWatch();
|
||||
|
@ -189,15 +157,14 @@ static bool thermal_runaway = false;
|
|||
#endif
|
||||
#endif
|
||||
|
||||
FORCE_INLINE void autotempShutdown(){
|
||||
#ifdef AUTOTEMP
|
||||
if(autotemp_enabled)
|
||||
{
|
||||
autotemp_enabled=false;
|
||||
if(degTargetHotend(active_extruder)>autotemp_min)
|
||||
setTargetHotend(0,active_extruder);
|
||||
}
|
||||
#endif
|
||||
FORCE_INLINE void autotempShutdown() {
|
||||
#ifdef AUTOTEMP
|
||||
if (autotemp_enabled) {
|
||||
autotemp_enabled = false;
|
||||
if (degTargetHotend(active_extruder) > autotemp_min)
|
||||
setTargetHotend(0, active_extruder);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void PID_autotune(float temp, int extruder, int ncycles);
|
||||
|
|
Loading…
Reference in a new issue